
Ringkas: Self-hosting password dengan KeePassXC dan Syncthing memungkinkan file vault terenkripsi disinkronkan antarperangkat tanpa server password manager. Pengaturan ini mengurangi kompleksitas server, tetapi konflik sinkronisasi dan pemulihan data tetap harus ditangani sendiri.
Saat mulai melakukan self-hosting, penulis cepat menyadari bahwa banyak layanan yang dipakai sebenarnya bergantung pada server. Ada beberapa pengecualian, dan salah satu yang menjadi bagian penting dari pengaturannya adalah password manager KeePassXC. Vault-nya tetap berupa file terenkripsi biasa, dan dengan Syncthing, file itu bisa dipindahkan ke berbagai perangkat.
Dengan pendekatan ini, ada sedikit kenyamanan yang dikorbankan karena tidak menjalankan server password manager, tetapi sebagai gantinya juga tidak perlu reverse proxy, container password manager yang harus terus diperbarui, dan web UI yang harus selalu bisa dijangkau.
Sinkronisasi KeePassXC dengan Syncthing berjalan nyaris tanpa hambatan
Sinkronisasi pertama nyaris membosankan
Vault tersebut tidak membutuhkan alat sinkronisasi yang benar-benar memahami isi file yang dibawanya.
Setelah mengganti sebuah kata sandi di laptop, penulis mengunci layar. Hanya sekitar satu menit kemudian, saat mengambil ponsel, entri kata sandi yang sama sudah diperbarui. Proses ini berlangsung mulus tanpa notifikasi atau dialog konfirmasi. Di latar belakang, Syncthing memindahkan file itu saat perangkat-perangkat tersebut terhubung ke jaringan. Jadi ketika KeePassXC membuka file terenkripsi di ponsel, aplikasi itu mengakses versi yang sudah diperbarui.
Vault berformat .kdbx itu menyimpan entri, riwayatnya, field kustom, dan metadata database lainnya langsung di dalam file. Saat Syncthing memindahkan file ini, ia bahkan tidak tahu bahwa yang dipindahkan adalah kumpulan kata sandi. Bagi mesin sinkronisasi, file itu tidak berbeda dari JPEG. Meski tidak ada server dalam proses ini, dasar-dasar password manager tetap bekerja seperti yang diharapkan. Browser autofill, misalnya, tetap berfungsi sehingga penulis tidak perlu menyalin dan menempel kata sandi secara manual.
Sejauh itu, pengaturannya terasa cukup sederhana. Sampai titik tersebut, penulis hanya mengubah satu perangkat pada satu waktu.
Saat dua perangkat berbeda, Syncthing dan KeePassXC menangani konflik dengan cara berbeda
Syncthing melihat konflik, KeePassXC memahami isinya
Penulis lalu mencoba sesuatu yang terasa berpotensi menimbulkan masalah dalam pengaturan tersebut: mengedit entri yang sama di laptop dan di ponsel sebelum keduanya sempat saling terhubung. Ketika kedua perangkat kembali tersambung, sistem sinkronisasi mempertahankan kedua salinan alih-alih memilih salah satu. Satu tetap menjadi salinan utama, sementara salinan lain muncul di sampingnya dengan nama yang menyertakan teks “sync-conflict” dan sebuah timestamp.
Hal ini cukup membuka mata. Syncthing tahu bahwa file-file tersebut tidak cocok, meskipun ia tidak bisa melihat isi persisnya. Aplikasi itu tidak memiliki konsep tentang entri kata sandi, jadi ia tidak tahu perubahan mana yang harus dipertahankan dan mana yang harus ditimpa.
Syncthing tidak tahu bahwa ketidaksesuaian itu terjadi pada level entri kata sandi; ia hanya tahu bahwa dua database tidak sama. Dengan menyimpan salinan sync-conflict, konflik diselesaikan pada level file. Namun, KeePassXC memahami kontennya. Setelah penulis menggabungkan dua database, KeePassXC membandingkan entri UUID dan waktu modifikasi, lalu membiarkan versi sebelumnya tetap tersimpan di riwayat entri sambil mempertahankan versi yang lebih baru.
Saat penulis melakukan pengujian ini, penyelesaiannya tidak memakan waktu lebih dari satu menit. Setelah membuka kedua file dan membiarkan vault menyelaraskan perbedaannya, versi bersih kembali tersinkron begitu hasilnya disimpan. Selain pada momen langka ketika dua perangkat sudah terlanjur berbeda, mekanisme sinkronisasi ini pada waktu lainnya nyaris tidak terasa. Penulis mengaku butuh waktu untuk benar-benar menerima bahwa alat sinkronisasi file umum telah menggantikan layanan password yang dibuat khusus.
Menghapus vault menunjukkan bahwa sinkronisasi bukan backup
Salinan kedua hanya jadi jaring pengaman jika tidak ikut mendengarkan salinan pertama
Penulis belum selesai menguji sistem baru ini, jadi database dihapus pada satu perangkat. Hasilnya sesuai karakter alat sinkronisasi: penghapusan itu ikut disebarkan. Hanya dalam waktu singkat, perangkat kedua juga kehilangan salinannya. Dari sini muncul pelajaran penting: salinan yang tersinkronisasi bukanlah backup. Salinan-salinan itu saling mencerminkan, sehingga tindakan seperti penghapusan akan menyebar ke semua perangkat.
Jika benar-benar perlu mempertahankan keadaan lama, yang dibutuhkan adalah backup. Syncthing memang memiliki pengaturan untuk menyimpan version history, tetapi fitur itu nonaktif secara default. Bahkan jika diaktifkan, penulis tidak menganggapnya sebagai pengganti backup terpisah. Artinya, seseorang bisa saja mengira dirinya sudah terlindungi padahal sebenarnya belum.
Penulis memulihkan salinan lama vault kata sandi di luar folder yang disinkronkan hanya untuk menguji pemulihan, dan file itu bisa dibuka tanpa masalah. Namun, Syncthing menganggapnya sebagai perubahan dan mulai mendistribusikan data saat file tersebut dimasukkan kembali ke direktori bersama. Memasukkan ulang data dalam pengaturan seperti ini perlu dilakukan dengan hati-hati. Fungsi merge milik KeePassXC juga memungkinkan penulis mengambil satu entri dari database lama ke database saat ini tanpa mengganti seluruh vault.
Fitur replikasi dalam pengaturan ini gratis, tetapi proses pemulihan tetap harus ditangani sendiri.
Apa yang berubah saat tidak memakai server password-manager
Penulis juga menjelaskan apa yang dipertukarkan saat tidak menjalankan sistem pengelolaan kata sandi yang lebih kuat seperti Vaultwarden. Prinsip intinya tetap sama dalam arti enkripsi tetap berlangsung di perangkat sebelum data dipindahkan. Namun, ada beberapa perbedaan praktis:
- KeePassXC + Syncthing: lokasi vault berupa file terenkripsi lokal di setiap perangkat; Vaultwarden: data vault terenkripsi di-host di server
- KeePassXC + Syncthing: sinkronisasi file umum; Vaultwarden: sinkronisasi password manager yang dibuat khusus
- KeePassXC + Syncthing: penanganan konflik lewat merge KeePassXC + konflik file Syncthing; Vaultwarden: sinkronisasi server/client
- KeePassXC + Syncthing: tidak butuh server; Vaultwarden: butuh server
- KeePassXC + Syncthing: backup dikelola sendiri; Vaultwarden: Anda mengelola server dan datanya
- KeePassXC + Syncthing: membawa data cukup menyalin file .kdbx; Vaultwarden: perlu ekspor atau pemulihan data server
Salah satu perbedaan terbesar adalah sinkronisasi dalam pengaturan saat ini diserahkan kepada alat sinkronisasi file umum—dan kepada penulis sendiri—sedangkan Vaultwarden menyerahkannya ke layanan yang memang dirancang khusus untuk itu. Jika tidak keberatan menjadi departemen IT bagi diri sendiri pada hari-hari langka saat konflik muncul, kombinasi KeePassXC + Syncthing bisa terasa cocok.
Tujuannya bukan untuk mendorong pembaca memilih salah satu. Menjalankan sistem self-hosting password tanpa harus memikirkan kerumitan lain yang terkait dengan menjalankan server memang terasa berbeda.
Poin penting
- Self-hosting password tanpa server
- KeePassXC memakai file .kdbx
- Syncthing sinkronisasi file umum
- Konflik ditangani dengan merge
- Sinkronisasi bukan backup
- Vaultwarden tetap butuh server
Sumber: https://www.makeuseof.com/self-host-my-passwords-without-running-password-manager-server/