Llevaba tiempo dándole vueltas. Tengo el homelab detrás de Zoraxy desde hace meses y funciona bien para lo que es, pero echaba en falta un WAF de verdad y reglas tipo target group para repartir tráfico entre varios upstreams con health checks decentes. Probé alternativas:
- Nginx Proxy Manager: demasiado básico. Bien para empezar, se queda corto rápido.
- Zoraxy: lo que uso ahora. Buen reverse proxy pero sin WAF.
- BunkerWeb: muy potente pero la curva de configuración no me convencía.
- SafeLine: WAF muy bueno pero quería el proxy y la seguridad en el mismo panel, no dos productos separados.
Al final me he puesto a montarme el mío. Se llama argos-edge y lleva ya varios meses estable en producción en mi propia infra antes de publicarlo.
Qué es
Un edge gateway self-hosted en un solo panel: reverse proxy + WAF + load balancing + Lets Encrypt + SSO. Tres contenedores, una bridge de Docker, un volumen persistente por servicio. El panel es un binario Go con la SPA de React embebida y SQLite como único datastore. Sin Redis, sin Postgres, sin nada externo.

Lo que hace
- Reverse proxy sobre Caddy 2 con Lets Encrypt automático y HTTP/3. Añades un host desde el panel y el certificado se provisiona en la siguiente petición. DNS-01 con varios proveedores y credenciales cifradas.
- Target groups estilo AWS ALB: un host público puede balancear entre varios upstreams con health checks activos y pasivos.
- WAF inline con Coraza + OWASP CRS vía el componente AppSec de CrowdSec. Switchable entre detect / block / disabled por host en runtime, sin reiniciar nada. Exclusiones de reglas CRS y SecRule custom por host.
- Threat intel comunitaria de CrowdSec con bans por país (expandidos en el panel a decisiones de tipo Range porque el bouncer no se come Country directamente; submit async + poll para expansiones grandes como BR con ~5000 rangos).
- Drift detection: el panel comprueba que el estado real de CrowdSec coincide con lo que el panel cree que está configurado. Si no, banner en el dashboard.
- SSO por host: OIDC (Authentik, Authelia, Keycloak, Google, Okta) más ForwardAuth para meter cualquier HTTP service detrás del mismo cookie de sesión.
- 2FA local con TOTP RFC 6238 y códigos de recuperación. Subcomandos CLI break-glass por si pierdes teléfono y códigos a la vez.
- Notificaciones: Slack, email/SMTP, Telegram, webhook genérico, Web Push del navegador. Reglas por evento, rate limiting e historial de entrega.
- Cert uploads manuales para hosts en redes cerradas donde ACME no llega.
- Backup y restore vía snapshots
VACUUM INTO. Programado, manual y restore desde upload. - Logs browser sobre Caddy access + WAF audit + panel audit, con retención.
Stack
- Caddy 2 para el proxy (TLS, Lets Encrypt, HTTP/3).
- Coraza + OWASP CRS para el WAF.
- CrowdSec para threat intel y el componente AppSec inline.
- Backend Go en un único binario con la SPA de React embebida. SQLite como storage. Background goroutines para reconciler, drift detector, job runner, worker de notificaciones, ingestor de logs y scheduler de backups.
Probarlo
git clone https://github.com/cmos486/argos-edge.git
cd argos-edge
cp .env.example .env
# editar .env: ARGOS_SESSION_SECRET, ARGOS_MASTER_KEY,
# ARGOS_INITIAL_ADMIN_PASSWORD
docker compose up -d
Abre http://<ip-del-host>:8080 y entra con las credenciales que pusiste en el .env.
Hay dos modos de operación que se eligen con ARGOS_PANEL_MODE:
lan (default) |
behind_caddy |
|
|---|---|---|
| Cómo accedes al panel | http://<ip-lan>:8080 |
https://$ARGOS_PANEL_DOMAIN/ |
:8080 publicado en host |
sí | no (solo interno) |
Cookie Secure |
off | on |
| HSTS / CSP estricto | off | on |
| Browser Push | bloqueado (sin HTTPS) | funciona |
Cambiar de uno a otro es un cambio en .env y un restart.
Estado y licencia
Estable y en desarrollo activo. Es solo-maintained y de grado homelab. Hace lo que hace bien pero no pretende ser un load balancer hyperscaler ni un ingress de Kubernetes.
Licencia Business Source License 1.1:
- Libre para: uso personal, no comercial, uso interno empresarial, contribuciones community, deployments self-hosted.
- No permitido: ofrecer argos-edge como servicio comercial de reverse proxy / WAF / application gateway a terceros.
- Pasa a Apache 2.0 el 2030-04-20.
Enlaces
- Repo: github.com/cmos486/argos-edge
- Docs: cmos486.github.io/argos-edge
- Releases: github.com/cmos486/argos-edge/releases
Si lo pruebas y le encuentras algo raro, abre un issue. Y si te gusta, una estrella en el repo siempre se agradece.