首页
/ Padloc密码管理平台基于Docker的PostgreSQL+Nginx+Let's Encrypt部署指南

Padloc密码管理平台基于Docker的PostgreSQL+Nginx+Let's Encrypt部署指南

2025-07-10 06:47:36作者:伍希望

概述

Padloc是一款开源的密码管理解决方案,本文详细介绍如何使用Docker Compose部署Padloc服务端,包含PostgreSQL数据库、Nginx反向代理以及Let's Encrypt SSL证书的完整配置方案。这种部署方式适合生产环境使用,提供了数据持久化、HTTPS加密和负载均衡等企业级特性。

架构组成

该部署方案包含以下核心组件:

  1. PostgreSQL数据库:作为Padloc的数据存储后端
  2. Padloc服务端:处理核心业务逻辑的API服务
  3. Padloc PWA应用:渐进式Web应用前端
  4. Nginx:作为反向代理和静态文件服务器
  5. 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控制启动

部署准备

  1. 创建.env环境变量文件,包含以下关键配置:

    • PL_HOSTNAME: 您的域名
    • PL_ADMIN_EMAIL: 管理员邮箱
    • 数据库相关凭证
    • SMTP邮件服务配置
  2. 准备nginx.conf配置文件,配置反向代理规则和SSL设置

  3. 确保服务器80和443端口可访问

部署流程

  1. 首次运行certbot服务获取SSL证书
  2. 启动数据库和服务端
  3. 构建PWA前端
  4. 启动Nginx服务

维护建议

  1. 定期备份PostgreSQL数据卷
  2. 设置证书自动续期
  3. 监控服务运行状态
  4. 及时更新容器镜像版本

总结

本文介绍的Docker Compose部署方案为Padloc密码管理平台提供了完整的生产环境解决方案,集成了数据库、前端、后端和HTTPS支持,具有良好的可维护性和扩展性。通过容器化部署,大大简化了Padloc的安装和配置过程,使团队能够快速搭建安全可靠的密码管理服务。