Pangolin - Gestion Sécurisée des Ressources Privées
La gestion sécurisée des ressources privées sur les réseaux distribués représente un défi de longue date, notamment dans des environnements où les restrictions de pare-feu limitent l’exposition des services. C’est dans ce contexte que Pangolin, un serveur proxy inverse mesh avec tunnels chiffrés, se positionne comme une solution efficace. Il permet un accès distant sécurisé sans nécessiter l’ouverture de ports. Ce projet open source constitue une alternative auto-hébergée aux solutions telles que Cloudflare Tunnels, offrant aux administrateurs un contrôle accru sur leur infrastructure et leur sécurité.
- Installer Pangolin avec Docker
- Self-Host a Tunneled Reverse Proxy with Pangolin
- Installation de Pangolin pour remplacer Cloudflare
Connectivité Sécurisée grâce à WireGuard
Pangolin utilise des tunnels chiffrés basés sur WireGuard pour relier des sites privés à un serveur central. Grâce à son intégration avec Newt, un client WireGuard en espace utilisateur, ce système permet d’exposer des ressources internes de manière sécurisée sans avoir besoin de modifier la configuration du pare-feu. Parmi ses principales caractéristiques, on retrouve :
✔ Proxy inverse sécurisé pour les ressources HTTP/HTTPS et TCP/UDP.
✔ Automatisation des certificats SSL via Let’s Encrypt.
✔ Équilibrage de charge pour distribuer le trafic efficacement.
✔ Compatibilité avec tout client WireGuard, avec une intégration optimisée via Newt.
Cette approche réduit considérablement les risques de sécurité liés à l’ouverture de ports, faisant de Pangolin une option idéale pour les laboratoires domestiques, l’IoT et les environnements d’entreprise avec des restrictions réseau.
Gestion d’Identité et Contrôle d’Accès Avancé
Une des fonctionnalités remarquables de Pangolin est son système centralisé d’authentification et de contrôle d’accès, permettant de gérer les permissions de manière granulaire. Parmi ses fonctionnalités majeures figurent :
✅ Connexion unique (SSO) avec intégration à des plateformes d’authentification.
✅ Contrôle d’accès basé sur les rôles pour définir les permissions par utilisateur, IP ou URL.
✅ Support pour l’authentification multifactorielle (TOTP) avec des codes de sauvegarde.
✅ Méthodes d’authentification supplémentaires, telles que des liens d’accès temporaires et des mots de passe spécifiques à chaque ressource.
Ces options garantissent que seuls les utilisateurs autorisés peuvent accéder aux services exposés via Pangolin, renforçant ainsi la sécurité tout en préservant l’utilisabilité.
Interface d’Administration Intuitive et Personnalisable
Le système dispose d’un tableau de bord web conçu pour faciliter la gestion des sites, utilisateurs et ressources. Parmi ses caractéristiques, on note :
🖥 Surveillance en temps réel de l’état des tunnels et de la connectivité.
🌙 Mode sombre et clair pour une meilleure expérience utilisateur.
📱 Compatibilité mobile pour une gestion à tout moment et en tout lieu.
Cet outil intuitif permet aux administrateurs de configurer et de gérer leurs tunnels efficacement, sans avoir besoin de connaissances avancées en réseaux.
Mise en œuvre Flexible dans le Cloud ou sur Serveurs Locaux
Pangolin est conçu pour être hautement portatif et facile à déployer, que ce soit sur un fournisseur de cloud ou une infrastructure locale. Sa configuration basée sur Docker Compose permet une installation rapide et simple.
Exemple de déploiement avec Docker Compose :
1
2
3
4
5
6
7
8
9
services:
pangolin:
image: fosrl/pangolin:latest
container_name: pangolin
restart: unless-stopped
ports:
- "443:443"
volumes:
- pangolin_data:/data
Grâce à sa conception modulaire, les utilisateurs peuvent connecter plusieurs sites à un serveur central, assurant ainsi une gestion unifiée des ressources dans des environnements distribués.
Cas d’Utilisation de Pangolin
Pangolin est parfait pour divers scénarios requérant un accès sécurisé aux ressources privées sans modifier les configurations réseau. Quelques exemples incluent :
🔹 Laboratoires domestiques ne pouvant pas ouvrir de ports : permet d’accéder en toute sécurité à des serveurs internes sans configurations complexes de NAT ou de pare-feu.
🔹 Infrastructure IoT distribuée : facilite la connexion sécurisée des appareils IoT à un serveur central sans compromettre la sécurité.
🔹 Accès distant sécurisé aux réseaux d’entreprises : permet aux entreprises de gérer l’accès des utilisateurs autorisés sans dépendre de solutions externes.
Alternative Auto-Hébergée aux Tunnels Cloudflare
Bien que Cloudflare Tunnels soit une option populaire pour l’exposition sécurisée des ressources, Pangolin propose une alternative auto-gérée, éliminant la dépendance vis-à-vis de services externes et offrant un contrôle accru sur l’infrastructure.
Pangolin s’inspire également de solutions telles qu’Authentik et Authelia, adoptant une approche robuste en matière de gestion d’identité et d’authentification, ce qui en fait une option attrayante pour ceux qui recherchent privacité et sécurité sans compromis.
État du Projet et Futures Mises à Jour
Actuellement, Pangolin a terminé sa phase bêta et est arrivé à la version 1.0.0, intégrant des améliorations clés telles que :
📌 Support pour plusieurs domaines, permettant de gérer différentes ressources depuis un seul serveur.
📌 Règles d’accès avancées, permettant de définir des permissions selon les IP, les plages CIDR et des routes spécifiques.
📌 Intégration avec CrowdSec, avec une installation automatisée pour une sécurité renforcée contre les attaques.
L’équipe de développement continue de travailler sur de nouvelles fonctionnalités, y compris :
🔹 Support pour l’authentification avec LDAP et Google.
🔹 Capacités de VPN avec perforation NAT.
🔹 Granularité accrue dans les règles d’accès et le proxy.
Conclusion
Pangolin se présente comme une solution puissante et flexible pour la gestion de l’accès distant sécurisé, offrant une alternative auto-hébergée à Cloudflare Tunnels sans sacrifier la facilité d’utilisation ou la performance.
Avec un focus sur la sécurité, l’authentification centralisée et la facilité de déploiement, Pangolin est une excellente option pour les administrateurs systèmes, les entreprises et les passionnés de technologie cherchant à avoir un contrôle total sur leurs ressources privées sans dépendre de tiers.
Pour plus d’informations et le téléchargement, le projet est disponible sur GitHub.
⚡ Caractéristiques
Proxy inverse via le tunnel WireGuard
- Exposez les ressources privées sur votre réseau sans ouvrir de ports.
- Connectivité site à site sécurisée et facile à configurer via un client WireGuard personnalisé, Newt.
- Prise en charge intégrée de tous les clients WireGuard.
- Certificats SSL automatisés (https) via LetsEncrypt.
- Prise en charge des services HTTP/HTTPS et TCP/UDP bruts.
Gestion des identités et des accès
- Système d’authentification centralisé utilisant la plateforme SSO. Les utilisateurs ne devront gérer qu’un seul login.
- Totp avec codes de sauvegarde pour l’authentification à deux facteurs.
- Créer des organisations, chacune avec plusieurs sites, utilisateurs et rôles.
- Contrôle d’accès basé sur les rôles pour gérer les autorisations d’accès aux ressources.
- D’autres options d’authentification sont disponibles :
Liste blanche des courriels avec codes d’accès à usage unique.
Liens de partage temporaires et autodestructifs.
Codes pin spécifiques aux ressources.
Mots de passe spécifiques aux ressources.
Une interface simple pour le tableau de bord
- Gérer les sites, les utilisateurs et les rôles à l’aide d’une interface utilisateur claire et intuitive.
- Contrôle de l’utilisation du site et de la connectivité.
- Options de mode clair et foncé.
- Adaptée aux mobiles.
Déploiement facile
- Configuration basée sur Docker Compose pour un déploiement simplifié.
- Script d’installation à l’épreuve du temps pour une installation rationalisée et des ajouts de fonctionnalités.
- Fonctionne sur n’importe quel VPS.
- Utilisez votre client WireGuard préféré pour vous connecter, ou utilisez Newt. notre client d’espace utilisateur personnalisé pour une meilleure expérience.
Conception modulaire
- Étendez les fonctionnalités avec les plugins Traefik existants, tels que Fail2Ban ou CrowdSec, qui s’intègrent de manière transparente.
- Attachez autant de sites que vous le souhaitez au serveur central.
Installer Pangolin avec Docker
Ce tutoriel traite de trois types d’installations:
- L’installation sur VPS : Utilisez Pangolin qui fera office de Cloudflare. Cela permet de ne pas ouvrir les ports de votre routeur. Cela peut également s’avérer utile si vous avez des restrictions de votre FAI pour ouvrir les ports 80 et 443 ou que vous n’avez pas forcément accès au routeur.
- L’installation en local : Utilisez Pangolin comme simple reverse proxy.
- L’installation avec WireGuard : Permet d’accéder à des ressources sur le serveur local par WireGuard si le déploiement de newt n’est pas possible, par exemple.
🗒️ Prérequis
- Un VPS sous Linux. Ubuntu ou Debian recommandé.
Pangolin nécessite généralement un minimum de ressources pour fonctionner efficacement. Un VPS de base avec 1 vCPU, 1 Go de RAM et 8 Go SSD est suffisant pour la plupart des déploiements.
- Exigences minimales
- CPU : 1 vCPU
- RAM : 1GB
- Stockage : 8GB SSD
- Spécifications recommandées
- CPU : 2 vCPU
- RAM : 2GB
- Stockage: 20GB SSD
- Exigences minimales
- Un nom de domaine qui pointe vers l’IP de votre VPS.
- Ports TCP 80, 443 et port UDP 51820 ouverts.
- Une adresse électronique pour l’enregistrement du certificat Let’s Encrypt.
- Facultatif : Un serveur SMTP.
💾 Installation sur VPS
vps-1780de45.vps.ovh.net 4 vCPU Cores 8 Go RAM 75 Go SSD NVME 1 Backup auto Location: Gravelines IP: 51.38.37.240 IPv6: 2001:41d0:305:2100::c1c OS: Debian 13 Domaine: yick.eu
1 Télécharger le programme d’installation Connectez-vous à votre serveur via SSH et téléchargez le programme d’installation:
1
curl -fsSL https://static.pangolin.net/get-installer.sh | bash
Le programme d’installation prend en charge les architectures AMD64 (x86_64) et ARM64.
2 Exécuter le programme d’installation Exécutez l’installateur avec des privilèges root:
1
sudo ./installer
Le programme d’installation place tous les fichiers dans le répertoire courant. Déplacez le programme d’installation dans le répertoire d’installation souhaité avant de l’exécuter.
3 Configurer les paramètres de base L’installateur vous invitera à une configuration essentielle:
- Domaine de base: Entrez votre domaine racine sans sous-domaines (par exemple,
example.com) - Dashboard Domain : Appuyez sur Entrée pour accepter la valeur par défaut
pangolin.example.comou entrez un domaine personnalisé - Let’s Encrypt Email : Fournir un e-mail pour les certificats SSL et la connexion admin
- Tunneling : Choisissez d’installer Gerbil pour les connexions tunnelées (par défaut: oui). Vous pouvez faire tourner Pangolin sans tunnel. Il fonctionnera comme un proxy inverse standard.
4 Configurer l’email (facultatif) La fonctionnalité de messagerie est optionnelle et peut être ajoutée ultérieurement. Choisissez d’activer la fonctionnalité d’email SMTP:
- Par défaut : Non (recommandé pour la configuration initiale)
- Si activé: Vous aurez besoin de détails du serveur SMTP (hôte, port, nom d’utilisateur, mot de passe)
5 Démarrer l’installation Confirmez que vous souhaitez installer et démarrer les conteneurs:
- L’installateur va tirer des images Docker (pangolin, gerbil, traefik)
- Les conteneurs seront démarrés automatiquement
- Ce processus prend 2-3 minutes selon votre connexion Internet
Vous verrez des indicateurs de progrès lorsque chaque conteneur est tiré et démarré.
6 Installer CrowdSec (optionnel)
Le programme d’installation vous demandera si vous souhaitez installer CrowdSec pour une sécurité supplémentaire:
- Par défaut : Non (recommandé pour la configuration initiale)
- Si activé: Vous devrez confirmer que vous êtes prêt à gérer la configuration CrowdSec
CrowdSec ajoute de la complexité et nécessite une configuration manuelle pour une sécurité optimale. Activez seulement si vous êtes à l’aise de le gérer. CrowdSec peut être installé plus tard si nécessaire. L’installation de base offre une sécurité suffisante pour la plupart des cas d’utilisation.
Configuration post-installation
Une fois l’installation terminée avec succès, vous verrez:
1
2
3
4
Installation complete!
To complete the initial setup, please visit:
https://pangolin.yick.eu/auth/initial-setup
Accéder au tableau de bord
Accédez à l’URL affichée dans la sortie du programme d’installation:
1
https://pangolin.yick.eu/auth/initial-setup
Le tableau de bord doit se charger avec un certificat SSL configuré automatiquement. Cela peut prendre quelques minutes pour que le premier certificat puisse le valider, alors ne vous inquiétez pas si le navigateur lance un avertissement non sécurisé.
Créer un compte d’administrateur
Complétez la configuration initiale de l’utilisateur administrateur:
- Entrez votre adresse email d’administrateur
- Définir un mot de passe fort
- Vérifiez votre email (si l’email est configuré)
Utilisez un mot de passe fort et unique pour votre compte d’administrateur. Ce compte a un accès complet au système.
Créez votre première organisation
Après vous être connecté:
Oraganisation “pangoyan”
- Entrez le nom et la description de l’organisation
- Cliquez sur « Créer une organisation » nommée pangoyan
Noeud “pangoyanone”
Ajouter le noeud pangoyanone à cette organisation

