【sub2API部署或迁移】
Sub2API 部署时配置已有 PostgreSQL 与 Redis 的方案及后期迁移指南一、概述Sub2API 支持两种部署方式Docker Compose 容器化部署和二进制直接部署。无论采用哪种方式都可以配置使用已有的外部 PostgreSQL 和 Redis 服务而非使用项目自带的数据库容器。这种方案的优势在于统一数据管理多个服务共享同一数据库实例便于统一备份和维护简化迁移流程数据库独立于应用容器迁移时只需处理数据层资源利用率高避免为每个应用重复部署数据库容器节省系统资源二、配置使用已有数据库部署阶段2.1 Docker Compose 部署方案如果使用 Docker Compose 部署 Sub2API需要修改docker-compose.yml移除自带的 db 和 redis 服务改用外部连接。步骤 1修改 docker-compose.ymlversion:3.8services:sub2api:image:weishaw/sub2api:latestcontainer_name:sub2apirestart:unless-stoppedports:-8080:8080volumes:-./data:/app/data-./logs:/app/logsenv_file:-.env# 移除 depends_on 中 db 和 redis 的依赖mem_limit:800m# 不再需要 db 和 redis 服务定义步骤 2配置 .env 文件Sub2API 通过环境变量连接数据库和缓存。在.env中配置如下# PostgreSQL 外部连接DATABASE_DSNpostgres://用户名:密码数据库主机:5432/数据库名?sslmodedisable# Redis 外部连接REDIS_ADDRRedis主机:6379REDIS_PASSWORD你的Redis密码REDIS_DB0# JWT / Session 密钥自行生成随机串JWT_SECRETyour_random_32char_stringSESSION_SECRETyour_another_random_string# 时区TZAsia/Shanghai字段说明变量名说明示例DATABASE_DSNPostgreSQL 完整连接串postgres://sub2api:Pass123192.168.1.100:5432/sub2api?sslmodedisableREDIS_ADDRRedis 服务地址和端口redis:6379或192.168.1.100:6379REDIS_PASSWORDRedis 密码无密码则留空MyRedisPass123REDIS_DBRedis 数据库编号0注意DATABASE_DSN也可以替换为DATABASE_URL变量两者等价。sslmodedisable适用于内网环境公网访问建议启用 SSL。2.2 二进制部署方案如果使用官方install.sh脚本将 Sub2API 直接安装在宿主机上可通过 Web 设置向导配置外部数据库。步骤 1安装 Sub2APIcurl-sSLhttps://raw.githubusercontent.com/Wei-Shaw/sub2api/main/deploy/install.sh|sudobashsudosystemctlenablesub2api--now步骤 2通过 Web 向导配置访问http://你的服务器IP:8080进入设置向导页面填写以下信息配置项填写值PostgreSQL 主机数据库服务器 IP本地填127.0.0.1PostgreSQL 端口5432数据库名已创建的数据库名如sub2api用户名数据库用户密码数据库密码Redis 主机Redis 服务器 IP本地填127.0.0.1Redis 端口6379Redis 密码Redis 密码Redis DB建议使用1如与其他应用共用 Redis错开编号2.3 外部数据库准备注意事项PostgreSQL 配置要点允许远程连接修改postgresql.conf中的listen_addresses *配置访问权限在pg_hba.conf中添加允许应用服务器 IP 的访问规则高版本权限问题PostgreSQL 15 中新用户默认无法在publicschema 建表需手动授予权限-- 以 postgres 管理员身份执行GRANTALLONSCHEMApublicTOyour_sub2api_user;Redis 配置要点允许外部访问修改redis.conf中bind 127.0.0.1为bind 0.0.0.0或指定应用服务器 IP设置密码配置requirepass参数增强安全性三、后期迁移方案当需要将 Sub2API 迁移到新服务器时可以采用以下两种方案。3.1 方案一完整数据导出与导入适用于大多数场景步骤 1备份数据库在旧服务器上导出 PostgreSQL 数据# 使用 pg_dump 导出完整数据库pg_dump-Usub2api-hlocalhost-dsub2api-Fc-f/backups/sub2api_backup.dump# 或导出为 SQL 格式便于跨版本恢复pg_dump-Usub2api-hlocalhost-dsub2api/backups/sub2api_backup.sql步骤 2备份 Redis 数据# 触发 RDB 持久化redis-cli-a你的密码 BGSAVE# 复制 dump.rdb 文件默认在 /var/lib/redis/ 目录cp/var/lib/redis/dump.rdb /backups/步骤 3备份应用数据目录# 备份 Sub2API 数据目录含配置文件、上传文件等tar-czf/backups/sub2api_data.tar.gz /opt/sub2api/data/步骤 4在新服务器上恢复恢复 PostgreSQL# 新服务器创建空数据库createdb-Upostgres sub2api# 恢复数据根据备份格式选择pg_restore-Usub2api-dsub2api /backups/sub2api_backup.dump# 或psql-Usub2api-dsub2api/backups/sub2api_backup.sql恢复 Redis# 停止 Redis替换 dump.rdb重启systemctl stop rediscp/backups/dump.rdb /var/lib/redis/ systemctl start redis恢复应用数据tar-xzf/backups/sub2api_data.tar.gz-C/opt/sub2api/3.2 方案二低停机迁移使用 PostgreSQL 主从同步适用于对停机时间要求严格的场景利用 PostgreSQL 原生流复制实现近零停机迁移。整体思路在新服务器上部署 PostgreSQL 作为从库与旧库建立同步等待数据完全同步后将从库提升为主库切换应用连接至新数据库具体操作步骤步骤 1建立 SSH 隧道连接旧库# 将旧服务器数据库端口映射到新服务器本地 5433 端口exportOLD_IP旧服务器IPssh-fN-L127.0.0.1:5433:172.19.0.3:5432 root$OLD_IP步骤 2在新服务器上准备数据卷# 停止并清空 PostgreSQL 数据目录dockercompose downdockervolumermindex_postgres_datadockervolume create index_postgres_data步骤 3使用 pg_basebackup 初始化从库dockerrun--rm--networkhost-vindex_postgres_data:/var/lib/postgresql/data\postgres:15-alpinesh-lc\rm -rf /var/lib/postgresql/data/* \ pg_basebackup -h 127.0.0.1 -p 5433 -U sub2api -D /var/lib/postgresql/data \ -Fp -Xs -P -R --checkpointfast \ chown -R postgres:postgres /var/lib/postgresql/data步骤 4启动从库并配置同步dockercompose up-dpostgres# 更新 primary_conninfodockercomposeexecpostgres psql-Usub2api-dsub2api\-calter system set primary_conninfo host旧服务器IP port5432 usersub2api sslmodedisabledockercompose restart postgres步骤 5确认同步完成并提升为主库# 查询 WAL 接收状态确认 latest_end_time 已接近当前时间dockercomposeexecpostgres psql-Usub2api-dsub2api\-cselect status, latest_end_time from pg_stat_wal_receiver;# 提升为主库dockercomposeexecpostgres pg_ctl promote-D/var/lib/postgresql/data# 确认已成为主库返回 f 表示已提升dockercomposeexecpostgres psql-Usub2api-dsub2api\-cselect pg_is_in_recovery();步骤 6启动完整服务dockercompose up-d3.3 迁移后验证完成迁移后建议执行以下验证验证项命令数据库连接测试docker compose exec postgres pg_isreadyRedis 连接测试docker compose exec redis redis-cli ping应用健康检查curl -I http://localhost:8080/health数据一致性对比对比迁移前后SELECT COUNT(*) FROM users结果查看应用日志docker compose logs --tail100 sub2api四、总结与建议环节关键要点部署配置修改.env或 Web 向导将DATABASE_DSN和REDIS_ADDR指向已有服务地址PostgreSQL 准备开启远程访问、配置pg_hba.conf、PostgreSQL 15 需手动授予publicschema 权限Redis 准备修改bind和requirepass建议使用0以外的 DB 编号数据备份定期使用pg_dump和 RedisBGSAVE同时备份应用数据目录迁移策略小规模迁移使用pg_dump/psql大规模/低停机场景使用 PostgreSQL 流复制推荐部署使用docker-compose.local.yml本地目录挂载版迁移时可直接tar打包整个数据目录安全提醒无论采用哪种方式部署务必确保 PostgreSQL5432和 Redis6379端口不直接暴露到公网仅允许应用服务器 IP 访问避免安全风险。

