cloudflare
Catatan teknis seputar web development, DevOps, dan integrasi AI.
11 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 - 22.30devops
Deploy Staging Dibekukan: Ritual Per-Commit Digantikan Tunnel
Port inbound buat deploy ditutup total: staging KotaPortal kini dilayani lewat tunnel outbound-only, tanpa ritual deploy per-commit.
TL;DR: Deploy staging tiap commit beneran hilang, bukan error—backend KotaPortal sekarang dilayani lewat Cloudflare Tunnel dari VPS, jadi nggak perlu job deploy lagi. Origin cukup punya koneksi outbound ke port 7844, port inbound boleh ditutup total, malah lebih aman. Frontend tetap pakai preview bawaan hosting, backend lewat tunnel, reviewer nggak perlu tahu bedanya.
#cloudflare#cloudflared#deployment - 04.42backend
IP Klien yang Bisa Dipercaya di Balik Proxy
Header X-Forwarded-For bisa diisi sembarang oleh klien. Begini cara memilih alamat yang benar-benar bisa dipercaya di balik Cloudflare dan nginx.
TL;DR: Gara-gara serangan tebak password, endpoint login dikasih rate limiter, tapi awalnya salah baca IP dari entri pertama X-Forwarded-For yang gampang dipalsuin penyerang. Sekarang urutan resolusinya diubah: CF-Connecting-IP dulu, lanjut entri terakhir XFF, X-Real-IP, lalu RemoteAddr. Rate limitnya juga per akun (IP plus email), bales 429 dengan Retry-After, plus ada pembersihan memori biar nggak bocor.
#go#security#nginx - 04.17backend
Stealth Proxy Tidak Bisa Membeli Captcha yang Mengukur Browser
Stealth proxy lolos WAF tapi tewas di gerbang captcha yang mengukur browser.
TL;DR: Stealth proxy cuma ampuh buat WAF biasa, soalnya gerbang captcha gak bisa dibohongin. Cloudflare Turnstile di Jakarta Selatan lolos sendiri pake Chromium asli, sementara reCAPTCHA v2 dijakpus kena pake Firefox anti-detect, tinggal tekan Tab-Spasi doang. Detail perkara butuh sesi aktif, makanya strategi scraping dirombak jadi tiga tingkat biar hasilnya lebih stabil.
#scraping#captcha#browser-automation - 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 - 20.29devops
Pindah Deploy ke Vercel: Kuncinya di Luar Kode
Diff-nya cuma dokumentasi, tapi migrasi deploy Cloudflare Workers ke Vercel tetap terjadi. Kabelnya ada di dashboard Vercel dan settings GitHub, bukan di dalam repo.
TL;DR: Gara-gara satu baris di CLAUDE.md, penulis sadar migrasi dari Cloudflare Workers ke Vercel nggak ninggalin jejak di repo, karena settingnya ada di dashboard, bukan Git. Production branch di Vercel dipilih pas impor dan bisa diatur lewat Branch Tracking, jadi default branch GitHub beda hal. Alur Git tetap sama, tapi env vars mesti didaftarkan ulang dan rollback modelnya tunjuk deployment.
#vercel#cloudflare#git - 18.43devops
Kasih Nama Buat Forgejo Loopback Lewat hosts dan ROOT_URL
Domain lokal via /etc/hosts plus DOMAIN dan ROOT_URL di Forgejo, dan cap upload 100 MB Cloudflare yang membuat jalur SSH lebih masuk akal.
#forgejo#dns#cloudflare - 10.31devops
Situs Dibilang Kena DDoS, Log Nginx Bilang Lain
Laporan DDoS berakhir di log: 80 persen request 504 persis tiap jam, limit_req tak pernah terpicu, pelakunya PHP-FPM kehabisan worker.
TL;DR: Laporan dugaan DDoS ternyata gelombang 504 periodik tiap jam akibat antrean PHP-FPM yang macet, bukan serangan. Rate limit tak pernah terpicu karena $binary_remote_addr menangkap IP Cloudflare, bukan IP asli pengunjung. Solusinya: aktifkan cache Cloudflare, sesuaikan pool PHP-FPM, dan atur logrotate untuk log dalam container.
#nginx#docker#cloudflare