Description
Zoraxy est un reverse proxy nouvelle génération conçu pour aller plus loin que les traditionnels Caddy/Traefik/NPM. Il intègre dans une seule interface web :
- 🌐 Reverse proxy classique (HTTP, HTTPS, WebSocket, gRPC)
- ⚖️ Load balancing (round-robin, least-conn, IP-hash)
- 🔒 ACME automatique via Let's Encrypt
- 🔥 Firewall basique (blacklist, geoblocking)
- 📊 Monitoring réseau (bande passante, connexions actives, top IPs)
- 🛡️ DDoS mitigation (rate limiting, challenge HTTP)
- 🔀 TCP/UDP tunneling (sorte de [[app-cloudflared]] local)
- 📁 Static file server pour servir du contenu statique
- 🪪 Hot reload sans coupure
Public cible : utilisateurs qui veulent une seule app pour gérer leur homelab sans empiler 5 briques (Caddy + NPM + Uptime Kuma + CrowdSec + WireGuard UI). Zoraxy vise la simplicité unifiée.
Différenciation : face à [[app-caddy]] (très bon mais config statique), [[app-traefik]] (Docker-first, complexe) ou [[app-nginx-proxy-manager]] (UI web mais features limitées), Zoraxy propose une approche dashboard-centric : presque tout se configure via l'UI web, pas de YAML à taper.
Installation
Docker Compose (recommandé)
# docker-compose.yml
services:
zoraxy:
image: haydenzhou/zoraxy:latest
container_name: zoraxy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "8000:8000" # UI admin (à restreindre via firewall)
volumes:
- ./zoraxy:/opt/zoraxy/data
- /var/run/docker.sock:/var/run/docker.sock:ro # pour la découverte auto
environment:
- ZORAYX_RUN_IN_CONTAINER=true
networks:
- proxy
networks:
proxy:
external: true
Binaire standalone (ARM/x86)
wget https://github.com/tobychui/zoraxy/releases/latest/download/zoraxy_linux_amd64 chmod +x zoraxy_linux_amd64 sudo mv zoraxy_linux_amd64 /usr/local/bin/zoraxy zoraxy # démarre avec UI sur :8000
Variante Traefik (frontal, Zoraxy en backend)
Zoraxy peut être utilisé derrière Traefik pour profiter de fonctionnalités réseau additionnelles :
services:
traefik:
image: traefik:v3
# ... config standard ...
zoraxy:
image: haydenzhou/zoraxy:latest
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.zoraxy.rule=Host(`proxy.example.com`)"
- "traefik.http.routers.zoraxy.tls.certresolver=letsencrypt"
Configuration
- Premier accès :
http://IP_DU_SERVEUR:8000(changer le port 8000 en prod) - Compte admin : créer à la première connexion (stocké dans
/opt/zoraxy/data) - Ajouter un proxy : UI → Proxy → New → hostname + backend
- Activer ACME : Settings → ACME → pointer vers email + DNS challenge
- Activer le monitoring : Network Monitor → activer le tracking temps réel
- Activer le firewall : Security → import de listes d'IPs (Spamhaus, etc.)
Alternatives
Open Source
| Alternative | Différence | Étoiles |
|---|---|---|
| [[app-caddy]] | Plus mature, config statique (Caddyfile) | 73k |
| [[app-traefik]] | Docker-first, providers dynamiques | 64k |
| [[app-nginx-proxy-manager]] | UI web similaire, scope plus restreint | 33k |
| [[app-pangolin]] | Tunneled (Cloudflare-like), avec auth intégrée | 21k |
| [[app-haproxy]] | Load balancer enterprise, config plus austère | 6k |
Propriétaires
| Service | Modèle | Différence |
|---|---|---|
| Cloudflare Tunnel | SaaS (gratuit partiel) | Zoraxy en local vs Cloudflare-managed |
| F5 NGINX Plus | Payant (enterprise) | NGINX + UI, pas d'ACME natif |
| Traefik Enterprise | Payant | Version enterprise de Traefik, dashboard similaire |
Sécurité
- ✅ ACME auto avec Let's Encrypt
- ✅ Rate limiting par IP et par subnet
- ✅ Geoblocking (pays en whitelist/blacklist)
- ✅ Blacklist importable (Spamhaus DROP/EDROP, abuse.ch)
- ⚠️ AGPL-3.0 : si modifications, code source doit être publié
- ⚠️ Port admin exposé : à restreindre via firewall ou VPN (Tailscale, WireGuard)
- ⚠️ Docker socket : si monté, vulnérabilité d'escalation — monter
:roau minimum - ⚠️ Pas d'auth 2FA native : protéger l'UI via [[app-tinyauth]] ou restriction réseau
