devops
Catatan teknis seputar web development, DevOps, dan integrasi AI.
87 artikel
- 22.30devops
Live probe Plane: dua asumsi spesifikku tumbang dalam 27 menit
Spesifikasi 905 baris kehilangan dua asumsinya setelah live probe ke Plane CE: marker HTML lenyap disanitasi server, endpoint archive ternyata 404.
TL;DR: Gue udah bikin spek sinkronisasi panjang banget tapi pas di-probe langsung ketahuan dua asumsi ngaco. Komentar HTML buat marker ternyata kesapu sanitizer server jadi hilang, endpoint archive di CE juga zonk 404. Akhirnya marker dipindah ke teks polos dan config, cleanup cukup pindah status Done aja.
#plane#self-hosting#rest-api - 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 - 21.44ai
Plane MCP untuk self-host, tanpa OAuth, cukup header auth
Mode http plane-mcp-server selalu membangun OAuth dan crash tanpa env. Wrapper 16 baris membuka header auth, token tetap divalidasi ke Plane.
TL;DR: Container Plane MCP versi 033 langsung crash karena mode http maksa bikin OAuth app padahal env kosong. Ternyata kode header auth udah ada via get_header_mcp cuma nggak diekspos jadi gue bikin wrapper 16 baris biar validasi token langsung ke Plane. Enak mode stateless tanpa sesi jalan di loopback 8211 cuma butuh header Authorization tiap request.
#plane#mcp#ai - 21.40devops
502 dari Cloudflare Tunnel, ternyata cuma soal nama service
Tunnel bilang 502, semua kontainer hijau. Ternyata DNS jaringan compose cuma kenal nama service, dan alias enam baris langsung beres.
TL;DR: Docker nyala semua tapi URL publik malah 502 terus bikin bingung. Ternyata ingress tunnel nyari host proxy padahal nama service aslinya plane-proxy jadi nggak ketemu DNS. Akhirnya ditambahin alias proxy di compose biar nyambung lagi langsung 200.
#docker#compose#cloudflared - 20.58devops
Self-hosting Plane tanpa satu pun port publik
Cerita deploy Plane 13 service di VPS tunggal: cloudflared sidecar jadi satu-satunya pintu publik, state bind-mount, dan host tanpa port publik.
TL;DR: VPS gue udah sesak container, eh Plane malah maksa buka port 80 dan 443 lewat proxy defaultnya. Gue akalin dengan hapus semua ports, jalanin 13 service internal aja dan public-nya cuma lewat cloudflared tunnel ke proxy bukan port 8000. Enak banget firewall ketutup rapat cuma SSH, nggak usah ngurus certbot dan tetap jalan mulus di lokal.
#self-hosting#plane#docker - 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 - 23.32devops
Kenapa Selftest R97 Gagal Saat Audit Berjalan
Audit meng-hash ulang setelah render jalan, selftest pun gagal. Artefak turunan harus keluar dari digest kanonik dan urutan verifikasi menentukan arti hash.
TL;DR: Selftest R97 gagal gara-gara audit menghitung digest kanonik setelah render, padahal render ngubah isi direktori yang lagi di-hash, jadi hashnya salah bukan karena kontennya. Solusinya, artefak turunan kayak nav.json dan pages.json dikeluarin dari digest; yang dijaga cuma sumber kebenarannya. Fixture selftest yang flake juga diganti mutasi berbasis path, checksum di-freeze ulang biar jejaknya jelas.
#python#testing#ci - 23.29devops
Validator Raib, CI Tetap Hijau
Sync mirror menghapus skrip validasi dan CI tetap hijau. Tiga kelas kegagalan validator plus dua pagar murah berupa anchor wajib dan checksum beku.
TL;DR: Validator bisa hilang diam-diam tapi pipeline tetap hijau, padahal hijau harusnya berarti sehat. Ada tiga kelas kegagalannya: validator hilang, rusak senyap, atau rapuh gara-gara perilaku shell yang beda-beda. Solusinya murah: wajibkan anchor di terjemahan dan freeze checksum selftest, jadi kalau validator nggak cocok pipeline langsung merah.
#git#bash#python