Posted in

Tinggalkan Google Drive, Ambil Kendali Data Kamu Sendiri

Sudah berapa lama kamu mempercayakan file-file penting ke Google Drive? Foto kenangan, dokumen kerja, arsip pribadi — semuanya tersimpan rapi di server milik perusahaan asing yang kebijakan privasinya bisa berubah kapan saja. Kamu tidak punya kontrol atas siapa yang bisa mengakses data tersebut, di mana server fisiknya berada, atau apa yang terjadi jika suatu hari akun kamu ditangguhkan.

Inilah yang disebut kedaulatan data (data sovereignty) — hak untuk memiliki, mengelola, dan melindungi data kamu sendiri. Dan kabar baiknya, dengan teknologi yang tersedia sekarang, siapa pun bisa mewujudkannya tanpa perlu menjadi seorang ahli IT.

Panduan ini akan menunjukkan cara membangun cloud storage pribadi menggunakan Filebrowser — aplikasi web yang tampilannya familiar seperti Google Drive, tapi berjalan di server kamu sendiri. Ditambah konfigurasi Caddy dan Cloudflare Zero Trust agar bisa diakses dari mana saja dengan keamanan tingkat enterprise, tanpa perlu membuka port di router atau memiliki IP publik.

Mengapa Self-Host?

Sebelum masuk ke teknis, ada baiknya memahami mengapa ini penting.

Google Drive dan layanan serupa punya beberapa risiko yang sering diabaikan: data kamu berpotensi diindeks dan digunakan untuk melatih model AI, akun bisa ditangguhkan sepihak tanpa penjelasan, pemerintah atau pihak ketiga bisa meminta akses ke data kamu tanpa sepengetahuanmu, dan storage gratis selalu terbatas dengan harga langganan yang terus naik.

Self-hosting memberikan kontrol penuh — kamu satu-satunya yang bisa mengakses server. Storage tidak terbatas sesuai kapasitas hard disk yang kamu punya. Tidak ada iklan, tidak ada tracking, tidak ada pihak ketiga. Data kamu tidak kemana-mana, tetap di server milik kamu sendiri.

Pengguna (Browser)
│
▼
Cloudflare Zero Trust Tunnel
│ (koneksi terenkripsi, tanpa buka port)
▼
Caddy (Reverse Proxy)
│ drive.norya.my.id → localhost:2023
▼
Filebrowser (Docker Container)
│
▼
/opt/filebrowse/data (file kamu)

Mengapa Cloudflare Zero Trust? Karena server ini menggunakan IP private (bukan IP publik), Cloudflare Zero Trust Tunnel membangun koneksi keluar dari server ke Cloudflare — bukan sebaliknya. Artinya tidak ada port yang perlu dibuka di firewall atau router. Keamanan berlapis dari sisi Cloudflare termasuk DDoS protection dan WAF menjadi bonus gratis.

Prasyarat

Sebelum memulai, pastikan kamu sudah menyiapkan hal-hal berikut: server Linux (VPS, Raspberry Pi, atau PC rumahan) dengan Docker terinstal, domain yang sudah terhubung ke Cloudflare, akun Cloudflare gratis dengan Zero Trust diaktifkan, dan Caddy terinstal di server.

Cek Docker sudah tersedia:

docker --version

Bagian 1: Deploy Filebrowser dengan Docker

Langkah 1.1 — Buat Struktur Folder

Buat folder kerja untuk Filebrowser di /opt/filebrowse:

mkdir -p /opt/filebrowse/data
mkdir -p /opt/filebrowse/config

Folder data adalah tempat semua file yang ingin kamu kelola lewat browser — ini adalah “isi” cloud storage kamu. Folder config menyimpan database Filebrowser yang berisi akun pengguna, pengaturan, dan share link.

/opt/filebrowse/
├── data/       ← file yang mau di-browse
└── config/     ← tempat database

Langkah 1.2 — Buat File Database Kosong

Ini langkah krusial yang sering terlewat. File database harus sudah ada sebelum Docker dijalankan. Jika tidak, Docker akan membuat filebrowser.db sebagai folder, bukan file — dan Filebrowser pun gagal start.

touch /opt/filebrowse/config/filebrowser.db

Verifikasi bahwa yang terbentuk adalah file biasa, bukan folder:

ls -la /opt/filebrowse/config/
# Output yang benar: -rw-r--r-- 1 root root 0 ... filebrowser.db

Langkah 1.3 — Set Permission

Container berjalan dengan UID=1000 dan GID=1000. Sesuaikan kepemilikan folder agar container bisa membaca dan menulis ke direktori yang sudah dibuat:

chown -R 1000:1000 /opt/filebrowse

Langkah 1.4 — Jalankan Container

docker run -d \
  --name filebrowser \
  --restart unless-stopped \
  -p 2023:80 \
  -v /opt/filebrowse/data:/srv \
  -v /opt/filebrowse/config/filebrowser.db:/database.db \
  -e FB_DATABASE=/database.db \
  -e UID=1000 \
  -e GID=1000 \
  filebrowser/filebrowser:latest

Langkah 1.5 — Verifikasi

docker ps | grep filebrowser

Status harus menunjukkan (healthy). Jika masih starting, tunggu beberapa detik lalu cek kembali. Jika ada error, lihat log untuk mengetahui penyebabnya:

docker logs filebrowser

Pada tahap ini, Filebrowser sudah bisa diakses di http://localhost:2023 dari server secara lokal.

Bagian 2: Konfigurasi Caddy sebagai Reverse Proxy