🖇️ Lier votre serveur local à votre instance Pangolin
Création d’un tunnel sécurisé entre le serveur local et l’instance Pangolin sur le VPS. 3 éléments importants:
- ID => 7ws8h6qqisvht38
- secret => krmu39lkcck62aln8z7k3flzl07s3b2bza526ywqwrjldblw
- endpoint => https://pangolin.tutobelginux.ovh
Sur votre serveur local, créez votre compose.yml dans le dossier ou vous comptez installer newt :
1
2
3
4
5
6
7
8
9
services:
newt:
image: fosrl/newt
container_name: newt
restart: unless-stopped
environment:
- PANGOLIN_ENDPOINT=https://pangolin.tutobelginux.ovh
- NEWT_ID=7ws8h6qqisvht38
- NEWT_SECRET=krmu39lkcck62aln8z7k3flzl07s3b2bza526ywqwrjldblw
- PANGOLIN_ENDPOINT=https://pangolin.tutobelginux.ovh => Remplacez https://pangolin.tutobelginux.ovh par votre endpoint à vous.
- NEWT_ID=7ws8h6qqisvht38 => Remplacez 7ws8h6qqisvht38 par votre propre ID.
- NEWT_SECRET=krmu39lkcck62aln8z7k3flzl07s3b2bza526ywqwrjldblw => Remplacez krmu39lkcck62aln8z7k3flzl07s3b2bza526ywqwrjldblw par votre secret.
On va déployer l’application :
docker compose up -d
Rendez-vous sur votre instance Pangolin, partie Sites, c’est bien relié et Online :