相关新闻

3分钟QQ音乐解密指南:快速解锁加密音乐文件的终极方案

3分钟QQ音乐解密指南:快速解锁加密音乐文件的终极方案

3分钟QQ音乐解密指南:快速解锁加密音乐文件的终极方案 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否…

2026/8/2 9:01:01 阅读更多 →
Grove扬声器Plus:从PWM原理到Arduino音频播放实战

Grove扬声器Plus:从PWM原理到Arduino音频播放实战

1. 项目概述:从“会响”到“好听”的硬件升级 如果你玩过Arduino或者树莓派,大概率接触过那种小小的、扁平的蜂鸣器或者无源扬声器模块。它们能发出“滴滴”声,做个简单的闹钟或者报警器没问题,但想让它播放一段音乐,或…

2026/8/2 9:01:01 阅读更多 →
STM32与ESP8266物联网开发:UART通信与AT指令实战指南

STM32与ESP8266物联网开发:UART通信与AT指令实战指南

1. 项目缘起:为什么是STM32ESP8266? 如果你正在做一个需要联网的小玩意儿,比如远程控制的小车、环境数据采集器,或者一个简单的智能家居开关,那么“STM32 ESP8266”这个组合大概率会出现在你的备选方案里。我最早接触…

2026/8/2 9:01:01 阅读更多 →

