|
|
|
# Syncthing
|
|
|
|
|
|
|
|
###### guide-by-example
|
|
|
|
|
|
|
|
![logo](https://i.imgur.com/Vgtn1FM.png)
|
|
|
|
|
|
|
|
# Purpose & Overview
|
|
|
|
|
|
|
|
Synchronize folders between devices.<br>
|
|
|
|
|
|
|
|
* [Official](https://syncthing.net/)
|
|
|
|
* [Github](https://github.com/syncthing/syncthing)
|
|
|
|
|
|
|
|
Simple and elegant solution for Synchronizing folders.<br>
|
|
|
|
Clients are installed on devices, and paired with the Syncthing server.
|
|
|
|
There are Windows, MacOs, Linux, Android clients, and 3rd party Möbius Sync for iOS.
|
|
|
|
|
|
|
|
Written in Go.
|
|
|
|
|
|
|
|
# Files and directory structure
|
|
|
|
|
|
|
|
```
|
|
|
|
/home/
|
|
|
|
└── ~/
|
|
|
|
└── docker/
|
|
|
|
└── syncthing/
|
|
|
|
├── 🗋 .env
|
|
|
|
└── 🗋 docker-compose.yml
|
|
|
|
```
|
|
|
|
* `.env` - a file containing environment variables for docker compose
|
|
|
|
* `docker-compose.yml` - a docker compose file, telling docker how to run the container
|
|
|
|
|
|
|
|
# Compose
|
|
|
|
|
|
|
|
`docker-compose.yml`
|
|
|
|
```yml
|
|
|
|
services:
|
|
|
|
|
|
|
|
syncthing:
|
|
|
|
image: syncthing/syncthing
|
|
|
|
container_name: syncthing
|
|
|
|
hostname: syncthing
|
|
|
|
restart: unless-stopped
|
|
|
|
env_file: .env
|
|
|
|
volumes:
|
|
|
|
- /mnt/mirror/syncthing:/var/syncthing
|
|
|
|
ports:
|
|
|
|
- 8384:8384 # Web UI
|
|
|
|
- 22000:22000/tcp # TCP file transfers
|
|
|
|
- 22000:22000/udp # QUIC file transfers
|
|
|
|
- 21027:21027/udp # Receive local discovery broadcasts
|
|
|
|
|
|
|
|
networks:
|
|
|
|
default:
|
|
|
|
name: $DOCKER_MY_NETWORK
|
|
|
|
external: true
|
|
|
|
```
|
|
|
|
|
|
|
|
`.env`
|
|
|
|
```bash
|
|
|
|
# GENERAL
|
|
|
|
DOCKER_MY_NETWORK=caddy_net
|
|
|
|
TZ=Europe/Bratislava
|
|
|
|
|
|
|
|
# SYNCTHING
|
|
|
|
PUID=1000
|
|
|
|
PGID=1000
|
|
|
|
```
|
|
|
|
|
|
|
|
# Reverse proxy
|
|
|
|
|
|
|
|
Caddy v2 is used, details
|
|
|
|
[here](https://github.com/DoTheEvo/selfhosted-apps-docker/tree/master/caddy_v2).
|
|
|
|
|
|
|
|
`Caddyfile`
|
|
|
|
```php
|
|
|
|
sync.{$MY_DOMAIN} {
|
|
|
|
reverse_proxy syncthing:8384
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
# First run
|
|
|
|
|
|
|
|
![webgui](https://i.imgur.com/ywdYeU2.png)
|
|
|
|
|
|
|
|
visit the webgui, setup username and password in settings > GUI.
|
|
|
|
|
|
|
|
* intall sync on other devices
|
|
|
|
* add folders, confirm them on webgui
|
|
|
|
|
|
|
|
sync should just start.
|
|
|
|
|
|
|
|
|
|
|
|
# Trouble shooting
|
|
|
|
|
|
|
|
# Update
|
|
|
|
|
|
|
|
Manual image update:
|
|
|
|
|
|
|
|
- `docker compose pull`</br>
|
|
|
|
- `docker compose up -d`</br>
|
|
|
|
- `docker image prune`
|
|
|
|
|