Antwa CodeAntwaCode Blog

Catatan9 menit baca

Kenapa Saya Pilih Self-Hosting untuk Project Pribadi

Alasan memilih self-hosting untuk project pribadi.

Baca dalam English

Kenapa Saya Pilih Self-Hosting untuk Project Pribadi

Dua tahun lalu, saya masih setia pakai managed services untuk segalanya. GitLab CI, Notion untuk catatan, Vercel untuk deploy, Google Drive buat storage. Pokoknya kalau ada yang bisa dipercayakan ke cloud, saya percayakan. Karena? Ya, enak. Tinggal pakai, nggak perlu mikir infrastruktur.

Tapi lama-lama, ada sesuatu yang mengganjal.

Saya mulai bertanya: data saya sebanyak ini, sebenarnya disimpan di mana? Siapa yang bisa akses? Dan yang paling penting — kalau besok layanan ini tutup atau naik harga, saya masih bisa apa?

Sejak saat itu, saya pelan-pelan migrasi ke self-hosting. Dan jujur saja, itu jadi salah satu keputusan terbaik yang pernah saya ambil untuk project pribadi.

Artikel ini saya tulis bukan untuk menjelekkan managed services — mereka punya tempat yang sah. Tapi saya ingin berbagi perspektif dari sisi yang sering diabaikan: kenapa self-hosting layak dipertimbangkan, bahkan untuk orang yang bukan sysadmin profesional.


Apa Itu Self-Hosting, Sebenarnya?

Self-hosting itu sederhananya: kamu menjalankan software sendiri, di server yang kamu miliki atau kendalikan. Bukan pakai versi cloud dari vendor, tapi versi open-source atau self-hosted yang kamu deploy sendiri.

Contoh concrete-nya:

  • Catatan → pakai Joplin atau Obsidian + sync sendiri, bukan Notion
  • File sharing → pakai Nextcloud, bukan Google Drive
  • Deploy web app → pakai VPS + Coolify atau Dokku, bukan Vercel
  • Password manager → pakai Vaultwarden, bukan LastPass
  • Chat → pakai Matrix/Element, bukan Slack atau Discord

Tentu saja, setup-nya tidak se-instan klik "Sign Up". Tapi jangan salah kira — barrier to entry-nya sudah jauh lebih rendah dari 5 tahun lalu. Docker, panel seperti Portainer atau Coolify, dan dokumentasi yang makin bagus membuat self-hosting itu sekarang jauh lebih approachable.


Alasan Pertama: Privasi Itu Bukan Paranoia

"Kok paranoid banget sih?" — itu komentar yang sering saya dapatkan ketika bilang saya self-host.

Tapi ini bukan soal paranoia. Ini soal fakta sederhana: kalau kamu pakai layanan gratis dari perusahaan besar, produknya bukan software-nya — kamu adalah produknya.

Google Drive? Mereka punya akses ke semua file kamu. Notion? Semua catatanmu ada di database mereka. Bahkan layanan yang "gratis" tetap punya biaya operasional — dan biaya itu dibayar dengan data kamu.

Self-hosting mengembalikan kendali itu ke tangan kamu. Data kamu di server kamu. Tidak ada pihak ketiga yang bisa scan, analik, atau (secara teori) membaca konten di servermu sendiri.

Ini bukan hanya soal teori. Pernah ada kasus di mana layanan cloud populer mengubah kebijakan privasi mereka secara sepihak. Kalau kamu sudah terlanjur bergantung sepenuhnya, migrasi mendadak itu sakit. Sangat sakit.

Dengan self-hosting, kamu yang menentukan kebijakan privasi. Mau enkripsi end-to-end? Silakan. Mau nonaktifkan akses dari luar? Juga bisa. Kamu yang punya server, kamu yang punya aturan.


Alasan Kedua: Kontrol Penuh (Termasuk Saat Semuanya Kacau)

Bayangkan ini: tengah malam, kamu lagi deadline, tiba-tiba layanan cloud tempat kamu host error. Status page mereka bilang "investigating." Dua jam berlalu, belum ada solusi. Kamu cuma bisa menunggu.

Dengan self-hosting, situasi ini masih bisa terjadi — tapi setidaknya kamu bisa melakukan sesuatu. Bisa restart service, cek log, rollback ke versi sebelumnya. Kamu punya akses ke mesinnya.

Kontrol penuh itu bukan hanya soal debugging. Kontrol penuh juga berarti:

  • Versi software: kamu pilih kapan update, bukan dipaksa update
  • Konfigurasi: sesuaikan sesuai kebutuhan, bukan pakai preset vendor
  • Backup: jalankan backup sendiri ke tempat yang kamu tentukan
  • Integrasi: hubungkan dengan tool lain yang kamu pakai tanpa batasan API

