83ce11f55c
Each fresh 1Panel/Docker install generates unique MYSQL and NEXUS keys via scripts/generate_nexus_secrets.py; install wizard reuses compose env.
1.6 KiB
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.sh—write_env_prod/--reuse-secrets/--fresh忽略 secrets 中 NEXUS 项deploy/install-nexus-fresh.sh/deploy/quick-install.shdocker/generate_env.py— 复用同一生成器docker/entrypoint.sh—NEXUS_INSTALL_WIZARD_PENDING=1时不写/app/.envdocker/docker-compose.prod.yml— 传递NEXUS_INSTALL_WIZARD_PENDINGserver/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