其他
tabby 自建同步服务 tabby-web 记录

tabby 自建 tabby-web 同步配置

前言

tabby 作者因为续费不起服务器 (opens in a new tab),所以关闭了 tabby-web (opens in a new tab) 服务。

tabby 配置完同步之后可以很方便的在不同的地方直接登录服务器,尤其是 服务器的 key 也能同步。

使用 Github OAuth 验证登录(其他的验证方式自己摸索吧)

  1. https://github.com/settings/developers (opens in a new tab) 点击 New OAuth App

  2. Application name 和 Homepage URL 都按照自己实际来就行了,比如就叫 tabby-web 和 自己网站主页

  3. 主要是 Authorization callback URL 要填写:https://你的域名/api/1/auth/social/complete/github/ (opens in a new tab)

  4. 之后点击 Register application 注册应用,然后会进到应用页

  5. 点击 Generate a new client secret 生成一个 client secret(只展示一次值)

  6. 记录下 Client ID 和 刚才生成的 Client secret

部署 tabby-web

这里使用的是 docker 和 docker-compose 来部署

# 一键安装 docker
curl -fsSL https://get.docker.com | bash
# 改用国内镜像
# curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 安装 docker-compose(debian/ubuntu)
apt install docker-compose
  1. 连上服务器后,新建个 tabby-web 目录,存放 tabby-web 的相关数据

  2. 创建 docker-compose.yml 文件

这里直接使用了 host 宿主机的网络,如果 9000 端口被占了的话自己改一个,数据存在当前目录的 data 目录下

ghcr.io 镜像地址国内机子访问可能会有问题,自行使用代理或者镜像地址

mkdir tabby-web
cd tabby-web
# 使用 > 写入内容到 docker-compose.yml 文件
cat <<EOF > docker-compose.yml
version: '3.0'
 
services:
  tabby-web:
    image: ghcr.io/eugeny/tabby-web:latest
    container_name: tabby-web
    restart: unless-stopped
    network_mode: host
    volumes:
      - ./data:/data
    environment:
      - DATABASE_URL=sqlite:////data/db.sqlite3
      - DEBUG=False
      - PORT=9000
      - APP_DIST_STORAGE=file:///data
      - SOCIAL_AUTH_GITHUB_KEY=刚才获取的 Client ID
      - SOCIAL_AUTH_GITHUB_SECRET=刚才获取的 Client secret
    logging:
      driver: "json-file"
      options:
        max-size: "5m"
        max-file: "5"
EOF
  1. 修改 docker-compose.yml 文件中的 SOCIAL_AUTH_GITHUB_KEYSOCIAL_AUTH_GITHUB_SECRET 为刚才获取的 Client ID 和 Client secret

  2. 启动 tabby-web

docker-compose up -d

配置 nginx 反代给 tabby-web 上域名和 ssl 证书

到这一步你也可以直接访问 ip:端口打开网页了,不过放到公网的话,还是建议加个域名配个证书,这里给一份 nginx 反代的示例

server {
    listen       80;
    listen  [::]:80;
    server_name 你的域名;
    return 302 https://$host${request_uri};
}
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;
    server_name  你的域名;
    ssl_certificate     /path/to/your/ssl/cert.pem;
    ssl_certificate_key /path/to/your/ssl/key.pem;
    ssl_session_timeout 5m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers   ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:-LOW:!aNULL:!eNULL;
    ssl_prefer_server_ciphers  on;
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Headers X-Requested-Wit,content-typeh;
    add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Range $http_range;
        proxy_set_header If-Range $http_if_range;
        proxy_redirect off;
        proxy_pass http://127.0.0.1:9000;
    }
    access_log  off;
}

访问 tabby-web

  • 因为我们没有配置 tabby-connection-gateway (opens in a new tab) 所以是无法在网页登录服务器的

  • 不过我们的目的只是配置同步,直接点击网页左下角的登录按钮,选择 github 登录即可

  • 之后在左下角点击设置按钮,复制 Config sync 下面的 token

  • 在 tabby 的配置同步中,修改同步的地址,然后将 token 填入到同步 token 的地方就行了

tabby