Saya pernah punya pengalaman di mana layanan yang saya pakai mematikan fitur yang sudah saya gunakan setiap hari — begitu saja, tanpa alternatif. Dengan self-hosting, hal itu nggak mungkin terjadi. Kalau fitur dihilangkan dari versi terbaru, saya tinggal stay di versi lama atau fork sendiri.


Alasan Ketiga: Cost Comparison — Lebih Murah dari yang Kamu Kira

Ini bagian yang sering bikin orang kaget.

Mari kita hitung kasar. Pakai managed services untuk个人 project:

LayananBiaya Bulanan
Notion Pro~$10/bulan
Vercel Pro~$20/bulan
Google One (200GB)~$3/bulan
Password manager~$3/bulan
Email hosting~$5/bulan
Total~$41/bulan (~Rp630rb)

Sekarang, self-hosting:

ItemBiaya
VPS (4GB RAM, 2 core)~$5-10/bulan
Domain$12/tahun ($1/bulan)
Total~$6-11/bulan (~Rp90-170rb)

Dan di VPS itu, kamu bisa menjalankan semuanya: Nextcloud, Vaultwarden, Joplin server, blog, bahkan beberapa app kecil lainnya.

Angka-angka di atas bukan cerita fiksi. Saya sendiri membayar sekitar $7/bulan untuk VPS yang menjalankan lebih dari 10 layanan. Kalau dijumlahkan, managed services yang setara akan biayanya 5-8 kali lipat.

Tentu saja, ada hidden cost yang perlu diperhitungkan: waktu. Self-hosting butuh waktu untuk setup, maintenance, dan troubleshooting. Tapi kalau kamu adalah tipe orang yang enjoy proses itu — atau setidaknya mau belajar — maka cost-per-hour-nya sangat worth it.


Alasan Keempat: Pengalaman Belajar yang Nggak Ternilai

Ini alasan yang paling personal bagi saya.

Sebelum self-hosting, saya tahu Docker "secara teori." Sekarang saya bisa debugging container networking sambil minum kopi. Sebelum self-hosting, saya nggak ngerti Nginx dari Caddy. Sekarang saya bisa setup reverse proxy dalam 5 menit.

Self-hosting itu belajar sambil jalan. Setiap kali ada masalah, kamu googling, baca dokumentasi, coba-coba, break, fix, dan akhirnya paham. Itu pengalaman yang nggak bisa kamu dapatkan dari kursus atau tutorial semata.

Beberapa hal yang saya pelajari dari self-hosting:

  • Linux administration: karena kebanyakan server jalan di Linux
  • Docker & containerization: dari basic sampai multi-container compose
  • Networking: port forwarding, DNS, SSL/TLS, firewall rules
  • Security: hardening server, setting up fail2ban, SSH keys
  • Backup & recovery: strategi backup, testing restore process
  • Monitoring: setup Grafana, Uptime Kuma, alerting

Skill-skill ini secara langsung berguna untuk karier saya. Banyak perusahaan yang mencari orang yang paham infrastruktur — dan self-hosting jadi portfolio hidup yang sangat meyakinkan.

Bayangkan kalau ditanya di interview: "Bisa ceritakan tentang pengalaman kamu mengelola infrastructure?" Dan kamu bisa jawab: "Saya menjalankan 10+ layanan di VPS pribadi saya, termasuk..."

That hits different.


Alasan Kelima: Ketergantungan yang Bisa Kamu Hidupi

Setiap kali saya pakai managed service, ada satu pertanyaan yang selalu mengganjal: apa yang terjadi kalau layanan ini tutup?

Dan ini bukan pertanyaan hipotetis. Lihat saja:

  • Google mematikan begitu banyak produk setiap tahunnya
  • Beberapa layanan kecil tiba-tiba tutup tanpa peringatan yang cukup
  • Perubahan pricing bisa mengubah "murah" jadi "mahal" dalam semalam
  • Kebijakan penggunaan bisa berubah secara sepihak

Dengan self-hosting, kamu tidak terikat ke satu vendor. Kalau Nextcloud tidak cocok, migrasi ke Nextcloud alternative itu relatif mudah. Kalau kamu mau pindah VPS provider, cukup backup dan restore. Kamu yang mengendalikan data dan konfigurasinya.

Ini bukan soal tidak percaya — ini soal resilience planning. Orang bijak mengantisipasi perubahan, bukan menunggu perubahan itu datang.


Bagaimana Cara Mulai Self-Hosting?

Kalau kamu tertarik tapi bingung mulai dari mana, ini roadmap yang saya sarankan:

Langkah 1: Mulai dengan Satu Aplikasi

