香港服务器 · 实况体检报告
2026-10-06 15:31 | SSH 直连 43.161.225.209 实测 | 外部项目线上环境
一句话:服务器健康、服务全在线、功能真通。但发现 1 个配置漏项(API 路径)和 1 个安全风险(密钥明文)。
外网三端 + 后端 API 全部 HTTP 200,AI 对话真实返回。唯一未做的是 HTTPS(443 未监听)。
一、服务器基本盘
主机名 / 系统VM-0-12-ubuntu · Ubuntu 24.04.4 LTS(Linux 6.8.0-124)
公网 IP43.161.225.209(中国香港)
内网 IP10.5.0.12 · 172.17.0.1 · 172.18.0.1(Docker 网桥)
配置3.6G 内存(用 735M)· 59G 磁盘(用 13G / 22%)· Swap 1.9G
运行时长已稳定运行 2 天 22 小时(10-03 部署起,未重启)
负载0.11 / 0.03 / 0.01 —— 非常空闲
SSH 账号ubuntu(非 root)· 密码登录正常
防火墙 UFWinactive(未启用)—— 靠云安全组兜着
二、容器与服务拓扑
| 容器 | 镜像 | 端口 | 状态 |
ext-web | nginx:alpine | 0.0.0.0:80→80 | Up 2 days |
ext-backend | ext-backend:latest | 127.0.0.1:8000→8000 | Up 2 days |
两个容器都是 restart=unless-stopped → 服务器重启后自动拉起,不会掉。
架构:nginx(80,前端静态 + 反代)→ backend(仅本机 8000,不对外暴露)—— 隔离得当
后端进程:uvicorn ext_ai:app --host 0.0.0.0 --port 8000(python3.11)
⚠️ 发现 1:docker 命令需要 sudo —— ubuntu 用户不在 docker 组。不影响运行,但日常运维要加 sudo 或用脚本。
三、外网访问实测(刚测的)
| 目标 | 结果 |
http://(外部项目域名)/(首页) | HTTP 200 · 标题「外部项目」· 349,839 B |
/index.html | HTTP 200 |
/admin.html(PC 后台) | HTTP 200 |
/mobile.html(移动端) | HTTP 200 |
POST /api/chat(真实对话) | HTTP 200 · 返回真实回复,model=deepseek-chat |
/api/version | HTTP 200 · v1.1.0 |
APK 下载 /app/ext-app.apk | HTTP 206 · 56.9 MB · 支持断点续传 |
https://(外部项目域名)/ | 000 · 连不上(443 未监听) |
核心业务全通。首页 → 后台 → 移动端 → API → APK 下载,链路完整。
四、评分与缺口
| 项目 | 状态 | 说明 |
| 服务可用性 | 优 | 2 天 22 小时零重启,负载 0.11 |
| 容器自愈 | 优 | 双容器 restart=unless-stopped |
| 前后端隔离 | 优 | 后端只绑 127.0.0.1,不直接暴露公网 |
| 缓存策略 | 优 | HTML 不缓存(更新即时)· 静态资源分级缓存 |
| HTTPS | 缺 | 443 未监听,无证书 —— 浏览器会提示"不安全" |
| 密钥安全 | 风险 | llm_config.json 明文存云厂商密钥 |
| 防火墙 | 待评估 | UFW inactive,仅靠云安全组 |
| 备份/快照 | 未知 | 本机无法查,需在控制台看快照策略 |
五、★ 两个待处理项(诚实暴露)
① HTTPS 未配置(最影响体验)
443 端口未监听、无 SSL 证书。影响:浏览器地址栏显示「不安全」;PWA「添加到主屏幕」在 iOS/Android 上会受限。
解法:用 Let's Encrypt 免费证书(certbot)10 分钟可配好,或上传云厂商免费证书。
② API 密钥明文存在 llm_config.json
该文件里明文写着云语音服务的 secret_id 与 secret_key。风险:该文件被读取/误传即泄露。
解法:改为环境变量注入(本地版 D 盘工程已改成 .env,线上这份没同步)。
③ 一处路径口径需留意 —— 后端路由前缀是 /api/xxx(无 /wanjing 前缀),nginx 也只反代了 /api/。
所以正确调用是 http://(外部项目域名)/api/chat;加 /wanjing/ 前缀会落到前端首页(404/HTML)。
结论:线上口径 = 直接 /api/,与药材谷的「相对路径 /api」完全一致。
六、磁盘与资源余量
系统盘59G 总 · 13G 已用 · 45G 可用(22%) 充裕
镜像占用nginx:alpine 94MB + ext-backend 1.12GB
内存3.6G 总 · 735M 已用 · 2.9G 可用 充裕
可升级包系统有若干待更新(不影响运行)
七、结论与建议
结论:这台服务器是「健康在用」状态,不是「快报废」。
- 真正的时间压力来自计费方式 —— 月付试用档(10-03 购买),推算 约 11-02 到期,剩约 27 天
- 域名 (外部项目域名) 到 2027-10-03(whois 查实),剩 362 天,不急
- 机器性能对当前业务绰绰有余:负载 0.11、内存余 2.9G、磁盘余 45G
建议顺序:
1. 先决定计费(续月付 / 转年付)—— 这是唯一的"到期"倒计时
2. 再补 HTTPS —— 免费证书,10 分钟,体验提升最大
3. 顺手做密钥脱敏 —— 把线上 llm_config.json 密钥挪到环境变量
4. 快照策略在控制台确认一下