一个退役兵 + 大专在读的真实折腾记录。全程命令自己敲、坑自己踩、错自己排。 这篇不是教程搬运,是一份带着体温的实操手记——包括我撞墙的每一处。一、为什么不直接用 App
市面上的 AI 对话 App 很多,但我想要的是一个完全属于自己的、随地能用、不绑定任何厂商客户端的 AI——手机浏览器、电脑浏览器,打开就是我定制好的「作战模式」。更重要的私心:我的方向是 AI 安全 / 网络安全。自己把这套东西从一台空服务器搭起来,本身就是一次完整的网络安全实战——Linux、Docker、内网穿透、API 网关、主机加固,一条龙全都要碰。搭工具的过程,就是练基本功的过程。二、技术选型(以及我没选什么)
├─ Open WebUI ← 网页界面,固化「作战智能体」人设└─ new-api ← API 网关,统一管理我的多个 key——自托管 ChatGPT 式界面的事实标准,Docker 一键起,支持把一整段系统提示词固化成自定义模型。——国产、境内服务、国内服务器直连又快又合规,价格极低,跑规划/拆解/写笔记完全够用。——把我的多个 API key 聚合到一处,对外只暴露一个地址一个令牌。——在我的服务器、手机、电脑间拉一条 WireGuard 私网,公网根本扫不到我的服务。我特意没选的:海外服务器 + 翻墙中转。当时确实动过「买个海外服务器搭中转聚合境外模型」的念头,但想清楚了:自用场景下 DeepSeek 已经够用;倒卖/共享境外 API 额度普遍违反服务条款、封号是常态;网上现成的「一键中转」镜像更是 key 窃取和挖矿木马的重灾区。这对一个想走安全技术路线的人来说,是岔路不是捷径。砍掉。三、部署实录(含每一处踩坑)
1. 装 Docker
腾讯云 Ubuntu 镜像其实预装过 Docker,所以跑安装脚本时弹出 docker command appears to already exist 的警告——别慌,那是脚本给你 20 秒反悔时间,等它走完即可。顺手用阿里云加速脚本安装,再配上镜像加速。坑点 1:系统更新时弹出紫色配置框,问 sshd_config 用新版还是旧版。一律选keep the local version——保留服务商那份能正常登录的配置,别让默认版把你的登录方式覆盖掉,否则可能再也连不进去。2. 拉 Open WebUI 镜像——本次最硬的一关
Open WebUI 的镜像在 ghcr.io,国内直接拉卡了 20 多分钟纹丝不动。这不是网慢,是 ghcr 在国内访问极差。挨个换源:docker.1ms.run/open-webui/...docker.m.daocloud.io/ghcr.io/...→ 规则变了,被当成 docker.io 找,失败ghcr.nju.edu.cn/open-webui/open-webui:main→南京大学镜像站,一路 Pull complete 全绿,成功!拉下来后用 docker tag 改回标准名 ghcr.io/open-webui/open-webui:main,compose 就认了。教训:国内拉 ghcr 镜像就是挨个试源的活,南大那个 ghcr.nju.edu.cn 目前最稳,记下来。
3. 端口冲突——被自己半年前的容器绊了一跤
docker compose up 报 port 3000 already allocated。一查 docker ps,发现有个跑了 5 周的 new-api 容器正占着 3000——是我自己之前装来统一管 key 的网关,忘得一干二净。这件事本身就是个安全告警:我的服务器上有个我都不记得的服务,还对公网开着 3000 端口。处理方式:不动 new-api(它有用),把 Open WebUI 改到 3001,两者和平共处。一行 sed 改掉 compose 里的端口即可。4. Tailscale 内网穿透
。复制粘贴时两行黏在一起,变成 tailscale upsudo tailscale up,报 unknown subcommand: upsudo。重新干净地敲一遍 sudo tailscale up 就好。执行后会吐一个 login.tailscale.com/a/xxx 授权链接,浏览器打开登录授权,终端显示 Success,再 tailscale ip -4 拿到 100.x.x.x 私网地址。坑点:手机连不上,电脑能连。电脑能开说明服务器没问题,问题在手机端 Tailscale——要么开关没真正切到 Connected,要么登录的账号和电脑不是同一个。对齐账号、打开开关,手机立刻就进来了。5. 主机加固——这步最不能省
收尾去看腾讯云防火墙,整整 8 条放行规则:3000(IPv4+IPv6)、80、443、22、3389(TCP+UDP)、Ping。其中那两条 3000,意味着我那个管着多个 API key 的 new-api 网关,正裸奔在全网扫描之下——一旦被扫到,key 被盗刷是分分钟的事。删两条 3000(堵住 new-api 公网暴露)删两条 3389(我是 Ubuntu,根本没有 Windows 远程桌面)砍完,公网地址 :3000、:3001 全部打不开了——这正是对的。所有服务退回 Tailscale 私网,公网只剩一个 SSH 口。攻击面从一大片缩成一个点。安全纪律补一刀:整个过程里我好几次差点把登录链接、API key 原样贴出来。token、key、授权链接,贴出去之前先打码,这是肌肉记忆,不是洁癖。
6. 接后端 + 固化人设
new-api 里加 DeepSeek 渠道、出一个对外令牌(sk-xxx)Open WebUI 外部连接填 new-api 的私网地址 + 那个令牌,模型列表里出现 deepseek-v4-pro / flash工作空间新建模型「龙渊作战智能体」,把我那套系统提示词(优先级、输出铁律、四个指令模板、命理双视角约束)粘进去固化针对 DeepSeek 优化人设的三点:把指令输出模板直接写死进 prompt(它对"触发即套模板"的遵循不如顶级闭源稳);给命理视角加"仅作辅助、不替代现实决策"的硬约束;显式写入"侦测到跑题先点明再拉回"的反偏离机制。验收:发一句「给我今日计划」,它严格按 7 个字段输出,主题自动落到 AI 安全(提示注入)——遵循稳,上线。四、复盘:我到底练到了什么
:SSH、用户与 sudo、配置文件、systemd 服务:镜像、容器、compose、镜像加速源、端口映射:内网穿透原理、WireGuard、私网与公网隔离而真正值钱的,不是"我装好了一个工具",而是上面那一串自己撞出来的坑和自己排掉的错。教程谁都能抄,踩坑记录才是第一手的东西。五、写在最后
工具搭好只是开始,不是终点。它给我的第一条今日计划就是"提示注入攻击实战"——接下来该用它去产出 writeup、去打靶场、去把学的东西写出来,而不是停在"我又搭了个新装备"的满足感里。