Syncthing czy Nextcloud na VPS: co wybrać?
Analiza różnic między modelem peer-to-peer a serwerem plików. Dowiedz się, dlaczego Syncthing nie zastąpi Nextcloud w pracy zespołowej i dlaczego żadne z nich nie jest kopią zapasową.
Syncthing a Nextcloud: różnica, która o wszystkim przesądza
Wybór między Syncthing a Nextcloud sprowadza się do jednej różnicy strukturalnej, z której wynika cała reszta. Syncthing działa w modelu peer-to-peer. Każde urządzenie przechowuje cały folder i żadna kopia nie jest nadrzędna. Nextcloud to serwer. Jedna maszyna przechowuje pliki, przed którymi znajdują się konta użytkowników, a klienci pobierają kopie danych.
Dlatego Syncthing nie posiada funkcji udostępniania przez link ani podglądu dokumentów w przeglądarce. Nie istnieje centralna kopia, która mogłaby serwować dane, więc przeglądarka nie ma czego odpytywać. Nextcloud oferuje obie te funkcje, a do ich działania wymaga środowiska uruchomieniowego PHP, serwera bazy danych, serwera WWW oraz reverse proxy dla TLS (transport layer security).
Wybierz Syncthing, jeśli wszystkie urządzenia należą do Ciebie. Wybierz Nextcloud, jeśli dostęp do plików musi być możliwy z poziomu przeglądarki lub dla innych osób.
Rola VPS w poszczególnych architekturach
VPS z uruchomionym Nextcloud stanowi główne miejsce przechowywania danych. Usunięcie lokalnej kopii z laptopa nie powoduje utraty pliku, ponieważ serwer jest jego źródłową lokalizacją.
VPS z uruchomionym Syncthing pełni inną funkcję: jest węzłem działającym w trybie ciągłym. Syncthing przesyła dane bezpośrednio między dwoma urządzeniami, które są w tym samym czasie aktywne w sieci. Dwa laptopy, które nigdy nie są włączone jednocześnie, nie mogą się zsynchronizować, niezależnie od czasu oczekiwania. Dodanie trzeciego węzła na serwerze VPS, który nigdy nie przechodzi w stan uśpienia, rozwiązuje ten problem. Laptop A wysyła dane o 09:00, laptop B pobiera je o 22:00, a VPS przechowuje folder w międzyczasie.
Jest to realnie użyteczna rola, o węższym zakresie niż „zamiennik Dropbox”. Syncthing nigdy nie wygeneruje linku do udostępnienia pliku klientowi. Jeśli jest to wymagana funkcjonalność, należy przerwać lekturę w tym miejscu i zapoznać się z zestawieniem samodzielnie hostowanych alternatyw dla Dropbox.
Koszty utrzymania na małym serwerze VPS
Syncthing to pojedynczy plik binarny napisany w Go. Nasłuchuje na gnieździe, przechowuje indeks plików w lokalnej bazie danych i na tym kończy się cały stos technologiczny. Od wersji 2.0 indeks opiera się na SQLite zamiast LevelDB, więc aktualizacja z wersji 1.x wymaga jednorazowej migracji przy pierwszym uruchomieniu. W przypadku dużych zbiorów plików migracja może potrwać długo. Należy pozwolić jej się zakończyć. Żadne inne oprogramowanie nie wymaga instalacji ani aktualizacji poprawek.
Nextcloud wymaga więcej zasobów. Według stanu na sierpień 2026, Nextcloud 35 wspiera PHP 8.3 do 8.5 z bazą danych MariaDB lub PostgreSQL, obsługiwaną przez Apache 2.4 lub nginx z php-fpm. Dokumentacja administracyjna zaleca „minimum 512 MB pamięci RAM na proces”, a php-fpm uruchamia jednocześnie kilka procesów roboczych.
Na serwerze VPS z 1 GB pamięci RAM, Syncthing działa swobodnie, podczas gdy Nextcloud pracuje w ciasnych warunkach. Nie oznacza to, że wybór Nextcloud jest błędny. Wiąże się on jednak z większym zaangażowaniem, ponieważ wymaga utrzymywania czterech komponentów zamiast jednego. Wykorzystanie kontenerów, opisane w przewodniku po Nextcloud na VPS z użyciem Docker, TLS i kopii zapasowych, jest najmniej uciążliwym sposobem na zarządzanie tym obciążeniem. Dodanie edycji dokumentów w przeglądarce podnosi wymagania sprzętowe, co zostało omówione w porównaniu OnlyOffice i Collabora dla serwerów o pojemności od 2 do 4 GB RAM.
Instalacja Syncthing na VPS
Ubuntu dostarcza pakiet syncthing, jednak jego wersja jest znacznie opóźniona względem wydania głównego. Należy użyć oficjalnego repozytorium projektu.
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get update
sudo apt-get install syncthing
syncthing --versionPolecenie syncthing --version powinno wyświetlić linię zaczynającą się od syncthing v2. Wystąpienie v1 oznacza, że apt nadal preferuje pakiet dystrybucyjny. Należy ustawić priorytet (pinning) repozytorium projektu powyżej repozytorium systemowego i ponowić instalację.
printf "Package: *\nPin: origin apt.syncthing.net\nPin-Priority: 990\n" | sudo tee /etc/apt/preferences.d/syncthing.prefUruchom usługę jako systemową w ramach zwykłego konta użytkownika, aby była aktywowana podczas startu systemu bez konieczności logowania.
sudo systemctl enable --now syncthing@youruser.service
systemctl status syncthing@youruser.servicePolecenie systemctl status powinno zwrócić active (running). Pliki konfiguracyjne oraz indeksy znajdują się w /home/youruser/.local/state/syncthing, a główny plik konfiguracyjny to config.xml. Instalacje utworzone przed wersją Syncthing 1.27 przechowują je w ~/.config/syncthing, dlatego przed kopiowaniem danych między maszynami należy sprawdzić obie ścieżki.
Następnie otwórz porty. Syncthing wykorzystuje 22000/TCP do protokołu synchronizacji, 22000/UDP do transportu QUIC oraz 21027/UDP do wykrywania lokalnego. Wykrywanie korzysta z transmisji broadcast i multicast, które nie działają przez Internet, więc na serwerze VPS wymagane są tylko dwa pierwsze porty.
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw statusPolecenie ufw status powinno wyświetlić obie reguły. Jeśli zwróci Status: inactive, oznacza to, że ufw nie filtruje ruchu i jedyną aktywną zaporą jest firewall sieciowy dostawcy. Należy sprawdzić również ten panel, ponieważ u większości dostawców stanowi on niezależną warstwę zabezpieczeń. Jeśli zdalne urządzenie pozostaje w stanie Disconnected mimo uruchomionej usługi, zazwyczaj oznacza to, że jedna z tych dwóch zapór jest nadal zamknięta.
Dostęp do interfejsu GUI Syncthing bez jego upubliczniania
Domyślnie interfejs WWW (graficzny interfejs użytkownika) nasłuchuje na 127.0.0.1:8384, dzięki czemu odpowiada wyłącznie na zapytania pochodzące z samego serwera. To ustawienie domyślne zapewnia ochronę, ponieważ interfejs GUI posiada klucz API (interfejsu programowania aplikacji), który pozwala na zmianę ścieżki dowolnego folderu na serwerze.
Nie należy otwierać go na świat jako pierwszego kroku. Dokumentacja jasno określa skutki powiązania z adresem sieciowym: „podanie adresu LAN komputera NIE ograniczy dostępu wyłącznie do urządzeń w sieci lokalnej!”. Zamiast tego należy przekierować port przez SSH z poziomu laptopa.
ssh -L 8384:127.0.0.1:8384 youruser@your.vps.examplePo nawiązaniu sesji otwórz http://127.0.0.1:8384 w lokalnej przeglądarce. Tunel zostanie zamknięty wraz z sesją SSH, więc po zakończeniu pracy żadna usługa nie pozostanie w stanie nasłuchiwania.
Jeśli dostęp do GUI jest niezbędny bezpośrednio, najpierw skonfiguruj dane uwierzytelniające. Na serwerze nie ma przeglądarki, więc należy to zrobić z poziomu wiersza poleceń.
sudo systemctl stop syncthing@youruser.service
sudo -H -u youruser syncthing generate --gui-user=admin --gui-password=-
sudo systemctl start syncthing@youruser.serviceParametr -H jest istotny, ponieważ bez niego sudo zachowuje katalog domowy użytkownika root i edytowany jest niewłaściwy plik config.xml. Pojedynczy myślnik jako wartość hasła sprawia, że syncthing generate odczytuje hasło ze standardowego wejścia, co zapobiega zapisaniu go w historii powłoki, a wartość jest haszowana przed zapisem do pliku. Po zalogowaniu włącz HTTPS w ustawieniach GUI.
Dlaczego Syncthing propaguje błędy użytkownika
FAQ Syncthing odpowiada na pytanie o kopie zapasowe w następujący sposób: „Syncthing nie jest dobrym narzędziem do tworzenia kopii zapasowych, ponieważ wszystkie zmiany w plikach (modyfikacje, usunięcia itp.) są propagowane na wszystkie urządzenia”.
Przypadkowe usunięcie folderu na laptopie powoduje, że Syncthing działa zgodnie z założeniami. Folder zostaje usunięty wszędzie w ciągu kilku sekund. Synchronizacja oznacza zgodność, a zgodność obejmuje również potwierdzenie, że plik przestał istnieć.
Rozwiązaniem jest wersjonowanie plików, które jest domyślnie wyłączone. Dokumentacja wskazuje, że wersjonowanie „domyślnie jest ustawione na 'no file versioning', co oznacza, że nie są przechowywane żadne stare kopie plików”. Dla każdego folderu dostępne są cztery strategie. Trash Can przechowuje jedną kopię każdego pliku usuniętego lub zastąpionego w wyniku zdalnej zmiany. Simple przechowuje określoną liczbę starych wersji każdego pliku. Staggered ogranicza historię wraz z upływem czasu, przechowując kopie godzinowe przez jeden dzień, dzienne przez miesiąc i tak dalej. External przekazuje każdą decyzję do napisanego przez użytkownika polecenia. Stare kopie trafiają do katalogu .stversions wewnątrz współdzielonego folderu.
Ustaw strategię Staggered na węźle VPS, pozostawiając wersjonowanie wyłączone na laptopach. Węzeł działający w trybie ciągłym będzie przechowywał historię, a laptopy pozostaną „lekkie”.
Nextcloud radzi sobie z tym lepiej, ale nadal nie jest narzędziem do tworzenia kopii zapasowych. Usunięte pliki trafiają do kosza, a edycje są przechowywane przez aplikację Versions, jednak oba te mechanizmy są automatycznie przycinane w miarę zapełniania dysku. Proces na laptopie, który szyfruje pliki, zsynchronizuje te zaszyfrowane wersje, a poprawne kopie zostaną usunięte zgodnie z własnym harmonogramem.
Oba narzędzia wymagają pod spodem rzeczywistego systemu kopii zapasowych: migawek wykonywanych przez oddzielny program, zapisywanych w miejscu niedostępnym dla klienta synchronizacji i przywracanych przynajmniej raz, aby mieć pewność, że proces odzyskiwania danych działa. Porównanie restic oraz BorgBackup omawia, które z tych narzędzi warto skierować na katalog z danymi.
Różnice w obsłudze konfliktów
Oba narzędzia tworzą plik konfliktu, gdy w czasie między synchronizacjami obie strony zmodyfikują ten sam plik. Różnica polega na tym, kto widzi ten plik.
Syncthing zmienia nazwę kopii, która przegrywa, na <filename>.sync-conflict-<date>-<time>-<modifiedBy>.<ext>. Przegrywa kopia z wcześniejszym czasem modyfikacji. Gdy czasy są identyczne, przegrywa urządzenie z większą wartością pierwszych 63 bitów identyfikatora urządzenia (device ID). Jest to wartość arbitralna, ale spójna na wszystkich węzłach. Następuje potem etap, na który użytkownicy często nie są przygotowani: te pliki „są traktowane jak zwykłe pliki po ich utworzeniu, więc są propagowane między urządzeniami”. Każdy węzeł otrzymuje kopię konfliktu. Usunięcie jej jest pojedynczą operacją, która synchronizuje się dalej, ale najpierw zobaczysz ten plik na wszystkich swoich maszynach.
Klient desktopowy Nextcloud zapisuje plik <name> (conflicted copy YYYY-MM-DD HHMMSS).<ext>, na przykład mydata (conflicted copy 2018-04-10 093612).txt, i domyślnie nie przesyła go na serwer. Instrukcja klienta podaje uzasadnienie: autor zmiany jest osobą najlepiej przygotowaną do rozwiązania konfliktu, a pokazywanie go innym użytkownikom tylko wprowadza zamieszanie. Ustaw OWNCLOUD_UPLOAD_CONFLICT_FILES=1 w środowisku klienta, jeśli oczekujesz odwrotnego zachowania.
Zatem konflikt w Syncthing jest zdarzeniem w skali całego klastra, podczas gdy konflikt w Nextcloud pozostaje na jednym komputerze.
Typy folderów zwiększają bezpieczeństwo Syncthing na serwerze
Syncthing oferuje trzy typy folderów, a wybór właściwego na VPS eliminuje całą klasę przypadkowych błędów.
- Send & Receive to ustawienie domyślne. Zmiany są synchronizowane w obu kierunkach.
- Send Only ignoruje wszystkie zmiany przychodzące z klastra. Należy go używać, gdy urządzenie ma pełnić wyłącznie rolę źródła danych. Gdy stan folderu przestaje być zgodny z klastrem, w interfejsie GUI pojawia się czerwony przycisk "Override Changes", który wymusza nadpisanie stanu zdalnego stanem lokalnym.
- Receive Only stosuje zmiany z klastra i nigdy nie wysyła lokalnych modyfikacji z powrotem. Należy go używać na serwerze VPS pełniącym funkcję archiwum. Lokalne edycje w tym trybie powodują wyświetlenie czerwonego przycisku "Revert Local Changes".
Folder typu Receive Only na serwerze VPS z włączonym mechanizmem Staggered versioning tworzy wersjonowaną kopię lustrzaną. Usunięcie pliku na laptopie nadal będzie skutkować jego usunięciem w klastrze, ponieważ operacja usunięcia jest traktowana jako uprawniona zmiana, jednak stara kopia pliku zostanie przeniesiona do .stversions zamiast zostać bezpowrotnie utracona.
Które rozwiązanie wybrać
Poniższe wiersze 7 obejmują powody, dla których użytkownicy faktycznie zadają to pytanie.
The data behind this chart
[
{
"label": "Keep two of my own laptops in sync",
"pick": "Syncthing",
"notes": "No accounts to manage. The VPS is the peer that is always awake."
},
{
"label": "Send a download link to a client",
"pick": "Nextcloud",
"notes": "Syncthing has no public link sharing at all."
},
{
"label": "Open a file from a borrowed browser",
"pick": "Nextcloud",
"notes": "The Syncthing GUI shows sync state, never file contents."
},
{
"label": "Sync 200 GB between machines I own",
"pick": "Syncthing",
"notes": "Peers transfer directly. The VPS copy is optional."
},
{
"label": "Phone photo upload with a store app",
"pick": "Nextcloud",
"notes": "The official Syncthing Android app ended in December 2024."
},
{
"label": "Calendar and contacts alongside files",
"pick": "Nextcloud",
"notes": "Syncthing syncs files. That is the entire feature set."
},
{
"label": "1 GB VPS with nothing else to spare",
"pick": "Syncthing",
"notes": "One Go binary against PHP plus a database plus a web server."
}
]Należy spojrzeć na pierwszy wiersz. Synchronizacja dwóch własnych laptopów wskazuje na Syncthing – w tym przypadku VPS sprawdza się jako węzeł, który nigdy nie przechodzi w stan uśpienia. Każdy wiersz dotyczący przeglądarki, linku lub innej osoby wskazuje na drugie rozwiązanie.
Jeśli Nextcloud wygrywa, ale jego wymagania zasobowe budzą obawy, kolejnym krokiem jest lektura porównania Seafile i Nextcloud, ponieważ Seafile zachowuje model serwerowy, wykorzystując jednak inny silnik synchronizacji.
Uruchamianie obu usług na jednym VPS
Te rozwiązania nie wykluczają się wzajemnie. Używanie Syncthing do przesyłania plików między własnymi urządzeniami, podczas gdy Nextcloud obsługuje udostępnianie i kalendarze, jest powszechną praktyką.
Obowiązuje jedna zasada: nigdy nie należy wskazywać Syncthing na katalog danych Nextcloud. Nextcloud śledzi każdy plik w swojej bazie danych, więc pliki pojawiające się na dysku z zewnątrz pozostają niewidoczne w interfejsie WWW, dopóki baza danych nie zostanie zaktualizowana. Z poziomu katalogu instalacyjnego Nextcloud:
sudo -u www-data php occ files:scan --allTo polecenie wyświetla liczbę przeskanowanych plików i folderów. Uruchamianie go według harmonogramu jest obejściem problemu, a nie docelowym rozwiązaniem. Każde narzędzie powinno posiadać własny katalog. Jeśli decyzja o tym, co powinno znaleźć się na serwerze, jeszcze nie zapadła, przewodnik po usługach do samodzielnego hostowania w 2026 stanowi lepszy punkt wyjścia niż wybór narzędzia do synchronizacji.
FAQ
Czy Syncthing może zastąpić Dropbox?
Tylko w zakresie synchronizacji własnych urządzeń. Syncthing nie oferuje publicznych linków do udostępniania ani kont użytkowników, a jego interfejs WWW nigdy nie wyświetla zawartości plików, ponieważ nie istnieje centralna kopia, z której mogłaby korzystać przeglądarka. Oficjalna aplikacja na Androida została wycofana po wydaniu z grudnia 2024 roku i usunięta ze sklepu Play, więc obsługa telefonów zależy obecnie od społecznościowego forka. Jeśli zachodzi potrzeba wysłania komuś linku, wymagany jest serwer, co oznacza konieczność użycia Nextcloud lub podobnego rozwiązania.
Czy Syncthing to kopia zapasowa?
Nie, co projekt wyraźnie zaznacza. Usunięcia i modyfikacje są propagowane na wszystkie urządzenia, więc przypadkowe usunięcie pliku powoduje jego zniknięcie wszędzie w ciągu kilku sekund. Włączenie wersjonowania plików dla folderu, szczególnie w trybie Staggered na stale działającym węźle, zapewnia okno przywracania danych poprzez katalog .stversions. Nie jest to jednak substytut migawek wykonywanych przez oddzielne narzędzie na oddzielny nośnik.
Dlaczego nie widzę swoich plików w interfejsie WWW Syncthing?
Ponieważ interfejs WWW to panel sterowania stanem synchronizacji, a nie przeglądarka plików. Wyświetla on foldery, urządzenia, postęp transferu oraz liczbę konfliktów, ale nigdy nie wymienia ani nie otwiera zawartości plików. Wynika to z architektury peer-to-peer: pliki znajdują się na urządzeniach użytkownika, a interfejs na VPS służy wyłącznie do zarządzania procesem ich przesyłania.
Jakie porty muszą być otwarte na VPS dla Syncthing?
22000/TCP dla protokołu synchronizacji oraz 22000/UDP dla transportu QUIC. Port 21027/UDP obsługuje lokalne wykrywanie poprzez broadcast i multicast, co nie działa przez Internet, więc należy pozostawić go zamkniętym na serwerze publicznym. Interfejs WWW na porcie 8384 należy powiązać z 127.0.0.1 i uzyskiwać do niego dostęp poprzez tunel SSH. Należy sprawdzić zarówno zaporę sieciową dostawcy, jak i ufw, ponieważ są to odrębne mechanizmy kontroli.
Czy można uruchomić Syncthing i Nextcloud na tym samym VPS?
Tak, jest to rozsądne rozwiązanie na serwerze z 2 GB pamięci RAM lub więcej. Należy przechowywać ich katalogi oddzielnie. Nextcloud indeksuje pliki w swojej bazie danych, więc wszystko, co Syncthing zapisze w pamięci masowej Nextcloud, pozostanie niewidoczne w interfejsie WWW do momentu uruchomienia occ files:scan. Dwa narzędzia zapisujące dane do tego samego katalogu generują również pliki konfliktów, których żadne z nich nie obsługuje.