跳到主要内容

环境变量

环境变量提供了一种强大的方式来配置 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 及其组件使用的网络接口和端口。

变量用途默认值
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 和安全策略。

变量用途默认值 / 说明
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_WHITELIST允许 CORS 的域名逗号分隔列表。
ABT_NODE_DOMAIN_BLACKLIST要阻止的域名逗号分隔列表。
ABT_NODE_DOMAIN_WHITELIST_HEADERS在 CORS 白名单响应中包含的额外标头。
ABT_NODE_NO_PASSKEY_USER_VERIFY禁用 passkey 用户验证。设置为 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_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 的行为。

变量用途默认值
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

日志和调试

控制日志级别、位置并启用调试模式。

变量用途默认值 / 可选值
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电子邮件操作的速率限制(每分钟)。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 如何处理域、证书和路由。

变量用途默认值 / 可选值
ABT_NODE_DID_DOMAIN用于基于 DID 路由的域。自动检测
ABT_NODE_SLP_DOMAIN用于 SLP(服务定位协议)的域。自动检测
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_URLWeb 钱包服务的 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当前的 blocklet 模式。
ABT_NODE_KERNEL_MODE当前的内核模式。

安全注意事项

在配置 Blocklet Server 时,请牢记以下安全最佳实践:

  • 保护密钥:始终为 ABT_NODE_SESSION_SECRETABT_NODE_SK 等密钥使用强随机生成的值。
  • 限制访问:仅授权用户可以访问数据目录和任何配置文件。
  • 使用管理工具:对于生产部署,考虑使用专用工具管理环境变量,以避免在 shell 历史记录或纯文本文件中暴露密钥。