VPS Murah Nevacloud

Sinkronisasi File Antar VPS dengan Syncthing 2.1: Tanpa Dropbox, Tanpa Biaya

Sinkronisasi file antar VPS biasanya berakhir di dua pilihan yang sama-sama tidak nyaman: menaruh file di Dropbox/Google Drive lalu mengunduhnya lagi di server, atau menulis skrip rsync yang jalan tiap lima menit lewat cron. Yang pertama menyerahkan data ke pihak lain, yang kedua rawan: rsync tidak tahu mana versi yang benar kalau kedua sisi berubah bersamaan.

Ada jalan ketiga yang sudah matang dan tidak butuh biaya bulanan: Syncthing, aplikasi sinkronisasi peer-to-peer open-source. Tidak ada server perantara yang menyimpan file kita, karena dua perangkat bicara langsung. Versi stabil terakhir saat artikel ini ditulis adalah Syncthing 2.1.7, rilis 21 Oktober 2026, dan angka “2” di depannya bukan sekadar kosmetik — ada beberapa perubahan yang membuat panduan lama di internet jadi menyesatkan.

Oke, lanjuutt.. kita pasang dari nol di dua VPS Ubuntu, lalu sambungkan foldernya.

Kenapa Syncthing, bukan rsync dan cron

Perbedaan paling mendasar ada di arah sinkronisasinya. rsync adalah perintah satu arah: kita menyuruh “salin dari A ke B”, lalu selesai. Kalau nanti B berubah, tidak ada yang tahu. Syncthing memelihara index block untuk setiap file, lalu membandingkannya di semua perangkat. Perubahan di sisi mana pun akan merambat ke sisi lain, dan file yang berubah hanya dikirim per blok, bukan utuh.

Beberapa hal yang membuatnya cocok untuk server:

  • Berjalan sebagai service, bukan perintah yang harus dijalankan manual.
  • Deteksi perubahan cepat: filesystem watcher aktif secara default dan menumpuk perubahan selama 10 detik sebelum memindai, sementara pemindaian penuh tetap jalan tiap satu jam sebagai jaring pengaman.
  • Tahan putus koneksi: begitu jaringan kembali, sinkronisasi lanjut dari posisi terakhir.

Yang perlu jujur disebut: Syncthing bukan alat backup. Kalau kita menghapus file di satu sisi, file itu ikut terhapus di sisi lain. Untuk keperluan arsip, aktifkan file versioning seperti di langkah 6.

Apa yang berubah di Syncthing 2.x

Kalau kita mengikuti tutorial lama, ada empat hal yang sekarang berbeda:

  1. Database pindah ke SQLite. Versi 2.0 melepas LevelDB, jadi folder database berbentuk file SQLite yang lebih mudah diperiksa dan dibackup.
  2. Lokasi konfigurasi berubah. Konfigurasi dan database sekarang tinggal di ~/.local/state/syncthing (atau $XDG_STATE_HOME/syncthing), bukan lagi ~/.config/syncthing.
  3. Beberapa opsi lama dihapus. Opsi panjang dengan satu tanda hubung (misalnya -no-browser) tidak lagi dikenali; sekarang wajib --no-browser. Flag --verbose dan --logflags juga sudah hilang, digantikan --log-level.
  4. File yang dihapus tidak disimpan selamanya. Sejak 2.0, catatan file terhapus dibuang setelah enam bulan. Kalau butuh catatan lebih panjang, atur lewat --db-delete-retention-interval.

Langkah 1 — Pasang dari repo resmi Syncthing

Paket syncthing di repo Ubuntu biasanya ketinggalan beberapa versi. Pakai repo resmi supaya dapat 2.x:


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 -y syncthing

Kalau apt masih memilih paket distro, naikkan prioritas repo Syncthing:


printf "Package: *\nPin: origin apt.syncthing.net\nPin-Priority: 990\n" | sudo tee /etc/apt/preferences.d/syncthing.pref
sudo apt-get update

Cek hasilnya dengan syncthing --version. Di Ubuntu minimal, kalau apt mengeluh soal method driver HTTPS, pasang apt-transport-https dan pastikan ca-certificates terbaru.

Langkah 2 — Jalankan sebagai service systemd

Ada dua pilihan. Kalau Syncthing dijalankan oleh user khusus (misalnya syncthing), pakai unit sistem yang sudah disertakan paket:


sudo systemctl enable --now [email protected]
sudo systemctl status [email protected]

Kalau dijalankan sebagai user kita sendiri — ini yang saya pilih untuk VPS kecil — pakai unit user, lalu aktifkan lingering supaya tetap start saat boot tanpa perlu login:


systemctl --user enable --now syncthing.service
sudo loginctl enable-linger $USER

Log-nya ada di journal: journalctl --user -u syncthing -e. Di baris awal log itu tercetak alamat GUI dan API key-nya — simpan kalau nanti kita mau menyentuh REST API.

Satu catatan kepemilikan file: jalankan Syncthing dengan user yang sama seperti pemilik folder yang disinkronkan. Kalau tidak, hasil sinkronisasi bisa jadi milik root dan aplikasi lain (nginx, PHP-FPM) tidak bisa membacanya.

Langkah 3 — Buka GUI dengan aman lewat SSH tunnel

Secara default GUI hanya mendengarkan di 127.0.0.1:8384. Jangan tergoda mengubahnya jadi 0.0.0.0:8384 supaya bisa diakses dari laptop — itu membuka panel admin ke internet. Cara yang benar adalah menerowongkan port lewat SSH:


ssh -L 9999:localhost:8384 user@IP-VPS

