### Devices cannot find each other Check that the sync port is open from outside and that the node listens on it: ```bash docker compose ps curl --fail --silent http://127.0.0.1:8384/rest/noauth/health sudo ufw status | grep 22000 ``` In the web interface the Listeners row should show every address as active. If the connection still goes through a relay, the device card shows Connection Type `Relay` instead of `TCP LAN` or `TCP WAN` — the direct connection failed and port 22000 is closed on at least one side. ### Permission error on the folder The container runs as `1000:1000`, and a host directory often belongs to root: ```bash ls -ld /srv/syncthing sudo chown -R 1000:1000 /srv/syncthing ``` `SYNCTHING_UID` and `SYNCTHING_GID` set a different owner when the server needs one. ### A file was deleted on every device That is expected: Syncthing synchronises deletions. It can be recovered from versions if File Versioning is enabled for the folder — expand the folder card and press Versions. Without versioning, only an external backup helps. ### A folder is stuck Out of Sync Usually an edit conflict or an unreadable file: ```bash docker compose logs --tail=200 syncthing | grep -i "error\|conflict\|permission" ``` Syncthing keeps conflicting copies next to the file, named like `name.sync-conflict-DATE-TIME.extension`. Pick the version you want and delete the other. ### The web interface rejects the password The password lives in the configuration inside the volume. Reset it by editing `config.xml` while the container is stopped: ```bash docker compose stop syncthing docker run --rm -it -v syncthing-config:/c alpine:3.22 \ sh -c 'sed -i "s@.*@@" /c/config/config.xml' docker compose start syncthing ``` The interface then opens without a password — set a new one immediately. ### The node reports a different identifier after a move The device identifier is tied to the private key in the volume. If you copied the configuration to a second server and started both, the cluster now has two nodes with the same ID, which is not allowed. Keep one copy and create a new node on the other machine. ### High memory use Memory grows with the number of files in the index. Excluding unneeded directories through Ignore Patterns in the folder settings and increasing the scan interval both help. ### The node does not start after an update ```bash docker compose logs --tail=200 syncthing | grep -i "error\|migrat" ``` The index database format does not migrate downwards: the only way back to the previous version is restoring the archive taken before the update. The files themselves are not affected.