You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Nginx Proxy Manager:如何持久化配置与解决SSL问题?

Nginx Proxy Manager 生产环境持久化与配置复用最佳实践

核心问题定位

你遇到的重复配置、SSL证书失效问题,本质是持久化路径权限不匹配和配置未固化导致的:

  • 挂载的data(含NPM配置数据库)与letsencrypt(证书目录)权限不一致,容器无法读取证书文件;
  • 手动UI配置未固化,每次部署需重复操作;
  • 证书属于敏感数据,绝对不能提交到代码仓库,需通过自动化方式管理。

一、修正持久化配置(解决证书失效)

1. 用绝对路径挂载,避免上下文问题

相对路径在不同部署环境下可能出现路径解析错误,改用绝对路径更稳妥:

version: '3.8'
services:
  nginx-proxy-manager:
    image: jc21/nginx-proxy-manager:2.10.4 # 生产环境指定具体版本,禁用latest
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      # 替换为你宿主机的实际绝对路径
      - /opt/npm/data:/data
      - /opt/npm/letsencrypt:/etc/letsencrypt
    restart: unless-stopped
    # 匹配宿主机用户UID/GID,解决权限问题
    user: "1000:1000" # 用`id`命令查看自己的UID和GID,替换成对应值

2. 排查证书失效的快速步骤

  • 查看容器日志找权限错误:docker logs nginx-proxy-manager
  • 检查宿主机目录权限:chown -R 1000:1000 /opt/npm/data /opt/npm/letsencrypt
  • 验证数据库完整性:用sqlite3 /opt/npm/data/database.sqlite查看certificates表记录是否正常

二、固化配置,避免重复操作

1. 配置导出与自动导入

通过NPM内置的备份功能固化配置,实现部署时自动恢复:

  1. 在NPM管理UI完成所有配置(代理主机、重定向、账号密码)后,进入「Settings > Backup/Restore」导出backup.json
  2. 将备份文件放到宿主机专属目录,比如/opt/npm/backups
  3. 在docker-compose中添加挂载与环境变量:
services:
  nginx-proxy-manager:
    ...
    volumes:
      ...
      - /opt/npm/backups/backup.json:/app/backup.json
    environment:
      - RESTORE_DB_FROM_BACKUP=true # 仅首次部署或需要恢复时启用,日常可注释

注:首次启动后记得注释RESTORE_DB_FROM_BACKUP,避免每次重启覆盖现有配置。

2. 生产环境配置管理建议

  • 把backup.json纳入私有配置仓库(非代码仓库),通过CI/CD工具同步到服务器
  • 若多服务器部署,用NFS或分布式存储共享data和letsencrypt目录,避免重复申请证书

三、生产环境额外注意事项

  • 限制管理UI访问:将81端口仅开放给内网IP,或在NPM中设置管理员账号的IP白名单
  • 定期备份:用rsync或restic工具定期备份/opt/npm目录,避免数据丢失
  • 证书自动续期:NPM默认会自动续期Let's Encrypt证书,确保80端口始终开放(续期需要HTTP验证)

内容的提问来源于stack exchange,提问作者bananajoey88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:52:49