Skip to main content

Tabby设置同步的实现

· 4 min read
yrx
Coder

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

  1. https://github.com/settings/developers 点击 New OAuth App
    1. Application name:随便填,比如Tabby-Web
    2. Homepage URL:根据自己域名填,比如https://tabby.xxx.com
    3. Authorization callback URL:换成自己的域名,比如https://tabby.xxx.com/api/1/auth/social/complete/github/
  2. 之后点击 Register application 注册应用,然后会进到应用页
  3. 点击 Generate a new client secret 生成一个 client secret(只展示一次值)
  4. 记录下 Client ID 和 刚才生成的 Client secret

2. 部署Tabby-web

使用docker和docker-compose部署

# 一键安装 docker
curl -fsSL https://get.docker.com | bash
# 安装 docker-compose(ubuntu)
apt install docker-compose
  1. 连上服务器后,新建个 tabby-web 目录,存放 tabby-web 的相关数据
  2. 创建 docker-compose.yml 文件
  3. 修改 docker-compose.yml 文件中的 SOCIAL_AUTH_GITHUB_KEYSOCIAL_AUTH_GITHUB_SECRET 为刚才获取的 Client ID 和 Client secret
  4. 启动 tabby-web
mkdir tabby-web
cd tabby-web
vi docker-compose.yml
docker-compose up -d

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

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"

3. 配置 nginx 反代并配置HTTPS

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

安装

sudo apt install nginx -y
nginx -v
sudo systemctl start nginx # 启动
sudo systemctl stop nginx # 停止
sudo systemctl restart nginx # 重启
sudo systemctl reload nginx # 热加载配置
sudo systemctl status nginx # 查看状态

# 安装 Certbot(自动申请免费 SSL 证书)
sudo apt install certbot python3-certbot-nginx -y
# 申请 SSL 证书
sudo certbot --nginx -d tabby.xxx.com

# 创建 Nginx 反向代理配置文件
sudo nano /etc/nginx/sites-available/tabby.conf

# TODO 修改配置文件

# 启用配置并检查语法
# 创建软链接
sudo ln -s /etc/nginx/sites-available/tabby.conf /etc/nginx/sites-enabled/
# 检查配置
sudo nginx -t
# 如无报错,重载 Nginx
sudo systemctl reload nginx

配置文件

server {
listen 80;
listen [::]:80;
server_name tabby.xxx.com;

return 302 https://$host$request_uri;
}

server {
listen 443 ssl;
listen [::]:443 ssl;

server_name tabby.xxx.com;

ssl_certificate /etc/letsencrypt/live/tabby.xxx.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tabby.xxx.com/privkey.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_set_header X-Forwarded-Proto https;
proxy_redirect off;
proxy_pass http://127.0.0.1:9000;
}
}

4. 访问 Tabby-web

image-20251211201902572

登录后点击设置。

image-20251211201954272

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

image-20251211202130023