Caddy bertugas meneruskan request dari domain ke Filebrowser yang berjalan di localhost:2023. Karena akses publik dilakukan melalui Cloudflare Zero Trust, konfigurasi Caddy perlu meneruskan header Cloudflare dengan benar agar log server bisa mencatat IP asli pengguna.

Tambahkan blok berikut ke Caddyfile kamu:

drive.norya.my.id {
    reverse_proxy localhost:2023 {
        header_up X-Forwarded-Proto "https"
        header_up X-Forwarded-For {http.request.remote.host}
        header_up CF-Connecting-IP {http.request.remote.host}
    }
    encode gzip
}

Reload Caddy setelah menyimpan perubahan:

# Jika menjalankan Caddy langsung
caddy reload --config /etc/caddy/Caddyfile

# Jika menggunakan systemd
systemctl reload caddy

Header CF-Connecting-IP diteruskan karena semua request masuk melalui Cloudflare Tunnel. Tanpa header ini, semua log akan mencatat IP node Cloudflare, bukan IP asli pengguna.

Bagian 3: Konfigurasi Cloudflare Zero Trust Tunnel

Ini bagian yang membuat setup ini berbeda dari kebanyakan tutorial self-hosting. Alih-alih membuka port 80 atau 443 ke internet langsung, kita menggunakan Cloudflare Tunnel — koneksi terenkripsi yang diinisiasi dari server kamu ke Cloudflare, bukan sebaliknya. Tidak ada port yang perlu dibuka, tidak ada IP publik yang perlu dikonfigurasi.

Langkah 3.1 — Install cloudflared

# Debian/Ubuntu
curl -L --output cloudflared.deb \
  https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
dpkg -i cloudflared.deb

Langkah 3.2 — Login dan Buat Tunnel

cloudflared tunnel login
cloudflared tunnel create filebrowser-tunnel

Langkah 3.3 — Buat File Konfigurasi Tunnel

Buat file /etc/cloudflared/config.yml:

tunnel: <TUNNEL_ID>
credentials-file: /root/.cloudflared/<TUNNEL_ID>.json

ingress:
  - hostname: drive.norya.my.id
    service: http://localhost:2023
  - service: http_status:404

Ganti <TUNNEL_ID> dengan ID tunnel yang muncul setelah langkah sebelumnya.

Langkah 3.4 — Daftarkan DNS dan Jalankan Tunnel

# Buat DNS record otomatis di Cloudflare
cloudflared tunnel route dns filebrowser-tunnel drive.norya.my.id

# Install sebagai service agar auto-start saat server reboot
cloudflared service install
systemctl start cloudflared

Langkah 3.5 — (Opsional) Tambahkan Access Policy

Di dashboard Cloudflare Zero Trust, kamu bisa menambahkan lapisan autentikasi tambahan sebelum pengguna bisa membuka halaman Filebrowser — misalnya, hanya email tertentu yang diizinkan masuk. Ini berguna jika kamu ingin berbagi akses ke anggota keluarga atau rekan kerja dengan tetap mengontrol siapa yang bisa masuk.

Buka Zero Trust Dashboard → Access → Applications → Add an Application, pilih Self-hosted, lalu arahkan ke domainmu.

Bagian 4: Login Pertama dan Pengamanan Akun

Buka browser dan akses https://drive.norya.my.id. Login dengan kredensial default: username admin, password admin.

Segera lakukan beberapa hal setelah pertama login. Pertama, ganti password admin melalui Settings → User Management → Edit Admin. Kedua, nonaktifkan opsi pendaftaran pengguna baru jika tidak diperlukan. Ketiga, pertimbangkan membuat akun pengguna terpisah dengan akses folder terbatas jika akan berbagi dengan orang lain.

Perintah Pengelolaan Container

# Hentikan Filebrowser
docker stop filebrowser

# Jalankan kembali
docker start filebrowser

# Lihat log real-time
docker logs -f filebrowser

# Update ke versi terbaru
docker pull filebrowser/filebrowser:latest
docker stop filebrowser && docker rm filebrowser
# Lalu jalankan ulang dengan perintah docker run yang sama

Backup Data

Kedaulatan data bukan hanya soal siapa yang punya akses — tapi juga soal memastikan data tidak hilang. Buat rutinitas backup sederhana untuk dua hal penting:

# Backup seluruh file data
tar -czf /backup/filebrowse-data-$(date +%Y%m%d).tar.gz /opt/filebrowse/data

# Backup database (akun pengguna, pengaturan, share link)
cp /opt/filebrowse/config/filebrowser.db /backup/filebrowser-$(date +%Y%m%d).db

Simpan backup di lokasi berbeda dari server utama — misalnya hard disk eksternal atau NAS — agar tetap aman jika server utama mengalami masalah.

Penutup

Kamu baru saja membangun cloud storage pribadi yang sepenuhnya berada di bawah kendalimu. Tidak ada pihak ketiga yang bisa mengintip atau menangguhkan aksesmu. Traffic dienkripsi oleh Cloudflare tanpa satu pun port yang terbuka langsung ke internet. Bisa diakses dari mana saja dengan tampilan yang familiar. Dan kapasitasnya hanya dibatasi oleh storage server kamu sendiri.

Self-hosting memang memerlukan sedikit usaha di awal. Tapi sekali berjalan, hasilnya jauh lebih memuaskan — karena kamu tahu persis di mana data kamu berada, siapa yang bisa mengaksesnya, dan kamu tidak bergantung pada keputusan bisnis perusahaan lain untuk menjaga file pentingmu tetap aman.

Selamat datang di era kedaulatan data.