Zoraxy : Reverse Proxy + SSL Let's Encrypt en 10 minutes

Déployez Zoraxy pour exposer tous vos services Docker via HTTPS avec Let's Encrypt en 10 minutes. Interface web intuitive, pas de fichiers de config à éditer.

Zoraxy : Reverse Proxy + SSL Let's Encrypt en 10 minutes

Zoraxy est le reverse proxy moderne et open source que j'utilise pour exposer tous mes services à Internet. En 10 minutes, vous aurez un HTTPS Let's Encrypt automatique pour tous vos services Docker, sans configuration Nginx complexe. Un vrai game changer pour le homelab.

Qu'est-ce qu'un reverse proxy et pourquoi Zoraxy ?

Un reverse proxy est un serveur qui reçoit les requêtes entrantes (port 80/443) et les redirige vers le bon service interne. Au lieu d'exposer chaque service sur un port différent (mon-app:8080, mon-autre-app:3000), vous n'avez qu'une seule entrée HTTPS sécurisée par sous-domaine.

  • Un seul port 443 ouvert — tous les services derrière HTTPS
  • Certificats SSL Let's Encrypt automatiques et gratuits
  • Interface web simple — pas de fichiers de config à éditer
  • Support Cloudflare DNS challenge pour les certificats wildcard
  • Gestion des règles en temps réel sans redémarrage
  • Open source — github.com/tobychui/zoraxy
  • Alternative légère à Nginx Proxy Manager ou Traefik
Tableau de bord Zoraxy
Interface web de Zoraxy avec liste des règles proxy actives

Prérequis

Avant de déployer Zoraxy, assurez-vous d'avoir :

  • Docker et Docker Compose installés (voir article 4)
  • Un nom de domaine avec accès aux DNS (Cloudflare recommandé)
  • Les ports 80 et 443 ouverts dans votre pare-feu/box
  • Au moins un sous-domaine pointant vers votre IP publique
  • IP publique statique ou service DDNS (DuckDNS, Cloudflare)

Déployer Zoraxy avec Docker

Créez un dossier de travail et le fichier docker-compose.yml pour Zoraxy :

mkdir -p ~/docker/zoraxy && cd ~/docker/zoraxy

cat > docker-compose.yml << 'EOF'
version: '3.8'

services:
  zoraxy:
    image: tobychui/zoraxy:latest
    container_name: zoraxy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "8443:8443"    # Interface admin (port générique)
    volumes:
      - ./data:/opt/zoraxy/data
      - /etc/localtime:/etc/localtime:ro
    environment:
      - NOAUTH=false    # Authentification activée
    cap_add:
      - NET_ADMIN
EOF

# Démarrer Zoraxy
docker compose up -d
docker logs -f zoraxy

Attendez quelques secondes que Zoraxy démarre, puis accédez à l'interface admin via : https://votre-ip:8443 (ou le port que vous avez configuré). Lors du premier accès, créez un compte administrateur.

Configuration DNS Cloudflare

Pour que Let's Encrypt puisse émettre des certificats, vos sous-domaines doivent pointer vers votre IP publique. Dans Cloudflare :

# Dans Cloudflare Dashboard > DNS > Records :
# Ajouter un enregistrement A pour chaque sous-domaine :

Type: A
Name: mon-service          # ex: vault, kuma, portainer
Content: votre-IP-publique  # Votre IP publique
Proxy status: Proxied (orange) — ou DNS only (gris) selon votre setup
TTL: Auto

# Si vous utilisez un DDNS :
# Type: CNAME
# Name: *
# Content: votredomaine.duckdns.org (ou votre DDNS)
Création d'une règle proxy dans Zoraxy
Formulaire d'ajout d'une règle de proxy dans Zoraxy

Ajouter une règle proxy

Dans l'interface Zoraxy, naviguez vers 'Proxy Rules' > 'Create Proxy Rule' :

  • Matching Hostname: mon-service.votredomaine.com
  • Target: http://IP-de-votre-VM:8080 (port du service interne)
  • Proxy Type: Subdomain (recommandé pour la plupart des services)
  • Enable : ON
  • Save