🔑 Activer la 2FA pour un utilisateur
Un utilisateur aura la possibilité d’activer la 2FA. Il devra cliquer en haut à gauche sur son e-mail

🪨 Créer une ressource
Création ressource+cible
Contrôler l’authentification des ressources
Par défaut, Pangolin configurera toute nouvelle ressource à exécuter sous sa plateforme d’authentification. Essentiellement, cela signifie que toute personne qui tente d’accéder à votre nom de domaine sera invitée à se connecter à Pangolin pour y accéder.
Pour ce guide, nous allons laisser SSO activé car il aide à empêcher les utilisateurs externes d’accéder au logiciel que nous hébergeons.

Dans la partie Authentification, vous allez pouvoir choisir comment vous authentifier. Vous avez une première partie, la plateforme SSO. Facultative mais qui permet de renforcer la sécurité.
- Rôles => Choisissez le rôle. Member.
- Utilisateurs => Choisissez le ou les Utilisateurs qui peuvent y avoir accès.
Cliquez sur Enregistrer les conteôles d’accès pour terminer.

Accéder à votre ressource
Maintenant, si nous devions nous diriger vers le sous-domaine que nous venons de mettre en place, nous serons accueillis par un écran d’authentification requis.
Pour accéder à votre nouveau logiciel, remplissez votre email et mot de passe pour votre compte

