Alasannya bukan kebutuhan. Hosting biasa sudah lebih dari cukup untuk situs seperti ini. Yang penulis cari sebenarnya adalah rasa penasaran: tahu apa yang ada di balik layar setiap kali menekan tombol deploy. Karena itu penulis membeli sebuah VPS kecil, lalu mengurusnya sendiri, tanpa guru, tanpa tim, tanpa yang menjawab kalau ada yang salah tengah malam.
Hari Pertama: Layar Hitam
Yang datang pertama kali bukan panel grafis, melainkan baris perintah dan satu koneksi SSH. Hari-hari pertama lebih banyak urusan yang tidak terlihat: membuat kunci SSH, mematikan login password supaya hanya kunci yang boleh masuk, membuka hanya port yang perlu lewat firewall (SSH, HTTP, HTTPS), dan memastikan servernya merespons sebelum memasang apa pun. Aplikasi belum ada. Yang sudah ada cuma mesin kosong dan aturan main keamanan yang dipasang lebih dulu.
Kebiasaan ini yang penulis bawa ke mana pun sejak itu: sebelum memasang apa pun, pastikan pintunya cuma satu dan kuncinya bukan tebakan.
Perangkat Lunak yang Penulis Tidak Tulis
Untuk mengoperasikan aplikasi, penulis memasang Dokploy, platform open source yang mengurus deployment di atas Docker. Di dalamnya berjalan hal-hal yang juga tidak penulis tulis: Docker Swarm untuk menjalankan layanan, Traefik sebagai reverse proxy yang mengurus domain dan TLS, PostgreSQL dan MySQL untuk datanya.
Belajar di sini berarti membaca. Dokumentasi resmi dulu, lalu issue di GitHub kalau dokumentasi tidak menjawab, lalu percakapan di komunitas kalau issue tidak ada. Pelajaran pertama datang dari versi: platform seperti ini harus dikunci ke versi tertentu, bukan dibiarkan mengikuti yang terbaru, karena perbedaan kecil di versi bisa mengubah perilaku yang sudah nyaman di produksi. Sejak itu setiap instalasi menyebut versinya eksplisit, dan sebelum dua mesin dianggap sama, perbedaannya dicek satu per satu.
Pelajaran kedua datang dari kualitas dokumentasi. Dokumentasi yang ditulis baik terasa seperti hadiah dari orang asing; tutorial yang basi terasa seperti jebakan, karena ia dengan yakin menjelaskan versi yang sudah tidak berperilaku seperti itu. Penulis jadi memeriksa tanggal dan nomor versi sebelum mempercayai instruksi yang ditemukan di internet.
Belajar dari Angka yang Tidak Bohong
VPS yang penulis pegang cuma punya RAM 1,9 GB. Supaya tidak kehabisan, ditambahkan swap 4 GB, dan swap itu ternyata benar-benar terpakai. Disk 40 GB berjalan di sekitar enam puluh persen pemakaian. Angka-angka ini yang menentukan keputusan: layanan tidak boleh dibuka semua sekaligus, log harus dipotong, dan setiap layanan tambahan harus punya alasan.
Belajar mandiri di sini berarti tidak ada yang memperingatkan lebih dulu. Kalau RAM habis, yang berhenti adalah aplikasinya. Karena itu penulis jadi terbiasa memantau: RAM, disk, log Traefik dan Dokploy, beberapa hari setiap kali ada perubahan besar.
Backup yang Pernah Diuji
Bagian yang paling menakutkan justru jadi bagian yang paling penulis sukai: memindahkan seluruh isi mesin ke mesin lain. Rencananya sederhana: instal ulang dengan versi yang sama di mesin kedua, dump database dengan pg_dump, salin volume yang diperlukan, deploy ulang dari git yang sama, lalu pindah. Tidak ada kloning mesin; yang dipindahkan adalah datanya dan langkah-langkahnya.
Mesin lama tidak dimatikan. Ia dibiarkan hidup dengan aplikasinya berhenti, sebagai jalan mundur kalau ternyata ada yang salah. Dan setelah pindahan, yang penulis lakukan bukan merayakan, melainkan memantau beberapa hari: RAM, disk, log, sertifikat. Backup yang belum pernah dipulihkan bukan backup; itu cuma harapan dengan nama file.
Semuanya Open Source
Yang penulis jalankan di mesin kecil ini semuanya tidak dibeli: Ubuntu, Docker, Dokploy, Traefik, PostgreSQL, MySQL. Yang dibayar hanya sewa mesinnya. Sebagai gantinya, penulis berutang pada orang-orang yang tidak dikenal, dan ketergantungan itu justru yang membuat belajar terasa punya arti. Dokumentasi yang ditulis baik terasa seperti hadiah; issue yang dijawab maintainer terasa seperti bantuan langsung.
Aplikasi penulis sendiri juga ikut di sini. Situs portofolio ini menyimpan datanya di PostgreSQL yang berjalan di VPS yang sama, dan Kas TIY, aplikasi kas yang penulis bangun untuk organisasinya, juga berjalan di sana sambil disiapkan sebagai proyek open source. Bahkan aplikasi Laravel Filament untuk klien ikut berjalan di mesin yang sama. Satu mesin, produksi sungguhan, tanpa pengawasan siapa-siapa.
Penutup
Banyak tutorial bisa menjelaskan cara memasang Docker. Yang tidak bisa dijelaskan adalah perasaan pertama kali server berhenti merespons dan penulis tidak bisa bertanya ke siapa pun. Belajar mandiri mengoperasikan VPS pada akhirnya bukan soal menghafal perintah; ia melatih penulis untuk membaca angka, membaca dokumentasi, dan mengambil keputusan dengan informasi yang tidak lengkap. Modalnya cuma sebuah mesin kecil dan tekad untuk mengurusnya sendiri.

