2026 年 4 月 24 日 · 8 分钟

自托管一个随处可用的 AI 终端

大多数「自托管 AI」教程止步于模型。这篇覆盖整个栈 —— 智能体、shell、SSH 客户端,和一个手机就能打开的 URL。

搜「self-host AI terminal」,结果大多在讲怎么本地跑模型:Ollama、LocalAI、 LM Studio、llama.cpp。挺好 —— 但模型不是终端。搜索结果的第一页里, 没有一个是真正能从浏览器访问的智能体 shell。这篇要搭的就是它: 一台服务器、一次安装,一个能 SSH、能改文件、能跑进程、能搜网页、 还扛得住手机断网的智能体。任何有 Safari 或 Chrome 的设备都能用。

整个栈

部署在家庭服务器上的 Tron,在浏览器标签页中打开
一台服务器,一个 URL —— 终端、智能体、SSH 都在浏览器里

安装 Tron

git clone https://github.com/Shadowhusky/Tron.git
cd Tron
npm install
npm run build:web
npm run start:web   # 监听 0.0.0.0:3888(默认 local 模式)

内置三种部署模式:

同一台机器加上 Ollama

Tron 设置页 —— AI 提供商指向本地 Ollama 端点
Settings › AI —— 提供商指向 localhost,循环就不出这台机器
curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen2.5-coder:7b
ollama pull llama3.1:8b

在 Tron 的 Settings > AI 里把提供商切到 Ollama,base URL 设为 http://localhost:11434。智能体循环从此不出这台机器。 应付「跑个脚本、修个配置」的日常足够;显存够的话,更大的模型 (Qwen 2.5 Coder 14B/32B)在多步任务上明显更稳。

用 Caddy 上 TLS

有域名的话,Caddyfile 里两行:

tron.example.com {
    reverse_proxy localhost:3888
}

Caddy 自动签 Let's Encrypt 证书。TLS 到此为止。

不开端口,从外网访问

两个选项,用你已经在用的那个:

持久化与可靠性

几个值得知道的默认行为:

从托管终端再 SSH 出去

SSH 配置存在服务器侧的 ~/.tron/ssh-profiles.json。 加一次,任何设备都能用 —— 不同步到任何第三方服务,私钥永远不离开服务器。

作为服务运行

一个简单的 systemd unit:

# /etc/systemd/system/tron.service
[Unit]
Description=Tron terminal
After=network.target

[Service]
Type=simple
User=tron
WorkingDirectory=/opt/Tron
ExecStart=/usr/bin/npm run start:web
Restart=on-failure
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

systemctl enable --now tron,收工。

什么时候值得自托管(什么时候不值)

代码本来就在服务器上、你愿意自己管运维、或者你需要一切(提示词、shell、密钥) 都留在自己硬件上时,自托管赢。只有一台笔记本的话就未必了 —— 那种场景桌面应用更省事。

跑起来

源码 + 三平台安装包。