跳转至

配置参考

配置三级覆盖:默认值 ← 配置文件 config.toml ← 环境变量 UNIDNS_*。 配置文件路径可用 UNIDNS_CONFIG 指定(默认 ./config.toml);文件不存在时 首次启动会自动生成带注释的示例配置。

配置项

配置项 环境变量 默认值 说明
listen UNIDNS_LISTEN 0.0.0.0:18686 HTTP 监听地址
data_dir UNIDNS_DATA_DIR ./data 数据目录:SQLite 数据库、secret.key、示例配置
sync_interval_minutes UNIDNS_SYNC_INTERVAL 0 定时全量同步间隔(分钟);0 停用自动同步,大于 0 至少 30(1–29 视为停用)
admin_password UNIDNS_ADMIN_PASSWORD 无 预置管理员口令,仅首次创建口令时生效;忘记口令用 unidns reset-password 重置
master_key UNIDNS_MASTER_KEY 自动生成 凭据加密主密钥,64 位 hex(32 字节)
— UNIDNS_CONFIG ./config.toml 配置文件路径(仅环境变量)

示例

# HTTP 监听地址
listen = "0.0.0.0:18686"

# 数据目录(SQLite 数据库与 secret.key 存放位置)
data_dir = "./data"

# 定时全量同步间隔(分钟);0 表示停用自动同步,启用时至少 30 分钟
sync_interval_minutes = 0

# 预置管理员口令(仅首次创建口令时生效;也可用环境变量 UNIDNS_ADMIN_PASSWORD)
#admin_password = "change-me"

# 凭据加密主密钥(64 位 hex,表示 32 字节;缺省时自动生成并保存到 <data_dir>/secret.key)
#master_key = "0000000000000000000000000000000000000000000000000000000000000000"
export UNIDNS_LISTEN=127.0.0.1:18686
export UNIDNS_DATA_DIR=/var/lib/unidns
export UNIDNS_SYNC_INTERVAL=30
export UNIDNS_ADMIN_PASSWORD='first-login-password'
export UNIDNS_MASTER_KEY=$(openssl rand -hex 32)
cargo run --release
# 与 compose.yaml 同目录,由 env_file: ./.env 注入容器
# 凭据加密主密钥(64 位 hex,建议固定;留空则首次启动自动生成 data/secret.key)
UNIDNS_MASTER_KEY=
# 预置管理员口令(仅首次设置口令时生效)
UNIDNS_ADMIN_PASSWORD=
# 定时全量同步间隔(分钟);0 停用自动同步,启用时至少 30
UNIDNS_SYNC_INTERVAL=0
# 日志级别(RUST_LOG 语法)
UNIDNS_LOG=info

容器内已默认监听 0.0.0.0:18686、数据目录 /app/data,通常无需设置 UNIDNS_LISTEN / UNIDNS_DATA_DIR;空值视为未设置。

主密钥(master_key)

平台凭据以 AES-256-GCM 加密落库,加密密钥来源优先级:

  1. UNIDNS_MASTER_KEY 环境变量(64 位 hex);
  2. <data_dir>/secret.key 文件——不存在时自动生成(权限 0600)。

备份

secret.key 丢失后已保存的平台凭据不可恢复(密文无法解密), 只能删除账户重新录入。请把 secret.key 与 unidns.db 一起备份。

同步设置(运行期)

定时同步的启停与间隔也可在界面「同步设置」里调整(存 settings 表): 环境变量/配置文件的值是初始默认,界面修改后以数据库中的值为准。 域名级同步开关同样在界面操作,关闭的域名不参与同步,其本地备注不回写平台。