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 │
└─────────────────────────────────────────────────────────────┘
🔐 安全特性
- 网络隔离: PostgreSQL 不直接暴露
- 强制加密: 所有连接通过 TLS 1.2/1.3
- 高性能: 避免 PostgreSQL sslmode 开销
- 灵活证书: Nginx/Caddy 管理,不绑定平台
- 双向认证: 支持客户端证书验证
📊 性能优势
| 方案 | 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 连接
📝 下一步
运行文档组织脚本:
chmod +x organize-docs.sh ./organize-docs.sh查看文档索引:
cat docs/README.md开始部署:
make build-postgres-image make test-postgres
🎊 项目完成
PostgreSQL Service Plus 已准备就绪,可以投入使用!
核心特性:
- ✅ 高性能 (Stunnel 替代 PostgreSQL sslmode)
- ✅ 灵活证书管理 (Nginx/Caddy,不绑定平台)
- ✅ 多模型数据库 (向量+搜索+队列+文档)
- ✅ 6 种部署模式
- ✅ 完整文档
设计理念:
"灵活的证书管理 + 高性能的加密连接,不绑定任何平台"
一个 PostgreSQL,替代多个数据库 🚀
Feedback