Vous pouvez aussi choisir un mot de passe ou un code PIN :

Dans ce cas, votre fenêtre d’authentification sera la suivante :
Ou encore :
Ou encore :
🔗 Créer un lien partageable (NON CONSEILLE)
Le lien de partage donné permet un accès temporaire ou permanent à votre ressource sans que l’invité n’ait besoin d’être connecté par le tunnel. Lors de la création d’un lien, vous avez la possibilité de définir sa durée de validité.
- Resource => Choisissez quelle application vous voulez partager.
- Title => Donnez un titre à ce partage, facultatif.
- Expire In => Définissez une date d’expiration. Soit en minute, en heure, semaine, mois ou année. Vous pouvez également cocher Never expire pour qu’il n’expire jamais.
Quand vous êtes satisfait, cliquez sur Create Link pour terminer. Ce qui donne :
Partagez soit le QR Code ou le lien. Attention, quand vous aurez fermé la fenêtre, il ne sera plus jamais possible de revoir ces informations. Et faites attention, cela donne un accès direct à votre ressource !
Testons maintenant cette option ensemble !
On va se rendre sur le lien :
Et vous serez redirigé vers Portainer :
👥 Inviter un utilisateur pour qu’il se crée un compte sur votre instance
Dans la section Utilisateurs, cliquez sur : +Créer un utilisateur
Lorsque votre utilisateur se rendra sur le lien avant les 7 jours, il verra ceci :

