🚀 运行: ...
IP: ...
ISP: 检测中...

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 登录凭证。

  1. 登录 GitHub,进入右上角头像 -> Settings -> 左侧最底部 Developer settings -> OAuth Apps -> New OAuth App
  2. 填写信息:
    • Application name: 随便填(如 My Tabby Web
    • Homepage URL: 填入你准备分配的域名,例如 https://tabby.yourdomain.com
    • Authorization callback URL: 必须精确填写 https://tabby.yourdomain.com/complete/github/注意:必须是 https,且结尾的斜杠 / 绝对不能漏)。
  3. 点击注册,生成并保存好页面的 Client IDClient secret

第二步:配置 Cloudflare Tunnels (内网穿透)

使用 Cloudflare Tunnels 可以让服务器免于开放任何防火墙端口,自带 HTTPS,安全且优雅。

  1. 登录 Cloudflare Zero Trust 控制台
  2. 左侧菜单进入 Networks -> Tunnels -> Add a tunnel
  3. 选择 Cloudflared,随意命名并保存。
  4. 在安装指南页面,找到生成的命令,提取出其中的 Token 字符串(即 --token 后面的那长串字符),复制备用。
  5. 点击 Next 配置路由:
    • Subdomain: 填 tabby
    • Domain: 选择你的主域名
    • Service Type: 选择 HTTP
    • Service URL: 填入 tabby:80(利用 Docker 内网解析)
  6. 保存。

第三步:服务器环境与配置文件

登录你的服务器,我们需要使用官方的一键脚本安装 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 授权登录,即可在浏览器里愉快地敲击命令行了!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注