Tabby设置同步的实现
· 4 min read
Tabby 配置完同步之后可以很方便的在不同的地方直接登录服务器,尤其是服务器的 key也能同步。
- 在https://github.com/settings/developers 点击 New OAuth App
- Application name:随便填,比如Tabby-Web
- Homepage URL:根据自己域名填,比如https://tabby.xxx.com
- Authorization callback URL:换成自己的域名,比如https://tabby.xxx.com/api/1/auth/social/complete/github/
- 之后点击 Register application 注册应用,然后会进到应用页
- 点击 Generate a new client secret 生成一个 client secret(只展示一次值)
- 记录下 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
- 连上服务器后,新建个
tabby-web目录,存放 tabby-web 的相关数据 - 创建
docker-compose.yml文件 - 修改
docker-compose.yml文件中的SOCIAL_AUTH_GITHUB_KEY和SOCIAL_AUTH_GITHUB_SECRET为刚才获取的 Client ID 和 Client secret - 启动 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
- 因为我们没有配置 GitHub - Eugeny/tabby-connection-gateway: Connection gateway for Tabby Web 所以是无法在网页登录服务器的
- 不过我们的目的只是配置同步,直接点击网页左下角的登录按钮,选择 github 登录即可
- 之后在左下角点击设置按钮,复制 Config sync 下面的 token
登录后点击设置。

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