Discord Solution

Syncthing on CasaOS Syncs Files but Cannot Delete or Modify Them

A CasaOS Syncthing user could sync data into Documents, Downloads, Gallery and Media, but remote edits and deletions repeatedly pushed the folders out of sync.

Key conclusion: if Syncthing can read a folder but cannot propagate deletes or modifications, test write permission from inside the Syncthing container. A readable bind mount is not automatically writable.

Check folder mode first

A bidirectional folder should use Syncthing folder modes appropriate for receiving changes. Send Only will not behave like Send & Receive.

Prove the container can write

docker exec -it syncthing sh
touch /DATA/Gallery/.write-test
rm /DATA/Gallery/.write-test

If either command fails, fix storage permissions before changing Syncthing settings.

CasaOS Syncthing folder error screenshot showing one folder failing while neighboring folders work
When one folder fails but neighbors work, compare exact path and ownership.
CasaOS storage path screenshot used to compare Syncthing folder mappings
Use a working folder as the control when comparing mount paths.

Match PUID and PGID

The official CasaOS Syncthing compose passes PUID/PGID and binds /DATA into the container. LinuxServer explains PUID/PGID ownership for host volumes.

docker exec syncthing id
stat -c '%u:%g %a %n' /DATA/Gallery

Compare numeric IDs. Renaming ownership to a username is not enough if the container runs under a different UID/GID.

Deletes need parent-directory rights

Removing or renaming a file requires write and execute permission on the parent directory. That explains why read/sync can appear partly functional while remote deletes fail.

CasaOS application log location highlighted for Syncthing troubleshooting
Use logs together with direct filesystem tests.
Syncthing out-of-sync state after a remote device modified files on a CasaOS host
Out-of-sync after remote edits points to the receiving side's write path.

Compare a working folder

Compare docker inspect syncthing mounts, stat mode/UID/GID, ACLs with getfacl, filesystem read-only state, and ignore patterns. Do not jump to chmod 777.

The CasaOS Syncthing setup gives a clean baseline. The ZimaOS app platform helps compare alternatives, while ZimaCube 2 fits multi-drive storage workloads.

Check ACLs when Unix mode bits look correct

Traditional chmod output can look fine while an ACL still changes effective permissions. Compare a working and failing directory:

getfacl /DATA/Gallery
getfacl /DATA/Documents

If one path contains extra ACL entries, fix those intentionally rather than recursively opening permissions everywhere.

Check whether the filesystem is read-only

findmnt -no TARGET,SOURCE,FSTYPE,OPTIONS /DATA/Gallery

A disk mounted ro, filesystem errors, or a degraded external drive can produce the same “can read but cannot change” symptom. If the mount itself is read-only, changing Syncthing settings cannot fix it.

Read the Syncthing error behind “out of sync”

Open the Syncthing web UI and inspect the folder error, then compare container logs:

docker logs --tail 200 syncthing

Look for permission denied, operation not permitted, path-not-found errors, or failed rename/delete operations. “Out of sync” is a state; the log usually contains the lower-level filesystem cause.

Do not use Ignore Permissions as a universal fix

Ignoring permission metadata can help when two filesystems represent Unix mode bits differently, but it does not grant write permission to the process. If the container cannot delete a test file, changing Syncthing's permission-metadata behavior will not make the host directory writable.

Use a controlled write test

Create a small disposable directory, map it into Syncthing, and verify create → edit → rename → delete from both devices. Once that works, apply the same ownership and mount pattern to the real folder. This isolates sync behavior from a complicated existing directory tree.

FAQ

Why can Syncthing add but not delete?

Parent directory permissions can allow reading but block rename/delete operations.

Should I use chmod 777?

No. Prove the failing path and container identity first.