Cette idée m'a été suggérée par dextou. Merci à toi! 😜
Si vous vous demandez comment ajouter une couche de sécurité à votre serveur maison (et à votre serveur tout court), comment bénéficier d'un certificat SSL certifié et signé et relier vos applications préférées à votre domaine sans trop de peine, cet article pourrait vous intéresser.
Aujourd'hui nous allons parler de Zoraxy! À l’instar de Nginx Proxy Manager, Zoraxy fait un peu le même travail. C'est également un reverse proxy, peut-être pas encore aussi complet que Nginx Proxy Manager ou encore Cosmos Cloud, mais il va vous permettre, entre autre, de créer des certificats SSL certifiés et de lier vos applications à votre domaine. Il permet en outre le renouvellement du certificat de manière automatique. Soit vous utilisez Let's Encrypt ou vous pouvez également importer vos certificats.
Mais ce n'est pas tout, il inclut la possibilité de faire des redirections, un serveur web statique et des statistiques de votre serveur sous tous ses aspects. Retrouvez toutes les possibilités au point suivant.
⚡ Caractéristiques
- Interface simple à utiliser avec des instructions détaillées dans le système.
- Proxy inversé (HTTP/2): Proxy WebSocket (automatique, pas de configuration nécessaire), auth de base, alias de noms d'hôtes, en-têtes personnalisés.
- Règles de redirection.
- Installation et déploiement de TLS / SSL: Fonctionnalités ACME telles que le renouvellement automatique pour servir vos sites en https, prise en charge SNI (et certificats SAN), défi DNS pour Let's Encrypt et ces fournisseurs DNS.
- Liste noire / liste blanche par pays ou par adresse IP (IP unique, CIDR ou joker pour les débutants).
- Interface Web du contrôleur de réseau global (ZeroTier non inclus)
- Proxy de flux (TCP & UDP).
- Moniteur de temps de fonctionnement intégré.
- Terminal Web-SSH.
- Utilitaires: Convertisseurs IP CIDR, scanner mDNS, wake-On-Lan, debug forward, proxy, scanner IP.
- Autres: Mode de gestion de base à administrateur unique, système externe de gestion des autorisations pour faciliter l'intégration du système, configuration SMTP pour la réinitialisation du mot de passe.
⚙️ Prérequis
Dans le cadre d'un hébergement du serveur à la maison, il est impératif que vous fassiez une redirection (port forwarding) des ports 80 & 443 vers l'IP de votre serveur, dans votre routeur.
Il est également nécessaire que vous ajoutiez une entré de type A chez votre fournisseur de nom de domaine. Cette entrée doit pointer vers votre l'IP externe.
Faites ces deux actions avant de continuer le tutoriel.
💾 L'installation
- Créez votre compose.yml dans le dossier ou vous comptez installer Zoraxy:
nano compose.yml
- Et collez ça dedans:
services:
zoraxy:
image: zoraxydocker/zoraxy:latest
container_name: zoraxy
restart: unless-stopped
ports:
- 80:80
- 443:443
- 8000:8000
volumes:
- ./config/:/opt/zoraxy/config/
- ./config/:/var/lib/zerotier-one/
- /var/run/docker.sock:/var/run/docker.sock
- /etc/localtime:/etc/localtime
environment:
FASTGEOIP: "true"
ZEROTIER: "true"
- On va déployer l'application:
docker compose up -d
- Rendez-vous sur l'ip, suivant l'IP de votre serveur, :
http://ip
Si tout fonctionne bien, vous arriverez sur cette page:
👤 Création du compte administrateur
Maintenant, rendez-vous sur l'ip:port suivant:
http://ip:8000
Vous devriez voir cette page:
Veillez à compléter les informations suivantes pour créer votre compte administrateur:
- Username => Indiquez une nom de compte administrateur.
- Password => Indiquez un mot de passe fort pour le compte administrateur.
- Confirm Password => Confirmez le mot de passe de votre compte administrateur.
Cliquez sur Confirm pour valider votre compte. Vous allez être redirigé vers la page d'authentification de Zoraxy:
Entrez vos identifiants choisis à l'étape précédente et cliquez sur Login. Vous voici sur votre tableau de bord Zoraky:
🌐 Ajoutez votre domaine
Rendez-vous sur Create Proxy Rules, dans le menu de gauche:
Vous arriverez ici:
New Proxy Rule
Veillez à compléter:
- Matching Keyword / Domain => Indiquez votre domaine ou votre sous-domaine sans hhtp(s):// et si vous souhaitez la wildcard, séparez votre domaine avec une virgule suivi de *mondomaine.com ou votre sous-domaine.
- Target IP Address or Domain Name with port => Indiquez l'ip de votre serveur + le port. Dans mon cas 188.245.154:8000.
Advance Settings
Cochez:
- Ignore TLS/SSL Verification Error
- Skip WebSocket Origin Check
Terminez en cliquant sur:
Dans la partie HTTP Proxy vous devriez voir votre domaine comme ceci:
🔒 Créez un certificat SSL signé
Cliquez sur TLS / SSL certificates dans le menu de gauche:
Dans la partie Certificate Authority (CA) and Auto Renew (ACME):
Choisissez Let's Encrypt dans Preferred CA et dans ACME Email, ajoutez votre adresse e-mail. Cliquez sur Save Settings pour terminer.
Cliquez maintenant sur:
Une menu va s'ouvrir:
- Cochez Enable Certificate Auto Renew.
- Dans Domain(s), entre votre ou vos domaines.
Cliquez sur Get Certificate et patientez un peu:
Quand c'est fini, allez sur:
Dans la partie Global Settings, entrez le port 443 et cliquez sur Apply:
Ensuite cochez ces 3 options:
Pour terminer, cliquez sur Start Service:
Très bien, tout est bon:
Maintenant, rendez-vous sur votre domaine, vous devriez avoir votre certificat SSL signé:
🐳 Relier un container Docker à votre domaine
Nous arrivons maintenant à la partie la plus intéressante!
C'est ici qu'il va falloir ajouter deux informations importantes:
- Matching Keyword / Domain => Indiquez le domaine souhaité pour votre application. Dans mon exemple je voudrais lier Homarr au sous domaine homarr.tutobelginux.ovh. Il est important que vous ayez ajouté chez votre fournisseur de nom de domaine une entrée de type A ou CNAME avant de continuer.
- Target IP Address or Domaine Name wit port => Indiquez l'ip:port, l'IP publique suivie du port de l'application, 7575 par défaut pour Homarr.
Quand c'est fait, cliquez sur + Create Endpoint. Quand vous aurez cliqué, en bas à droite une petite fenêtre va apparaître en vous proposant d'ajouter un certificat SSL, cliquez sur le ✅ pour accepter:
Après quelques instants, dans la partie HTTP Proxy vous pourrez voir que votre sous domaine est bien créé avec son certificat SSL:
C'est aussi simple que cela.
🛡️ Sécurité
Authentification
Il est possible d'ajouter une authentification lorsque vous voulez joindre une application. Autrement dit, vous aurez une petite fenêtre où il faudra entrer un login et un mot de passe afin d'accéder à votre application.
Rendez-vous sur:
Cliquez sur le crayon en bout de ligne de l'application à protéger:
Cochez Require Basic Auth et cliquez ensuite sur Edit Crendentials:
Une fenêtre va vous permettre d'entrer un login et un password, indiquez ce que vous voulez et cliquez sur + Add Credential pour terminer:
Cliquez sur la petite disquette pour enregistrer:
Vous pouvez constater que Basic Auth est bien activé et quand vous cliquez sur le sous-domaine pour lancer Homarr...
Vous aurez une fenêtre d'authentification:
Géoblocking
Il est possible de bloquer certains pays également. Cliquez sur:
Vous aurez trois options pour le géoblocking:
- Soit vous bloquez certains pays et les autres pays peuvent avoir accès à votre site.
- Soit vous autorisez certains pays et de ce fait, les autres seront interdits.
- Vous utilisez les deux en même temps, Blacklist et Whitelist, mais sachez dans ce cas que la Whitelist a une priorité inférieure à la Blacklist.
Je vais favoriser la seconde option, imaginons que je ne veuille autoriser que la Belgique et la France. Je vais me rendre dans Whitelist:
Cochez Enable Whitelist et sélectionnez les pays souhaitées avec le menu déroulant, à chaque fois, cliquez bien sur le pays à ajouter. Quand c'est terminé, cliquez sur:
Voici le résultat:
📊 Statistiques
Si vous voulez consulter tout un tas de statistiques, cliquez dans le menu gauche sur:
Baladez-vous un petit peu et explorez les possibilités: