跳到主要內容

環境變數

環境變數提供了一種強大的方式來設定 Blocklet Server 及其運行的 blocklet。它們會覆寫設定檔中的預設設定和值,使其成為在開發、預備和生產等不同環境中客製化設定的理想選擇。

設定優先級

Blocklet Server 會按照特定的優先順序應用設定,後面的來源會覆寫前面的來源:

  1. 預設值

    伺服器內建的預設設定。

  2. 設定檔

    在您的 config.yml 檔案中定義的設定。

  3. 環境變數

    最高優先級。您設定的任何 ABT_NODE_* 變數都將優先於其他來源。

Blocklet 特定環境

個別 blocklet 可以在其 blocklet.yml 清單中定義自己所需的環境變數。當您在開發模式下運行 blocklet 時(例如,使用 blocklet dev),您可以透過在 blocklet 的根目錄中建立一個 .env 檔案來提供這些變數。

Blocklet Server 使用 dotenv-flow 來載入這些檔案,這表示您可以使用像 .env.env.development.env.local 這樣的檔案串聯來管理特定環境的設定。如果在啟動 blocklet 時缺少任何必要的變數,CLI 將提示您輸入它們。

Blocklet Server 環境變數

所有控制核心 Blocklet Server 守護行程的環境變數都以 ABT_NODE_ 為前綴。以下各節按類別分組,提供了這些變數的全面參考。

網路與連接埠

這些變數設定 Blocklet Server 及其元件使用的網路介面和連接埠。

VariablePurposeDefault
ABT_NODE_PORTBlocklet Server 守護行程監聽的主要連接埠。8089
ABT_NODE_SERVICE_PORT用於內部服務通訊的連接埠。40404
ABT_NODE_BLOCKLET_PORTblocklet 應用程式的起始連接埠。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 和安全策略。

VariablePurposeDefault / Notes
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(啟用)

資料庫與儲存

設定資料庫連線和快取機制。

VariablePurposeDefault / Notes
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_CACHE啟用 SQLite 的大型快取。設為 1 啟用。0(停用)
ABT_NODE_NO_CACHE完全停用快取。設為 1 停用。0(啟用)
ABT_NODE_IGNORE_USE_POSTGRES即使已設定 PostgreSQL,也強制使用 SQLite。設為 10
ABT_NODE_IGNORE_RESTART_POSTGRES啟動時跳過重新啟動 PostgreSQL。設為 10

Docker 設定

客製化在 Docker 容器中運行的 blocklet 的行為。

VariablePurposeDefault
ABT_NODE_NOT_ALLOW_DOCKER完全停用 Docker 支援。設為 1 停用。0(啟用)
ABT_NODE_DOCKER_MEMORYDocker 容器的預設記憶體限制。512m
ABT_NODE_DOCKER_CPUSDocker 容器的預設 CPU 限制。1
ABT_NODE_DOCKER_DISK_SIZEDocker 容器的預設磁碟大小限制。10g
ABT_NODE_SKIP_DOCKER_CHOWN在 Docker 容器中跳過 chown 操作。設為 1 跳過。0
ABT_NODE_TEST_DOCKER啟用 Docker 測試模式。設為 1 啟用。0

日誌與除錯

控制日誌級別、位置並啟用除錯模式。

VariablePurposeDefault / Values
ABT_NODE_LOG_DIR日誌檔案的目錄。{DATA_DIR}/logs/_abtnode
ABT_NODE_LOG_NAME日誌檔案的名稱。daemon
ABT_NODE_LOG_LEVEL日誌級別。info(值:errorwarninfodebug
ABT_NODE_DEBUG_AS_SERVERLESS啟用無伺服器除錯模式。設為 1 啟用。0
ABT_NODE_DEV_MODE啟用開發模式並附加額外除錯功能。設為 1 啟用。0

效能與限制

調整效能參數並設定操作限制。

VariablePurposeDefault
ABT_NODE_MAX_CLUSTER_SIZE叢集實例的最大數量。4
ABT_NODE_JOB_BACKOFF_SECONDS工作排程的退避時間(秒)。600(10 分鐘)
ABT_NODE_BLACKLIST_REFRESH_INTERVAL刷新黑名單的間隔時間(分鐘)。2
ABT_NODE_EMAIL_RATE_LIMIT每分鐘電子郵件操作的速率限制。10
ABT_NODE_EMAIL_VERIFY_RATE_LIMIT每分鐘電子郵件驗證的速率限制。5
ABT_NODE_ENSURE_RUNNING_CHECK_INTERVAL檢查運行中 blocklet 的間隔時間(毫秒)。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啟用自動 blocklet 運行保障。設為 0 停用。1

網域與路由

設定 Blocklet Server 如何處理網域、憑證和路由。

VariablePurposeDefault / Values
ABT_NODE_DID_DOMAIN用於 DID 路由的網域。自動偵測
ABT_NODE_SLP_DOMAINSLP(服務定位協定)的網域。自動偵測
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(值:nginxnodejs
ABT_NODE_ROUTER_CONFIG額外路由器設定檔的路徑。

外部服務

設定 Blocklet Server 互動的外部服務端點。

VariablePurposeDefault
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

開發與測試

主要用於開發、測試和除錯目的的變數。

VariablePurposeDefault / Notes
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

系統產生的變數

這些變數在執行時由系統自動設定。您不應手動設定它們,因為它們的值來自系統的狀態和上下文。

VariablePurpose
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目前的 blocklet 模式。
ABT_NODE_KERNEL_MODE目前的核心模式。

安全考量

在設定您的 Blocklet Server 時,請記住以下安全最佳實踐:

  • 保護密鑰:對於像 ABT_NODE_SESSION_SECRETABT_NODE_SK 這樣的密鑰,務必使用強大的、隨機產生的值。
  • 限制存取:將對資料目錄和任何設定檔的檔案系統存取權限僅限於授權使用者。
  • 使用管理工具:對於生產部署,考慮使用專門的工具來管理環境變數,以避免在 shell 歷史記錄或純文字檔案中洩露密鑰。