22 Agustus 2026

Syncthing: Sinkronisasi P2P yang Bukan Backup

Sinkronisasi file antar perangkat secara peer-to-peer dengan enkripsi di perjalanan, tanpa cloud dan tanpa akun — plus batas jujurnya: sinkronisasi bukan backup dan data di perangkat tidak terenkripsi saat diam.

Kebutuhan paling mendasar di homelab sering kali bukan soal hardware, melainkan soal satu jawaban: bagaimana sebuah berkas bisa muncul di banyak perangkat sekaligus tanpa melewati cloud orang lain. Syncthing menjawabnya: sinkronisasi langsung antar perangkat, disebut peer, tanpa penyimpanan perantara pihak ketiga. Penting dipahami sejak awal — ini alat sinkronisasi, bukan backup.

Mengapa Syncthing

Syncthing menjaga berkas tetap sama di beberapa perangkat yang saling terhubung. Di saya ia menyinkronkan folder catatan dan direktori lain yang perlu dibawa ke mana-mana; perubahan menyebar selama perangkat hidup dan terhubung. Tidak ada tagihan langganan, kuota penyimpanan, maupun pihak ketiga yang membaca isi berkas.

Cara kerja: model peer-to-peer

Perbedaan paling mendasar dengan layanan penyimpanan awan adalah modelnya. Setiap perangkat menjalankan Syncthing sendiri dan saling terhubung langsung membentuk jaringan rekan sebaya (peer).

Identitas perangkat dijamin lewat sertifikat digital; device ID yang ditampilkan adalah sidik jari SHA-256 dari sertifikat tersebut, dan semua lalu lintas antar perangkat dilindungi TLS 1.2/1.3. Dua perangkat hanya terhubung bila keduanya saling menyetujui device ID masing-masing.

Transfer data bekerja per blok: hanya bagian file yang berubah yang dikirim antar perangkat. Saat koneksi langsung tidak memungkinkan, Syncthing memakai relay publik — isi data tetap terenkripsi, tapi relay mengetahui device ID yang terhubung.

Deployment dengan Docker Compose

services:
  syncthing:
    image: lscr.io/linuxserver/syncthing:latest
    container_name: syncthing
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Jakarta
    volumes:
      - ./config:/config
      - ./sync:/sync
    ports:
      - "8384:8384"        # Web UI
      - "22000:22000/tcp"  # Sinkronisasi
      - "22000:22000/udp"
      - "21027:21027/udp"  # Penemuan lokal
    restart: unless-stopped

Simpan sebagai docker-compose.yml, lalu jalankan:

docker compose up -d

Direktori config menyimpan konfigurasi dan identitas perangkat, sementara sync menjadi akar folder yang disinkronkan. Port 8384 membuka antarmuka web, 22000 untuk pertukaran data, dan 21027 untuk penemuan perangkat di jaringan lokal.

Konfigurasi awal

Buka antarmuka web di http://<alamat-host>:8384 dan siapkan akun pengguna terlebih dahulu — jangan pernah membiarkannya tanpa autentikasi.

Langkah selanjutnya:

  1. Tambahkan perangkat lain dari menu Add Remote Device memakai identitas perangkat tujuan.
  2. Buat folder yang akan disinkronkan, lalu bagikan ke perangkat tujuan.
  3. Di perangkat tujuan, setujui permintaan berbagi untuk menautkan folder.
  4. Imbangi konfigurasi di kedua sisi dan periksa status koneksi hingga berwarna hijau.

Keamanan dan Operasional

  • Autentikasi web UI dengan kata sandi kuat, atau sembunyikan di balik koneksi terenkripsi.
  • Jangan ekspos port ke internet terbuka tanpa proteksi.
  • Jaga kunci TLS dan direktori config — siapa pun yang memegangnya bisa meniru identitas perangkat.
  • Perbarui image secara berkala untuk perbaikan keamanan.

Selain autentikasi, arah sinkronisasi folder bisa dibatasi lewat folder type: Send & Receive (default), Send Only sebagai referensi, atau Receive Only untuk replikasi — perubahan lokal di perangkat itu tidak disebarkan ke perangkat lain.

Backup dan Recovery: mengapa sinkronisasi bukan backup

Sinkronisasi bukanlah backup. Jika sebuah berkas terhapus atau tidak sengaja tertimpa, hasilnya ikut tersebar ke perangkat lain. Bila tidak diimbangi fitur versi, perubahan itu bisa menghilang dari mana-mana tanpa bisa dikembalikan.

File versioning mengarsip versi lama ke folder .stversions, dengan strategy trash can, simple, staggered, atau external. Catatan penting: default-nya nonaktif, dan ia hanya mengarsip perubahan dari perangkat lain — penghapusan atau penimpaan lokal tidak ikut diarsipkan.

Seluruh konfigurasi hidup di direktori config, jadi pindah ke host baru cukup jalankan ulang kontainer dengan direktori yang sama. Saat memulihkan dari backup, hentikan dulu sinkronisasi — memulihkan ke direktori yang aktif disinkronkan bisa memicu penghapusan atau penimpaan balik.

Kontra dan keterbatasan

  • Data tidak terenkripsi saat diam. Enkripsi hanya di perjalanan; siapa pun dengan akses disk atau kunci TLS bisa membaca isi folder.
  • Versioning tidak menangkap semua kasus. Default nonaktif dan perubahan lokal tidak diarsipkan; tanpa strategy yang diatur, tidak ada salinan lama.
  • Butuh perangkat online. Tidak ada server pusat; perubahan baru menyebar saat perangkat penerima terhubung.
  • Metadata bocor ke discovery dan relay. Discovery global tahu pemetaan device ID ke IP; relay publik tahu device ID yang terhubung, meski isi data tetap terenkripsi.
  • Berkas konflik ikut tersebar. Salinan konflik (<nama>.sync-conflict-...) diperlakukan seperti file biasa dan ikut disinkronkan.
  • Nama file case-sensitive. file.txt dan FILE.txt sekaligus berpotensi konflik di Windows dan macOS yang case-insensitive.

Pemecahan masalah

  • Perangkat tidak saling menemukan — pastikan port 22000 dan 21027 terbuka dan tidak terblokir firewall.
  • Container tidak berjalan — periksa log docker compose logs syncthing untuk melihat pesan kesalahan.

Kesimpulan

Syncthing menyelesaikan satu masalah dengan baik: berkas tersedia di banyak perangkat tanpa cloud dan tanpa akun. Untuk homelab satu mesin dengan storage terbatas, ia hemat sumber daya dan mudah dirawat lewat antarmuka web.

Tapi ia bukan pengganti backup: semua perangkat berbagi failure domain yang sama. Kombinasikan dengan backup asli yang terpisah, dan aktifkan file versioning pada folder penting.

Referensi