--- title: SWAG created: 2026-06-06 updated: 2026-06-06 type: app tags: [catalogue, reverse-proxy, nginx, lets-encrypt, linuxserver, auto-hebergement] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Reverse+Proxy, https://docs.linuxserver.io/general/swag/] --- # 🛡️ SWAG (Secure Web Application Gateway) > **Image Docker de LinuxServer.io bundlant Nginx + Certbot + Fail2ban + scripts d'auto-hébergement**. Réputation : référence absolue pour l'auto-hébergement Nginx depuis une décennie. ## 📋 Informations Générales | Champ | Valeur | | :--- | :--- | | **Site web** | [docs.linuxserver.io/general/swag](https://docs.linuxserver.io/general/swag/) | | **GitHub** | [linuxserver/docker-swag](https://github.com/linuxserver/docker-swag) | | **License** | GPL-3.0 | | **Langage** | Shell, Nginx config | | **Étoiles GitHub** | 3.6k ⭐ | | **Dernière MAJ** | 2026-05 | | **Catégorie** | [[cat-reverse-proxy\|Reverse Proxy]], Web Server, Sécurité | ## 📝 Description **SWAG** (Secure Web Application Gateway) est une image Docker maintenue par **LinuxServer.io** qui package **Nginx**, **Certbot** (client Let's Encrypt), **Fail2ban** et de nombreux scripts utilitaires dans un seul conteneur clé-en-main. C'est l'une des images les plus utilisées de l'écosystème self-hosted. L'objectif est simple : fournir un **reverse proxy Nginx prêt à l'emploi** avec HTTPS automatique, sans avoir à construire soi-même l'image, gérer le renouvellement des certificats ou configurer Fail2ban. SWAG supporte nativement les **DNS challenge** pour obtenir des certs wildcard via une dizaine de providers (Cloudflare, Porkbun, Hetzner, OVH, etc.), ce qui le rend utilisable même derrière un NAT ou sans ports ouverts. **Public cible** : utilisateurs qui veulent **la robustesse de Nginx** sans la complexité de configuration. Particulièrement adapté aux setups non-Docker (VMs, bare-metal) ou aux stacks mixtes. Concurrent direct de **Nginx Proxy Manager** (NPM) et **Caddy**, SWAG s'en distingue par sa **flexibilité brute** (on édite le `nginx.conf` directement) et par son intégration native Fail2ban. ## 🚀 Installation ### Option 1 : Docker Compose (recommandé) ```yaml # docker-compose.yml version: '3.8' services: swag: image: lscr.io/linuxserver/swag:latest container_name: swag restart: unless-stopped cap_add: - NET_ADMIN environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris - URL=example.com - SUBDOMAINS=www,api,app - VALIDATION=http - DNSPLUGIN=cloudflare - EMAIL=admin@example.com - ONLY_SUBDOMAINS=true ports: - 443:443 - 80:80 volumes: - ./config:/config networks: - proxy networks: proxy: external: true ``` > 💡 Le volume `./config` contient les certificats, les vhosts Nginx et la config Fail2ban — **sauvegardez-le impérativement**. ### Option 2 : Variante Traefik (déconseillée) SWAG peut coexister avec Traefik si on le cantonne à un rôle spécifique (ex : reverse proxy pour des services non-Docker), mais c'est un anti-pattern. **Préférez SWAG seul** ou **Traefik seul** dans la même stack. ## ⚙️ Configuration Initiale 1. **Créer** le dossier `./config` local 2. **Renseigner** `URL`, `SUBDOMAINS` et `VALIDATION` (http ou dns) 3. **DNS plugin** : créer un token API chez le registrar (Cloudflare par ex.) et le coller dans `./config/dns-conf/cloudflare.ini` 4. **Lancer** : `docker compose up -d` 5. **Activer les vhosts** : décommenter les fichiers `proxy-confs/*.conf` ou créer ses propres vhosts dans `./config/nginx/proxy-confs/` 6. **Fail2ban** : activer les jails souhaitées dans `./config/fail2ban/jail.local` ```bash # Exemple vhost custom pour un service cat > ./config/nginx/proxy-confs/app1.subdomain.conf <