FreshRSS sempat hilang total setelah container Docker yang paling penting terhapus, tetapi layanan itu akhirnya bisa dihidupkan lagi dari awal. Kunci pemulihannya bukan pada Docker sendiri, melainkan pada cadangan data langganan yang sudah disiapkan sebelumnya.
Kejadian itu bermula ketika ruang penyimpanan hard drive menyusut dengan cepat. Pemeriksaan penggunaan disk menunjukkan bahwa ruang banyak habis oleh build cache, image aktif, image tidak aktif, container, dan volume yang terhubung dengan Docker.
Pembersihan yang berujung kehilangan layanan
Awalnya, Docker diduga sebagai penyebab utama karena mesin tersebut dipakai hampir eksklusif untuk bereksperimen selama satu minggu penuh. Perintah docker system df memperlihatkan build cache memakan ruang besar, sementara ada pula sejumlah image dan container yang sudah tidak aktif.
Di tahap ini, langkah yang lebih aman sebenarnya sudah tersedia. Perintah seperti docker image prune --all dan docker builder prune bisa dipakai untuk membersihkan ruang, dengan catatan bahwa opsi --all akan menghapus semua image yang tidak memiliki minimal satu container terkait.
Namun, pembersihan kemudian berubah menjadi masalah yang lebih besar ketika container FreshRSS ikut terhapus dengan perintah yang memuat rm. Akibatnya, seluruh instalasi FreshRSS lenyap dari sistem, bukan sekadar berhenti berjalan.
Mengapa container itu tidak bisa dipulihkan
Dalam Docker, image adalah template yang berisi dependensi, library, tool sistem, dan kode aplikasi. Container adalah instance yang dijalankan dari image tersebut, sehingga saat container dihapus, instance yang sudah ada memang tidak bisa dibangkitkan kembali.
Itulah sebabnya FreshRSS tidak dapat dimuat lagi setelah penghapusan terjadi. Pada awalnya, situasi itu sempat dianggap hanya sebagai layanan yang mati, tetapi ternyata aplikasi lengkapnya sudah hilang.
Cadangan yang menyelamatkan proses pemulihan
Untungnya, ada rencana cadangan yang telah disiapkan lebih dulu. Instalasi FreshRSS kemudian dibangun ulang dari nol dengan alur yang sama seperti saat pertama kali memasangnya, kali ini menggunakan Docker Compose.
Setelah image baru selesai dibuat, akun pengguna baru dibuat terlebih dahulu. Setelah itu, menu Subscription Management > Import/Export > Import digunakan untuk memilih file OPML, lalu seluruh RSS feed dari instalasi sebelumnya berhasil dimasukkan kembali.
| Tahap | Langkah | Hasil |
|---|---|---|
| Pemulihan awal | Membangun ulang FreshRSS dengan Docker Compose | Instalasi siap digunakan kembali |
| Impor data | Memakai menu Import dengan file OPML | Seluruh feed lama masuk kembali |
| Cadangan lanjutan | Menyiapkan ekspor OPML secara rutin | Salinan feed tetap tersedia |
Pengaturan baru dan kebiasaan cadangan
Setelah layanan kembali aktif, beberapa pengaturan juga diubah. Opsi seperti Hide articles after reading dan Clicking outside of article text area closes the article dipilih karena dinilai lebih baik dibanding konfigurasi sebelumnya.
Di sisi cadangan, file OPML juga diekspor melalui Subscription Management > Import/Export > Export. File itu kemudian diunduh dalam bentuk ZIP agar salinan feed tetap aman jika kejadian serupa terulang.
Kebiasaan baru pun terbentuk setelah insiden tersebut. Cadangan OPML kini dibuat secara rutin setiap kali ada penambahan atau penghapusan sumber berita, kira-kira setiap dua minggu.
Pelajaran dari satu perintah yang keliru
Kasus ini menunjukkan bahwa eksperimen di lingkungan hobi tetap menyimpan risiko besar jika perintah dijalankan tanpa pemahaman yang cukup. Kehilangan feed pribadi memang bukan bencana besar, tetapi efeknya tetap bisa menghapus layanan yang dianggap penting.
Pengalaman ini juga menjadi pengingat bahwa pembersihan storage tidak boleh dilakukan dengan menebak fungsi perintah Docker. Dengan cadangan yang tepat, layanan seperti FreshRSS masih bisa dibangun ulang, sementara kesalahan sebelumnya berubah menjadi pelajaran teknis yang mahal.