最新新闻

书法美术对孩子有什么好处

书法美术对孩子有什么好处

在孩子的成长过程中,很多家长都在考虑要不要让孩子学习书法和美术。书法美术对孩子有什么好处呢?今天就结合天津市西青区艺绘空间书法艺术工作室(简称“艺绘空间”)的真实教学场景,来和大家好好聊一聊。 培养专注力和…

2026/8/2 9:43:17 阅读更多 →
3分钟永久激活Office:开源钩子工具让你的Microsoft 365完全免费

3分钟永久激活Office:开源钩子工具让你的Microsoft 365完全免费

3分钟永久激活Office:开源钩子工具让你的Microsoft 365完全免费 【免费下载链接】ohook An universal Office "activation" hook with main focus of enabling full functionality of subscription editions 项目地址: https://gitcode.com/gh_mirrors/…

2026/8/2 9:43:17 阅读更多 →
阿里通义千问负责人卸任:大模型开源生态与商业化路径的十字路口

阿里通义千问负责人卸任:大模型开源生态与商业化路径的十字路口

1. 事件背景与行业影响今天早上,我的技术圈和投资圈的朋友群几乎同时炸了锅,源头是一条简短但信息量巨大的消息:阿里通义千问(Qwen)大模型团队的负责人林俊旸官宣卸任。这个消息来得非常突然,没有任何预兆&…

2026/8/2 9:43:17 阅读更多 →
深入解析Apache Flink核心原理:从流处理基础到生产实践

深入解析Apache Flink核心原理:从流处理基础到生产实践

1. 项目概述:为什么是Flink?如果你正在处理实时数据,或者对“流处理”这个词不陌生,那么Flink大概率已经进入了你的技术雷达。我最早接触Flink是在一个需要实时计算用户行为热度的项目里,当时对比了Storm、Spark Strea…

2026/8/2 9:43:17 阅读更多 →
基于Claude与Agent框架的Windows自动化办公助手搭建指南

基于Claude与Agent框架的Windows自动化办公助手搭建指南

1. 项目概述:当Claude Cowork遇上Windows,一个“全职AI员工”的诞生 最近在AI圈子里,一个叫“Claude Cowork”的玩意儿配合Windows系统,被一些技术博主戏称为“140元雇了个全职员工”,这个说法确实挺抓眼球。作为一个…

2026/8/2 9:43:17 阅读更多 →
WarcraftHelper魔兽争霸助手:让经典游戏在现代电脑上焕发新生的终极解决方案

WarcraftHelper魔兽争霸助手:让经典游戏在现代电脑上焕发新生的终极解决方案

WarcraftHelper魔兽争霸助手:让经典游戏在现代电脑上焕发新生的终极解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为怀旧的…

2026/8/2 9:42:17 阅读更多 →

日新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/2 6:34:16 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/2 2:47:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/2 0:23:22 阅读更多 →