Self hosting layanan online

Posting ini meneruskan cerita horor di posting saya sebelumnya di mana saya hampir kehilangan akses account Google tanpa sebab. Di sini saya ingin membahas mengenai self-hosting layanan online, supaya kendali atas layanan online sebisa mungkin ada di tangan kita, tidak mudah semena-mena ditutup pihak lain.

Posting kali ini lebih ditujukan bagi mereka yang memiliki kemampuan teknis mengadministrasi sistem (atau mau belajar melakukan itu). Saya berencana membuat posting lain untuk melindungi account online untuk orang awam.

Meskipun ada banyak layanan online (SAAS atau software as a service) baik gratis maupun berbayar mulai dari penyimpanan file, foto, sampai source code, banyak orang memilih untuk menghosting sendiri berbagai layanan tersebut (istilahnya self-hosting). Ada yang memakai komputer lokal di rumah, ada yang memakai VPS, dan ada juga yang menyewa dedicated server.

Beberapa contoh layanan online yang saya maksud misalnya: email (Gmail, Outlook, Yahoo), hosting blog (Blogspot, WordPress, Medium, dsb), hosting git (github, bitbucket), dan penyimpanan file online (Dropbox, Google Drive, OneDrive)., Tentunya masih banyak lagi jenis layanan online lainnya yang tidak saya sebutkan.

Buat apa hosting sendiri?

Ada banyak alasan kenapa seseorang mulai menghosting layanan sendiri. Ada yang shock karena account onlinenya ditutup sepihak, dan ada juga yang dari dulu merasa curiga dengan layanan gratis (kok bisa gratis?). Beberapa layanan gratis mendapatkan uang dari iklan, beberapa memberikan gratis sampai batas tertentu saja (misalnya untuk Dropbox, jika disk penuh, nanti lama-lama pengguna gratis akan membayar), dan beberapa dikhawatirkan menjual data usernya.

Memakai layanan dari pihak lain memiliki  satu kelebihan utama:  kita tidak perlu memikirkan apa-apa, tinggal pakai. Tapi memakai layanan pihak lain juga memiliki banyak kelemahan:

  • Semua data kita di tangan pihak tersebut, bisa saja dijual, diintip, dihilangkan
  • Pemerintah di negara tertentu bisa meminta pihak online provider memberikan data pada mereka (dan kita tidak tahu)
  • Pihak lain bisa secara sepihak menutup account kita, seperti contoh kejadian yang saya alami di posting sebelumnya
  • Bukan cuma account, tapi keseluruhan layanan online bisa ditutup sewaktu-waktu (ingat Friendster yang sempat memiliki ratusan juta member? Google Reader yang dulu jadi andalan membaca berita? Google Plus yang jadi alternatif Facebook bagi lebih dari 100 juta orang?)
  • Selain ditutup, layanan bisa juga dijual ke pihak lain dan bisa berubah total. Baru-baru ini Yahoo menjual Flickr, tadinya pengguna gratis bisa mengupload data sampai 1 TB, sekarang dibatasi 1000 foto saja

Tidak peduli seberapa besar layanannya, berapa banyak penggunanya (Tahun 2013 flickr memiliki 87 juta anggota, Google plus memiliki 111 juta pengguna aktif), seberapa besar perusahaannya (Google Reader dan Google plus dimiliki oleh Google, Flickr dimiliki oleh Yahoo). Jika sesuatu dirasa tidak menguntungkan, maka kita bisa dipaksa pindah.

Flickr dijual oleh Yahoo dan memiliki batasan baru

Contoh yang terbaru saat ini: Flickr. Ada belasan ribu foto saya di sana. Saya bisa mendownload dan memindahkan foto ke hosting baru, tapi bagaimana dengan semua posting blog lama dengan gambar yang masih mengarah ke Flickr? semua juga harus diupdate dan itu butuh waktu. Beberapa foto di blog ini sudah hilang karena dulu pernah mencoba-coba berbagai layanan yang sepertinya akan tahan lama, tapi ternyata saya salah. Beberapa tahun terakhir semua foto dihosting di blog ini sendiri, tidak merujuk ke layanan lain.

Alasan lainnya adalah: meskipun layanan tetap ada, aman dan berjalan normal tapi seringkali sebagai pengguna, pendapat kita tidak didengar. Biasanya banyak fitur baru di sebuah layanan dan fitur lama yang kita pakai dihilangkan. 

