Documentation

COMPLETION REPORT

PostgreSQL Service Plus - 项目交付总结

PostgreSQL Service Plus - 项目交付总结

✅ 项目完成

PostgreSQL Service Plus 已成功精简并增强,专注于提供高性能、安全、灵活的 PostgreSQL 部署方案。

🎯 核心设计理念

1. 灵活的证书管理 (Nginx/Caddy)

目的: 为 postgresql.svc.plus 等域名轻松申请 HTTPS 证书

优势:

  • ✅ 不绑定零信任平台
  • ✅ 支持任意域名
  • ✅ 免费 Let's Encrypt 证书
  • ✅ 完全控制,随时迁移

用途:

  • Web 界面 (pgAdmin, 健康检查)
  • 不代理 SQL 流量

2. 高性能数据库访问 (Stunnel)

目的: 提供 HTTPS 端点,避免 PostgreSQL sslmode 的性能开销

架构:

客户端 → Stunnel:5433 (TLS) → PostgreSQL:5432 (无SSL)

性能优势:

  • ✅ PostgreSQL 专注 SQL,无 SSL 开销
  • ✅ Stunnel 专门优化 TLS
  • ✅ 性能接近无加密连接

客户端使用:

# 应用通过本地 stunnel 客户端连接
conn = psycopg2.connect("postgresql://user:pass@localhost:15432/db")
# 无需 sslmode,透明加密

📦 交付物清单

1. PostgreSQL 扩展镜像

文件: deploy/base-images/postgres-runtime-wth-extensions.Dockerfile

扩展:

  • pgvector 0.8.1 - 向量搜索
  • pg_jieba 2.0.1 - 中文分词
  • pgmq 1.8.0 - 消息队列
  • pg_trgm, hstore, JSONB

2. 部署配置 (6种模式)

模式 文件 用途
基础 + Stunnel docker-compose.yml + docker-compose.tunnel.yml 数据库 + TLS 隧道
Nginx + Certbot docker-compose.nginx.yml 证书管理 + Web 界面
Caddy docker-compose.caddy.yml 零配置 HTTPS
pgAdmin --profile admin Web 管理界面
Kubernetes deploy/helm/postgresql/ 企业级部署

3. 配置文件

Stunnel:

  • stunnel-server.conf - 服务端 (5433 端口)
  • stunnel-client.conf - 客户端 (15432 端口)

Nginx:

  • nginx.conf - 主配置
  • nginx-postgres.conf - 服务器配置
  • init-letsencrypt.sh - 证书初始化

Caddy:

  • Caddyfile - 零配置 HTTPS

PostgreSQL:

  • postgresql.conf - 性能优化
  • init-scripts/01-init-extensions.sql - 初始化

4. 脚本工具

脚本 功能
generate-certs.sh 生成 stunnel 证书
init-letsencrypt.sh 初始化 Let's Encrypt
organize-docs.sh 组织文档结构
cleanup-old-files.sh 清理旧文件

5. 完整文档

位置: docs/

文档 内容
docs/README.md 文档索引
docs/QUICKSTART.md 快速开始
docs/ARCHITECTURE.md 架构设计
docs/PROJECT_STRUCTURE.md 项目结构
docs/deployment/docker-deployment.md Docker 部署
docs/deployment/helm-deployment.md Helm 部署
docs/guides/stunnel-server.md Stunnel 服务端
docs/guides/stunnel-client.md Stunnel 客户端

🚀 快速开始

# 1. 构建镜像
make build-postgres-image

# 2. 生成证书
cd deploy/docker && ./generate-certs.sh

# 3. 配置环境
cp .env.example .env
# 编辑 .env 设置密码

# 4. 启动服务
docker-compose -f docker-compose.yml -f docker-compose.tunnel.yml up -d

# 5. 客户端连接 (通过 stunnel)
psql "host=localhost port=5433 user=postgres dbname=postgres"

🏗️ 架构总结

