Initial vault setup
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
---
|
||||
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 <<EOF
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name app1.*;
|
||||
|
||||
include /config/nginx/proxy.conf;
|
||||
include /config/nginx/resolver.conf;
|
||||
set \$upstream_app app1;
|
||||
proxy_pass http://\$upstream_app:8080;
|
||||
}
|
||||
EOF
|
||||
```
|
||||
|
||||
## 🔀 Alternatives
|
||||
|
||||
### Open Source
|
||||
- [[app-nginx-proxy-manager]] — GUI web pour Nginx (moins flexible mais plus accessible)
|
||||
- [[app-caddy]] — HTTPS automatique, config minimaliste
|
||||
- [[app-traefik]] — Auto-discovery Docker, idéal pour stacks conteneurisées
|
||||
- [[app-caddymanager]] — Web UI pour gérer plusieurs Caddy
|
||||
|
||||
### Comparaison SWAG vs NPM vs Caddy
|
||||
|
||||
| Critère | SWAG | NPM | Caddy |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| HTTPS auto | ✅ (Certbot) | ✅ (Let's Encrypt) | ✅ (Natif) |
|
||||
| Interface web | ❌ (fichiers) | ✅ (GUI) | ❌ (fichiers/API) |
|
||||
| Flexibilité Nginx | ✅ **Totale** | ⚠️ Moyenne | ❌ (Caddyfile) |
|
||||
| Fail2ban intégré | ✅ Natif | ❌ | ❌ |
|
||||
| DNS challenge | ✅ 14+ providers | ⚠️ Limité | ⚠️ Limité |
|
||||
| RAM consommée | ~30 MB | ~200 MB | ~30 MB |
|
||||
| Wildcard certs | ✅ | ⚠️ Plugin | ✅ |
|
||||
|
||||
### Propriétaires (ce que SWAG remplace)
|
||||
- **Cloudflare Tunnel** (en partie, pour la partie reverse proxy)
|
||||
- **Let's Encrypt + Nginx** manuel
|
||||
- **Cert-manager Kubernetes** (en setup simple)
|
||||
|
||||
## 🔒 Sécurité
|
||||
|
||||
- ✅ **Fail2ban** préinstallé avec jails SSH, Nginx auth, Nginx bot
|
||||
- ✅ **Modsecurity WAF** optionnel (config OWASP CRS dispo)
|
||||
- ✅ **HTTPS forcé** par défaut via HSTS
|
||||
- ✅ **DNS challenge** : pas besoin d'exposer le port 80
|
||||
- ✅ **CrowdSec** : support communautaire
|
||||
- ⚠️ **Pas d'auth centralisée** : à combiner avec [[app-authentik]] ou Authelia pour protéger les apps
|
||||
|
||||
## 📚 Ressources
|
||||
|
||||
- [Documentation officielle LinuxServer](https://docs.linuxserver.io/general/swag/)
|
||||
- [Liste des reverse-proxy-confs](https://github.com/linuxserver/reverse-proxy-confs)
|
||||
- [Communauté LinuxServer.io](https://discord.gg/linuxserver)
|
||||
- [Wiki selfh.st](https://selfh.st/apps/?tag=Reverse+Proxy)
|
||||
|
||||
## 🔗 Pages Liées
|
||||
|
||||
- [[cat-reverse-proxy]] — Catégorie Reverse Proxy
|
||||
- [[app-nginx-proxy-manager]] — Concurrent principal (GUI)
|
||||
- [[app-caddy]] — Alternative moderne
|
||||
- [[app-traefik]] — Concurrent Docker-native
|
||||
- [[comparatif-reverse-proxy]] — Comparaison détaillée
|
||||
- [[securisation-home-lab]] — Sécurité
|
||||
- [[tls-https]] — HTTPS / TLS
|
||||
Reference in New Issue
Block a user