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é.(Documentation Pangolin)
⚡ 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.
🗒️ 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
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.
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.
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(non).
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)
Installation de CrowdSec (facultatif) Le script propose également l’installation de CrowdSec pour renforcer la sécurité :
- Valeur par défaut : Non (recommandé au départ)
- Si activé, vous confirmez que vous êtes prêt à :
- gérer la configuration CrowdSec
- maintenir les règles et décisions associées 👉 CrowdSec peut être ajouté plus tard, une fois Pangolin correctement opérationnel.
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é.
Configuration post-installation
Paramètres de base
- Domaine de base:
yick.eu - Dashboard Domain :
pangolin.yick.eu - Let’s Encrypt Email : yannick@cinay.eu
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é:
Organisation “pangoyan”
- Entrez le nom et la description de l’organisation
- Cliquez sur « Créer une organisation » nommée pangoyan
Site - pangoyanone
Ajouter le site pangoyanone à cette organisation
Chaque site est fourni avec un identifiant unique (ID), secret et point de terminaison. Le site utilise la combinaison de ces trois pour établir une connexion sécurisée et cryptée au serveur.
🖇️ Site - Lier votre serveur local à votre instance Pangolin
Un site est une connexion à un réseau distant qui permet à Pangolin de fournir un accès aux ressources, qu’elles soient publiques ou privées, aux utilisateurs n’importe où. Les sites sont la base de l’exposition des ressources parce que toutes les ressources existent sur un ou plusieurs sites. Newt est le connecteur logiciel personnalisé de Pangolin qui facilite la connexion et répond aux cibles sur les réseaux distants.
Site Newt (Recommandé)
Ce site vous permet d’exposer des ressources sur un réseau distant via un tunnel entièrement géré et un websocket. Cela nécessite que le connecteur Newt fonctionne sur le réseau distant. C’est le plus facile à utiliser et nécessite le moins de configuration. Aucune configuration NAT requise. Nous recommandons d’utiliser les sites Newt dans presque tous les cas. Newt est le type de connecteur principal et prend en charge le plus de fonctionnalités. Support des sites Newt:
- Ressources publiques HTTPS proxy
- Ressources privées
- Équilibre de charge
- Vérification de la santé
- Scanner la prise Docker
- Et plus…
Installez Newt comme conteneur binaire ou Docker
Sites Newt - Installation binaire (recommandé)
Utilisez cette commande pour installer automatiquement Newt. Il détecte automatiquement l’architecture de votre système et télécharge toujours la dernière version
1
curl -fsSL https://static.pangolin.net/get-newt.sh | bash
Le binaire
newtest installé dans$HOME/.local/bin/
On utilise le service systemd, il faut déplacer le binaire puis supprimer le dossier$HOME/.local/bin/1 2
sudo mv $HOME/.local/bin/newt /usr/local/bin/ rm -r $HOME/.local/bin/
Créer un service systemd de base:
/etc/systemd/system/newt.service
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Newt
After=network.target
[Service]
ExecStart=/usr/local/bin/newt --id 31frd0uzbjvp721 --secret h51mmlknrvrwv8s4r1i210azhumt6isgbpyavxodibx1k2d6 --endpoint https://pangolin.yick.eu
Restart=always
User=root
[Install]
WantedBy=multi-user.target
Recharger et lancer le service
1
2
sudo systemctl daemon-reload
sudo systemctl enable newt --now
Vérification
1
janv. 01 07:26:49 alder newt[76254]: INFO: 2026/01/01 07:26:49 Client connectivity setup. Ready to accept connections from clients!
Sites Newt - Installation docker
Sur votre serveur local, créez votre docker-compose.yml et le fichier .env dans le dossier ou vous comptez installer newt :
docker-compose.yml
1
2
3
4
5
6
7
8
9
services:
newt:
image: fosrl/newt
container_name: newt
restart: unless-stopped
environment:
- PANGOLIN_ENDPOINT=${PANGOLIN_ENDPOINT}
- NEWT_ID=${NEWT_ID}
- NEWT_SECRET=${NEWT_SECRET}
.env
1
2
3
PANGOLIN_ENDPOINT=https://pangolin.yick.eu
NEWT_ID=7ws8h6qqisvht38
NEWT_SECRET=krmu39lkcck62aln8z7k3flzl07s3b2bza526ywqwrjldblw
On déploie l’application :
1
2
docker compose up -d
docker logs -f newt
Sur votre instance Pangolin –> Noeuds Le site pangoyanone est bien En ligne
🪨 Ressource
Une ressource représente un service que l’on souhaite exposer ou rendre accessible via Pangolin. Il existe deux types de ressources :
- Ressource publique : exposée sur Internet
- Ressource privée : accessible uniquement aux utilisateurs connectés au client Pangolin.
Par défaut, aucune ressource n’est mise à disposition sur les sites. Les administrateurs doivent définir des ressources avec des cibles backend et attribuer des stratégies d’accès spécifiques avant que tous les utilisateurs puissent y accéder.
Ressource publique (exposition applicative)
Une ressource publique fonctionne comme un reverse proxy. On définit :
- un domaine
- une ou plusieurs cibles (protocole + adresse + port)
- des options de sécurité et de routage
Il est possible de configurer plusieurs cibles pour une même ressource.
L’intérêt est de pouvoir : - répartir la charge entre plusieurs serveurs ou sites
- assurer une continuité de service en cas de panne
Pangolin permet également d’activer l’authentification sur une ressource publique.
Dans ce cas, l’utilisateur doit d’abord se connecter au portail Pangolin (SSO) avant d’accéder à l’application.Ressource privée (accès interne sécurisé)
Une ressource privée permet d’accéder à un service sans aucune exposition publique. On définit :
- une cible (adresse interne)
- un ou plusieurs ports
- les utilisateurs autorisés Il est possible de définir un alias afin de faciliter l’accès à la ressource. 👉 Ce type de ressource est idéal pour :
- SSH
- bases de données
- dashboards internes
- outils d’administration
Aucun port public n’est ouvert.
Création ressource publique
Une ressource publique permet d’exposer une application via HTTPS, en s’appuyant sur Pangolin comme reverse proxy sécurisé. Lors de la création d’une ressource publique, plusieurs paramètres sont à renseigner.
Informations sur la ressource
- Type
- Ressource HTTPS : proxy HTTP/HTTPS basé sur un nom de domaine
- Ressource TCP/UDP brute : proxy TCP ou UDP basé sur un port
(dans le cas d’une exposition web classique, on choisit Ressource HTTPS)
- Nom
- Sous-domaine
Sous-domaine à exposer (link) - Domaine de base
Domaine racine sélectionné lors de l’installation
(yick.eu)
➡️ L’URL finale sera par exemple :
https://link.yick.eu
Configuration des cibles
Une ou plusieurs cibles peuvent être définies pour acheminer le trafic vers les services backend. Pour chaque cible, on configure :
- Nœud Pangolin
Node par lequel le trafic est routé (pangoyanone) - Protocole
Généralementhttpouhttps(http) - Adresse (Host)
Adresse interne du service (192.168.0.222) - Port
Port du service backend (3000)
Il est possible d’ajouter plusieurs cibles afin de :
- répartir la charge
- assurer une haute disponibilité
Vérification de l’état de santé (Healthcheck)
Pangolin permet d’activer une vérification de l’état de santé sur chaque cible :
- port de vérification configurable
- intervalle personnalisable
- statut visible dans le dashboard
👉 Le healthcheck est fortement recommandé lorsqu’il y a plusieurs cibles, afin d’éviter d’envoyer du trafic vers un service indisponible.
Contrôler l’authentification des ressources
- Les ressources publiques peuvent être protégées par l’authentification Pangolin
- L’utilisateur devra alors se connecter via le portail Pangolin (SSO) avant d’accéder à l’application 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 :