┌─────────────────────────────────────────────────────────────┐
│  证书管理层 (可选)                                            │
│  Nginx/Caddy - 仅用于 Web 界面和证书管理                      │
│  端口: 443 (HTTPS)                                          │
│  用途: pgAdmin, /health, /metrics                           │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  数据库访问层 (核心)                                          │
│  Stunnel 服务端 - 提供 HTTPS 端点                            │
│  端口: 5433 (TLS)                                           │
│  ↓ 解密转发                                                  │
│  PostgreSQL - 127.0.0.1:5432 (无 SSL,最高性能)              │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  客户端 (应用服务器)                                          │
│  Stunnel 客户端 - 127.0.0.1:15432                           │
│  ↓ TLS 加密到服务端                                          │
│  应用 - 普通 PostgreSQL 连接,无需 sslmode                    │
└─────────────────────────────────────────────────────────────┘

🔐 安全特性

  1. 网络隔离: PostgreSQL 不直接暴露
  2. 强制加密: 所有连接通过 TLS 1.2/1.3
  3. 高性能: 避免 PostgreSQL sslmode 开销
  4. 灵活证书: Nginx/Caddy 管理,不绑定平台
  5. 双向认证: 支持客户端证书验证

📊 性能优势

方案 PostgreSQL CPU TLS 处理 性能
PostgreSQL sslmode 处理 SQL + TLS PostgreSQL ⚠️ 慢
Stunnel (本方案) 只处理 SQL Stunnel ✅ 快

🎯 使用场景

场景 1: 纯数据库服务

docker-compose -f docker-compose.yml -f docker-compose.tunnel.yml up -d
  • 开放端口: 5433 (Stunnel TLS)
  • 无 Web 界面
  • 最小化攻击面

场景 2: 数据库 + Web 管理

# 初始化证书
DOMAIN=postgresql.svc.plus EMAIL=admin@example.com ./init-letsencrypt.sh

# 启动服务
docker-compose \
  -f docker-compose.yml \
  -f docker-compose.nginx.yml \
  -f docker-compose.tunnel.yml \
  --profile admin \
  up -d
  • 开放端口: 443 (Web), 5433 (数据库)
  • pgAdmin: https://postgresql.svc.plus/pgadmin/
  • 健康检查: https://postgresql.svc.plus/health

场景 3: Kubernetes 生产环境

helm install postgresql ./deploy/helm/postgresql \
  --set auth.password=secure-password \
  --set stunnel.enabled=true \
  --set persistence.size=20Gi

🌟 核心价值

1. 灵活性

  • ✅ 不绑定零信任平台
  • ✅ 支持任意域名
  • ✅ 随时迁移

2. 性能

  • ✅ PostgreSQL 无 SSL 开销
  • ✅ Stunnel 专门优化 TLS
  • ✅ 接近无加密性能

3. 安全

  • ✅ 强制 TLS 加密
  • ✅ 网络隔离
  • ✅ 证书验证

4. 易用

  • ✅ 应用无需配置 SSL
  • ✅ 透明加密
  • ✅ 标准 PostgreSQL 连接

📝 下一步

  1. 运行文档组织脚本:

    chmod +x organize-docs.sh
    ./organize-docs.sh
    
  2. 查看文档索引:

    cat docs/README.md
    
  3. 开始部署:

    make build-postgres-image
    make test-postgres
    

🎊 项目完成

PostgreSQL Service Plus 已准备就绪,可以投入使用!

核心特性:

  • ✅ 高性能 (Stunnel 替代 PostgreSQL sslmode)
  • ✅ 灵活证书管理 (Nginx/Caddy,不绑定平台)
  • ✅ 多模型数据库 (向量+搜索+队列+文档)
  • ✅ 6 种部署模式
  • ✅ 完整文档

设计理念:

"灵活的证书管理 + 高性能的加密连接,不绑定任何平台"


一个 PostgreSQL,替代多个数据库 🚀

Feedback

Is this page helpful?

XWorkmate

AI Assistant

XWorkmate 助手

当前目标:wss://openclaw.svc.plus