Bergantung pada satu layanan online untuk banyak hal juga bisa berakibat fatal. Contohnya wartawan Wired pernah dihack, seluruh device Applenya (iPhone, iPad dan Mac) dihapus secara remote dengan fitur remote wipe. Fitur remote wipe ini gunanya mestinya untuk menghapus device kita jika tercuri, tapi sebaliknya bisa dipakai menghapus semua data kita.

Sebagian orang benar-benar menghindari layanan dari pihak manapun, sebagian lagi (seperti saya) berusaha meminimasi layanan dari pihak lain jika memang tidak benar-benar perlu. Jika sudah sangat mudah menginstall layanan tertentu, saya akan memilih instalasi sendiri.

Beberapa kelebihan self hosting adalah:

  • Pihak lain tidak bisa dengan mudah menutup account kita
  • Kita bebas memilih berbagai fitur yang kita mau
  • Kita bisa menghosting apapun selama kita mau, tidak bergantung pada keinginan pihak lain untuk meneruskan layanannya
  • Kita bisa belajar dan mengerti teknologi yang kita gunakan
  • Dalam kasus tertentu kita bisa berhemat dibandingkan membayar layanan dari pihak lain

Tapi tentunya banyak kelemahan juga, misalnya berbagai hal yang perlu dipikirkan jika harus mengurus server sendiri:

  • memikirkan masalah disk space dan backup
  • memikirkan masalah security
  • memikirkan masalah konfigurasi dan update software
  • memikirkan masalah jaringan, domain, SSL certificate, dsb

Self Hosting untuk keamanan

Secara formal, security bertujuan melindungi confidentiality, integrity dan availability. Atau secara awam begini:

  • Confidentiality: data cuma diakses oleh yang berhak. Serangan yang berkaitan dengan ini: pencurian data, atau data diintip provider.
  • Integrity: data tidak diubah oleh yang tidak berhak. Serangan yang berkaitan dengan ini: website dihack, data diubah
  • Availability: data harus bisa diakses oleh yang berhak. Serangan yang berkaitan dengan ini: Denial Of Service, account diblok

Dengan memakai layanan online dari pihak lain, maka kita menyerahkan semua itu ke pihak lain. Tentunya kita tidak bisa 100% bebas dari pihak lain, karena minimal kita tetap perlu menyewa server, mendaftarkan domain, dsb. Walaupun kalau Anda gila dan kaya dan punya banyak waktu Anda bisa membuat ISP sendiri dan bahkan membuat TLD (top level domain) sendiri seperti .sesuatu dengan biaya 185 ribu USD (2.6 milyar rupiah).

Meski tidak bisa lepas 100% dari pihak lain tapi kita bisa menghindari masalah dengan mendistribusikan ke berbagai pihak. Contohnya begini: cara mudah beremail dan membuat blog adalah dengan account Google (dapat Gmail + Blogger dan masih banyak lagi), dan tidak perlu memikirkan apa-apa lagi, hanya perlu mendaftar dan butuh beberapa menit saja.

Tapi apa yang terjadi jika misalnya kita posting sesuatu yang dianggap menghina seseorang di blogger dan dilaporkan secara massal? ada kemungkinan seluruh account Google kita akan diblokir, foto kita tidak bisa diakses, address book kita hilang. Atau jika laporan massal bahwa account email kita dipakai untuk penipuan, akibatnya juga bisa sama.

Jangan anggap hal seperti ini mustahil terjadi, saya sudah mengalami sendiri kejadian di mana account yang tidak ada masalah dan tidak melakukan apa-apa tiba-tiba suspended. Saya sudah mendengar kisah bahkan account berbayar dari perusahaan besarpun pernah kena kesalahan sistem dan diblok (walaupun kebetulan dalam kisah yang saya dengar bisa diunblock dalam sejam).

Cara yang lebih susah tapi lebih aman adalah dengan memisahkan semuanya. Pertama dengan membeli nama domain di satu registrar (sebut saja pihak A). Ini titik paling penting, di sini kita hanya membeli nama domain saja, dan tidak membeli layanan lain (tidak membeli hosting blog atau email), jadi kemungkinan account bermasalah sangat kecil. Jika ada konten negatif di blog kita, maka biasanya itu di luar tanggung jawab registrar, karena mereka hanya mengurusi nama domain saja.