Création d’une ressource privée
Une ressource privée permet de donner accès à un service interne sans aucune exposition publique.
Elle est uniquement accessible aux utilisateurs authentifiés via Pangolin.
Lors de la création d’une ressource privée, on définit :
- Nom : nom explicite de la ressource (proxmox)
- Nœud : node Pangolin par lequel le réseau est joint (pangoyanone)
- Destination : adresse interne de la cible
(nom d’hôte, adresse IP ou plage CIDR selon le mode choisi) - Alias (optionnel) : nom DNS interne pour simplifier l’accès
- Restrictions de ports :
- TCP : ports autorisés ou tous
- UDP : ports autorisés ou tous
- ICMP : autorisé ou non
Exemple de configuration
- Type : TCP
- Destination :
192.168.1.10 - Port autorisé :
22 - Alias :
monserveur.lan - Accès : réservé aux utilisateurs authentifiés dans l’organisation 👉 Aucun port public n’est exposé sur Internet.
Accès à une ressource privée
Pour accéder aux ressources privées, il est nécessaire d’installer le client Pangolin sur le poste utilisateur.
Téléchargement du client officiel :
👉 https://pangolin.net/downloads
Étapes côté client
- Télécharger et installer le client Pangolin
Utilisez l’installeur officiel (.msisous Windows, ou équivalent selon l’OS). - Lancer Pangolin
Ouvrez l’application depuis le menu Démarrer ou le raccourci bureau. - Se connecter à votre instance Pangolin
- Connectez-vous à votre instance Pangolin auto-hébergée
- Cliquez sur l’icône Pangolin dans la barre système
- Sélectionnez Log in
Vous devriez avoir ça sur votre client.

Une fois connecté, les ressources privées définies dans l’organisation deviennent accessibles de manière sécurisée. Par exemple taper dans votre navigateur : http://serveur.lan vous pourrez accéder à votre ressource privée via votre alias.
🔗 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
🔑 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

💡 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
...