Il devra renseigner :
- Adresse mail => Il devra choisir l’e-mail servant pour son compte utilisateur.
- Mot de passe => Il devra également choisir un mot de passe pour son compte utilisateur.
- Confirmer mot de passe => Il devra confirmer son mot de passe.
Quand votre invité aura fini de remplir le formulaire, il devra cliquer sur Créer un compte, il sera redirigé ici :

Partager une ressource avec l’utilisateur
Pour partager une ressource avec un utilisateur, rendez-vous dans l’onglet Ressources -> Publique de votre instance Pangolin et cliquez sur Modifier :
Dans la partie Authentification, il faudra ajouter son nom

N’oubliez pas de sauver en cliquant sur Enregistrer les contrôles d’accès.
🔑 Activer la 2FA pour un utilisateur
Se connecter en administrateur

Activer la 2FA pour un utilisateur

Connexion utilisateur
L’utilisateur devra s’authentifier avec son mot de passe
Pour terminer, scanner le QR Code ou la clé otpauth puis saisir le code de vérification
Sauvegarder les clés de secours
On arrive sur la page des ressources accessibles par l’utilisateur

Lors de la prochaine connexion,l’utilisateur devra fournir le code pour la double authentification
💡 Astuce pour la mise à jour
Pour le moment l’application est en développement actif. Soit vous vous tenez au courant de l’évolution et vous modifiez dans le compose la ligne correspondant à l’image avec le numéro exacte de version :
services:
pangolin:
image: fosrl/pangolin:1.0.0-beta.13
container_name: pangolin
restart: unless-stopped
...
Ou en latest :
services:
pangolin:
image: fosrl/pangolin:latest
container_name: pangolin
restart: unless-stopped
...