# Exemples de règles proxy courantes :
# Service         Hostname                     Target
# Ghost Blog      blog.example.com         ->  localhost:2368
# Vaultwarden     vault.example.com        ->  localhost:8888
# Uptime Kuma     status.example.com       ->  localhost:3000
# Portainer       portainer.example.com    ->  localhost:9000
# Grafana         grafana.example.com      ->  localhost:3001

# Note : utiliser l'IP interne du serveur ou le nom du conteneur Docker
# si Zoraxy est sur le même réseau Docker que les services

Activer HTTPS Let's Encrypt

C'est ici que Zoraxy brille — obtenir un certificat SSL en un clic. Après avoir créé la règle proxy, cliquez sur 'SSL Certificate' pour ce domaine :

  • Certificate Provider : Let's Encrypt
  • Domain : mon-service.votredomaine.com
  • Email : votre-email@example.com (pour les alertes Let's Encrypt)
  • Cliquez sur 'Get Certificate'
  • Zoraxy gère automatiquement le renouvellement
# Vérifier que le certificat est valide :
curl -I https://mon-service.votredomaine.com

# Attendez 30-60 secondes le temps que Let's Encrypt
# valide le challenge HTTP-01 et émette le certificat.

# En cas d'erreur 'too many certificates' :
# Utilisez le mode staging Let's Encrypt pour les tests.
# Ou attendez 7 jours (limite : 50 cert/domaine/semaine)
Certificat SSL Let's Encrypt dans Zoraxy
Certificat Let's Encrypt émis avec succès pour un domaine

Cloudflare comme couche de sécurité supplémentaire

En activant le proxy Cloudflare (icône orange), votre IP réelle est cachée derrière Cloudflare. Cela offre une protection DDoS et une mise en cache automatique. Cependant, pour les challenges Let's Encrypt, vous devrez peut-être utiliser le DNS challenge Cloudflare au lieu du HTTP challenge.

# Si Cloudflare proxy est activé (orange), 
# le challenge HTTP-01 peut échouer.
# Solutions :
# 1. Désactiver temporairement le proxy (gris) pendant l'émission du certificat
# 2. Utiliser le DNS challenge avec l'API Cloudflare

# Configuration DNS challenge dans Zoraxy :
# SSL > Certificate > Provider: Let's Encrypt DNS
# Provider: Cloudflare
# API Token: votre-token-cloudflare-zone-dns-edit
# (Créer dans Cloudflare > My Profile > API Tokens)

Sécurisation de l'interface admin

L'interface admin de Zoraxy ne doit pas être exposée publiquement. Quelques mesures de sécurité recommandées :

  • Ne pas créer de règle proxy pour l'interface admin Zoraxy
  • Accéder uniquement via VPN ou réseau local
  • Changer le port admin par défaut
  • Activer l'authentification forte (mot de passe solide)
  • Restricter l'accès par IP dans Zoraxy si possible

Maintenance et mise à jour

# Mettre à jour Zoraxy
cd ~/docker/zoraxy
docker compose pull
docker compose up -d

# Vérifier les logs
docker logs --tail 50 zoraxy

# Sauvegarder la configuration
tar czf zoraxy-backup-$(date +%Y%m%d).tar.gz ./data/

# Vérifier les certificats SSL (expiration)
# Dans l'interface : SSL > Certificate List

Conclusion et prochaines étapes

Zoraxy est maintenant opérationnel. Tous vos services Docker sont désormais accessibles via HTTPS avec un certificat Let's Encrypt valide. Dans le prochain article, nous déployons Vaultwarden — votre gestionnaire de mots de passe self-hosted sécurisé par ce même reverse proxy.


📥 Guide PDF complet

Téléchargez ce guide en PDF pour le consulter hors ligne.

⬇ Télécharger le guide (PDF)

🚀 Aller plus loin avec BOTUM

Ce guide couvre les bases. En production, chaque environnement a ses spécificités. Les équipes BOTUM accompagnent les organisations dans le déploiement, la configuration avancée et la sécurisation de leur infrastructure. Si vous avez un projet, parlons-en.

Discuter de votre projet →
📋 Série Infrastructure Proxmox : Voir la série complète →
Série Infrastructure Proxmox