Jangan langsung migrasi semua. Pilih satu hal yang paling mengganggu dari sisi privasi atau biaya, dan mulai dari situ.

Saya sarankan mulai dengan:

  • Vaultwarden (password manager) — karena manfaat privasi paling besar
  • Nextcloud (file sharing) — karena ini pengganti langsung Google Drive
  • Uptime Kuma (monitoring) — karena setup-nya sangat mudah dan satisfing

Langkah 2: Dapatkan VPS Murah

Untuk personal project, VPS seharga $5-7/bulan sudah lebih dari cukup. Provider yang saya rekomendasikan:

  • Hetzner — value for money terbaik, lokasi di Eropa
  • Vultr — banyak pilihan lokasi, termasuk yang dekat Asia
  • Oracle Cloud — ada free tier yang murah hati (4 core, 24GB RAM!)

Kalau mau lebih eksplorasi, kamu juga bisa beli bekas thin client atau mini PC (Intel NUC) untuk dijadikan homelab di rumah. Investasi awal lebih besar, tapi biaya listrik bulanan sangat kecil.

Langkah 3: Install Docker + Docker Compose

Serius, Docker mengubah segalanya untuk self-hosting. Hampir semua aplikasi populer punya Docker image yang tinggal pakai. Docker Compose memungkinkan kamu menjalankan beberapa layanan sekaligus dengan satu file konfigurasi.

Basic setup Docker di Ubuntu:

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# logout & login lagi

Contoh docker-compose.yml untuk Nextcloud:

version: '3'
services:
  db:
    image: mariadb:10
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_password
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: your_password
    volumes:
      - db_data:/var/lib/mysql
 
  app:
    image: nextcloud
    restart: always
    ports:
      - "8080:80"
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: your_password
    volumes:
      - nextcloud_data:/var/www/html
    depends_on:
      - db
 
volumes:
  db_data:
  nextcloud_data:

Langkah 4: Setup Reverse Proxy + SSL

Jangan jalankan aplikasi langsung di port publik tanpa SSL. Pakai Caddy atau Nginx Proxy Manager sebagai reverse proxy:

Caddy (paling simpel):

nextcloud.domain.com {
    reverse_proxy localhost:8080
}

Caddy otomatis handle SSL certificate untuk kamu. Serius, segampang itu.

Langkah 5: Backup, Backup, Backup!

Self-hosting tanpa backup itu kayak berenang di laut tanpa pelampung. Setup automated backup ke tempat lain ( lain provider, local machine, atau S3-compatible storage).

Script backup yang sederhana:

#!/bin/bash
DATE=$(date +%Y%m%d_%H%M)
tar -czf /backups/nextcloud_$DATE.tar.gz /var/lib/docker/volumes/nextcloud_data
# upload ke objek storage
rclone copy /backups/nextcloud_$DATE.tar.gz remote:backups/

Jalankan via cron setiap hari, dan kamu tidur dengan tenang.


Common Pitfalls yang Perlu Diwaspadai

Self-hosting bukan tanpa tantangan. Ini beberapa jebakan yang perlu kamu ketahui:

1. Obsesi Over-Engineering

Mudah sekali tergoda untuk setup Kubernetes, CI/CD pipeline, dan monitoring lengkap untuk satu blog pribadi. Jangan lakukan itu. Mulai sederhana, upgrade hanya kalau memang butuh.

2. Mengabaikan Security

Kalau kamu expose service ke internet, kamu punya tanggung jawab keamanan. Minimal:

  • Gunakan SSH key, bukan password
  • Setup firewall (ufw atau iptables)
  • Gunakan fail2ban
  • Update secara berkala
  • Gunakan reverse proxy dengan SSL

3. Tidak Ada Monitoring

Kalau kamu tidak tahu servermu down, siapa yang tahu? Setup minimal: Uptime Kuma untuk monitoring availability, dan Grafana + Prometheus untuk metrics lebih detail.

4. Backup yang Belum Pernah Di-test

Backup yang belum pernah kamu coba restore itu bukan backup — itu harapan. Secara berkala, test restore process-nya.

5. Terlalu Ambisius di Awal

Migrasi sekaligus 15 layanan ke self-hosting itu resep untuk frustrasi. Satu per satu. Nikmati prosesnya.


Alternatives yang Layak Dipertimbangkan

Kalau self-hosting terasa terlalu berat, ada beberapa opsi middle-ground:

  • Coolify.io — Platform as a Service open-source yang menjembatani gap antara Vercel dan self-hosting
  • Yacht — Docker management UI yang lebih simpel dari Portainer
  • ** casaOS** — Home server OS yang sangat user-friendly
  • Tipi — App store untuk self-hosted services, satu klik install

