devops
Catatan teknis seputar web development, DevOps, dan integrasi AI.
30 artikel
- 22.51devops
Menutup Pintu Tidak Menyembunyikan Laci
Port deploy ditutup, /.git/ tetap kebaca lewat hostname staging. Dua lapis penutup berikutnya: guard regex nginx edge dan network split api/db.
TL;DR: Tutup port inbound doang ternyata belum cukup aman, soalnya path sensitif kayak .git dan .env masih kebuka lewat hostname staging. Solusinya tiga lapis: blokir dotfiles di nginx edge, pisah network Docker per kelompok service biar nggak ada jalur lateral, plus server_tokens off buat sembunyiin versi. Kuncinya, satu lapis nggak cukup, harus saling nutup lubang.
#nginx#docker#devops - 00.06devops
Dump Users Tetap Hidup Saat db-push Mengganti Database
db-push mengganti seluruh database staging dari dump dev, akun ikut lenyap. Dua dump kecil dan guard jujur menahaninya.
TL;DR: db-push ternyata nge-replace seluruh database staging pakai dump dev, dan tabel users nggak ikut, jadi akun admin hilang terus. Solusinya: dump data users dari staging dulu sebelum DROP, terus di-restore lagi abis import. Ditambah guard kayak --complete-insert, sanity check sebelum DROP, dan chmod 600 biar aman.
#mysql#mysqldump#ssh - 17.07devops
Docker Compose Menunggu Database Siap, Bukan Cuma Jalan
depends_on cuma menunggu container jalan. Healthcheck pg_isready plus service_healthy dan entrypoint yang benar membuat aplikasi tidak menabrak database yang belum siap.
TL;DR: depends_on di Compose cuma mastiin kontainer jalan, bukan beneran nunggu Postgres siap, makanya app sering gagal konek. Solusinya kasih healthcheck pg_isready di db terus depends_on pakai condition service_healthy, plus exec biar uvicorn jadi PID 1 dan shutdown rapi. Pola yang sama kepake di CI GitHub Actions, dan Compose 5.3.0 punya pre_start sebagai alternatif.
#docker#compose#postgresql - 10.18devops
Login Kilat Dev yang Nggak Jadi Pintu Belakang
Otomatisasi login development lewat submit form asli plus guard env fail-closed: cepat tanpa menyisakan pintu belakang di production.
TL;DR: Capek login manual 30 kali pas ngetest, bypass token malah bikin UI error dan test jadi flaky. Solusinya tetap otomatisin submit form asli tapi dikunci ketat pakai environment variable opt-in biar defaultnya mati. User dev-nya juga harus role terbatas dan data terpisah biar aman nggak kebuka di production.
#security#authentication#testing - 02.35devops
Satu perintah cek status gate
Cek status gate Plane yang dulu butuh empat round trip MCP dan payload 86KB, sekarang cukup satu skrip read-only dengan exit code semantik.
TL;DR: Dulu cek status ribet banget harus empat kali panggilan MCP cuma buat baca data 86KB yang loadingnya lama. Sempat kepikiran pakai cache tapi malah bikin pusing, akhirnya bikin skrip plane status yang baca langsung tanpa cache dan ngecek empat bagian secara paralel. Sekarang cukup satu perintah udah ketahuan beres atau nggak lewat kode exit-nya, jadi nggak males lagi ngecek gate.
#python#plane#devops - 13.29ai
Satu patch kecil di plane-mcp biar mau ngobrol sama Plane Community Edition
Endpoint /dependencies/ 404 di CE self-hosted. Patch fallback ke /relations/ lama, bedakan 404 rute vs 404 data.
TL;DR: Gue coba hubungin work item lewat MCP malah dapet 404, kirain ID salah padahal rutenya yang nggak ada di CE. SDK maksa pake endpoint /dependencies/ ala cloud, sedangkan CE self-hosted cuma kenal /relations/ dengan body issues. Akhirnya dibikin fallback yang bedain 404 page sama 404 data, kalau rutenya hilang otomatis dialihin biar relasi tetap jalan.
#plane#mcp#ai - 13.11ai
Plane MCP sudah live, tiga jebakan operasional ini baru terasa
Workspace nggak bisa dihapus lewat MCP, CORS dipakai ulang sebagai CSRF, dan token API ngintip di .mcp.json.
TL;DR: Hapus workspace nggak bisa lewat MCP, cuma bisa di UI harus ketik nama dan frasa konfirmasi biar nggak kepencet AI. CORS sama CSRF ternyata satu variabel, jadi abis edit .env harus recreate semua container bukan cuma restart proxy. Token API kesimpen plain text di .mcp.json jadi wajib di-gitignore dan mending pakai yang ada expiry.
#plane#mcp#ai - 06.14devops
Onboard Server KTM ke Ansible dan Swap Image 9router
Host KTM resmi dikelola Ansible: playbook upgrade 9router berlaku lagi setelah Docker Hub mengejar versi, dan swap ke image vendor 0.5.86 berjalan mulus.
TL;DR: Gue sempat mikir playbook error pas upgrade KTM ke 0586, ternyata registry Docker Hub aja yang ketinggalan di 0575. Makanya sempat build manual 0581, tapi akhirnya image vendor terbaru udah nongol dan playbook jalan mulus. Image custom lama masih nyangkut di disk dan tinggal dihapus manual nanti.
#docker#ansible#automation - 20.39devops
Launcher Dua Kali Bayar: Tiga Lapis Penjaga Sebelum Skrip Delegasi Menyala
Skrip delegasi yang diluncurkan dua kali menghabiskan budget dua kali. Guard flock, cek artefak, dan pgrep menolak sebelum mulai.
TL;DR: Ceritanya session Claude Code kelihatan macet padahal lagi mikir, jadi gue jalankan ulang dan dua proses makan budget bareng. Solusinya flock -n via file descriptor, plus cek result JSON lama dan pgrep -f buat deteksi proses kembar. Alasan penolakan dibedain lewat exit code 42, 43, 44 biar gampang debug.
#bash#devops#automation