跳到主要内容

Syncthing

Syncthing 是一款免费开源的文件同步应用程序,可在多个设备间同步文件和文件夹,支持增量同步。我用它将服务器的数据备份到 NAS 上做统一管理。

部署(Docker Compose)

首先创建 compose.yaml 文件,并粘贴以下内容:

compose.yaml

version: "3"
services:
syncthing:
container_name: ${STACK_NAME}_app
image: syncthing/syncthing:${APP_VERSION}
hostname: my-syncthing
environment: # 需要以 root 权限运行,否则无法读取其他 docker 目录或宿主机 root 目录
- PUID=0
- PGID=0
volumes:
- ${APP_SYNC_DIR}:/DATA
- ${STACK_DIR}/config:/var/syncthing/config/
ports:
- ${APP_PORT}:8384 # Web UI
- 22000:22000/tcp # TCP file transfers
- 22000:22000/udp # QUIC file transfers
- 21027:21027/udp # Receive local discovery broadcasts
restart: unless-stopped

(可选)推荐在 compose.yaml 同级目录下创建 .env 文件,并自定义你的环境变量。如果不想使用环境变量的方式,也可以直接在 compose.yaml 内自定义你的参数(比如把 ${STACK_NAME} 替换为 syncthing)。

.env

STACK_NAME=syncthing
STACK_DIR=xxx # 自定义项目储存路径,例如 ./syncthing

# syncthing
APP_VERSION=latest
APP_PORT=xxxx # 自定义访问端口,选择不被占用的即可
APP_SYNC_DIR=xxxx # 自定义需要同步的路径,比如 /DATA

最后,在 compose.yaml 同级目录下执行 docker compose up -d 命令即可启动编排的容器。

配置说明

如果提示权限不足,可尝试将 PUIDPGID 值都修改为 0,用 root 权限启动。

参考与致谢