Tool-tool ini mengurangi friction self-hosting tanpa mengorbankan kendali.


Refleksi: Dua Tahun Self-Hosting

Setelah dua tahun self-hosting, ini yang saya rasakan:

Yang berubah:

  • Saya jauh lebih paham tentang cara kerja internet dari sisi server
  • Saya lebih conscious tentang privasi data saya
  • Saya menghemat cukup banyak uang untuk layanan cloud
  • Saya punya setup yang bisa saya customize sesuai kebutuhan
  • Portfolio saya jadi lebih kuat dari sisi technical

Yang tetap sama:

  • Saya masih pakai beberapa managed services (karena memang bagus untuk use case tertentu)
  • Self-hosting tetap butuh waktu untuk maintenance
  • Kadang-kadang saya masih frustrasi waktu ada masalah yang sulit debug

Yang saya pelajari:

  • Self-hosting itu tentang keseimbangan — bukan soal menggantikan semua managed services, tapi menggantikan yang memang masuk akal
  • Skill infrastruktur yang didapat dari self-hosting itu compound interest — makin lama makin berguna
  • Komunitas self-hosting itu salah satu komunitas paling helpful yang pernah saya temui

Kesimpulan: Self-Hosting Itu Pilihan, Bukan Kewajiban

Saya tidak akan bilang semua orang harus self-host. Ada kalanya managed services memang lebih masuk akal — terutama untuk team collaboration, fitur yang tidak tersedia di alternatif open-source, atau kalau kamu benar-benar tidak punya waktu untuk maintenance.

Tapi untuk project pribadi — catatan pribadi, blog, photo storage, password manager, dan sejenisnya — self-hosting menawarkan kombinasi yang sulit ditandingi: privasi yang lebih baik, kontrol penuh, biaya yang lebih rendah, dan pengalaman belajar yang sangat berharga.

Kalau kamu sedang mempertimbangkan untuk mulai self-hosting, saran saya: mulai hari ini, mulai yang kecil, dan jangan takut untuk break things. Server yang kamu bisa restore dari backup adalah server yang aman untuk diobok-obok.

Dan siapa tahu, mungkin beberapa bulan ke depan kamu akan menulis blog post yang sama dengan yang sedang kamu baca ini.

Selamat mencoba! 🐧


Terima kasih sudah membaca sampai sini. Kalau ada pertanyaan tentang self-hosting atau rekomendasi setup, silakan tinggalkan komentar atau hubungi saya langsung. Saya selalu senang diskusi tentang topik ini.


Appendix: Tool dan Resource Favorit

Berikut daftar tools yang saya gunakan sehari-hari untuk self-hosting setup saya. Semua ini open-source dan bisa dijalankan di VPS minimal:

KategoriToolCatatan
Container ManagementDocker + Docker ComposeWajib untuk semua setup
Panel ManagementCoolifyUntuk deployment yang lebih rapi
Reverse ProxyCaddyAuto SSL, config simpel
MonitoringUptime KumaLightweight, UI bagus
BackupRestic + rcloneEncrypted, incremental backup
Password ManagerVaultwardenKompatibel dengan Bitwarden apps
File SharingNextcloudPengganti Google Drive yang komprehensif
CatatanJoplin + Joplin ServerSync antar device, end-to-end encryption
BlogGhost atau HugoCMS modern tanpa bloat
VPNWireGuardSetup mudah, performa tinggi
Photo ManagementImmichAlternatif Google Photos yang keren
Media ServerJellyfinAlternatif Plex yang open-source

Setiap tool di atas sudah saya coba secara personal, dan saya bisa pastikan semuanya benar-benar berfungsi dalam production environment kecil.

Kalau kamu mau mulai, saya sarankan untuk setup alat monitoring terlebih dahulu - karena begitu kamu bisa melihat apa yang terjadi di servermu, troubleshooting jadi jauh lebih mudah. Mulai dari Uptime Kuma, pasang di port 3001, dan tambahkan health check untuk semua service yang kamu jalankan. Dari situ, kamu bisa ekspansi ke Grafana dan Prometheus untuk observability yang lebih mendalam.

Dan satu tips terakhir: dokumentasikan setup kamu. Tulis di catatan, buat screenshot, simpan semua config di Git repository pribadi. Masa depan kamu akan berterima kasih ketika kamu perlu recreate server dari nol - dan percayalah, pada suatu saat kamu pasti akan butuh itu. Menjadi sysadmin untuk diri sendiri berarti menjadi pencatat yang baik untuk diri sendiri juga.

Self-hosting bukan perjalanan yang sempurna, tapi ini perjalanan yang worth it. 🚀

Tulisan lain