Menghapus container Docker yang paling penting sering terdengar seperti akhir dari semuanya. Namun, kasus FreshRSS menunjukkan bahwa layanan yang tampak hilang total masih bisa dibangun lagi jika sebelumnya ada cadangan data yang tepat.
Masalah ini bermula saat ruang penyimpanan hard drive menyusut cepat. Pemeriksaan penggunaan disk memperlihatkan bahwa build cache, image aktif, image tidak aktif, container, dan volume terkait Docker ikut menguras ruang penyimpanan.
Pembersihan yang berujung bencana
Awalnya, Docker dicurigai sebagai penyebab utama karena mesin tersebut dipakai hampir eksklusif untuk bereksperimen selama satu minggu penuh. Perintah docker system df menunjukkan build cache memakan banyak ruang, sementara ada juga beberapa image dan container yang tidak aktif.
Di titik itu, langkah pembersihan sebenarnya masih bisa dilakukan dengan lebih aman. Opsi seperti docker image prune --all dan docker builder prune tersedia, sementara tanpa --all perintah prune hanya menghapus dangling images.
Masalah muncul ketika pembersihan berubah terlalu agresif dan container FreshRSS ikut terhapus lewat perintah yang memuat rm. Dari situ, seluruh instalasi FreshRSS lenyap dari sistem.
Mengapa container yang terhapus tidak bisa dipulihkan begitu saja
Dalam Docker, image berfungsi sebagai template berisi dependensi, library, tool sistem, dan kode aplikasi. Container hanyalah instance yang dijalankan dari image tersebut, sehingga saat container dihapus, instance itu memang tidak bisa dibangunkan kembali.
Itulah yang terjadi pada FreshRSS. Awalnya, situasi itu sempat dianggap hanya sebagai layanan yang berhenti berjalan, tetapi ternyata aplikasi lengkapnya sudah hilang dari sistem.
Cadangan OPML jadi penyelamat
Jalan keluar datang dari persiapan sebelumnya. Instalasi FreshRSS dibangun ulang dari awal dengan proses yang sama seperti saat pertama kali memasang pembaca RSS itu, kali ini memakai Docker Compose.
Setelah image baru selesai dibuat, akun pengguna baru dibuat lebih dulu. Lalu menu Subscription Management > Import/Export > Import digunakan untuk memasukkan file OPML, dan seluruh RSS feed dari instance sebelumnya berhasil kembali.
| Langkah pemulihan | Detail |
|---|---|
| Bangun ulang FreshRSS | Instalasi dibuat lagi dari awal dengan Docker Compose. |
| Buat akun baru | Akun pengguna dibuat sebelum impor feed. |
| Impor OPML | Menu Subscription Management > Import/Export > Import dipakai untuk memulihkan semua feed. |
| Cadangan feed | OPML digunakan sebagai format impor, ekspor, dan pencadangan seluruh feed. |
Pemulihan yang sekaligus memperbaiki kebiasaan
Setelah layanan kembali aktif, beberapa pengaturan juga disesuaikan. Opsi seperti Hide articles after reading dan Clicking outside of article text area closes the article dipilih karena dianggap lebih baik dibanding konfigurasi sebelumnya.
Di sisi cadangan, file OPML diekspor lewat jalur Subscription Management > Import/Export > Export. File itu kemudian diunduh sebagai ZIP agar salinan feed tetap tersedia jika kejadian serupa terulang.
Pengalaman tersebut juga memunculkan kebiasaan baru dalam menjaga data. Backup OPML kini dibuat rutin setiap ada penambahan atau penghapusan sumber berita, kira-kira setiap dua minggu.
Pelajaran dari satu langkah yang terlalu jauh
Kasus ini menunjukkan bahwa eksperimen di lingkungan hobi memang memberi ruang untuk salah langkah. Kehilangan feed pribadi bukan bencana besar, tetapi menjalankan perintah tanpa benar-benar memahami fungsinya tetap berisiko tinggi.
Pelajarannya sederhana: pembersihan storage tidak seharusnya dilakukan dengan menebak-nebak perintah Docker. Dengan cadangan yang tepat, aplikasi penting masih bisa dibangun ulang, sementara pengalaman buruk itu menjadi pengingat untuk lebih hati-hati saat memakai teknologi baru.
