--- title: Wiredoor created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, vpn, wireguard, tunneling, reverse-proxy, go, letsencrypt] confidence: high contested: false sources: [https://selfh.st/apps/?tag=VPN, https://github.com/wiredoor/wiredoor] --- # 🔐 Wiredoor > **Le tunnel sĂ©curisĂ© auto-hĂ©bergĂ©** pour exposer des services internes sur Internet sans ouvrir de port. Alternative self-hosted Ă  Cloudflare Tunnel, Ngrok et FRP, basĂ© sur WireGuard. ## 📋 Informations GĂ©nĂ©rales | Champ | Valeur | | :--- | :--- | | **Site web** | (GitHub) | | **GitHub** | [wiredoor/wiredoor](https://github.com/wiredoor/wiredoor) | | **License** | AGPL-3.0 | | **Langage** | Go | | **Étoiles GitHub** | 1,6k ⭐ | | **DerniĂšre MAJ** | 2026-05 | | **CatĂ©gorie** | [[cat-vpn|VPN]] | ## 📝 Description **Wiredoor** est une plateforme de **tunneling sĂ©curisĂ©** Ă©crite en Go qui permet d'exposer des services s'exĂ©cutant sur des rĂ©seaux privĂ©s ou locaux (homelab, intranet, IoT) vers Internet **sans ouvrir de port entrant sur le pare-feu**. Le canal de transport est un tunnel **WireGuard** chiffrĂ© bout-en-bout, et la terminaison HTTPS est gĂ©rĂ©e automatiquement avec **Let's Encrypt**. L'idĂ©e est la mĂȘme que **Cloudflare Tunnel** ou **Ngrok** : un client lĂ©ger (le « wiredoor client ») tourne Ă  cĂŽtĂ© du service Ă  exposer, initie une connexion sortante vers le serveur Wiredoor, et tout le trafic est ensuite proxifiĂ© via ce tunnel. Le serveur publie le service sur un sous-domaine en HTTPS, gĂšre le routage, l'authentification et les certificats. Wiredoor se distingue des autres par son orientation **multi-tenant** et sa capacitĂ© Ă  gĂ©rer simultanĂ©ment plusieurs clients (services), avec une UI web pour les administrateurs. C'est un excellent choix pour les freelances, MSP, ou homelabs qui veulent exposer plusieurs sites/apps sans IP publique ni configuration DNS complexe. **Public cible** : admins qui doivent exposer des services internes derriĂšre un NAT ou un pare-feu restrictif, sans Cloudflare, sans Ngrok, et avec un chiffrement fort. - ✅ **Tunnel WireGuard** : transport chiffrĂ©, latence minimale - ✅ **HTTPS automatique** : certificats Let's Encrypt gĂ©rĂ©s par le serveur - ✅ **Multi-tenant** : plusieurs clients / services depuis une seule instance - ✅ **Reverse proxy intĂ©grĂ©** : routage par sous-domaine - ✅ **Auth basique** : Basic Auth, headers personnalisĂ©s par service - ✅ **TCP et HTTP** : supporte aussi bien HTTP(S) que TCP brut - ✅ **Binaire unique Go** : lĂ©ger, rapide, peu de dĂ©pendances - ✅ **Docker** ready + binaire standalone - ✅ **Dashboard web** de gestion des services - ✅ **API** pour automatisation ## 🚀 Installation ### Docker Compose (serveur + client) ```yaml # docker-compose.yml — serveur Wiredoor version: '3.8' services: wiredoor-server: image: ghcr.io/wiredoor/wiredoor-server:latest container_name: wiredoor-server restart: unless-stopped ports: - "80:80" # HTTP (challenge ACME) - "443:443" # HTTPS (terminaison) - "51820:51820/udp" # WireGuard (transport tunnel) environment: - WDOOR_HOST=wire.example.com - WDOOR_LISTEN_HOST=0.0.0.0 - WDOOR_DOMAIN=wire.example.com - WDOOR_DB_DRIVER=sqlite - WDOOR_DB_DSN=/data/wiredoor.db volumes: - wiredoor-data:/data labels: - "traefik.enable=false" # Wiredoor gĂšre lui-mĂȘme le HTTPS # Exemple : client (sur la mĂȘme machine, ou un autre hĂŽte du LAN) wiredoor-client: image: ghcr.io/wiredoor/wiredoor-client:latest container_name: wiredoor-client restart: unless-stopped network_mode: host # AccĂšs au service Ă  exposer cap_add: - NET_ADMIN environment: - WDOOR_SERVER_URL=https://wire.example.com - WDOOR_CLIENT_DOMAIN=app.example.com - WDOOR_CLIENT_TYPE=http - WDOOR_CLIENT_SERVICE_URL=http://127.0.0.1:8080 volumes: wiredoor-data: ``` > **Important** : le port UDP **51820** (ou autre choisi) doit ĂȘtre ouvert sur le pare-feu du serveur pour permettre l'arrivĂ©e des tunnels WireGuard. Les services HTTP/HTTPS sont ensuite servis par Wiredoor lui-mĂȘme — pas besoin de [[app-traefik|Traefik]] en frontal, sauf si on veut ajouter un WAF. ## ⚙ Configuration Initiale 1. **DĂ©finir le domaine public** pointant vers le serveur (DNS A ou AAAA sur `wire.example.com`) 2. **DĂ©marrer le serveur** et crĂ©er le **compte admin** au premier lancement 3. **Ouvrir les ports** : 80/TCP (ACME), 443/TCP (HTTPS), 51820/UDP (WireGuard) 4. **Enregistrer un client** : Dashboard > Clients > New > gĂ©nĂ©rer un token 5. **DĂ©ployer le client** sur l'hĂŽte du service Ă  exposer, avec le token + l'URL du service backend 6. **VĂ©rifier** que le sous-domaine `app.example.com` rĂ©pond et que le certificat est Ă©mis automatiquement ## 🔄 Alternatives ### Open Source - [[app-wireguard]] — Le moteur de tunneling, sans la surcouche proxy - **frp** (Fatedier) — Tunneling rapide, sans WireGuard (TCP direct) - **inlets** — Tunnel TCP/HTTP avec tunnel cloud optionnel - **rathole** — Tunneling moderne Ă©crit en Rust - **bore** — Tunnel TCP minimaliste en Rust - **self-hosted-gateway** — Passerelle reverse proxy + tunnels ### Comparaison Wiredoor vs alternatives de tunneling | CritĂšre | Wiredoor | Cloudflare Tunnel | frp | Ngrok | inlets | | :--- | :--- | :--- | :--- | :--- | :--- | | Self-hosted | ✅ | ❌ (SaaS) | ✅ | ❌ (freemium) | ✅ | | Transport chiffrĂ© | WireGuard | WireGuard-like (QUIC) | TCP/TLS | TCP | TCP/WSS | | HTTPS auto | ✅ (LE) | ✅ (CF) | ❌ (manuel) | ✅ (freemium) | ❌ (manuel) | | Multi-tenant natif | ✅ | ✅ | ❌ | ✅ | ❌ | | Licence | AGPL-3.0 | PropriĂ©taire | Apache-2.0 | PropriĂ©taire | MIT | | CoĂ»t | Gratuit | Freemium | Gratuit | Freemium | Freemium | **Verdict** : Wiredoor est l'une des rares solutions **entiĂšrement open source, multi-tenant et avec HTTPS automatique**. Excellent choix si vous voulez Ă©viter la dĂ©pendance Cloudflare et garder un tunnel basĂ© sur WireGuard. Pour des besoins trĂšs simples (1 service, 1 machine), **frp** ou **inlets** suffisent. ### PropriĂ©taires (ce que Wiredoor remplace) - **Cloudflare Tunnel** (gratuit avec limitations, liĂ© Ă  CF) - **Ngrok** (gratuit trĂšs limitĂ©, sinon 8$/mois) - **Loophole** (freemium) - **Tailscale Funnel** (gratuit, mais liĂ© Ă  Tailscale) - **Cloudflare Access** (payant en entreprise) ## 🔐 SĂ©curitĂ© - **Cryptographie** : tout le transport s'effectue dans un tunnel **WireGuard** — ChaCha20-Poly1305, Curve25519, BLAKE2s. Le tunnel est authentifiĂ© par les paires de clĂ©s WireGuard gĂ©nĂ©rĂ©es Ă  l'enregistrement du client. - **ClĂ©s privĂ©es** : stockĂ©es sur le serveur et le client dans des volumes Docker chiffrĂ©s. Les clĂ©s privĂ©es ne transitent jamais sur le rĂ©seau en clair. - **Auth service** : support de **Basic Auth** et de **headers personnalisĂ©s** injectĂ©s dans la requĂȘte vers le backend. PossibilitĂ© d'ajouter un middleware par service. - **HTTPS de bout en bout** : le navigateur parle HTTPS au serveur Wiredoor, qui dĂ©chiffre puis re-chiffre en HTTP (ou HTTPS si le backend le supporte) via le tunnel WireGuard. Le trafic ne traverse jamais Internet en clair. - **Authentification admin** : comptes stockĂ©s en base (SQLite par dĂ©faut, PostgreSQL supportĂ©), mots de passe hashĂ©s (bcrypt). Activer 2FA si disponible. - **Audit log** : journalisation des connexions tunnels, des requĂȘtes, et des actions d'administration. - **Isolation rĂ©seau** : ne JAMAIS exposer le port 51820/UDP en accĂšs public sans pare-feu, limiter aux IPs attendues ou coupler avec un fail2ban. - **Renouvellement Let's Encrypt** : vĂ©rifier que le dĂ©fi HTTP-01 fonctionne (port 80 accessible publiquement) et que le cron de renouvellement est en place. ## 📚 Ressources - [GitHub wiredoor/wiredoor](https://github.com/wiredoor/wiredoor) - [Documentation officielle](https://wiredoor.net/docs) - [WireGuard — protocole](https://www.wireguard.com/protocol/) - [Comparatif tunnels self-hosted — selfh.st](https://selfh.st/apps/?tag=Tunneling) ## Pages LiĂ©es - [[cat-vpn]] — CatĂ©gorie VPN - [[app-wireguard]] — Le transport chiffrĂ© - [[app-tailscale]] — Alternative mesh VPN - [[app-headscale]] — Controller Tailscale self-hosted - [[app-traefik]] — Pour ajouter WAF / auth en amont - [[securisation-home-lab]] — Bonnes pratiques sĂ©curitĂ©