logo
3
1
Login
编辑文件 README.md

PostgreSQL + FRP 内网穿透项目

这是一个基于Docker的PostgreSQL数据库项目,配合frp内网穿透服务,实现远程数据库访问。

cnb机制最长18小时,凌晨4点有会清理掉长时间不在线的开发环境

定时任务

系统已配置自动重启任务,每天在 2点、10点、18点 自动重新开启环境,确保服务可用性。

⚠️ 重要提醒

  • 环境重启时有约30秒的空窗期,数据库连接会中断
  • 当前配置没有数据备份机制,重启环境会导致数据丢失
  • 请务必自行实现数据同步和备份方案

项目结构

/workspace/ ├── docker-compose.yml # PostgreSQL服务配置 ├── frpc/ # frp客户端配置目录 │ ├── docker-compose.yml # frp容器配置 │ ├── frpc # frp客户端可执行文件 │ └── frpc.toml # frp客户端配置文件 ├── data/ # 数据持久化目录 │ ├── dbdata/ # PostgreSQL运行时数据文件 │ │ ├── postgresql.conf # PostgreSQL主配置文件 │ │ ├── pg_hba.conf # 访问控制配置 │ │ └── ... # 其他数据库文件 │ └── postgres-config/ # PostgreSQL自定义配置 │ ├── postgresql.conf # 自定义主配置 │ └── pg_hba.conf # 自定义访问控制 ├── .cnb.yml # CNB构建配置文件 ├── .cnb/ # CNB配置目录 │ ├── settings.yml # CNB环境设置 │ ├── web_trigger.yml # Web触发器配置 │ ├── postgres_database.png # 项目图标 │ └── banned.png # 禁用图标 ├── .gitignore # Git忽略文件 └── README.md # 项目说明文档

服务说明

定时任务密钥配置

同组织下创建keys仓库文件名为api-token.yml

UCNB_TOKEN: "<PASSWORD>"

PostgreSQL 数据库

同组织下创建postgres_database_key仓库文件名为postgres.yml 用户名和数据库同名

POSTGRES_VERSION: "自定义版本" POSTGRES_USER: "用户名" POSTGRES_PASSWORD: "密码"

FRP 内网穿透

同组织下创建postgres_database_key仓库文件名为frpc.yml

frpc_content: | # 日志配置 log.level = "info" log.to = "/app/frpc.log" # 服务端配置 serverAddr = "frps服务器ip" serverPort = frps的端口 auth.token = "frps的密码" # 代理配置 [[proxies]] name = "postgres" type = "tcp" localIP = "172.17.0.1" localPort = 5432 remotePort = 30005

快速开始

配置说明

PostgreSQL配置

  • 主配置文件: data/postgres-config/postgresql.conf
  • 访问控制: data/postgres-config/pg_hba.conf

FRP配置

  • 配置文件: frpc/frpc.toml
  • 日志文件: /app/frpc.log

注意事项

⚠️ 数据安全警告

  1. 没有数据备份机制 - 环境重启会导致所有数据丢失
  2. 定时重启风险 - 每天2点、10点、18点自动重启,数据会清空
  3. 必须自行备份数据 - 请在外部实现数据同步和备份
  4. 环境关闭即数据丢失 - 关闭环境后数据无法恢复

🔧 建议解决方案

  • 使用外部数据库服务
  • 实现定时数据导出
  • 配置数据同步到其他存储
  • 考虑使用持久化存储方案

维护命令

# 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f postgres docker-compose logs -f frpc # 停止服务 docker-compose down # 重启服务 docker-compose restart

安全建议

  1. 使用强密码作为数据库密码
  2. 定期备份数据库数据
  3. 在生产环境中限制网络访问权限
  4. 定期更新PostgreSQL版本