Saya memiliki 21 kontainer Docker dan tidak ada dokumentasi — LLM lokal saya memperbaikinya dalam satu jam

Dimulai dengan hanya dua tumpukan kurang dari setahun yang lalu, dan jumlahnya sudah bertambah lebih dari 20, dan saya menambahkan beberapa setiap minggu. Mayoritas dari mereka adalah yang permanen yang saya gunakan secara teratur, dan beberapa bersifat eksperimental. Dan sebagian besar dari mereka, saya bahkan tidak ingat konfigurasi yang saya lakukan secara manual karena setelah diterapkan, saya jarang mengunjungi mereka sampai mereka meminta perhatian saya. Menulis file dapat memberi tahu saya bagaimana Docker menjalankannya, tetapi file tersebut tidak dapat memberi tahu saya alasan saya mengambil keputusan tersebut. Selama beberapa minggu terakhir, saya menggunakan LLM lokal seperti Gemma 4, Qwen 3.5, dan DeepSeek-R1, semuanya diterapkan pada PC gaming RTX 4070 Ti saya. Saya bahkan telah memberi Gemma 650k+ baris log DNS dari jaringan saya sebelumnya, hanya untuk melihat apa yang ditemukannya. Eksperimen tersebut membuahkan hasil, jadi saya memutuskan untuk memberi Gemma file Compose saya, karena mengira hal itu dapat merekayasa balik pengaturan menjadi sesuatu yang dapat digunakan. Terkait Saya menjalankan Gemma 4 dan Qwen 3.5 untuk tugas lokal yang sama, dan satu tugas melaju bermil-mil ke depan Mengadu mereka satu sama lain untuk menemukan yang terbaik untuk alur kerja saya Dua puluh satu kontainer, dan saya masih tidak bisa menjelaskan setengahnya. Dokumentasi sudah ada Karena sifat pekerjaan saya, saya bereksperimen dengan layanan baru setiap dua hari sekali. Dengan setiap proyek baru, muncullah container baru dan file penulisannya sendiri. Saya selalu memahami file Compose yang baru ditambahkan, namun konfigurasi untuk file lama telah hilang dari ingatan saya. Tidak ada yang rusak, jadi saya tidak pernah mengunjungi konfigurasi tersebut dengan sengaja, dan akhirnya saya lupa saja. Saat itulah saya menyadari bahwa dokumentasi adalah prioritas dan memutuskan untuk membuang file Compose ke Gemma untuk merekayasa balik pengaturannya. Berbeda dengan eksperimen log DNS, saya memerlukan lebih banyak waktu untuk menarik semua file penulisan. Saya pikir sejak saya menggunakan Portainer dari awal, semua file penulisan akan tertata rapi dalam satu volume Portainer. Namun pada titik tertentu, ketika saya memutakhirkan Portainer, ia menarik gambar baru yang diinisialisasi dengan nama volume berbeda. Jadi, pada akhirnya, saya menarik 20+ file Compose YAML untuk dua volume Portainer dan beberapa file JSON untuk volume yang tidak dikelola Compose. Saya dapat dengan mudah menarik kontainer yang sedang berjalan, namun saya juga ingin melihat bagaimana Gemma menanganinya dan mendokumentasikan homelab yang sebenarnya, bukan hanya simulasi laboratorium. Menghapus segala sesuatu yang membingungkan sebelumnya akan menggagalkan maksudnya. Jadi, saya menarik semua file penulisan, termasuk yang saya hentikan, seperti Cloudflare, Menara Pengawal, dan Newt, dan yang saya hentikan sementara untuk eksperimen lain, seperti Pi-hole, dnscrypt-proxy, dan Meilisearch. Setelah semuanya terkumpul, saya siap membiarkan Gemma 4 memahaminya. Saya hanya memerlukan antarmuka untuk mewujudkannya dengan benar. Draf pertama tidak sempurna, tapi sangat berguna. Lebih baik daripada halaman kosong Saya bisa saja menggunakan antarmuka yang sudah ada seperti Open WebUI, tetapi untuk jenis UX yang saya pikirkan, seperti keluaran dalam penurunan harga dan HTML, keluaran yang dapat diedit, dan tindak lanjut kontekstual, saya memutuskan untuk membuat dasbor full-stack khusus. Jika Anda telah membaca eksperimen saya sebelumnya, Anda pasti tahu bahwa saya menyukai React frontends dan Python backends. Saya membutuhkan waktu satu sore untuk membuat dasbor full-stack menggunakan Vite, Tailwind, dan FastAPI. Alurnya sederhana: setelah saya meletakkan semua file di dasbor dan mengklik tombol ‘Agregat’, backend FastAPI menghitung file, tumpukan, layanan, dan jaringan untuk dasbor dan kemudian menggabungkan konten file mentah ke dalam prompt yang berfokus pada dokumentasi yang dikirim ke Gemma 4 melalui /api/chat Ollama. Setelah Gemma merespons, keluarannya dialirkan kembali dan ditayangkan langsung melalui komponen Penurunan Harga bersama. Semua berjalan sepenuhnya secara lokal, tidak ada data yang keluar dari mesin saya. Saat pertama kali dijalankan, ini menghasilkan wiki Markdown yang terstruktur, bukan sekadar dinding teks. Anehnya, keluarannya dapat dibaca manusia karena dokumentasinya diatur oleh tumpukan dan layanan. Ini mencakup tujuan layanan, port, volume, dependensi, jaringan, catatan permulaan, catatan pemeliharaan, dll., seperti dokumentasi homelab sebenarnya yang dihasilkan oleh seorang insinyur berpengalaman. Meskipun beberapa file penulisan memiliki rahasia yang di-hardcode, file tersebut tidak pernah mencetak rahasia sebenarnya, namun ia menyebutkan container mana yang memilikinya. Ini menghubungkan layanan daripada memperlakukan setiap file Tulis secara terpisah. Itu sebenarnya lebih dari yang saya harapkan tanpa pengulangan apa pun. Tidak semuanya sempurna. Saya memberikannya 24 file. Backend mengakui semua 24, namun Gemma sendiri memutuskan untuk melewatkan empat di antaranya tanpa peringatan atau pengakuan apa pun. Mereka hanya absen dari dokumentasi. Ketika saya menunjukkan layanan yang hilang tersebut, layanan tersebut mengevaluasi ulang dan memberi saya empat bagian tersebut dalam format yang sama. Ada juga beberapa kesalahan ketik kecil pada teks, seperti “Omada” menjadi “Pertanda”, cukup mudah untuk diperbaiki sebelum mengunduh file MD atau HTML yang sebenarnya. Pada saat itu, saya kurang tertarik pada kesalahan kecil dalam penamaan dan bagian yang dilewati, dan lebih tertarik untuk memeriksa seluruh dokumen untuk memeriksa apakah itu benar-benar mencerminkan keadaan homelab saya. Sekarang homelab saya akhirnya memiliki memori Masa depan saya adalah pemenang sebenarnya Sebelumnya, saya menyebutkan bahwa saya menyertakan semua file penulisan, termasuk yang sedang berjalan dan yang saya pensiunkan atau hentikan sementara. Hal pertama yang saya periksa adalah apakah ia mengetahui perbedaan antara apa yang berjalan dan apa yang tidak, dan ternyata tidak. Dokumen tersebut memperlakukan semua file penulisan seolah-olah sedang berjalan. Bahkan disarankan agar saya melakukan standarisasi hanya pada satu alat DNS karena diyakini bahwa ketiga server DNS, Pi-hole, AdGuard Home, dan Technitium, berjuang untuk port 53 yang sama. Namun kenyataannya, hanya AGH yang berjalan bersama Unbound. Ketika saya bertanya kepada Gemma tentang hal itu di obrolan lanjutan, jawabannya persis seperti yang saya harapkan. Gemma dengan tepat beralasan bahwa buruh pelabuhan memeriksa JSON membawa bidang “Status” runtime yang sebenarnya, sedangkan file .yml hanya membuktikan sesuatu telah dikonfigurasi, bukan status runtime. Ini dengan tepat mengidentifikasi status layanan yang memiliki file JSON — Cloudflared dan Jellyfin — dan mengakui bahwa Compose file saja tidak cukup untuk membuktikan sisanya. Bagian “Catatan Pemeliharaan & Pengoperasian” sebenarnya menarik untuk dibaca. Ya saya setuju; itu mencakup hal-hal seperti beberapa solusi DNS, beberapa instance Cloudflared, dan jenis jaringan berbeda yang tidak cocok untuk homelab saya. Namun hal ini juga menunjukkan risiko nyata seperti rahasia hardcode dan pengaturan PUID/PGID spesifik di qBittorrent dan menandai masalah ketergantungan data asli, seperti bagaimana Jellyfin, Nextcloud, dan Immich bergantung pada pemasangan NAS. Saya tidak berharap itu menjadi sempurna saat diminta, dan ternyata tidak. Saya memerlukan beberapa tindak lanjut dan iterasi untuk mendapatkan hasil akhir, dan bahkan itu memerlukan pengeditan manual yang eksplisit sebelum saya menjadikannya dokumentasi homelab resmi saya. Bagian yang menarik adalah kemampuan penalarannya memang nyata, namun tidak sepenuhnya diterapkan pada setiap keputusan penilaian, yang berarti pengecekannya masih harus menjadi milikku. Mengenai keaktifan, alat ini tidak gagal untuk memberikan alasan. Alasan tersebut tidak pernah diajukan secara sukarela kecuali diminta secara eksplisit. Itu adalah celah desain yang cepat pada alat tersebut, bukan batasan kemampuan yang sulit. Saya masih tidak mempercayainya untuk dokumentasi yang lengkap, tetapi ini memberi saya sesuatu yang tidak pernah saya miliki: sebuah titik awal. Sekarang saya memiliki tempat pertama untuk memeriksa apakah ada yang tidak beres, bahkan sebelum menyentuh tumpukannya. Terkait 4 container Docker kecil ini melakukan pekerjaan membosankan yang membuat homelabs benar-benar dapat diandalkan. Kecil, mudah dilupakan, dan diam-diam menyatukan semuanya. Wiki yang tidak akan pernah saya tulis sendiri, Gemma, tidak secara ajaib memahami homelab saya, dan saya tidak pernah mengharapkannya. Yang sebenarnya dilakukan Gemma hanyalah mengatur informasi yang sudah tersebar di puluhan file Compose. Terlepas dari keterbatasannya, ia memberikan dokumentasi yang ditulis dengan baik dalam waktu kurang dari satu jam, draf pertama yang membutuhkan waktu satu akhir pekan penuh untuk saya tulis dengan tangan. Untuk homelab yang sedang berkembang, wiki yang tidak sempurna namun dapat diedit jauh lebih baik daripada tidak memiliki apa pun.
Diterbitkan : 2026-07-12 19:30:00
sumber : www.xda-developers.com



