От няколко месеца използвам Syncthing, за да синхронизирам работното си копие с локален dev сървър.

В началото го стартирах ръчно през CLI след логване. Работеше добре, така че не се замислих, когато реших да го пусна като услуга. Стартира, синхронизира малко данни, всичко беше наред.

Докато не спря да бъде, разбира се! 🙂

Оказва се, че не съм забелязал куп грешки в логовете, които споменават, че файловата система на dev сървъра е само за четене и това кара Syncthing да не синхронизира нищо.

Мислех, че е бъг и просто показва Out of Sync за папките, но всъщност си синхронизираше. Е, грешах.

След няколко часа дебъгване и без никакви следи във форумите след няколко търсения в Google, попаднах на статия за Syncthing в ArchWiki, която описваше точно моя случай:

read-only file system error on /etc although run as root

Това беше точно моят случай, с тази разлика, че проблемната папка не беше /etc, а /usr/local/src.

Е, след като прочетох какво пише, излезе, че ако стартираш Syncthing (или каквото и да е) през systemd и имаш зададено ProtectSystem на full за услугата, някои директории стават само за четене по подразбиране. /usr е една от тези директории.

За да го поправиш, трябва да добавиш нов ред в конфигурацията на услугата и да я рестартираш (и да изпълниш daemon-reload):

ReadWritePaths=/usr/local/src

След това Syncthing би трябвало да работи нормално.