面向内部小团队的 GPU 服务器共享基础设施:把远程 SSH 接入、账号/密钥/审计/监控管理与 OpenAI 兼容的 AI 网关收敛进一个轻量门户,同一台公网主机同时托管团队官网与实时看板。 本页为公开版技术文档,内部网络地址、端口与部署手册不在公开范围。
团队共享一台内网 GPU 服务器,但没有公网 IP,也不能给每个成员开系统账号了事。 fwq-portal 用一台公网 ECS 做统一大门:SSH 走 frp 反向隧道(内网侧主动出网,穿透无公网环境), Web 门户负责账号审批、密钥登记、命令审计与监控告警,同时在门户内内置一个 OpenAI 兼容的 AI 网关(vLLM 本地推理),成员用门户签发的 Key 就能调用本地大模型。
三个入口:Web 门户(fwq.heartshinemedical.com)·
SSH(统一域名入口,仅公钥登录)·
AI API(OpenAI 兼容 /v1,门户签发 Key)。
| 分组 | 能力 |
|---|---|
| SSH 接入 | frp 反向隧道统一入口;成员 / 访客 / 管理员分级账号;仅公钥登录(公网密码登录关闭);多公钥 + 设备别名;成员自助提交公钥 → 管理员审批 |
| 运维门户 | 成员/账号管理(自动同步系统用户组)、SSH 命令审计(auditd auid 归因,su/sudo 提权后仍归因登录人,保留 90 天)、登录日志、操作日志、申请审批、邮件通知 |
| AI 网关 | vLLM 本地推理(开源模型,可切换);门户 AI 对话(SSE 流式);OpenAI 兼容 /v1 端点给外部 agent;Key 签发与配额管理 |
| 监控 | 链路概览拓扑图(动效)、健康灯带、主机指标、安全态势(Web 扫描 / 蜜罐 / SSH 抗爆破)、告警邮件 + alerts.log(看门狗:隧道掉线 / 磁盘 / 证书 / SSH 红线) |
| 层 | 技术 | 说明 |
|---|---|---|
| 后端 | Python 3 · Flask ≥3.0 · gunicorn | systemd 托管;零数据库——账号/日志全部 JSON 文件 + 原子写(tmp + os.replace) |
| 前端 | Vue 3(<script setup>)· vue-router · Vite 5 · @ai-sdk/vue |
构建产物随服务部署;图表全部自绘 SVG(刻意不引入图表库);PWA(可添加到主屏幕) |
| 推理 | vLLM | OpenAI 兼容 API,仅本机监听;门户经 localhost 反代,不占隧道带宽 |
| 网关 | nginx · frp(frps/frpc) | 反向代理 + 反向隧道(CGNAT 穿透);限流 / 蜜罐 / 自动封禁均在 nginx 层 |
| 安全 | auditd · fail2ban · certbot(Let's Encrypt) | SSH 强制命令只读通道,详见安全设计 |
| 采集 | 自研轻量采集器 ×4 | 30s 级自轮询、自轮转,经只读通道回传门户 |
| 运维 | systemd · scp · cron | 备份脚本 + 恢复手册(内部文档) |
authorized_keys 强制命令
(command="cat …",restrict)——只能 cat 指定文件、拿不到 shell,
刻意不做"门户直接写云主机"的通道。
*.example 模板——本公开文档亦不含任何凭据与地址细节。nginx -t 校验失败自动回滚)。