Selama sesi SSH itu terbuka, buka http://localhost:9999 di browser laptop. Isi dulu Settings → GUI dengan username dan password, karena walaupun hanya lewat tunnel, tetap lebih rapi kalau panelnya tidak terbuka tanpa autentikasi.

Langkah 4 — Buka port sinkronisasi

Ini bagian yang sering terlewat, dan gejalanya khas: kedua perangkat saling melihat tapi transfer berjalan lambat sekali karena lewat relay. Untuk koneksi langsung antar VPS, buka:

  • 22000/TCP — protokol sinkronisasi
  • 22000/UDP — protokol sinkronisasi lewat QUIC
  • 21027/UDP — penemuan perangkat di jaringan lokal

Paket Syncthing menyertakan preset ufw, jadi cukup:


sudo ufw allow syncthing
sudo ufw status verbose

Kalau memakai firewalld, aktifkan service bawaannya:


sudo firewall-cmd --zone=public --add-service=syncthing --permanent
sudo firewall-cmd --reload

Jangan buka 8384 di langkah ini. Port GUI tidak ada hubungannya dengan sinkronisasi.

Langkah 5 — Tambahkan perangkat dan folder

Ambil device ID di masing-masing server:


syncthing device-id

Device ID inilah identitas kriptografis server — tidak perlu sertifikat atau akun.

Urutannya sederhana, dan harus dilakukan di kedua sisi:

  1. Di VPS A, klik Add Remote Device, tempel device ID VPS B, beri nama yang jelas.
  2. Di VPS B, terima permintaan itu (atau ulangi langkah yang sama dengan device ID VPS A).
  3. Di salah satu sisi, klik Add Folder, isi Folder ID (bebas, misalnya arsip), lalu tentukan path-nya, misalnya /srv/sync/arsip.
  4. Di tab Sharing, centang perangkat tujuan. Setelah disimpan, folder yang sama akan muncul sebagai permintaan di sisi lain — terima dan arahkan ke path lokalnya.

Syncthing menaruh penanda .stfolder di dalam setiap folder yang dikelola. Jangan dihapus, karena penanda itulah yang memberitahu Syncthing bahwa folder tersebut masih sah untuk disinkronkan. Folder juga bisa disetel Receive Only di sisi cadangan, sehingga perubahan hanya mengalir masuk dan tidak pernah keluar dari sana — kombinasi yang pas untuk VPS arsip.

Langkah 6 — Versioning dan .stignore

Versioning diaktifkan per folder, di tab File Versioning. Pilih Staggered kalau ingin versi lama disimpan makin jarang seiring waktu, atau Simple kalau cukup menyimpan sejumlah versi terakhir. File lama dipindahkan ke subfolder .stversions di dalam folder tersebut, dan opsi cleanoutDays menentukan berapa hari arsip itu disimpan.

Satu batasan dari dokumentasi Syncthing: versioning hanya berlaku untuk perubahan yang diterima dari perangkat lain — kalau kita mengedit file secara lokal, versi lamanya tidak diarsipkan. Jadi ini pelengkap, bukan pengganti backup.

Untuk folder yang isinya campur kode dan cache, buat file .stignore di root folder:


node_modules
.cache
*.log
/storage/framework/cache

Satu pola per baris, * sebagai wildcard, dan path berawalan / dihitung dari root folder. Ini menghemat bandwidth sekaligus mencegah Syncthing sibuk memindai file yang berubah tiap detik.

Masalah yang paling sering muncul

Transfer lambat padahal internet kencang. Cek kolom Connection type di GUI. Kalau tertulis relay, berarti port 22000 belum tembus dan data mengambil jalur memutar. Betulkan firewall di langkah 4.

Muncul file aneh berakhiran .sync-conflict-. Itu bukan bug. Kalau file yang sama berubah di dua perangkat pada saat bersamaan, Syncthing menyimpan salah satunya sebagai <namafile>.sync-conflict-<tanggal>-<jam>-<modifiedBy>.<ext> — yang waktu modifikasinya lebih lama yang diganti nama. Tinggal bandingkan isinya, simpan yang benar, hapus sisanya.

Sinkronisasi berhenti karena disk penuh. Syncthing berhenti menulis kalau ruang disk di bawah ambang minDiskFree (default 1%). Di VPS 20 GB yang sering penuh, angkat ambangnya sedikit supaya sistem tidak mati mendadak.

Folder berstatus “Out of Sync” terus. Biasanya ada file yang gagal ditulis — masalah permission atau nama file yang tidak didukung filesystem tujuan. Buka foldernya, lihat daftar Failed Items, selesaikan satu per satu.

Kesimpulan

Syncthing menyelesaikan masalah yang tidak bisa dijawab rsync dan tidak mau kita serahkan ke layanan cloud: dua server yang isinya harus selalu sama, tanpa biaya bulanan, tanpa API key, dan tanpa menaruh file di tempat orang lain. Dengan versi 2.1.7, jalur pemasangannya sudah rapi — repo resmi, unit systemd siap pakai, dan database SQLite yang lebih mudah dirawat.

Bagian yang paling perlu diingat cuma tiga: buka port 22000 supaya tidak lewat relay, akses GUI hanya lewat SSH tunnel, dan aktifkan versioning sebelum folder pertama mulai disinkronkan. Sisanya berjalan sendiri.

Kalau nanti butuh berbagi folder yang sama ke laptop atau ponsel, tinggal tambahkan perangkat baru seperti di langkah 5 — satu jaringan, banyak titik. Selamat mencoba, dan semoga folder /srv kita tidak pernah lagi jadi teka-teki versi mana yang terbaru.

Baca juga

Nevacloud VPS Indonesia

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *