Kirim file berukuran puluhan gigabyte antar perangkat sering kali bikin pusing kalau harus upload dulu ke Google Drive atau Dropbox. Proyek open source Filesync GitHub menawarkan pendekatan beda. Tool ini memungkinkan transfer file langsung antar browser memakai protokol WebRTC tanpa lewat server perantara.
Aplikasi ini tidak membutuhkan instalasi software tambahan di sisi penerima dan tidak perlu pendaftaran akun. Cukup buka link room atau scan QR code, file bisa langsung dikirim ke banyak perangkat sekaligus.
Bagaimana Cara Kerja di Belakang Layar?
Server pada ekosistem Filesync cuma bertugas sebagai agen signaling awal melalui WebSocket di jalur /ws. Tugasnya sederhana, yaitu menukar informasi SDP offer/answer dan ICE candidates antar browser.
Begitu koneksi peer-to-peer (P2P) terbangun, server langsung lepas tangan. Data file mengalir murni antar browser dalam kondisi terenkripsi. Server tidak pernah melihat atau menyimpan isi file yang dikirim.
Kalau kedua perangkat berada di belakang symmetric NAT atau firewall ketat yang memblokir koneksi P2P langsung, sistem secara otomatis mengalihkan jalur data melewati relay STUN/TURN menggunakan coturn.
Masalah RAM dan Alasan Wajib Pakai HTTPS
Satu hal krusial yang sering diabaikan saat mencoba tool P2P browser adalah manajemen memori. Jika mengirim file berukuran 5 GB, apakah RAM akan langsung habis?
Filesync menangani masalah ini berdasarkan jenis protokol dan dukungan browser.
| Metode Saving | Browser yang Mendukung | Syarat Protokol | Dampak ke Memori (RAM) |
|---|---|---|---|
| File System Access API | Desktop Chromium (Chrome, Edge, Brave) | HTTPS / Localhost | Hampir nol, bytes ditulis langsung ke disk |
| Service Worker | Semua browser modern | HTTPS / Localhost | Sangat rendah, di-stream ke folder download |
| Blob | Semua browser | HTTP biasa | Tinggi, menampung seluruh file di RAM |
Menjalankan Filesync di jalur HTTP biasa bakal memaksa browser memakai metode Blob. File akan ditampung dulu di RAM sebelum disimpan. Metode ini rawan crash untuk file di atas 500 MB. Sebaliknya, berjalan di atas HTTPS mengaktifkan fitur streaming langsung ke media penyimpanan, membuat transfer file berukuran puluhan gigabyte tetap hemat RAM.
Panduan Self-Hosting dengan Docker
Menjalankan instance Filesync sendiri cukup simpel karena sudah disediakan image Docker resmi.
1. Buat Secret Key
Setiap deployment membutuhkan kunci rahasia untuk mengamankan kredensial TURN. Buat kunci acak menggunakan Python:
bashpython3 -c "import secrets, base64; print(base64.b64encode(secrets.token_bytes(32)).decode())"
Simpan string hasil generate tersebut.
2. Konfigurasi HTTP (Hanya untuk Lokal/LTP)
Jika cuma ingin mencoba di jaringan lokal (LAN), gunakan file deploy/docker-compose.yml. Masukkan kunci rahasia yang sudah dibuat ke dalam variabel lingkungan:
yaml- --static-auth-secret=STRING_SECRET_KAMU - SECRET_KEY=STRING_SECRET_KAMU
Jalankan kontainer:
bashdocker compose up -d
3. Konfigurasi HTTPS (Rekomendasi Production)
Untuk penggunaan publik dengan domain sendiri, gunakan deploy/docker-compose-ssl.yml dan deploy/Caddyfile. Caddy akan menangani sertifikat SSL dari Let's Encrypt secara otomatis.
Ubah file Caddyfile:
textfilesync.domainkamu.com { reverse_proxy filesync:80 }
Lalu jalankan stack HTTPS:
bashdocker compose -f docker-compose-ssl.yml up -d
Port Networking yang Wajib Dibuka
Agar fitur NAT traversal berfungsi optimal dan transfer file tidak tersendat, pastikan port berikut dibuka di firewall atau VPS kamu.
| Port | Protokol | Peruntukan |
|---|---|---|
| 80 / 443 | TCP | Web interface dan WebSocket signaling |
| 3478 | TCP & UDP | Handshake awal STUN/TURN |
| 50000-50100 | UDP | Jalur data relay TURN (jika P2P terhalang NAT) |
Port 50000-50100 UDP ini sangat vital. Sekitar 5 sampai 10 persen koneksi internet tidak bisa terhubung secara P2P murni karena batasan provider atau firewall kantor. Jalur relay ini yang memastikan transfer file tetap berjalan meskipun koneksi langsung gagal.
