🚀 使用 Docker Compose 部署 syncthing
🚀 使用 Docker Compose 部署 Syncthing
Syncthing 是一款开源免费的 点对点文件同步工具 ,它能在你的多台设备(如电脑、手机、服务器、NAS)之间实现文件实时同步,所有数据都直接在你的设备间传输,无需经过第三方服务器,确保了隐私和安全。
📦 准备工作
- 环境要求:确保你的系统已安装 Docker 和 Docker Compose。
- 创建目录:为部署和管理方便,建议创建一个独立目录,例如
mkdir -p /opt/docker/syncthing,然后进入该目录cd /opt/docker/syncthing。
🛠 配置 Docker Compose
将你提供的配置稍作优化和整理,创建 docker-compose.yml 文件:
#version: "3.8"
services:
syncthing-a:
image: syncthing/syncthing:latest
container_name: syncthing-a
restart: unless-stopped
network_mode: host
volumes:
- /mnt/10t:/volume # 挂载硬盘 A
- ./config-a:/var/syncthing/config
environment:
- STGUIADDRESS: "0.0.0.0:8384"
- PUID: "0"
- PGID: "0"
#拿他没辙
#PUID: "103"
#PGID: "112"
syncthing-b:
image: syncthing/syncthing:latest
container_name: syncthing-b
restart: unless-stopped
network_mode: host
volumes:
- /mnt/10t-2:/volume # 挂载硬盘 B
- ./config-b:/var/syncthing/config
environment:
- STGUIADDRESS: "0.0.0.0:8385"
- PUID: "0"
- PGID: "0"
#若无法运行请去掉配置项“environment:”下面的-号。
关键配置说明:
| 配置项 | 说明与建议 |
|---|---|
network_mode: host |
使用 host 网络模式 可以简化配置,并有助于改善在本地网络下的设备发现和传输性能。 |
volumes |
- /mnt/10t:/volume 将本地硬盘映射到容器内,这是你希望同步的文件所在位置。- ./config-a:/var/syncthing/config 将配置目录持久化到本地,防止容器重启后配置丢失。 |
environment |
PUID=0 和 PGID=0 让容器以 root 权限 运行,可以避免因权限问题导致的文件读写错误。 STGUIADDRESS 环境变量设置了 Web 管理界面的监听地址和端口。 |
🚀 启动与验证
-
启动服务:在
docker-compose.yml文件所在目录执行:bash docker-compose up -d这会拉取镜像并在后台启动两个 Syncthing 容器。 -
检查状态:
bash docker-compose ps如果两个容器的状态均为Up,则说明启动成功。
⚙️ 基本配置与使用
-
访问 Web 管理界面:
- 对于
syncthing-a,在浏览器中访问http://你的服务器IP:8384。 - 对于
syncthing-b,访问http://你的服务器IP:8385。
- 对于
-
初始设置:
- 首次访问,Syncthing 的 Web 界面可能会提示你设置用户名和密码以增强安全性。建议为外网访问开启加密连接。
- Syncthing 的 Web 界面支持多国语言,你可以根据需要切换。
-
添加设备与同步文件夹: Syncthing 采用 P2P(点对点) 方式同步,无需中心服务器。
- 获取设备 ID:在每个设备的 Web 界面中,点击 "操作" -> "显示 ID",复制长长的设备 ID。
- 添加远程设备:在另一台设备的 Web 界面,点击右下角的 "添加远程设备",粘贴复制的设备 ID。
- 共享文件夹:在任一设备上,点击 "添加文件夹",设置要同步的文件夹路径(例如,在
syncthing-a上,你可以设置路径为/volume/myshare)。在文件夹的 "共享" 选项卡中,勾选你刚刚添加的远程设备。 - 接受共享:在另一台设备上,你会在 Web 界面看到共享文件夹的邀请,点击"添加"接受即可。之后,这两个文件夹之间的文件就会开始自动同步。
🔒 维护与管理
-
服务管理:
- 停止服务:
docker-compose down - 重启服务:
docker-compose restart - 查看日志:
docker-compose logs -f syncthing-a(或syncthing-b)
- 停止服务:
-
版本更新:
bash # 进入 docker-compose.yml 所在目录 docker-compose down docker-compose pull # 拉取最新镜像 docker-compose up -d -
数据备份:定期备份你的
docker-compose.yml文件以及config-a和config-b目录,这些目录包含了 Syncthing 的所有配置信息。
🐛 常见问题排查 (FAQ)
| 问题现象 | 可能原因与解决方法 |
|---|---|
| 无法访问 Web 界面 | 检查服务器防火墙/安全组是否放行了 8384 和 8385 端口。确认容器是否正常运行:docker-compose ps。 |
| 文件同步失败或权限错误 | 检查挂载的本地目录(如 /mnt/10t)及其父目录的权限,确保 Docker 容器有读写权限。在配置中设置 PUID=0 和 PGID=0 通常可解决权限问题。 |
| 设备无法发现或连接 | 确保设备间网络通畅。在路由器或防火墙上,确保 22000/tcp、22000/udp 和 21027/udp 端口已开放。使用 host 网络模式通常有助于改善连接。检查 Syncthing Web 界面 "设置" 中的 "全局发现服务器" 和 "NAT 穿透" 功能是否启用。 |
希望这份教程能帮助你顺利搭建起属于自己的私有化文件同步网络!