CrowdSec, Nginx Proxy Manager, dan Caddy: Edge Stack Self-Hosted
Berita & panduan stack tepi modern: Security Engine CrowdSec di Console, reverse proxy NPM vs Caddy, dan cara merangkainya di VPS/homelab.
Kenapa tiga tool ini sering muncul bareng?
Di dunia self-hosted dan VPS, pola berulang:
- Banyak service di Docker (app, panel, API)
- Butuh satu pintu HTTPS ke internet
- Butuh proteksi dari scan, brute force, dan serangan web
Tiga nama yang sering diangkat:
| Tool | Peran |
|---|---|
| Nginx Proxy Manager | Reverse proxy + SSL via UI |
| Caddy | Reverse proxy / server dengan HTTPS default |
| CrowdSec Security Engine | IDS/IPS + WAF kolaboratif |
CrowdSec Security Engines
Dashboard Security Engines di app.crowdsec.net/security-engines adalah pintu masuk Console CrowdSec: daftar engine yang Anda pasang, status, dan tautan ke CTI komunitas.
Security Engine membaca log (dan opsional HTTP via AppSec) untuk mendeteksi perilaku jahat, lalu bouncer mengeksekusi remediasi (ban di Nginx, firewall, Cloudflare, dll.).
Request → Reverse Proxy (+ bouncer)
↓ logs / AppSec
CrowdSec Engine → decision
↓
Console / Community blocklist
Dua lapisan deteksi:
- Log-based — reaktif setelah pola terlihat (SSH brute force, 404 flood, …)
- WAF/AppSec — blokir request berbahaya sebelum ke aplikasi
Baca lebih dalam: Knowledge — CrowdSec.
Nginx Proxy Manager: reverse proxy “klik saja”
NPM membungkus Nginx dalam Docker + admin UI:
- Proxy host per domain
- Let’s Encrypt dari UI
- Access list / basic auth
- Cocok homelab & multi-service tanpa menulis
server {}dari nol
# cuplikan minimal
services:
app:
image: jc21/nginx-proxy-manager:latest
ports: ["80:80", "81:81", "443:443"]
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Admin biasanya di port 81 — jangan biarkan terbuka ke publik tanpa proteksi.
Docs KB: Nginx Proxy Manager.
Caddy: HTTPS by default
Caddy membalik asumsi lama: TLS itu default, bukan add-on. Satu Caddyfile sering cukup:
app.example.com {
reverse_proxy 127.0.0.1:3000
}
Sertifikat diminta & di-renew lewat CertMagic. Cocok jika Anda suka config as code / GitOps, bukan UI.
Docs KB: Caddy.
NPM vs Caddy — pilih yang mana?
| Situasi | Rekomendasi |
|---|---|
| Banyak service, tim non-ops, UI penting | Nginx Proxy Manager |
| Config di Git, HTTPS otomatis, API dinamis | Caddy |
| Sudah ahli Nginx + butuh kontrol penuh | Nginx manual / OpenResty |
| Butuh WAF/IDS di depan keduanya | + CrowdSec |
Keduanya valid sebagai reverse proxy; bedanya UX operasional.
Stack referensi (VPS kecil)
Internet
│
▼
Caddy ATAU Nginx Proxy Manager
│ (+ CrowdSec bouncer)
├── laravel.example.com → app:9000
├── static.example.com → dist/
└── n8n.example.com → n8n:5678
│
CrowdSec Security Engine ← journal/nginx logs
│
▼
app.crowdsec.net (Console / engines)
Langkah adopsi berurutan:
- Pasang reverse proxy (NPM atau Caddy), SSL hijau
- Isolasi admin UI / API
- Install CrowdSec engine + collection nginx/ssh
- Pasang bouncer, daftarkan engine di Console
- Uji false positive (allowlist IP kantor/VPN)
Berita / arah teknologi
- CrowdSec terus memperkuat posisi Security Engine + WAF, dengan Console untuk fleet engine — relevan untuk operator multi-server.
- NPM tetap andalan self-host reverse proxy UI di komunitas Docker.
- Caddy menguatkan narasi “every site on HTTPS” lewat CertMagic dan config modern.
- EnvKit muncul sebagai local stack desktop (Windows & macOS): nginx/Apache, multi-PHP, DB, Node, Mailpit, trusted
.testHTTPS, dan MCP untuk AI — jembatan nyaman dari laptop ke stack edge di atas.
Penutup
Edge stack modern bukan hanya “buka port 443”. Itu kombinasi terminasi TLS yang mudah (NPM/Caddy) dan deteksi + remediasi (CrowdSec). Mulai dari reverse proxy yang Anda kuasai, lalu tambahkan Security Engine sebelum traffic jahat jadi tiket insiden.