Files
Nexus/docs/changelog/2026-06-06-install-per-host-secrets.md
T
Nexus Deploy 83ce11f55c feat(install): per-host auto-generated secrets for Docker installs
Each fresh 1Panel/Docker install generates unique MYSQL and NEXUS keys
via scripts/generate_nexus_secrets.py; install wizard reuses compose env.
2026-06-06 00:25:57 +08:00

1.6 KiB

2026-06-06 — 安装脚本按机自动生成唯一密钥

摘要

Docker / 1Panel 全新安装路径统一通过 scripts/generate_nexus_secrets.py 生成每台服务器独立的 MYSQL_*NEXUS_SECRET_KEY / NEXUS_API_KEY / NEXUS_ENCRYPTION_KEY,写入 docker/.env.prod 并备份到 /root/.nexus-install-secrets-*.env。安装向导 init-db 复用容器环境内预生成密钥,避免与 Compose 不一致。

动机

新机安装不应从 nexus-1panel.secrets.sh 复制生产密钥;此前 --fresh 留空密钥导致 Compose 校验失败或各机密钥相同。

涉及文件

  • scripts/generate_nexus_secrets.py(新建)
  • deploy/nexus-1panel.shwrite_env_prod / --reuse-secrets / --fresh 忽略 secrets 中 NEXUS 项
  • deploy/install-nexus-fresh.sh / deploy/quick-install.sh
  • docker/generate_env.py — 复用同一生成器
  • docker/entrypoint.shNEXUS_INSTALL_WIZARD_PENDING=1 时不写 /app/.env
  • docker/docker-compose.prod.yml — 传递 NEXUS_INSTALL_WIZARD_PENDING
  • server/api/install.py_install_keys_from_environment()
  • deploy/README-1panel.md · deploy/nexus-1panel.secrets.sh.example

迁移 / 重启

已部署实例无需变更。新机安装后需完成 /app/install.html 向导。

验证

python3 scripts/generate_nexus_secrets.py write-prod \
  --template docker/.env.prod.example --output /tmp/t.env.prod \
  --domain test.example.com --profile-env docker/profiles/2c8g.env --fresh --wizard-pending
grep NEXUS_SECRET_KEY /tmp/t.env.prod
ruff check server/api/install.py scripts/generate_nexus_secrets.py