環境変数は、Blocklet Serverとそれが実行するブロックレットを構成するための強力な方法を提供します。これらはデフォルト設定や構成ファイルからの値を上書きするため、開発、ステージング、本番などの異なる環境に合わせてセットアップを調整するのに理想的です。
設定の優先順位
Blocklet Serverは、特定の設定を優先順位に従って適用します。後のソースが前のソースを上書きします。
デフォルト値
サーバーの組み込みのデフォルト設定。
構成ファイル
config.ymlファイルで定義された設定。環境変数
最も高い優先順位。設定した
ABT_NODE_*変数は、他のソースよりも優先されます。
ブロックレット固有の環境
個々のブロックレットは、blocklet.ymlマニフェストで独自の必須環境変数を定義できます。開発モードでブロックレットを実行する場合(例:blocklet devを使用)、ブロックレットのルートディレクトリに.envファイルを作成することで、これらの変数を提供できます。
Blocklet Serverはdotenv-flowを使用してこれらのファイルを読み込みます。つまり、.env、.env.development、.env.localのようなカスケードファイルを使用して、環境固有の構成を管理できます。ブロックレットの起動時に必須変数が欠落している場合、CLIはそれらを入力するように促します。
Blocklet Server環境変数
コアのBlocklet Serverデーモンを制御するすべての環境変数は、ABT_NODE_というプレフィックスが付いています。以下のセクションでは、これらの変数をカテゴリ別にグループ化した包括的なリファレンスを提供します。
ネットワークとポート
これらの変数は、Blocklet Serverとそのコンポーネントが使用するネットワークインターフェースとポートを構成します。
| 変数 | 目的 | デフォルト |
|---|---|---|
ABT_NODE_PORT | Blocklet Serverデーモンがリッスンするメインポート。 | 8089 |
ABT_NODE_SERVICE_PORT | 内部サービス通信用のポート。 | 40404 |
ABT_NODE_BLOCKLET_PORT | ブロックレットアプリケーションの開始ポート。 | 8090 |
ABT_NODE_HTTP_PORT | ゲートウェイ/ルーターのHTTPポート。 | 80 |
ABT_NODE_HTTPS_PORT | ゲートウェイ/ルーターのHTTPSポート。 | 443 |
ABT_NODE_ROUTER_HTTP_PORT | ルータープロバイダー専用のHTTPポート。 | ABT_NODE_HTTP_PORT と同じ |
ABT_NODE_ROUTER_HTTPS_PORT | ルータープロバイダー専用のHTTPSポート。 | ABT_NODE_HTTPS_PORT と同じ |
ABT_NODE_UPDATER_PORT | アップデーターサービス用のポート。 | 40405 |
ABT_NODE_EVENT_PORT | イベントハブ通信用のポート。 | 40407 |
ABT_NODE_HOST | サーバーがバインドするホストアドレス。 | 0.0.0.0 |
認証とセキュリティ
アクセス制御、セッション、DID、およびセキュリティポリシーを管理します。
| 変数 | 目的 | デフォルト / 注意事項 |
|---|---|---|
ABT_NODE_DID | サーバーインスタンスの分散型識別子。 | システム生成 |
ABT_NODE_PK | サーバーのDIDの公開鍵。 | システム生成 |
ABT_NODE_SK | サーバーのDIDの秘密鍵。 | システム生成(安全に保管してください) |
ABT_NODE_SESSION_SECRET | セッション暗号化用の秘密鍵。 | システム生成 |
ABT_NODE_TOKEN_SECRET | JWTトークン署名用の秘密鍵。 | システム生成 |
ABT_NODE_SESSION_TTL | セッションの有効期間(秒)。 | 3600 (1時間) |
ABT_NODE_SESSION_CACHE_TTL | セッションキャッシュの有効期間(秒)。 | 300 (5分) |
ABT_NODE_ADMIN_PATH | 管理ダッシュボードのパスプレフィックス。 | /.well-known/service/admin |
ABT_NODE_IP_WHITELIST | 管理画面へのアクセスを許可するIPアドレスのカンマ区切りリスト。 | なし(すべてのIPを許可) |
ABT_NODE_DOMAIN_WHITELIST | CORSを許可するドメインのカンマ区切りリスト。 | なし |
ABT_NODE_DOMAIN_BLACKLIST | ブロックするドメインのカンマ区切りリスト。 | なし |
ABT_NODE_DOMAIN_WHITELIST_HEADERS | CORSホワイトリストのレスポンスに含める追加ヘッダー。 | なし |
ABT_NODE_NO_PASSKEY_USER_VERIFY | パスキーのユーザー検証を無効にします。無効にするには 1 を設定します。 | 0 (有効) |
データベースとストレージ
データベース接続とキャッシュメカニズムを構成します。
| 変数 | 目的 | デフォルト / 注意事項 |
|---|---|---|
ABT_NODE_POSTGRES_URL | PostgreSQL接続URL。 | 指定されていない場合はSQLiteを使用します。 |
ABT_NODE_CACHE_SQLITE_PATH | SQLiteキャッシュデータベースファイルへのパス。 | {DATA_DIR}/core/db-cache.db |
ABT_NODE_CACHE_REDIS_URL | キャッシュ用のRedis接続URL。 | なし(インメモリキャッシュを使用) |
ABT_NODE_SQLITE_LARGE_CACHE | SQLiteのラージキャッシュを有効にします。有効にするには 1 を設定します。 | 0 (無効) |
ABT_NODE_NO_CACHE | キャッシュを完全に無効にします。無効にするには 1 を設定します。 | 0 (有効) |
ABT_NODE_IGNORE_USE_POSTGRES | PostgreSQLが構成されていても強制的にSQLiteを使用します。1 を設定します。 | 0 |
ABT_NODE_IGNORE_RESTART_POSTGRES | 起動時にPostgreSQLの再起動をスキップします。1 を設定します。 | 0 |
Docker構成
Dockerコンテナで実行されるブロックレットの動作をカスタマイズします。
| 変数 | 目的 | デフォルト |
|---|---|---|
ABT_NODE_NOT_ALLOW_DOCKER | Dockerサポートを完全に無効にします。無効にするには 1 を設定します。 | 0 (有効) |
ABT_NODE_DOCKER_MEMORY | Dockerコンテナのデフォルトのメモリ制限。 | 512m |
ABT_NODE_DOCKER_CPUS | DockerコンテナのデフォルトのCPU制限。 | 1 |
ABT_NODE_DOCKER_DISK_SIZE | Dockerコンテナのデフォルトのディスクサイズ制限。 | 10g |
ABT_NODE_SKIP_DOCKER_CHOWN | Dockerコンテナでのchown操作をスキップします。スキップするには 1 を設定します。 | 0 |
ABT_NODE_TEST_DOCKER | Dockerテストモードを有効にします。有効にするには 1 を設定します。 | 0 |
ロギングとデバッグ
ログレベル、場所を制御し、デバッグモードを有効にします。
| 変数 | 目的 | デフォルト / 値 |
|---|---|---|
ABT_NODE_LOG_DIR | ログファイルのディレクトリ。 | {DATA_DIR}/logs/_abtnode |
ABT_NODE_LOG_NAME | ログファイルの名前。 | daemon |
ABT_NODE_LOG_LEVEL | ログレベル。 | info (値: error, warn, info, debug) |
ABT_NODE_DEBUG_AS_SERVERLESS | サーバーレスデバッグモードを有効にします。有効にするには 1 を設定します。 | 0 |
ABT_NODE_DEV_MODE | 追加のデバッグを含む開発モードを有効にします。有効にするには 1 を設定します。 | 0 |
パフォーマンスと制限
パフォーマンスパラメータを調整し、運用上の制限を設定します。
| 変数 | 目的 | デフォルト |
|---|---|---|
ABT_NODE_MAX_CLUSTER_SIZE | クラスターインスタンスの最大数。 | 4 |
ABT_NODE_JOB_BACKOFF_SECONDS | ジョブスケジューリングのバックオフ時間(秒)。 | 600 (10分) |
ABT_NODE_BLACKLIST_REFRESH_INTERVAL | ブラックリストの更新間隔(分)。 | 2 |
ABT_NODE_EMAIL_RATE_LIMIT | メール操作のレート制限(1分あたり)。 | 10 |
ABT_NODE_EMAIL_VERIFY_RATE_LIMIT | メール検証のレート制限(1分あたり)。 | 5 |
ABT_NODE_ENSURE_RUNNING_CHECK_INTERVAL | 実行中のブロックレットをチェックする間隔(ミリ秒)。 | 30000 (30秒) |
ABT_NODE_ENSURE_RUNNING_HIGH_LOAD_CPU | 高負荷検出のCPUしきい値(%)。 | 80 |
ABT_NODE_ENSURE_RUNNING_HIGH_LOAD_MEMORY | 高負荷検出のメモリしきい値(%)。 | 80 |
ABT_NODE_ENSURE_RUNNING_HIGH_LOAD_DISK | 高負荷検出のディスクしきい値(%)。 | 90 |
ABT_NODE_ENABLE_ENSURE_BLOCKLET_RUNNING | ブロックレットの自動実行保証を有効にします。無効にするには 0 を設定します。 | 1 |
ドメインとルーティング
Blocklet Serverがドメイン、証明書、およびルーティングをどのように処理するかを構成します。
| 変数 | 目的 | デフォルト / 値 |
|---|---|---|
ABT_NODE_DID_DOMAIN | DIDベースのルーティング用のドメイン。 | 自動検出 |
ABT_NODE_SLP_DOMAIN | SLP(Service Location Protocol)用のドメイン。 | 自動検出 |
ABT_NODE_DASHBOARD_DOMAIN | 管理ダッシュボード用のドメイン。 | 自動検出 |
ABT_NODE_WILDCARD_CERT_HOST | ワイルドカード証明書をダウンロードするためのホスト。 | https://releases.arcblock.io/certs |
ABT_NODE_ENABLE_SLP_DOMAIN | SLPドメインサポートを有効にします。有効にするには 1 を設定します。 | 0 |
ABT_NODE_ENABLE_IPV6 | IPv6サポートを有効にします。有効にするには 1 を設定します。 | 0 |
ABT_NODE_FORCE_INTRANET | イントラネットモードを強制します。有効にするには 1 を設定します。 | 0 |
ABT_NODE_ROUTER_PROVIDER | ルータープロバイダーの実装。 | nginx (値: nginx, nodejs) |
ABT_NODE_ROUTER_CONFIG | 追加のルーター構成ファイルへのパス。 | なし |
外部サービス
Blocklet Serverが対話する外部サービスのエンドポイントを構成します。
| 変数 | 目的 | デフォルト |
|---|---|---|
ABT_NODE_WEB_WALLET_URL | ウェブウォレットサービスのURL。 | https://web.abtnetwork.io |
ABT_NODE_DID_REGISTRY | DIDレジストリエンドポイント。 | https://registry.arcblock.io |
ABT_NODE_LAUNCHER_DID | ランチャーサービスのDID。 | 自動構成 |
ABT_NODE_BLOCKLET_LAUNCHER_URL | ノード登録用のアドレス。 | 自動検出 |
ABT_NODE_EVENT_HOSTNAME | イベントハブのホスト名。 | localhost |
開発とテスト
主に開発、テスト、およびデバッグ目的で使用される変数。
| 変数 | 目的 | デフォルト / 注意事項 |
|---|---|---|
ABT_NODE_SKIP_VERSION_CHECK | バージョン互換性チェックをスキップします。スキップするには 1 を設定します。 | 0 |
ABT_NODE_TEST_DNS_SERVER | テスト用のDNSサーバー。 | なし |
ABT_NODE_TEST_MIN_CONSECUTIVE_TIME | テスト実行の最小連続時間(ミリ秒)。 | 1000 |
ABT_NODE_MOCK_DID_NAMES | テスト用のモックDID名(カンマ区切り)。 | なし |
ABT_NODE_FAKE_DISK_INFO | テスト用に偽のディスク情報を使用します。有効にするには 1 を設定します。 | 0 |
システム生成変数
これらの変数は、実行時にシステムによって自動的に設定されます。これらの値はシステムの状況とコンテキストから導出されるため、手動で構成するべきではありません。
| 変数 | 目的 |
|---|---|
ABT_NODE_BINARY_NAME | CLIバイナリの名前。 |
ABT_NODE_COMMAND_NAME | 実行中のCLIコマンドの名前。 |
ABT_NODE_PACKAGE_NAME | サーバーのNPMパッケージ名。 |
ABT_NODE_VERSION | Blocklet Serverのバージョン。 |
ABT_NODE_RESTART_RUNNING_COMPONENT | コンポーネントの再起動ステータスを示すフラグ。 |
ABT_NODE_OWNER_NFT_HOLDER | 所有権に関するNFT保有者情報。 |
ABT_NODE_OWNER_NFT_ISSUER | 所有権に関するNFT発行者情報。 |
ABT_NODE_BLOCKLET_MODE | 現在のブロックレットモード。 |
ABT_NODE_KERNEL_MODE | 現在のカーネルモード。 |
セキュリティに関する考慮事項
Blocklet Serverを構成する際には、以下のセキュリティのベストプラクティスを念頭に置いてください。
- シークレットの保護:
ABT_NODE_SESSION_SECRETやABT_NODE_SKなどのシークレットキーには、常に強力でランダムに生成された値を使用してください。 - アクセスの制限: データディレクトリおよびすべての構成ファイルへのファイルシステムアクセスを、許可されたユーザーのみに制限してください。
- 管理ツールの使用: 本番環境へのデプロイでは、シェル履歴やプレーンテキストファイルにシークレットを公開しないように、環境変数を管理するための専用ツールの使用を検討してください。