メインコンテンツへスキップ

環境変数

環境変数は、Blocklet Serverとそれが実行するブロックレットを構成するための強力な方法を提供します。これらはデフォルト設定や構成ファイルからの値を上書きするため、開発、ステージング、本番などの異なる環境に合わせてセットアップを調整するのに理想的です。

設定の優先順位

Blocklet Serverは、特定の設定を優先順位に従って適用します。後のソースが前のソースを上書きします。

  1. デフォルト値

    サーバーの組み込みのデフォルト設定。

  2. 構成ファイル

    config.yml ファイルで定義された設定。

  3. 環境変数

    最も高い優先順位。設定した 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_PORTBlocklet 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_SECRETJWTトークン署名用の秘密鍵。システム生成
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_WHITELISTCORSを許可するドメインのカンマ区切りリスト。なし
ABT_NODE_DOMAIN_BLACKLISTブロックするドメインのカンマ区切りリスト。なし
ABT_NODE_DOMAIN_WHITELIST_HEADERSCORSホワイトリストのレスポンスに含める追加ヘッダー。なし
ABT_NODE_NO_PASSKEY_USER_VERIFYパスキーのユーザー検証を無効にします。無効にするには 1 を設定します。0 (有効)

データベースとストレージ

データベース接続とキャッシュメカニズムを構成します。

変数目的デフォルト / 注意事項
ABT_NODE_POSTGRES_URLPostgreSQL接続URL。指定されていない場合はSQLiteを使用します。
ABT_NODE_CACHE_SQLITE_PATHSQLiteキャッシュデータベースファイルへのパス。{DATA_DIR}/core/db-cache.db
ABT_NODE_CACHE_REDIS_URLキャッシュ用のRedis接続URL。なし(インメモリキャッシュを使用)
ABT_NODE_SQLITE_LARGE_CACHESQLiteのラージキャッシュを有効にします。有効にするには 1 を設定します。0 (無効)
ABT_NODE_NO_CACHEキャッシュを完全に無効にします。無効にするには 1 を設定します。0 (有効)
ABT_NODE_IGNORE_USE_POSTGRESPostgreSQLが構成されていても強制的にSQLiteを使用します。1 を設定します。0
ABT_NODE_IGNORE_RESTART_POSTGRES起動時にPostgreSQLの再起動をスキップします。1 を設定します。0

Docker構成

Dockerコンテナで実行されるブロックレットの動作をカスタマイズします。

変数目的デフォルト
ABT_NODE_NOT_ALLOW_DOCKERDockerサポートを完全に無効にします。無効にするには 1 を設定します。0 (有効)
ABT_NODE_DOCKER_MEMORYDockerコンテナのデフォルトのメモリ制限。512m
ABT_NODE_DOCKER_CPUSDockerコンテナのデフォルトのCPU制限。1
ABT_NODE_DOCKER_DISK_SIZEDockerコンテナのデフォルトのディスクサイズ制限。10g
ABT_NODE_SKIP_DOCKER_CHOWNDockerコンテナでのchown操作をスキップします。スキップするには 1 を設定します。0
ABT_NODE_TEST_DOCKERDockerテストモードを有効にします。有効にするには 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_DOMAINDIDベースのルーティング用のドメイン。自動検出
ABT_NODE_SLP_DOMAINSLP(Service Location Protocol)用のドメイン。自動検出
ABT_NODE_DASHBOARD_DOMAIN管理ダッシュボード用のドメイン。自動検出
ABT_NODE_WILDCARD_CERT_HOSTワイルドカード証明書をダウンロードするためのホスト。https://releases.arcblock.io/certs
ABT_NODE_ENABLE_SLP_DOMAINSLPドメインサポートを有効にします。有効にするには 1 を設定します。0
ABT_NODE_ENABLE_IPV6IPv6サポートを有効にします。有効にするには 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_REGISTRYDIDレジストリエンドポイント。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_NAMECLIバイナリの名前。
ABT_NODE_COMMAND_NAME実行中のCLIコマンドの名前。
ABT_NODE_PACKAGE_NAMEサーバーのNPMパッケージ名。
ABT_NODE_VERSIONBlocklet 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_SECRETABT_NODE_SKなどのシークレットキーには、常に強力でランダムに生成された値を使用してください。
  • アクセスの制限: データディレクトリおよびすべての構成ファイルへのファイルシステムアクセスを、許可されたユーザーのみに制限してください。
  • 管理ツールの使用: 本番環境へのデプロイでは、シェル履歴やプレーンテキストファイルにシークレットを公開しないように、環境変数を管理するための専用ツールの使用を検討してください。