Tabby Web 云端全自动部署指南 (Docker + Cloudflare Tunnels)
cloudflare不要开启5S盾,否则不能同步
项目地址:https://github.com/eugeny/tabby-web
Tabby 是一款备受开发者喜爱的高颜值、跨平台终端工具。而 Tabby Web 则允许我们把这套强大的终端直接搬到浏览器里,实现随时随地的云端 SSH 运维。
然而,在实际部署最新版 Tabby Web 官方镜像时,存在几个极其隐蔽的“坑”(如端口映射失效、前端版本 404 等)。本文将手把手带你通过 Docker + Cloudflare Tunnels (内网穿透) 的方式,不仅完美避开所有 Bug,还能实现不暴露服务器任何端口的极高安全性。
准备工作
- 一台 Linux 服务器(建议 2GB 及以上内存)。
- 一个托管在 Cloudflare 上的域名。
- 一个 GitHub 账号(用于配置 OAuth 第三方登录,Tabby 强制依赖此功能)。
第一步:申请 GitHub OAuth 密钥
由于 Tabby Web 不支持原生账号密码注册,我们必须先申请一个 GitHub 登录凭证。
- 登录 GitHub,进入右上角头像 -> Settings -> 左侧最底部 Developer settings -> OAuth Apps -> New OAuth App。
- 填写信息:
- Application name: 随便填(如
My Tabby Web) - Homepage URL: 填入你准备分配的域名,例如
https://tabby.yourdomain.com - Authorization callback URL: 必须精确填写
https://tabby.yourdomain.com/complete/github/(注意:必须是 https,且结尾的斜杠/绝对不能漏)。
- Application name: 随便填(如
- 点击注册,生成并保存好页面的 Client ID 和 Client secret。
第二步:配置 Cloudflare Tunnels (内网穿透)
使用 Cloudflare Tunnels 可以让服务器免于开放任何防火墙端口,自带 HTTPS,安全且优雅。
- 登录 Cloudflare Zero Trust 控制台。
- 左侧菜单进入 Networks -> Tunnels -> Add a tunnel。
- 选择 Cloudflared,随意命名并保存。
- 在安装指南页面,找到生成的命令,提取出其中的 Token 字符串(即
--token后面的那长串字符),复制备用。 - 点击 Next 配置路由:
- Subdomain: 填
tabby - Domain: 选择你的主域名
- Service Type: 选择
HTTP - Service URL: 填入
tabby:80(利用 Docker 内网解析)
- Subdomain: 填
- 保存。
第三步:服务器环境与配置文件
登录你的服务器,我们需要使用官方的一键脚本安装 Docker 环境,并创建配置。
1. 安装 Docker 并启动
Bash
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
systemctl start docker
systemctl enable docker
2. 创建部署目录
Bash
mkdir -p ~/tabby-web && cd ~/tabby-web
nano docker-compose.yml
3. 编写终极 docker-compose.yml(核心避坑点)
将以下内容粘贴到文件中。注意看代码中的注释,务必替换成你自己的密钥和 Token!
YAML
version: '3.8'
services:
# Tabby 主程序
tabby:
image: ghcr.io/eugeny/tabby-web:latest
restart: always
depends_on:
- db
# ⚠️ 删除了 ports 映射,彻底关闭公网端口,全靠内网穿透
environment:
# 坑 1:数据库密码必须纯字母数字,包含 @ 或 # 会导致 URL 解析崩溃!
- DATABASE_URL=mysql://root:TabbySafePass2026@db/tabby
- DEBUG=False
# 坑 2:修复最新版官方镜像默认监听 8000 且拒绝外部连接的 Bug
- PORT=80
- GUNICORN_CMD_ARGS=--bind=0.0.0.0:80
# 👇 填入你在第一步申请的 GitHub 密钥
- SOCIAL_AUTH_GITHUB_KEY=你的_GitHub_Client_ID
- SOCIAL_AUTH_GITHUB_SECRET=你的_GitHub_Client_Secret
volumes:
- app-dist:/app/app-dist
# 数据库
db:
image: mariadb:10.7.1
restart: always
environment:
MARIADB_DATABASE: tabby
# ⚠️ 密码必须和上面 DATABASE_URL 里的一致
MYSQL_ROOT_PASSWORD: TabbySafePass2026
volumes:
- db-data:/var/lib/mysql
# Cloudflare 穿透组件
cloudflared:
image: cloudflare/cloudflared:latest
restart: always
command: tunnel run
environment:
# 👇 填入你在第二步获取的 Cloudflare Token
- TUNNEL_TOKEN=你的_Cloudflare_Token
保存并退出(Ctrl+O, Enter, Ctrl+X)。
第四步:一键启动与拉取前端资源
这一步是很多新手最容易白屏的地方。后端启动后,必须手动拉取前端静态包。
依次执行以下三条命令:
Bash
# 1. 启动所有服务
docker compose up -d
# 2. 强制等待 15 秒,等 MariaDB 数据库完全建表完毕
sleep 15
# 3. 坑 3:官方文档的版本号 1.0.208 已经报 404,需使用最新 nightly 版本
docker compose exec -T tabby /manage.sh add_version 1.0.231-nightly.0
进阶提示:如果日后
1.0.231-nightly.0也失效了,可以通过运行curl -s https://registry.npmjs.org/tabby-web-container/latest | grep -o '"version":"[^"]*"' | cut -d'"' -f4来动态获取官方目前存活的最新版本号。
搞定!开始享受云端终端
等待最后一条解压命令执行完毕(没有报错即可)。
现在,你可以直接在浏览器地址栏输入你绑定的域名:https://tabby.yourdomain.com。
你将看到一个自带 HTTPS 绿锁、极其安全的 Tabby 登录界面。点击 GitHub 授权登录,即可在浏览器里愉快地敲击命令行了!