tabby 自建 tabby-web 同步配置
前言
tabby 作者因为续费不起服务器 (opens in a new tab),所以关闭了 tabby-web (opens in a new tab) 服务。
tabby 配置完同步之后可以很方便的在不同的地方直接登录服务器,尤其是 服务器的 key 也能同步。
使用 Github OAuth 验证登录(其他的验证方式自己摸索吧)
-
在 https://github.com/settings/developers (opens in a new tab) 点击 New OAuth App
-
Application name 和 Homepage URL 都按照自己实际来就行了,比如就叫 tabby-web 和 自己网站主页
-
主要是 Authorization callback URL 要填写:https://你的域名/api/1/auth/social/complete/github/ (opens in a new tab)
-
之后点击 Register application 注册应用,然后会进到应用页
-
点击 Generate a new client secret 生成一个 client secret(只展示一次值)
-
记录下 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
-
连上服务器后,新建个
tabby-web
目录,存放 tabby-web 的相关数据 -
创建
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
-
修改
docker-compose.yml
文件中的SOCIAL_AUTH_GITHUB_KEY
和SOCIAL_AUTH_GITHUB_SECRET
为刚才获取的 Client ID 和 Client secret -
启动 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 的地方就行了