Installation de Pangolin pour remplacer Cloudflare


Contexte
Je cherchais depuis longtemps une alternative aux très efficace Cloudflare Tunnels et Access. J'en parle ici. Ils me permettaient de pouvoir héberger des sites Web sur un serveur sans l'exposer directement sur Internet, mais via Cloudflare et leur CDN.
J'ai essayé de trouver une alternative moins limitée avec Tailsclale, Ngrok mais sans trouver l'équivalence en terme de simplicité de mise en œuvre.
Pangolin permet de faire des tunnels, et donc de faire remonter des informations de votre réseau local, vers l'extérieur, sans ouvrir de ports.
Voilà comment cela se décompose :

Pangolin (Application de Gestion & Serveur Central) Le hub central pour la gestion de l'application. Pangolin inclut :
- Une API REST exposée publiquement.
- Un serveur WebSocket pour la gestion des sites Newt.
- Une API REST interne pour la communication entre les composants sur le VPS.
- Un serveur frontal pour l'interface web.
- La base de données principale pour le stockage des données.
- Un système d'authentification.
Gerbil (Gestion d'Interface WireGuard) Agit comme intermédiaire pour la gestion des configurations WireGuard. Il crée et maintient les tunnels sécurisés entre les sites et le serveur Pangolin.
Traefik (Proxy Inverse) Un proxy inverse modulaire et haute performance qui route les requêtes vers les ressources privées. Traefik est largement adopté, et son système de plugins permet une personnalisation et des améliorations de sécurité supplémentaires. Par exemple :
- Compatibilité prête à l'emploi avec des plugins comme Fail2Ban ou CrowdSec.
- Sécurité améliorée via notre plugin Traefik personnalisé Badger, qui agit comme un contrôleur d'authentification.
Badger (Middleware Plugin Traefik) Un plugin Traefik personnalisé qui agit comme un contrôleur d'authentification. Badger :
- Intercepte les requêtes vers le proxy inverse Traefik.
- Redirige les requêtes non authentifiées vers le serveur Pangolin pour l'authentification.
Newt (Client WireGuard Minimal en Espace Utilisateur) Un client léger conçu pour fonctionner sur le réseau privé. Newt :
- Se connecte au serveur Pangolin via WebSocket et à Gerbil via WireGuard en espace utilisateur complet.
- Facilite la mise en réseau grâce à sa connexion à Gerbil et à la création de proxies TCP.
Installation
1. Prérequis
- Un système Linux avec accès root Docker d'installé et une adresse IP publique. Il est recommandé d'utiliser des systèmes basés sur Ubuntu ou Debian.
- Un nom de domaine pointant vers l'adresse IP de votre serveur.
- Les ports TCP 80, 443 et port UDP 51820 ouverts sur votre instance Linux.
- Une adresse e-mail pour l'enregistrement du certificat Let's Encrypt.
2. Utilisation d'un VPS
Si vous avez besoin d'un VPS pour exécuter Pangolin, et c'est même très recommandé, il convient de prendre de très faibles spécifications :
- 2 vCPU,
- 2GB RAM,
- 40GB SSD
3. Étapes d'installation
- Téléchargement et exécution de l'installateur
- Les binaires de l'installateur pour Linux se trouvent dans les versions Github pour ARM (oui vous avez bien lu 😍) et AMD64.
wget -O installer "https://github.com/fosrl/pangolin/releases/download/1.1.0/installer_linux_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')" && chmod +x ./installer
- L'installeur placera tous les fichiers dans le répertoire courant. Si vous souhaitez installer Pangolin dans un répertoire différent, vous pouvez déplacer l'installeur vers ce répertoire et l'y exécuter.
- L'installeur doit être exécuté en tant que root. Si vous n'êtes pas déjà root, passez à l'utilisateur root ou utilisez sudo :
sudo ./installer
- Configuration de base
- L'installateur vous demandera les informations de base suivantes. Par exemple :
- Nom de domaine de base : Entrez votre nom de domaine complet de base (sans aucun sous-domaine). Exemple : example.com
- Nom de domaine du tableau de bord : Le domaine où l'application sera hébergée. Ceci est utilisé pour de nombreuses choses, y compris la génération de liens. Vous pouvez exécuter Pangolin sur un sous-domaine ou un domaine racine. Exemple : proxy.example.com
- E-mail pour Let's Encrypt : Fournissez une adresse e-mail pour l'enregistrement du certificat SSL avec Let's Encrypt. Il doit s'agir d'un e-mail auquel vous avez accès.
- Tunneling : Vous pouvez choisir de ne pas installer Gerbil pour la prise en charge du tunneling - dans cette configuration, il ne s'agira que d'un proxy inverse normal.
- L'installateur vous demandera les informations de base suivantes. Par exemple :
- Configuration de l'utilisateur administrateur
- Vous devrez configurer l'utilisateur administrateur. Il s'agit du premier utilisateur du système. Vous vous connecterez initialement avec cet utilisateur.
- E-mail de l'administrateur : Par défaut, admin@yourdomain.com, mais peut être personnalisé.
- Mot de passe de l'administrateur : Doit répondre aux exigences suivantes :
- Au moins 8 caractères
- Au moins une lettre majuscule
- Au moins une lettre minuscule
- Au moins un chiffre
- Au moins un caractère spécial
- Vous devrez configurer l'utilisateur administrateur. Il s'agit du premier utilisateur du système. Vous vous connecterez initialement avec cet utilisateur.
C'est le minimum requis aujourd'hui !
- Paramètres de sécurité
- Il vous demandera de configurer certaines options de sécurité de base. Par exemple :
- Inscription sans invitation : Choisissez de désactiver l'enregistrement des utilisateurs sans invitation (désactivé par défaut). Cela supprime le bouton "S'inscrire" sur le formulaire de connexion et est recommandé pour les déploiements privés.
- Création d'organisation : Décidez si les utilisateurs peuvent créer leurs propres organisations (activé par défaut).
- Il vous demandera de configurer certaines options de sécurité de base. Par exemple :
- Déploiement du conteneur
- Après la configuration, l'installateur :
- Extraira les conteneurs Docker nécessaires
- Créera les répertoires requis
- Générera les fichiers de configuration
- Démarrera les conteneurs à l'aide de Docker Compose
- Après la configuration, l'installateur :
4. Post installation
- Après une installation réussie :
- Le système sera accessible à votre domaine configuré.
- Vous pouvez vous connecter en utilisant l'e-mail et le mot de passe de l'administrateur que vous avez fournis.
L'installateur vérifie s'il existe une configuration et ne l'écrase pas si elle est trouvée.
Configuration de votre serveur et création d'un tunnel
Étapes de Configuration Rapide:
- Accéder à l'interface d'administration de Pangolin:
- Ouvrez votre navigateur web et accédez au nom de domaine du tableau de bord que vous avez configuré lors de l'installation de Pangolin.
- Connectez vous avec les informations d'identification de l'administrateur que vous avez créées.
- Ajouter une nouvelle ressource:
- Dans l'interface d'administration de Pangolin, naviguez vers la section "Ressources" (Ressources).
- Cliquez sur le bouton "Add Resource" (Ajouter une ressource).
- Configurer la ressource:
- Name (Nom): Donnez un nom descriptif à votre ressource (par exemple, "Mon serveur Web").
- Description (optionnel): Ajouter une description.
- Enable SSL (Activer SSL): Il est fortement recommandé de laisser cette option activée pour sécuriser votre connexion.
- Targets (Cibles):
- Method (Méthode): Sélectionnez la méthode de protocole de votre ressource (par exemple, HTTP, HTTPS).
- IP Address (Adresse IP): Saisissez l'adresse IP interne de votre ressource.
- Port: Saisissez le numéro de port de votre ressource.
- Exemple: Si votre serveur web interne est accessible à l'adresse
http://192.168.1.24:8080
, vous devrez configurer les paramètres suivants:- Méthode : HTTP.
- Adresse IP : 192.168.1.24
- Port : 8080.
- Sauvegarder la ressource:
- Après avoir configuré les paramètres, cliquez sur le bouton "Save" (Sauvegarder) pour enregistrer la ressource.
- Accéder à la ressource:
- Pangolin fournira une URL publique que vous pourrez utiliser pour accéder à votre ressource. Cette URL sera basée sur votre nom de domaine de tableau de bord configuré.
Conseils supplémentaires:
- Assurez vous que votre pare-feu autorise le trafic vers la ressource interne.
- Vous pouvez configurer plusieurs cibles pour une seule ressource afin d'équilibrer la charge (Load-Balancing❤️).
- Pangolin prend en charge diverses fonctionnalités avancées, telles que l'authentification et l'autorisation, que vous pouvez explorer dans l'instance.
N'hésitez pas à me contacter si vous avez des questions ou si vous rencontrez des difficultés lors de la configuration.
J'espère que cela vous sera utile !