Karena hanya diakses setahun sekali untuk memperpanjang domain (atau bahkan tidak perlu jika sudah perpanjangan otomatis), maka kemungkinan account di registrar dihack juga kecil.  Kita bisa memakai account email yang jarang dipakai supaya tidak ada yang berusaha membrute force atau melakukan cara lain untuk menghack account ini.

Karena ini sangat penting, maka pilihlah registrar yang sudah lama dan terpercaya. Seringkali yang terjadi adalah social engineering pada registrar (sudah beberapa kali kejadian di registrar baik di Indonesia ataupun luar) untuk mengambil alih account kita.

Kemudian kita memakai layanan DNS dari pihak lain (pihak B), misalnya Cloudflare. DNS adalah yang memetakan dari nama domain ke IP sebuah server. Dari pihak A, kita bisa menunjuk DNS mana yang akan memetakan nama jadi IP. Jadi DNS server  hanyalah tabel yang menyatakan nama X menunjuk ke server Y.

Jika pihak B ini bermasalah (misalnya account kita di provider ini kena hack atau diblokir) maka kita bisa mengganti provider DNS agar menunjuk ke pihak lain (tanpa mengganti domain).

Untuk email, kita memakai layanan pihak lain (pihak C) untuk Mailbox atau bahkan kita bisa mengurus mail server sendiri. Jika mail server ini bermasalah (banyak spam, diserang orang dengan mail bomb, dsb), kita bisa mencari pihak lain (atau server lain) lalu kita set DNS agar menunjuk ke server lain.

Untuk blog, kita bisa memakai layanan pihak lain lagi (pihak D) atau server sendiri. Jika ada konten yang dianggap melanggar oleh pihak tertentu dan account blog kita (di pihak D) harus ditutup, maka tidak akan terpengaruh ke email yang kita miliki yang dilayani pihak lain (pihak C).

Dalam setup yang saya sebutkan di atas, titik utama kelemahan adalah nama domain. Jika account di registrar berhasil diambil alih orang lain atau ditutup oleh providernya, maka email akan berhenti, dan orang tidak bisa lagi mengakses blog di alamat yang sama. Tapi andaikan domain kita berhasil diambil alih seseorang pun, maka  email kita tidak akan terhapus, isi posting blog kita juga tetap ada. Kita bisa membeli domain baru dan mengarahkan kontennya ke isi yang masih ada.

Pengalaman pribadi

Beberapa contoh self-hosting yang saya lakukan (untuk saya akses via Internet)

  • Blog (WordPress)
  • Wiki ( Mediawiki, untuk catatan pribadi)
  • Private git repo (dengan gitolite, karena hanya untuk personal, jadi tidak butuh fitur issue tracking, dsb)
  • Guacamole (untuk menggantikan TeamViewer)
  • Seafile (seperti Dropbox, tapi mendukung enkripsi)
  • Jupyter notebook (sering saya pakai untuk mengerjakan CTF atau untuk mencatat/coba-coba ketika melakukan reverse engineering, ini tidak bisa dilakukan dengan provider gratisan yang tidak menyediakan package non standar seperti Scapy)
  • OpenVPN (untuk akses VPN)
  • Email (hanya domain tertentu saja)

Saat ini saya menyewa dua server di dua hosting terpisah, dengan data yang dibackup ke Amazon S3. Dengan dua server, kemungkinan keduanya down atau error pada saat bersamaan menjadi lebih kecil.

Dan beberapa layanan hanya untuk jaringan internal rumah:

  • File server (samba)
  • Mumble server (supaya bisa ngobrol dengan Jonathan di ruangan lain dengan Mumble)
  • Minecraft server
  • Local DNS server (dnsmasq, terutama untuk blokir iklan)
  • Squid proxy (ini semakin kurang berguna karena kebanyakan konten sekarang via HTTPS)
  • Beberapa webapp sederhana (misalnya untuk Jam di tempat tidur Jonathan, mainan untuk Joshua)
  • Youtube-dl-server untuk download video youtube agar aman ketika internet mati (command line youtube-dl juga bisa, ini hanya memudahkan)
  • Torrent server

Server

