💡 TL;DR
- Zoraxy est un reverse proxy HTTP/HTTPS écrit en Go, beaucoup plus simple à prendre en main que Traefik
- Il s’installe en 5 minutes avec Docker Compose et se configure via une interface web claire
- Parfait pour un homelab où tu veux un reverse proxy simple sans la complexité
- Gestion automatique des certificats Let’s Encrypt, load balancing basique et zéro dépendance
Table des matières
Table des matières
- Pourquoi chercher une alternative à Traefik ?
- Qu’est-ce que Zoraxy exactement ?
- Prérequis
- Installation de Zoraxy Docker avec Docker Compose
- Configuration de base
- Exemple concret : proxifier Plex, Home Assistant et Vaultwarden
- Load balancing et failover
- Mise à jour de Zoraxy
- Zoraxy vs Traefik vs Caddy : le match
- Sécuriser l’interface d’administration
- Dépannage rapide
- Conclusion
Pourquoi chercher une alternative à Traefik ?
Traefik est excellent. Je l’utilise depuis des années sur plusieurs infrastructures et je ne cracherai pas dessus. Mais avouons-le : sa courbe d’apprentissage est raide. Entre les providers, les middlewares, les labels Docker, les CRDs Kubernetes et la doc qui change à chaque version majeure, on passe parfois plus de temps à configurer le reverse proxy qu’à déployer l’application derrière.
Dans un homelab, la complexité doit rester proportionnelle au besoin. Tu n’as pas besoin d’un Airbus A380 pour aller chercher ton pain. C’est là qu’intervient Zoraxy : un reverse proxy HTTP/HTTPS écrit en Go par Toby Chui (tobychui sur GitHub), conçu pour être léger, rapide et simple. Une installation zoraxy docker se résume à un fichier Compose et quelques clics dans une interface web.
Zoraxy ne révolutionne pas le genre. Il fait ce qu’on attend d’un reverse proxy (router du HTTP/HTTPS vers des services internes) sans inventer quarante-deux concepts abstraits. Une interface web, un fichier de conf JSON, et c’est parti.
Si tu cherches un comparatif avec un autre reverse proxy Docker déjà déployé, jette un œil à mon guide Traefik Docker.
Qu’est-ce que Zoraxy exactement ?
Zoraxy est un reverse proxy et un outil de gestion de réseau écrit en Go. Son créateur l’a pensé comme un remplaçant léger de Nginx Proxy Manager et de Traefik, avec une emphase sur la simplicité d’utilisation. Pour ceux qui cherchent une solution zoraxy docker rapide à mettre en place, il frappe directement dans le mille.
Ce qu’il fait bien :
- Reverse proxy HTTP/HTTPS avec gestion des virtual hosts
- Certificats SSL/TLS auto-signés, importés ou Let’s Encrypt natif
- Load balancing basique avec failover
- Redirection HTTP vers HTTPS automatique
- Rate limiting intégré
- Authentification basique HTTP native
- WebSocket supporté nativement
- Interface d’administration web moderne
Ce qu’il ne fait pas (encore) :
- Pas de découverte de services Docker automatique (pas de labels magiques)
- Pas d’intégration Kubernetes native
- Pas de middlewares aussi riches que ceux de Traefik
Pour un homelab classique, une dizaine de conteneurs sur un seul nœud, ces limitations sont largement acceptables. Si tu as une architecture micro-services multi-nœuds avec Consul et Vault, reste sur Traefik ou Caddy.
Prérequis
Avant de déployer Zoraxy, assure-toi d’avoir :
- Docker et Docker Compose installés (ou
docker composeen plugin V2) - Un domaine pointant vers ton serveur (obligatoire pour Let’s Encrypt)
- Les ports 80 et 443 ouverts et redirigés vers ton hôte Docker
- Un sous-réseau Docker dédié (optionnel mais propre)
Si tu n’as pas encore de domaine configuré pour ton homelab, tu peux utiliser des certificats auto-signés pour tester, mais ton navigateur hurlera à chaque connexion. Pour un setup propre, un vrai domaine avec des vrais certificats vaut largement le coup.
Installation de Zoraxy Docker avec Docker Compose
L’image officielle zoraxydocker/zoraxy est publiée sur Docker Hub et maintenue par le projet. Voici un docker-compose.yml minimal et fonctionnel pour déployer zoraxy docker sur ton serveur :
services:
zoraxy:
image: zoraxydocker/zoraxy:latest
container_name: zoraxy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "8000:8000"
volumes:
- ./zoraxy-config:/opt/zoraxy/config/
- ./zoraxy-plugins:/opt/zoraxy/plugin/
- /var/run/docker.sock:/var/run/docker.sock:ro
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
PORT: "8000"
FASTGEOIP: "true"
TZ: "Europe/Paris"
networks:
- proxy
networks:
proxy:
driver: bridge
Points importants :
- Le port
8000est l’interface d’administration web. Ne l’expose jamais sur Internet sans protection (VPN, IP whitelist ou authentification forte) - Le volume
zoraxy-configconserve toute la configuration : règles de proxy, certificats SSL, base de données interne - L’entrée
extra_hostste laisse proxifier des services qui tournent directement sur l’hôte viahost.docker.internal - Le montage du socket Docker en read-only sert à Zoraxy pour lister tes conteneurs si tu actives la découverte limitée
Démarre le conteneur :
cd /chemin/vers/zoraxy
docker compose up -d
Attends 10-15 secondes que le service initialise, puis connecte-toi à http://<ip-du-serveur>:8000. Au premier lancement, Zoraxy te demande de créer ton compte administrateur directement dans l’interface web. Choisis un mot de passe solide, on en reparle plus bas.
Configuration de base
L’interface web de Zoraxy est immédiate. Pas de JSON à éditer à la main (même si c’est possible), pas de reload à envoyer en ligne de commande. C’est précisément ce qui fait la force d’un setup zoraxy docker : tout se fait via l’UI.
1. Créer ton premier proxy rule
Dans le menu Proxy Rules, clique sur Add Rule :
- Root Domain :
subdomain.tondomaine.com - Target URL :
http://<ip-conteneur>:<port>ouhttp://nom-conteneur:portsi sur le même réseau Docker - Protocol : HTTP (Zoraxy gère la terminaison SSL en amont)
- Enable HTTPS : coche si tu veux forcer HTTPS avec redirection automatique
2. Gérer les certificats SSL
Va dans Certificates. Tu as trois options :
Auto-signed : Zoraxy génère un certificat auto-signé en un clic. Utile pour du lab interne, inutilisable en production.
ACME / Let’s Encrypt : Renseigne ton email, choisis le challenge HTTP-01 (le plus simple quand le port 80 est accessible) et clique Obtain. Le renouvellement est automatique.
Upload : Importe ton propre certificat + clé privée au format PEM.
3. Activer la redirection HTTP vers HTTPS
Dans Global Settings, active l’option Force HTTPS. Désormais, toute requête HTTP sera redirigée vers HTTPS automatiquement. C’est une option basique mais essentielle qu’on oublie trop souvent.
Exemple concret : proxifier Plex, Home Assistant et Vaultwarden
Prenons un scénario réel. Tu as trois services dans ton homelab et tu veux leur attribuer des sous-domaines propres :
# docker-compose.yml des services
services:
plex:
image: linuxserver/plex:latest
container_name: plex
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
volumes:
- ./plex-config:/config
- /mnt/media:/media
networks:
- proxy
homeassistant:
image: ghcr.io/home-assistant/home-assistant:stable
container_name: homeassistant
restart: unless-stopped
volumes:
- ./ha-config:/config
networks:
- proxy
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
volumes:
- ./vw-data:/data
networks:
- proxy
networks:
proxy:
external: true
Dans Zoraxy, tu crées trois règles :
| Root Domain | Target URL |
|---|---|
plex.tondomaine.com | http://plex:32400 |
ha.tondomaine.com | http://homeassistant:8123 |
pass.tondomaine.com | http://vaultwarden:80 |
Tu demandes un certificat Let’s Encrypt pour *.tondomaine.com (wildcard avec challenge DNS si ton registrar est supporté) ou trois certificats distincts. Zoraxy les déploie, les associe aux règles, et tu peux oublier la partie réseau.
Si tu cherches une solution de gestionnaire de mots de passe auto-hébergée, j’ai aussi un guide complet Vaultwarden Docker qui détaille la sécurisation du conteneur.
Load balancing et failover
Avec Zoraxy, tu définis plusieurs backends pour une même règle. C’est rudimentaire, pas d’algorithmes avancés comme least-connection, mais pour un homelab, un simple round-robin ou un failover actif/passif suffit.
Dans l’interface, édite une règle existante et ajoute des Upstream Servers :
Primary: http://app-1:8080
Secondary: http://app-2:8080
Failover: http://app-backup:8080
Si le primaire ne répond plus, Zoraxy bascule automatiquement sur le secondaire. Pas besoin de Keepalived, de HAProxy ni d’une usine à gaz. Ça fait le job sans prétention.
Mise à jour de Zoraxy
Comme pour tout conteneur Docker, la mise à jour se résume à deux lignes :
cd /chemin/vers/zoraxy
docker compose pull
docker compose up -d
Zoraxy conserve sa configuration dans le volume monté, donc le redémarrage est transparent. Avant chaque mise à jour, je te recommande de sauvegarder le dossier zoraxy-data :
tar czvf zoraxy-backup-$(date +%F).tar.gz zoraxy-data/
Zoraxy vs Traefik vs Caddy : le match
| Critère | Zoraxy | Traefik | Caddy |
|---|---|---|---|
| Courbe d’apprentissage | Très douce | Raide | Douce |
| Découverte auto Docker | Limitée | Excellente | Via module |
| Let’s Encrypt natif | Oui | Oui | Oui (intégré) |
| Fichier de conf | JSON + UI | YAML/Labels | Caddyfile |
| WebSocket | Natif | Natif | Natif |
| Middlewares | Basiques | Très riches | Corrects |
| Load balancing | Simple | Avancé | Simple |
| Empreinte mémoire | ~20 Mo | ~50-80 Mo | ~30 Mo |
Mon avis : si tu débutes dans l’auto-hébergement et que tu veux juste pointer des sous-domaines vers des conteneurs sans lire 200 pages de doc, Zoraxy est un excellent choix. Une stack zoraxy docker est plus légère que Caddy et infiniment plus accessible que Traefik pour un usage domestique.
Traefik reste le roi des environnements Cloud Native complexes. Caddy est le champion de la configuration déclarative élégante. Zoraxy occupe une niche simple : le reverse proxy qui se configure en cliquant.
Sécuriser l’interface d’administration
C’est le point le plus critique. Le port 8000 est la clef de ton royaume. Si quelqu’un y accède, il peut rediriger n’importe quel domaine vers n’importe quoi.
Mes recommandations :
- Ne jamais exposer 8000 sur Internet. Utilise un VPN comme WireGuard ou un tunnel SSH pour y accéder
- Choisir un mot de passe administrateur solide dès la création du compte (évidence, mais on sait jamais)
- Limiter l’accès par IP si tu es en réseau local fixe
- Activer l’authentification basique sur l’interface si Zoraxy le propose dans ta version
Dans un contexte professionnel, Zoraxy n’est probablement pas assez durci. Pour un homelab derrière une box domestique avec un accès VPN, le risque reste maîtrisé si tu suis ces règles.
Dépannage rapide
Zoraxy ne démarre pas
Vérifie que les ports 80, 443 et 8000 ne sont pas déjà occupés par un autre service (Apache, Nginx, Traefik…). Utilise ss -tlnp | grep -E '(:80|:443|:8000)' pour identifier le coupable.
Certificat Let’s Encrypt en échec
Le challenge HTTP-01 nécessite que le port 80 soit accessible depuis Internet et que le domaine resolve bien vers ton IP. Vérifie aussi que Cloudflare n’est pas en mode proxy strict (qui masque l’IP originale) sans configuration DNS spécifique.
502 Bad Gateway
Le backend est injoignable. Vérifie que le conteneur cible est bien sur le même réseau Docker proxy et que son port interne est correct. Zoraxy n’est pas en mode host par défaut : il résout les noms via le DNS interne Docker.
Erreur “permission denied” sur le socket Docker
Assure-toi que le montage du socket est bien en :ro (read-only) et que l’utilisateur à l’intérieur du conteneur a les droits suffisants. En dernier recours, monte-le sans :ro, même si c’est moins propre.
Conclusion
Zoraxy n’est pas l’outil le plus hype de l’écosystème homelab. Il ne figure pas dans toutes les vidéos YouTube ni dans tous les repo GitHub étoilés. Pourtant, il résout un vrai problème : celui de la complexité excessive des reverse proxies modernes pour des besoins simples.
En quelques minutes, tu peux router du HTTPS propre vers tes conteneurs, gérer des certificats Let’s Encrypt et loadbalancer deux instances sans écrire une seule ligne de YAML abstruse. Pour un homelab personnel ou une petite infrastructure où la simplicité prime, Zoraxy est une alternative légitime à Traefik et à Nginx Proxy Manager.
Adopte Zoraxy si tu veux un reverse proxy qui se configure comme un routeur domestique : des cases à cocher, des champs à remplir, et ça marche.