Add deployment traces for the JPpro proxy node, RackNerd origin hosts, catproxy boundary changes, local speed checks, and Sub2API rate-limit behavior. Keep remote secrets excluded while tracking sanitized nginx, compose, plan, and operational memory documents.
8.2 KiB
8.2 KiB
US RackNerd 0526 Sub2API Remote Inventory
最后核对时间:2026-05-26 19:37 Asia/Shanghai
远程位置
- Tabby profile:
个人-US-racknerd-0526-3c4g - Hostname:
racknerd-0a1c758 - 公网 IP:
216.45.59.243 - origin 入口:
https://origin.proxy.api.lilifamily.com - 公开直连主站入口:
https://catproxy.lilifamily.com - 部署目录:
/opt/sub2api - Compose project:
sub2api - 系统:Debian GNU/Linux 13 (trixie)
当前状态
- 已部署并验证。
- Docker:
Docker version 29.5.2, build 79eb04c - Docker Compose:
Docker Compose version v5.1.4 - nginx:
nginx/1.26.3 - DNS:
origin.proxy.api.lilifamily.com -> 216.45.59.243,catproxy.lilifamily.com -> 216.45.59.243 proxy.api.lilifamily.com已切到 JPpro151.242.164.72,3c4g 上旧proxy.apinginx 站点已禁用。- Sub2API 只绑定宿主机
127.0.0.1:8080,公网只能经 nginxcatproxy或受限origin转发。 - PostgreSQL、Redis、Mihomo 不映射公网端口。
- 从旧机迁移的业务计数已核对:
users=1、api_keys=3、accounts=133。
本地留痕
- 当前远程 Compose 副本:
current/docker-compose.yml - 旧主域 nginx 配置副本:
current/nginx-sub2api.conf,当前远程已禁用,仅作历史/回滚参考 - 当前 origin 配置副本:
current/nginx-origin-sub2api.conf - 当前 catproxy 配置副本:
current/nginx-catproxy-sub2api.conf - 当前默认拒绝配置副本:
current/nginx-default-deny.conf - 当前 token map 配置副本:
current/proxy-ng-token-map.conf,真实 token 已脱敏 - 防火墙与 origin 边界记录:
current/firewall-notes.md - 迁移包 SHA256 记录:
backups/migrate-to-racknerd-0526-20260525-205103.SHA256SUMS - 密钥目录说明:
secrets/README.md
真实 .env、Mihomo 配置、订阅文件、proxy-ng token、证书私钥和临时备份不得提交。需要本地留存时放入 secrets/ 或 backups/,并确认 .gitignore 已排除。
部署架构
Client
↓ HTTPS :443 proxy.api.lilifamily.com
JPpro nginx proxy-ng
↓ HTTPS + X-Proxy-Ng-Token
3c4g nginx origin.proxy.api.lilifamily.com
↓ 127.0.0.1:8080
sub2api container
↓
postgres / redis / mihomo containers
公开直连主站路径:
Client
↓ HTTPS :443 catproxy.lilifamily.com
3c4g nginx
↓ 127.0.0.1:8080
Sub2API
部署安全边界:
origin.proxy.api.lilifamily.com只允许 JPpro IP151.242.164.72访问,并校验X-Proxy-Ng-Token。catproxy.lilifamily.com不做 IP 白名单限制,是 3c4g 上可直接访问的主站域名和回滚入口。proxy.api.lilifamily.com不再解析到 3c4g,也不再由 3c4g nginx 站点提供服务。- Sub2API 容器端口只绑定
127.0.0.1:8080。
当前配置要点
- origin 域名:
origin.proxy.api.lilifamily.com - catproxy 域名:
catproxy.lilifamily.com - TLS:Certbot 管理 nginx 证书。
- origin 证书路径:
/etc/letsencrypt/live/origin.proxy.api.lilifamily.com/fullchain.pem - catproxy 证书路径:
/etc/letsencrypt/live/catproxy.lilifamily.com/fullchain.pem - token 配置:
/etc/nginx/proxy-ng/token.conf,权限600 root root - token map 配置:
/etc/nginx/conf.d/proxy-ng-token-map.conf,本地副本已脱敏 - 远程
.env:PUBLIC_DOMAIN=proxy.api.lilifamily.com - URL allowlist 当前关闭:
SECURITY_URL_ALLOWLIST_ENABLED=false
DNS state after proxy-ng hardening
| Name | A records | Role |
|---|---|---|
proxy.api.lilifamily.com |
151.242.164.72 |
Public entry |
jp.proxy.api.lilifamily.com |
151.242.164.72 |
JPpro proxy-ng node |
catproxy.lilifamily.com |
216.45.59.243 |
Public direct main-site and rollback entry |
origin.proxy.api.lilifamily.com |
216.45.59.243 |
Proxy-ng origin only |
运行检查
cd /opt/sub2api
docker compose ps
curl -sS http://127.0.0.1:8080/health
nginx -t
systemctl is-active nginx
curl --noproxy '*' -i https://origin.proxy.api.lilifamily.com/health
curl --noproxy '*' -i https://catproxy.lilifamily.com/health
期望结果:
sub2api、sub2api-postgres、sub2api-redis为 healthy。- 本机
/health返回{"status":"ok"}。 - 非 JPpro 来源访问
origin.proxy.api.lilifamily.com/health返回403。 - JPpro 带
X-Proxy-Ng-Token访问 origin 返回200。 - 公网访问
catproxy.lilifamily.com/health返回200。 - 直连
216.45.59.243:8080不对公网开放。
操作记录
2026-05-26 迁移目标盘点
- 通过 Tabby profile
个人-US-racknerd-0526-3c4g只读核对。 - 确认公网 IP:
216.45.59.243。 - 确认系统:Debian GNU/Linux 13 (trixie)。
- 确认尚未部署
/opt/sub2api,尚未安装 Docker。
2026-05-26 部署与迁移完成
- 安装 Docker CE、Docker Compose plugin、nginx、certbot、
python3-certbot-nginx、rsync。 - 从旧机迁移包恢复
/opt/sub2api,迁移包 SHA256 在新机按 basename 重新校验通过。 - 使用
pg_restore -U sub2api -d sub2api --clean --if-exists导入 PostgreSQL dump。 - 业务数据计数核对通过:
users=1、api_keys=3、accounts=133。 - 启动 Compose 服务,
sub2api、sub2api-postgres、sub2api-redis均为 healthy,sub2api-mihomo为 running。 - 配置 nginx 站点
/etc/nginx/sites-available/sub2api.conf,启用/etc/nginx/sites-enabled/sub2api.conf。 - Certbot 已为
proxy.api.lilifamily.com签发并部署 HTTPS 证书。 - 公网验证通过:
https://proxy.api.lilifamily.com/health返回{"status":"ok"}。 - API 路由验证通过:未授权
POST https://proxy.api.lilifamily.com/v1/responses返回401 API_KEY_REQUIRED。 - 旧机未停止,仍作为短期回滚来源。
2026-05-26 proxy-ng origin hardening backup
- Backup path:
/root/sub2api-hardening-backup-20260526-033010 - Includes nginx config, docker-compose.yml,
.env, and PostgreSQL dump. - Secret token exists only on remote root-readable nginx config and is not stored in Git.
2026-05-26 origin/catproxy hardening
- 为
origin.proxy.api.lilifamily.com和catproxy.lilifamily.com签发 Let's Encrypt 证书,到期时间均为2026-08-24。 - 新增
/etc/nginx/sites-available/origin-sub2api.conf,只允许151.242.164.72并校验X-Proxy-Ng-Token。 - 新增
/etc/nginx/sites-available/catproxy-sub2api.conf;初始版本限制管理来源,后续已按当前决策改为公开直连主站入口。 - 新增
/etc/nginx/sites-available/00-default-deny.conf,未知 Host 默认返回444。 - 为 nginx 增加
map_hash_bucket_size 128,修复长 hostname map 导致的nginx -t失败。 - 旧
proxy.api.lilifamily.com站点已从sites-enabled禁用,备份路径:/root/sub2api-disable-public-proxy-backup-20260526-040529。 - 验证结果:非白名单访问 origin 返回
403,JPpro 带 token 访问 origin 返回200,公网主入口proxy.api.lilifamily.com返回 JPpro 节点响应头。 - 配置 logrotate:
/etc/logrotate.d/nginx-proxy-ng,dry-run 无语法错误。
2026-05-26 catproxy 访问边界调整
- 按当前决策,
catproxy.lilifamily.com不再限制访问来源,作为 3c4g 公开直连主站域名和回滚入口。 - 远程备份:
/etc/nginx/sites-available/catproxy-sub2api.conf.bak-20260526043650。 - 从
/etc/nginx/sites-available/catproxy-sub2api.conf删除allow 106.37.220.142和deny all。 - 保留
origin.proxy.api.lilifamily.com的来源 IP 白名单和X-Proxy-Ng-Token校验。 - 验证结果:
nginx -t成功,systemctl reload nginx成功,catproxy.lilifamily.com/health返回200,非白名单访问origin.proxy.api.lilifamily.com/health返回403。
2026-05-26 主站限速核对
catproxy.lilifamily.com当前无 nginxlimit_req/limit_conn,主站直连不按 IP 限速。origin.proxy.api.lilifamily.com当前只做 JPpro IP 白名单和X-Proxy-Ng-Token校验,不做 nginx 速率限制。- Sub2API 业务请求限速维度是用户、用户+分组、API Key 窗口额度;不是按 IP 限速。
- 生产库非敏感快照:当前用户全局
rpm_limit=0;部分分组配置20/30/40/100 RPM;API Keybriqt配置5h=300、1d=500,API Keyfree配置1d=50。 - 本机测速与限速维度详见
docs/memorys/2026-05-26-主站测速与限速核对.md。