Mungkin sebagian berpikir: wah kalau harus punya server sendiri bisa mahal dong? Ini semua tergantung dari hal yang Anda inginkan dan pendekatan yang diambil. Contoh: jika sudah punya koneksi internet cepat dan hanya ingin menghosting sesuatu yang sifatnya ringan, maka memakai Raspberry Pi atau Orange Pi sudah cukup, pemakaian daya sangat kecil, dan bisa memakai dynamic DNS.

Selain nilai uang yang harus dikeluarkan, masalah mahal dan murah harus dinilai dari risiko yang kita ambil. Seperti kata orang jawa: murah kok njaluk slamet (murah kok berharap selamat). Jika memang ingin data kita selamat ya kita harus menginvestasikan uang dan/atau waktu.

Penawaran di vultr saat tulisan ini dibuat

Sekarang VPS sudah cukup murah, misalnya vultr mulai dari 2.5 USD/bulan (sekitar 37 ribu rupiah/bulan tapi hanya IPv6) untuk VPS dengan disk space 20 GB (SSD), memori 512 MB, dan network transfer 500 GB. Sementara Digital Ocean mulai dari 5 USD/bulan dengan 25 GB SSD, 1 GB RAM dan 1 TB transfer).

Penawaran di online.net saat tulisan ini dibuat

Jika punya uang lebih, bahkan server dedicated dari online.net bisa didapat dengan 10 euro per bulan dan spesifikasinya cukup bagus: 4 GB RAM, 120 GB SSD, unlimited transfer, tapi CPU-nya Atom.  Jika ingin CPU Intel/AMD yang specnya bagus, Biasanya sekitar 25 Euro (~28 USD) sudah bisa dapat Intel Core i7 dengan memori 16GB dan harddisk 1 TB x 2 (RAID).

Penawaran di server Auction di Hetzner, kurang dari 25 Euro sudah dapat server 2×3 TB dengan memori 16 GB

Bagi banyak orang 28 USD (dedicated server dengan disk besar) memang tidak murah, tapi tergantung penggunaannya, ini bisa menghemat daripada harus membayar beberapa layanan. Contohnya: Dropbox 9.99 USD/bulan, Github private (7 USD/bulan), dan Minecraft server (6 USD) saja sudah 23 USD, belum lagi jika punya beberapa proyek yang masing-masing butuh server.

Software

Ada banyak software yang bisa dihosting sendiri,  daftar yang cukup bagus bisa dilihat di sini: https://github.com/Kickball/awesome-selfhosted. Masih banyak software lain yang tidak disebutkan di situ, berbagai package software di Linux semuanya bisa dihosting sendiri. Diskusi mengenai self hosting ada di banyak forum, misalnya di Reddit.

Tentunya software tertentu tidak akan nyaman dipakai jika hanya bisa diakses via web, misalnya software sejenis Dropbox hanya akan nyaman jika ada versi Desktop dan Mobilenya. Sekarang ini beberapa proyek open source (misalnya Seafile dan Nextcloud) menyediakan app untuk Desktop dan Mobile juga.

Nextcloud Android App

Dulu self hosting cukup merepotkan, tapi sekarang dengan adanya berbagai teknologi seputar virtualization dan container, berbagai software bisa diinstall dengan mudah tanpa takut bentrok.  Beberapa orang cukup serius self hosting dengan server spesifikasi tinggi dan memakai software orchestration (seperti Kubernetes) untuk mengatur berbagai layanan yang dimiliki. Untuk skala kecil, biasanya docker saja sudah cukup (tidak perlu dalam mode composer ataupun swarm).

Penutup

Self hosting memang tidak mudah, tapi bagi orang seperti saya yang penghidupannya bergantung pada banyak layanan online, berbagai kerepotan dan biaya yang harus dikeluarkan merupakan investasi yang perlu. Lebih baik susah sedikit, daripada bergantung 100% pada layanan online dari pihak lain. Saya tidak ingin suatu hari bangun dan tiba-tiba semua account saya ditutup.

Di posting lain saya akan membahas lebih dalam mengenai teknisnya, misalnya bagaimana setup mail server sendiri atau setup blog sendiri. Saat inimenggunakan docker dan teknologi lain, setup seperti ini sudah sangat memudah (tentunya tidak harus untuk pribadi, tapi bisa untuk perusahaan kecil/menengah juga).

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.