Padloc密码管理平台基于Docker的PostgreSQL+Nginx+Let's Encrypt部署指南
2025-07-10 06:47:36作者:伍希望
概述
Padloc是一款开源的密码管理解决方案,本文详细介绍如何使用Docker Compose部署Padloc服务端,包含PostgreSQL数据库、Nginx反向代理以及Let's Encrypt SSL证书的完整配置方案。这种部署方式适合生产环境使用,提供了数据持久化、HTTPS加密和负载均衡等企业级特性。
架构组成
该部署方案包含以下核心组件:
- PostgreSQL数据库:作为Padloc的数据存储后端
- Padloc服务端:处理核心业务逻辑的API服务
- Padloc PWA应用:渐进式Web应用前端
- Nginx:作为反向代理和静态文件服务器
- Certbot:用于获取和管理Let's Encrypt SSL证书
详细配置解析
1. PostgreSQL数据库服务
db:
image: postgres:13
expose:
- 5432
env_file: .env
environment:
- POSTGRES_USER=$PL_DATA_POSTGRES_USER
- POSTGRES_DB=$PL_DATA_POSTGRES_DATABASE
- POSTGRES_PASSWORD=$PL_DATA_POSTGRES_PASSWORD
volumes:
- data:/var/lib/postgresql/data
restart: unless-stopped
关键配置说明:
- 使用PostgreSQL 13官方镜像
- 通过环境变量文件(.env)注入数据库凭证
- 数据卷挂载确保数据持久化
- 自动重启策略保证服务高可用
2. Padloc服务端
server:
image: padloc/server
build:
context: github.com/padloc/padloc.git#main
dockerfile: Dockerfile-server
depends_on:
- db
env_file: .env
environment:
- PL_DATA_BACKEND=postgres
- PL_DATA_POSTGRES_HOST=db
- PL_DATA_POSTGRES_PORT=5432
- PL_DATA_POSTGRES_DATABASE
- PL_DATA_POSTGRES_USER
- PL_DATA_POSTGRES_PASSWORD
- PL_SERVER_CLIENT_URL=https://$PL_HOSTNAME
- PL_SERVER_REPORT_ERRORS=$PL_ADMIN_EMAIL
expose:
- 3000
volumes:
- attachments:/attachments
restart: unless-stopped
核心功能:
- 构建自Padloc官方仓库的server镜像
- 依赖PostgreSQL数据库服务
- 配置了邮件错误报告功能
- 附件存储使用独立数据卷
- 暴露3000端口供内部访问
3. Padloc PWA前端
pwa:
image: padloc/pwa
env_file: .env
environment:
PL_PWA_DIR: /pwa
PL_SERVER_URL: https://$PL_HOSTNAME/server
PL_PWA_URL: https://$PL_HOSTNAME
PL_PWA_PORT: 443
build:
context: github.com/padloc/padloc.git#main
dockerfile: Dockerfile-pwa
volumes:
- pwa:/pwa
command: ["build"]
restart: on-failure
特点:
- 构建渐进式Web应用前端
- 配置了与服务端的通信URL
- 使用独立数据卷存储构建产物
- 构建失败时自动重试
4. Nginx反向代理
nginx:
env_file: .env
image: nginx
depends_on:
- server
restart: always
volumes:
- pwa:/pwa
- ./nginx.conf:/etc/nginx/nginx.conf
- /etc/letsencrypt/live/$PL_HOSTNAME/fullchain.pem:/tls/cert
- /etc/letsencrypt/live/$PL_HOSTNAME/privkey.pem:/tls/key
ports:
- 80:80
- 443:443
功能实现:
- 加载自定义nginx配置
- 挂载SSL证书文件
- 暴露80和443标准端口
- 依赖服务端确保启动顺序
- 挂载PWA构建产物作为静态文件
5. Certbot证书服务
certbot:
env_file: .env
image: certbot/certbot
volumes:
- /etc/letsencrypt:/etc/letsencrypt
- /var/lib/letsencrypt:/var/lib/letsencrypt
command: "certonly --standalone -d $PL_HOSTNAME --expand --non-interactive --agree-tos -m $PL_ADMIN_EMAIL"
ports:
- 80:80
- 443:443
profiles: ["certbot"]
证书管理:
- 使用Certbot官方镜像
- 持久化存储证书文件
- 通过standalone模式获取证书
- 需要提供管理员邮箱
- 使用profile控制启动
部署准备
-
创建
.env
环境变量文件,包含以下关键配置:- PL_HOSTNAME: 您的域名
- PL_ADMIN_EMAIL: 管理员邮箱
- 数据库相关凭证
- SMTP邮件服务配置
-
准备nginx.conf配置文件,配置反向代理规则和SSL设置
-
确保服务器80和443端口可访问
部署流程
- 首次运行certbot服务获取SSL证书
- 启动数据库和服务端
- 构建PWA前端
- 启动Nginx服务
维护建议
- 定期备份PostgreSQL数据卷
- 设置证书自动续期
- 监控服务运行状态
- 及时更新容器镜像版本
总结
本文介绍的Docker Compose部署方案为Padloc密码管理平台提供了完整的生产环境解决方案,集成了数据库、前端、后端和HTTPS支持,具有良好的可维护性和扩展性。通过容器化部署,大大简化了Padloc的安装和配置过程,使团队能够快速搭建安全可靠的密码管理服务。