技术笔记 / 运维相关 · 2024年1月7日 0

自建Tabby Web同步服务

前提需求:
1. Github账号
2. 具有公网IP的服务器
3. Docker环境

原本是用Termius,但是穷人不配多端同步,要管理的机器有点多,实在不方便,于是找到了Tabby,用起来也不错,免费开源,且支持多端同步。目前网上介绍的同步方式都是用插件,但实际上Tabby官方支持同步,只需要自建一个Tabby Web服务即可。

首先在【设置】-【保险库】中设置一个主密码,但下面的加密配置文件不要打开。

去 https://github.com/settings/applications/new 注册一个github应用

Application name 随意,比如 tabby-web

Homepage URL 填写你的访问域名,可以带端口号,例如:https://tabby-web.anerg.com:8888

Authorization callback URL 要设置为 https://<your-host>/api/1/auth/social/complete/github/ 例如:https://tabby-web.anerg.com:8888/api/1/auth/social/complete/github/

注册完成后,获取 Client ID 和 Client secrets,后面要用到。

version: '3.0'

services:
  tabby-web:
    image: ghcr.io/eugeny/tabby-web:latest
    container_name: tabby-web
    restart: unless-stopped
    networks:
      - work-net
    volumes:
      - /volume1/docker/tabby/data:/data
    environment:
      - DATABASE_URL=sqlite:////data/db.sqlite3
      - DEBUG=False
      - PORT=9000
      - APP_DIST_STORAGE=file:///data
      - SOCIAL_AUTH_GITHUB_KEY=xxxx
      - SOCIAL_AUTH_GITHUB_SECRET=xxxx
    labels:
      - com.centurylinklabs.watchtower.enable=true
      - traefik.enable=true
      - traefik.http.routers.app-tabby-web.tls=true
      - traefik.http.routers.app-tabby-web.tls.certresolver=cloudflare
      - traefik.http.routers.app-tabby-web.entrypoints=websecure
      - traefik.http.routers.app-tabby-web.rule=Host(`tabby-web.anerg.com`)
      - traefik.http.routers.app-tabby-web.service=app-tabby-web
      - traefik.http.services.app-tabby-web.loadbalancer.server.port=9090
    logging:
      driver: "json-file"
      options:
        max-size: "5m"
        max-file: "5"

networks:
  work-net:
    external: true

SOCIAL_AUTH_GITHUB_KEY的值设置为Client ID

SOCIAL_AUTH_GITHUB_SECRET的值设置为Client secrets

我这里有个docker自建的网络work-net,如果你没有,删除掉相关配置

然后访问 https://tabby-web.anerg.com:8888 左下角登陆,获取key

打开软件,【设置】-【配置同步】

同步主机,填写你的地址,比如我这里是 https://tabby-web.anerg.com:8888

加密同步令牌,填写刚从tabby web页面获取到的key

如果没问题,就可以上传配置了,在其它机器上,设置好配置同步,可以下载覆盖即可。

注意,所有的服务器,都应该是以密码方式访问,这样同步以后,所有终端都可以用了。