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.
JPpro proxy-ng Remote Inventory
最后核对时间:2026-05-26 19:10 Asia/Shanghai
远程位置
- Tabby profile:
个人-JPpro-akile-0504-1c1g - Hostname:
jppro2-20260504201455dc6fca - 公网 IP:
151.242.164.72 - 公开入口:
https://proxy.api.lilifamily.com - 节点入口:
https://jp.proxy.api.lilifamily.com - DNS:
proxy.api.lilifamily.com -> 151.242.164.72,jp.proxy.api.lilifamily.com -> 151.242.164.72 - 回源目标:
https://origin.proxy.api.lilifamily.com - 当前状态:proxy-ng 公开入口节点;不运行 Sub2API、PostgreSQL、Redis、Caddy 或账号出口代理
本地留痕
- 当前远程状态说明:
current/README.md - 当前 nginx 站点配置副本:
current/nginx-jp-proxy-sub2api.conf - 当前 nginx map 配置副本:
current/proxy-ng-map.conf - 加固记录:
current/proxy-ng-hardening-notes.md
secrets/ 目录允许在本机私有保存历史 .env、临时 admin 密码或其他敏感材料,但这些文件已被 .gitignore 排除,不能提交,也不能视为当前远程生效配置。
当前部署架构
Client
↓ HTTPS :443 proxy.api.lilifamily.com / jp.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
JPpro 节点职责边界:
- 只做入口反向代理和线路中转。
- 不保存 Sub2API 业务状态。
- 不持有 Sub2API 数据库密码、Redis 密码或业务 API Key。
- 不部署 Clash、sing-box、Xray、SOCKS、mixed 等账号出口代理能力。
- 持有 TLS 证书私钥和 proxy-ng 回源 token;token 仅在远程 root-only 文件中保存,不进 Git。
当前部署方式
- 安装方式:Debian apt 安装 nginx、certbot、python3-certbot-nginx、curl、ca-certificates、fail2ban、logrotate。
- nginx 版本:
nginx/1.26.3 - Certbot 版本:
certbot 4.0.0 - 证书路径:
/etc/letsencrypt/live/proxy.api.lilifamily.com/fullchain.pem - 私钥路径:
/etc/letsencrypt/live/proxy.api.lilifamily.com/privkey.pem - 证书覆盖域名:
proxy.api.lilifamily.com、jp.proxy.api.lilifamily.com - 证书到期时间:
2026-08-24 10:01:14 UTC - 远程站点配置:
/etc/nginx/sites-available/jp-proxy-sub2api.conf - 远程站点启用链接:
/etc/nginx/sites-enabled/jp-proxy-sub2api.conf - 远程 map 配置:
/etc/nginx/conf.d/proxy-ng-map.conf - 远程 token 配置:
/etc/nginx/proxy-ng/token.conf,权限600 root root
关键代理配置:
proxy_pass https://origin.proxy.api.lilifamily.com;
proxy_ssl_server_name on;
proxy_ssl_name origin.proxy.api.lilifamily.com;
proxy_set_header Host origin.proxy.api.lilifamily.com;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Proxy-Ng-Node "jppro-akile-0504-1c1g";
proxy_set_header X-Proxy-Ng-Token $proxy_ng_expected_token;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_buffering off;
proxy_request_buffering off;
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 |
运行检查
nginx -t
systemctl is-active nginx
systemctl is-active fail2ban
fail2ban-client status nginx-proxy-ng-scan
openssl x509 -noout -enddate -in /etc/letsencrypt/live/proxy.api.lilifamily.com/fullchain.pem
ss -tulpn
curl --noproxy '*' -sS https://proxy.api.lilifamily.com/health
curl --noproxy '*' -sS https://jp.proxy.api.lilifamily.com/health
curl --noproxy '*' -i -X POST https://proxy.api.lilifamily.com/v1/responses \
-H 'Content-Type: application/json' \
--data '{"model":"gpt-5.5","input":"ping"}'
期望结果:
nginx -t返回配置语法正确。- nginx 服务状态为
active。 - fail2ban 服务状态为
active,启用nginx-proxy-ng-scan和sshdjail。 - 监听端口包含
22、80、443。 /health返回200 {"status":"ok"},响应头包含X-Proxy-Ng-Node: jppro-akile-0504-1c1g。- 未授权
/v1/responses返回401 API_KEY_REQUIRED,证明请求已到达后端 API 层。
操作记录
2026-05-24 admin 密码重置
- 账号:
zizi2000email@gmail.com - 结果:登录接口已验证成功。
- 本地临时密码留痕:
secrets/admin-reset-20260524-165937.txt - 远程旧密码 hash 恢复 SQL:
/opt/sub2api/backups/password-reset-20260524-170007/restore-admin-password.sql
临时密码文件被 .gitignore 排除,且应保持 600 权限。登录后应尽快在后台修改为正式密码。
2026-05-26 清理 JPpro 部署
- 执行范围:只清理
个人-JPpro-akile-0504-1c1g上的 Sub2API Compose 栈,不动 RackNerd 两台服务器。 - 远程确认:hostname 为
jppro2-20260504201455dc6fca,清理前存在/opt/sub2api,运行sub2api、sub2api-caddy、sub2api-postgres、sub2api-redis四个容器。 - 已执行:
docker compose down --volumes --remove-orphans --rmi all --timeout 30。 - 已删除:四个容器、
sub2api_sub2api_data、sub2api_postgres_data、sub2api_redis_data、sub2api_caddy_data、sub2api_caddy_config、sub2api_sub2api-network、四个服务镜像和/opt/sub2api。 - 验证结果:
docker ps -a无容器,匹配sub2api/postgres_data/redis_data/caddy_data/caddy_config的卷为空,匹配 Sub2API/Caddy/PostgreSQL/Redis 的镜像为空,宿主机监听端口只剩22。
2026-05-26 部署 JPpro proxy-ng 入口中转
- 执行范围:只在
个人-JPpro-akile-0504-1c1g上部署 nginx 入口中转,不在该节点恢复 Sub2API Compose 栈。 - 域名:
jp.proxy.api.lilifamily.com - DNS:
jp.proxy.api.lilifamily.com -> 151.242.164.72 - 初始回源:
https://proxy.api.lilifamily.com - 已安装:
nginx/1.26.3、certbot 4.0.0、python3-certbot-nginx、curl、ca-certificates。 - 已配置:
/etc/nginx/sites-available/jp-proxy-sub2api.conf、/etc/nginx/conf.d/proxy-ng-map.conf。 - 已签发初始证书:
/etc/letsencrypt/live/jp.proxy.api.lilifamily.com/fullchain.pem,到期时间2026-08-24 06:22:03 UTC。 - 公网验证:
https://jp.proxy.api.lilifamily.com/health返回200 {"status":"ok"},根页面返回200,未授权POST /v1/responses返回401 API_KEY_REQUIRED。
2026-05-26 proxy-ng origin hardening
- 3c4g 生成 proxy-ng token,JPpro 通过 root-only 文件
/etc/nginx/proxy-ng/token.conf引用。 - JPpro 回源从
https://proxy.api.lilifamily.com改为https://origin.proxy.api.lilifamily.com。 proxy.api.lilifamily.comDNS 切换到151.242.164.72。- JPpro 使用 HTTP-01 签发覆盖
proxy.api.lilifamily.com和jp.proxy.api.lilifamily.com的证书。 - 远程备份:
/root/proxy-ng-hardening-backup-20260526-183749。 - 验证结果:
https://proxy.api.lilifamily.com/health返回200 {"status":"ok"},未授权POST /v1/responses返回401 API_KEY_REQUIRED,响应头包含X-Proxy-Ng-Node: jppro-akile-0504-1c1g。 - 防滥用:启用 nginx 连接数/请求速率限制、扫描路径 444、fail2ban
nginx-proxy-ng-scan、nginx logrotate。