Complete the French mirror of the remaining articles
This commit is contained in:
@@ -39,31 +39,38 @@ On peut aussi faire en sorte que les machines reliées au réseau virtuel partag
|
||||
Ainsi, sur le réseau virtuel, seules les machines directement reliées pourront dialoguer entre elle depuis ce réseau. Elles ne pourront pas dialoguer avec une machine situées sur un autre réseau local et non reliée au VPN.
|
||||
|
||||
## Côté serveur
|
||||
::note
|
||||
📋 __A vérifier au préalable :__
|
||||
::note{icon=""}
|
||||
📋 **À vérifier au préalable :**
|
||||
|
||||
- Vérifiez si le port `51820 UDP` estlibre sur votre serveur, et bien routé dans le NAT de la box `Source 51820 UDP -> Destination 51820 UDP -> Serveur`. En effet, votre serveur étant derrière votre box, le port de votre box doit etre joignable et rediriger vers le port de votre serveur connecté à votre VPN.
|
||||
- Vérifiez aussi que le port `51821 TCP` est libre sur le serveur pour accéder à la web ui.
|
||||
- Vérifiez que le port `51820 UDP` est libre sur votre serveur et correctement redirigé depuis votre box (`51820 UDP -> Serveur`).
|
||||
- Vérifiez que le port `51821 TCP` est libre pour l'interface web.
|
||||
::
|
||||
|
||||
::warning
|
||||
|
||||
__Attention__: Si votre IP n'est pas fixe, vous devez avoir un nom de domaine redirigeant vers l'IP à jour à l'aide d'un [DynDNS](https://en.wikipedia.org/wiki/Dynamic_DNS). Si votre opérateur internet utilise un [CGNAT](https://en.wikipedia.org/wiki/Carrier-grade_NAT), vous êtes cuit. Vous devrez utiliser un VPS externe pour ce tuto, et y connecter votre serveur comme client.
|
||||
__Attention__ : si votre IP n'est pas fixe, utilisez un service de DNS dynamique ([DynDNS](https://en.wikipedia.org/wiki/Dynamic_DNS)). Si votre opérateur utilise un [CGNAT](https://en.wikipedia.org/wiki/Carrier-grade_NAT), vous devrez passer par un VPS externe et y connecter votre serveur local comme client.
|
||||
::
|
||||
|
||||
Structure des dossiers
|
||||
### Structure des dossiers
|
||||
|
||||
```text [Arborescence]
|
||||
root
|
||||
└── docker
|
||||
└── wg-easy
|
||||
├── config
|
||||
│ └── etc_wireguard
|
||||
├── compose.yaml
|
||||
└── .env
|
||||
```
|
||||
::file-tree
|
||||
---
|
||||
tree:
|
||||
/:
|
||||
- srv:
|
||||
- docker:
|
||||
- wg-easy:
|
||||
- config:
|
||||
- etc_wireguard/
|
||||
- compose.yaml
|
||||
- .env
|
||||
---
|
||||
::
|
||||
|
||||
Ouvrez Dockge, cliquez sur `compose` et nommez la stack `wg_easy`.
|
||||
::steps{level="3"}
|
||||
### Déployer la stack
|
||||
|
||||
Ouvrez Dockge, cliquez sur **Compose**, et nommez la stack `wg_easy`.
|
||||
|
||||
Copiez la configuration suivante :
|
||||
|
||||
@@ -105,105 +112,125 @@ networks:
|
||||
config:
|
||||
- subnet: 10.42.42.0/24
|
||||
- subnet: fdcc:ad94:bacf:61a3::/64
|
||||
|
||||
```
|
||||
|
||||
::tip{icon=""}
|
||||
✨ __Astuce :__
|
||||
✨ **Astuce :**
|
||||
|
||||
- Vous pouvez personnaliser le port de wireguard et de la webui au lieu des ports par défaut.
|
||||
- Ajoutez le label de watchtower afin d'automatiser les mises à jour
|
||||
- Vous pouvez personnaliser les ports de WireGuard et de l'interface web.
|
||||
- Ajoutez un label Watchtower pour les mises à jour automatiques :
|
||||
|
||||
```yaml [compose.yaml]
|
||||
services:
|
||||
wg-easy:
|
||||
#...
|
||||
labels:
|
||||
|
||||
- com.centurylinklabs.watchtower.enable=true
|
||||
```
|
||||
```yaml [compose.yaml]
|
||||
---
|
||||
services:
|
||||
wg-easy:
|
||||
# ...
|
||||
labels:
|
||||
- com.centurylinklabs.watchtower.enable=true
|
||||
```
|
||||
::
|
||||
|
||||
Puis déployez la stack et connectez vous via le web en local sur `http://ipduserveur:51821`
|
||||
Déployez la stack et accédez à l'interface web locale sur `http://ipduserveur:51821`.
|
||||
|
||||
::caution
|
||||
|
||||
En cas d'échec, vérifiez les règles du pare-feu.
|
||||
En cas d'échec du déploiement, vérifiez les règles de votre pare-feu.
|
||||
::
|
||||
|
||||
Une fois connecté, la webui vous guidera :
|
||||
### Créer votre compte
|
||||
|
||||
- Pour créer votre compte et mot de passe d'accès
|
||||
- Pour configurer l'host à utiliser dans les fichiers de conf : utilisez l'IP publique de votre box internet (ou de votre VPS), ou le nom de domaine redirigeant vers l'IP de votre box, le cas écheant.
|
||||
Une fois connecté, suivez les instructions de l'interface web pour :
|
||||
|
||||
Une fois fait:
|
||||
- Créer votre compte administrateur et son mot de passe.
|
||||
- Renseigner le champ host (votre IP publique ou votre nom de domaine).
|
||||
|
||||
- Cliquez sur *« Administrator »* > *« Admin Panel »* > *« Config »*
|
||||
- Modifiez `Allowed IPs` en remplaçant `0.0.0.0/24` par `10.8.0.0/24`. Cela signifie que seules les requêtes IP de `10.8.0.1` à `10.8.0.255` seront redirigées dans le tunnel (split tunneling), laissant ainsi à l'appareil la possibilité d'etre connecté à d'autres tunnels, et à accéder à internet par lui meme. Si vous voulez tout rediriger dans le tunnel, y compris l'acces à internet, laissez `0.0.0.0/24`.
|
||||
- Supprimez l'IPv6, cela n'apportera que des problèmes.
|
||||
### Configurer le tunnel
|
||||
|
||||
### Recuperation des fichiers de conf
|
||||
Allez ensuite dans *Administrator → Admin Panel → Config* :
|
||||
|
||||
Afin de configurer les clients, vous devez télécharger les fichiers de conf générés par l'host :
|
||||
- Remplacez `Allowed IPs` `0.0.0.0/24` par `10.8.0.0/24` pour du **split tunneling**.
|
||||
- Supprimez l'IPv6 (il cause souvent des problèmes inutiles).
|
||||
|
||||
- Connectez vous via le web en local sur `http://ipduserveur:51821`
|
||||
- Créez un client
|
||||
- Modifiez le client en cliquant sur l'icone d'édition
|
||||
- Modifiez `Server Allowed IPs` en ajoutant `10.8.0.0/24`. Cela signifie que le serveur laissera vos clients accéder à toutes les IP `10.8.0.1` à `10.8.0.255` connectées à lui, et donc laissera les clients dialoguer entre eux si nécessaire. Si vous voulez laisser vos clients accéder à tous les appareils réseau connectés autour de votre serveur en local, mettez `0.0.0.0`, à condition de l'avoir fait précédemment dans la configuration générale.
|
||||
- (facultatif) Si votre client est un serveur qui doit être connecté en permanence, modifiez `Advanced` > `Persistent Keep Alive` en mettant `25`.
|
||||
- Sauvegardez
|
||||
- Téléchargez le fichier de conf
|
||||
- Renommez le en `wg0.conf`. (Si ce n'est pas le premier, incrémentez: `wg1.conf`, etc...)
|
||||
### Terminé !
|
||||
::
|
||||
|
||||
### Récupérer les fichiers de configuration
|
||||
|
||||
Pour configurer les clients :
|
||||
|
||||
::steps{level="4"}
|
||||
#### Accéder à l'interface web
|
||||
|
||||
Allez sur `http://ipduserveur:51821`.
|
||||
|
||||
#### Créer un nouveau client
|
||||
|
||||
#### Modifier le client
|
||||
|
||||
Ajoutez `10.8.0.0/24` dans `Server Allowed IPs`.
|
||||
|
||||
#### (Facultatif) Régler le Persistent Keep Alive
|
||||
|
||||
Mettez-le à `25` s'il s'agit d'un client connecté en permanence.
|
||||
|
||||
#### Enregistrer et renommer le fichier
|
||||
|
||||
Enregistrez, téléchargez, et renommez le fichier en `wg0.conf` (ou `wg1.conf`, etc.)
|
||||
|
||||
#### Terminé !
|
||||
::
|
||||
|
||||
## Sur le serveur client
|
||||
---
|
||||
::note
|
||||
|
||||
Nous partons du principe que le serveur client est un serveur linux avec Docker installé
|
||||
Nous partons du principe que le serveur client tourne sous Linux avec Docker installé.
|
||||
::
|
||||
|
||||
Structure des dossiers
|
||||
### Structure des dossiers
|
||||
|
||||
```text [Arborescence]
|
||||
root
|
||||
└── docker
|
||||
└── wireguard
|
||||
└── config
|
||||
│ └── wg_confs
|
||||
└── compose.yaml
|
||||
```
|
||||
|
||||
Creez le dossier `/srv/docker/wireguard/config/wg_confs`.
|
||||
|
||||
::tip{icon="" to="/serveex/files/file-browser-quantum"}
|
||||
✨ __Astuce pour les allergiques au terminal :__
|
||||
vous pouvez utiliser **File Browser Quantum** pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
|
||||
::file-tree
|
||||
---
|
||||
tree:
|
||||
/:
|
||||
- srv:
|
||||
- docker:
|
||||
- wireguard:
|
||||
- config:
|
||||
- wg_confs/
|
||||
- compose.yaml
|
||||
---
|
||||
::
|
||||
|
||||
::steps{level="3"}
|
||||
### Créer le dossier
|
||||
|
||||
```bash [Terminal]
|
||||
sudo mkdir -p /srv/docker/wireguard/config/wg_confs
|
||||
```
|
||||
|
||||
Créez le fichier `wg0.conf`
|
||||
::tip{icon="" to="/serveex/files/file-browser-quantum"}
|
||||
✨ **Astuce :** vous pouvez utiliser **File Browser Quantum** plutôt que le terminal pour modifier et téléverser vos fichiers.
|
||||
::
|
||||
|
||||
### Créer le fichier wg0.conf
|
||||
|
||||
```bash [Terminal]
|
||||
sudo nano /srv/docker/wireguard/config/wg_confs/wg0.conf
|
||||
```
|
||||
|
||||
Copiez-collez le contenu du `wg0.conf` que vous avez téléchargé, puis enregistrez avec :kbd{value="Ctrl+O"} et :kbd{value="Entrée"}, et quittez avec :kbd{value="Ctrl+X"}.
|
||||
Collez la configuration téléchargée, puis enregistrez avec :kbd{value="Ctrl+O"}, :kbd{value="Enter"}, et quittez avec :kbd{value="Ctrl+X"}.
|
||||
|
||||
::tip{icon=""}
|
||||
✨ __Astuce :__ Un autre moyen est de transférer le fichier par sftp dans le dossier `/home/nomdutilisateur` puis de le copier dans le bon dossier :
|
||||
|
||||
```bash [Terminal]
|
||||
sudo cp ~/wg0.conf /srv/docker/wireguard/config/wg_confs
|
||||
```
|
||||
✨ **Méthode alternative :** transférez le fichier en SFTP puis déplacez-le :
|
||||
```bash [Terminal]
|
||||
sudo cp ~/wg0.conf /srv/docker/wireguard/config/wg_confs
|
||||
```
|
||||
::
|
||||
|
||||
Creez le `compose.yaml` dans `/srv/docker/wireguard `:
|
||||
```bash [Terminal]
|
||||
sudo nano /srv/docker/wireguard/compose.yaml
|
||||
```
|
||||
Copiez la configuration ci-dessous
|
||||
### Créer le fichier compose
|
||||
|
||||
Créez le fichier `compose.yaml` dans `/srv/docker/wireguard` :
|
||||
|
||||
```yaml [compose.yaml]
|
||||
---
|
||||
services:
|
||||
@@ -213,37 +240,41 @@ services:
|
||||
network_mode: host
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_MODULE #optional
|
||||
- SYS_MODULE
|
||||
environment:
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- /srv/docker/wireguard/config:/config
|
||||
- /lib/modules:/lib/modules #optional
|
||||
- /lib/modules:/lib/modules
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
Enregistrez avec :kbd{value="Ctrl+O"} puis :kbd{value="Entrée"}, puis quittez avec :kbd{value="Ctrl+X"}.
|
||||
### Démarrer le conteneur
|
||||
|
||||
Lancez le conteneur :
|
||||
```bash [Terminal]
|
||||
cd /srv/docker/wireguard
|
||||
sudo docker compose up -d
|
||||
```
|
||||
|
||||
### Terminé !
|
||||
::
|
||||
|
||||
::note
|
||||
|
||||
A répéter pour chaque client
|
||||
Répétez cette installation pour chaque client.
|
||||
::
|
||||
|
||||
## Autres appareils
|
||||
|
||||
- **Téléphone :** installer wireguard et scanner le QR code via le webui (http://ipduserveur:51821)
|
||||
- **PC :** Installer wireguard client et mettre directement le fichier de conf téléchargé via le webui
|
||||
- **Mobile :** installez WireGuard et scannez le QR code depuis l'interface web (`http://ipduserveur:51821`)
|
||||
- **Ordinateur :** installez le client WireGuard et importez le fichier de configuration téléchargé.
|
||||
|
||||
::warning
|
||||
|
||||
__Attention :__ Si des machines clientes sont sur le meme réseau local que le serveur (derriere la box), éditez le fichier `wg0.conf` uploadé sur cette machine en changeant avec l'adresse locale du serveur : `Endpoint = ipduserveur:51820`{lang=properties}
|
||||
**Note :** si la machine cliente est sur le même réseau local que le serveur, modifiez le fichier `wg0.conf` pour utiliser l'IP locale du serveur :
|
||||
`Endpoint = ip-locale-du-serveur:51820`
|
||||
::
|
||||
|
||||
Et voilà ce que cela peut donner !
|
||||
Et voici le schéma final de l'installation :
|
||||
|
||||

|
||||
|
||||
@@ -6,14 +6,14 @@ description: Configurer SWAG comme reverse proxy avec SSL automatique, exposer v
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
|
||||
[Swag](https://docs.linuxserver.io/general/swag/) est le noyau de ce homelab. C'est un reverse proxy puissant qui permet d'exposer des services sur le net via un ou des noms de domaines, en se chargeant de l'émission des certificats SSL (pour garder des connexions chiffrées), du routage des requêtes et de la sécurisation des accès (par authent HTTP ou par SSO comme Authelia ou Authentik). Toute la doc nécessaire se [situe ici](https://docs.linuxserver.io/general/swag).
|
||||
[Swag](https://docs.linuxserver.io/general/swag/) est le noyau de ce homelab. C'est un reverse proxy puissant qui permet d'exposer des services sur internet via des noms de domaine, en se chargeant de l'émission des certificats SSL (pour garder des connexions chiffrées), du routage des requêtes et de la sécurisation des accès (par authentification HTTP ou par SSO comme Authelia ou Authentik). Toute la documentation nécessaire est [disponible ici](https://docs.linuxserver.io/general/swag).
|
||||
|
||||
::warning
|
||||
::warning{to="/serveex/core/wireguard"}
|
||||
|
||||
SWAG n'a pour utilité que l'exposition de vos services sur internet. C'est à dire, y accéder via une url publique du type `https://service.mondomaine.fr`. Si vous ne souhaitez pas exposer vos services et plutôt utiliser systématiquement un VPN pour vous connecter à vos services à distance, vous pouvez directement aller [par ici](/serveex/core/wireguard).
|
||||
SWAG n'a d'utilité que pour exposer vos services sur internet, c'est-à-dire y accéder via une URL publique du type `https://service.mondomaine.fr`. Si vous ne souhaitez pas exposer vos services et préférez systématiquement passer par un VPN pour vous connecter à distance, allez plutôt **par ici**.
|
||||
::
|
||||
|
||||
Ci-dessous, vous trouverez un exemple, exposant Dockge. Nous installerons SWAG, ainsi que le mod dbip servant à bloquer les connexions en fonction de la géoloc, ainsi que le mod dashboard qui permet de piloter le fonctionnement de swag, fail2ban et la géoloc.
|
||||
Ci-dessous, un exemple exposant Dockge. Nous installerons SWAG ainsi que le mod dbip servant à bloquer les connexions selon la géolocalisation, et le mod dashboard qui permet de piloter swag, fail2ban et la géolocalisation.
|
||||
|
||||
**Principe d'un reverse proxy et application dans notre cas :**
|
||||
|
||||
@@ -26,82 +26,83 @@ Ci-dessous, vous trouverez un exemple, exposant Dockge. Nous installerons SWAG,
|
||||
Ce tutoriel part du principe que vous avez un nom de domaine qui pointe vers votre serveur, et que votre box a une règle NAT qui redirige le port `443` vers l'adresse IP et le port `443` de votre serveur. Le nom de domaine d'exemple sera `mondomaine.fr`.
|
||||
::
|
||||
|
||||
Plan des fichiers que nous allons modifier :
|
||||
::file-tree
|
||||
---
|
||||
label: Structure de fichiers à modifier
|
||||
tree:
|
||||
/:
|
||||
- srv:
|
||||
- docker:
|
||||
- swag:
|
||||
- config:
|
||||
- dns-conf:
|
||||
- ovh.ini
|
||||
- nginx:
|
||||
- dbip.conf
|
||||
- nginx.conf
|
||||
- proxy-confs:
|
||||
- dockge.subdomain.conf
|
||||
- compose.yml
|
||||
- .env
|
||||
---
|
||||
::
|
||||
|
||||
```text [Arborescence]
|
||||
root
|
||||
└── docker
|
||||
└── swag
|
||||
├── config
|
||||
│ ├── dns-conf
|
||||
│ │ └── ovh.ini
|
||||
│ └── nginx
|
||||
│ ├── dbip.conf
|
||||
│ ├── nginx.conf
|
||||
│ └── proxy-confs
|
||||
│ └── dockge.subdomain.conf
|
||||
├── compose.yml
|
||||
└── .env
|
||||
```
|
||||
::steps{level="3"}
|
||||
### Déployer la stack
|
||||
|
||||
Ouvrez Dockge dans votre navigateur, cliquez sur `compose`, nommez la stack `swag` et copiez la conf ci-dessous
|
||||
Ouvrez Dockge dans votre navigateur, cliquez sur `compose`, nommez la stack `swag`, et copiez la configuration suivante :
|
||||
|
||||
``` yaml
|
||||
```yaml [compose.yaml]
|
||||
---
|
||||
services:
|
||||
swag:
|
||||
image: lscr.io/linuxserver/swag:latest
|
||||
container_name: swag
|
||||
cap_add:
|
||||
|
||||
- NET_ADMIN
|
||||
env_file:
|
||||
|
||||
- .env
|
||||
environment:
|
||||
|
||||
- TZ=Europe/Paris
|
||||
- URL=${DOMAIN}
|
||||
- EXTRA_DOMAINS=${DOMAINS}
|
||||
- SUBDOMAINS=wildcard # couvre les sous-domaines
|
||||
- SUBDOMAINS=wildcard
|
||||
- VALIDATION=dns
|
||||
- DNSPLUGIN=${PLUGIN}
|
||||
- EMAIL=${EMAIL}
|
||||
- DOCKER_MODS=linuxserver/mods:swag-dbip|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-auto-reload
|
||||
volumes:
|
||||
|
||||
- /srv/docker/swag/config:/config
|
||||
ports:
|
||||
|
||||
- 80:80
|
||||
- 443:443
|
||||
- 81:81 # Nécessaire pour le dashboard
|
||||
- 81:81
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
|
||||
- swag
|
||||
|
||||
networks:
|
||||
swag:
|
||||
name: swag_default
|
||||
|
||||
```
|
||||
|
||||
::tip{icon=""}
|
||||
✨ __Astuce :__
|
||||
ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises à jour
|
||||
ajoutez le label watchtower à chaque conteneur pour activer les mises à jour automatiques
|
||||
|
||||
```yaml [compose.yaml]
|
||||
services:
|
||||
swag:
|
||||
#...
|
||||
labels:
|
||||
|
||||
- com.centurylinklabs.watchtower.enable=true
|
||||
```
|
||||
```yaml [compose.yaml]
|
||||
---
|
||||
services:
|
||||
swag:
|
||||
#...
|
||||
labels:
|
||||
- com.centurylinklabs.watchtower.enable=true
|
||||
```
|
||||
::
|
||||
|
||||
Puis dans le `.env` :
|
||||
### Renseigner vos variables d'environnement
|
||||
|
||||
Puis dans le fichier `.env` :
|
||||
|
||||
```properties [.env]
|
||||
DOMAIN=
|
||||
@@ -110,29 +111,31 @@ EMAIL=
|
||||
PLUGIN=
|
||||
```
|
||||
|
||||
Remplissez comme suit
|
||||
Remplissez les variables comme suit :
|
||||
|
||||
| Propriété | Valeur | Exemples |
|
||||
|--------------------------|---------------------------------------------------------------------------|-----------------------|
|
||||
| ` DOMAIN`{lang=properties} | Votre domaine (cela couvre aussi tous les sous-domaines) | `mondomaine.fr` |
|
||||
| ` DOMAINS`{lang=properties} | Vos éventuels autres domaines | `monsecondomaine.fr` |
|
||||
| ` EMAIL`{lang=properties} | Votre email, pour générer le certificat | `votre@email.fr` |
|
||||
| ` PLUGIN`{lang=properties} | Le plugin pour générer le certificat, lié à votre [fournisseur de zone DNS](https://docs.linuxserver.io/general/swag/) | `ovh`<br>`cloudflare` |
|
||||
| Propriété | Valeur | Exemples |
|
||||
|-------------------------|---------------------------------------------------------------------------|-----------------------|
|
||||
| `DOMAIN` | Votre domaine (cela couvre aussi tous les sous-domaines) | `mondomaine.fr` |
|
||||
| `DOMAINS` | Vos éventuels autres domaines | `monsecondomaine.fr` |
|
||||
| `EMAIL` | Votre email, pour générer le certificat | `votre@email.fr` |
|
||||
| `PLUGIN` | Le plugin pour générer le certificat, lié à votre [fournisseur de zone DNS](https://docs.linuxserver.io/general/swag/) | `ovh`<br>`cloudflare` |
|
||||
|
||||
Ici nous partons du principe que votre zone DNS est chez OVH. Déployez la stack une premiere fois. Dans les logs vous verrez qu'il n'arrivera pas à créer de certificat SSL car le fichier ovh.ini renvoi une erreur. Arretez la stack.
|
||||
### Configurer le plugin DNS OVH
|
||||
|
||||
En CLI, allez dans le dossier dns-conf et éditez le fichier `ovh.ini` :
|
||||
En partant du principe que votre zone DNS est gérée par OVH (sinon, cherchez votre [fournisseur](https://github.com/linuxserver/docker-swag/tree/master/root/defaults/dns-conf)), déployez la stack une première fois. Les logs afficheront un échec de création du certificat SSL faute de configuration `ovh.ini`. Arrêtez la stack.
|
||||
|
||||
En ligne de commande, allez dans le dossier dns-conf et modifiez le fichier `ovh.ini` :
|
||||
|
||||
::tip{icon="" to="/serveex/files/file-browser-quantum"}
|
||||
✨ __Astuce pour les allergiques au terminal :__
|
||||
vous pouvez utiliser **File Browser Quantum** pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
|
||||
vous pouvez utiliser **File Browser Quantum** pour naviguer et modifier vos fichiers plutôt que des commandes dans le terminal.
|
||||
::
|
||||
|
||||
```bash [Terminal]
|
||||
sudo nano /srv/docker/swag/config/dns-conf/ovh.ini
|
||||
```
|
||||
|
||||
Voici ce qui s'affiche :
|
||||
Vous devriez voir :
|
||||
|
||||
```properties [ovh.ini]
|
||||
# Instructions: https://github.com/certbot/certbot/blob/master/certbot-dns-ovh/certbot_dns_ovh/__init__.py#L20
|
||||
@@ -142,53 +145,62 @@ dns_ovh_application_key =
|
||||
dns_ovh_application_secret =
|
||||
dns_ovh_consumer_key =
|
||||
```
|
||||
Authentifiez vous et créez [votre token ici](https://www.ovh.com/auth/?onsuccess=https%3A%2F%2Fwww.ovh.com%2Fauth%2Fapi%2FcreateToken).
|
||||
|
||||
Les permissions à configurer sont les suivantes :
|
||||
Authentifiez-vous et créez [votre token ici](https://www.ovh.com/auth/?onsuccess=https%3A%2F%2Fwww.ovh.com%2Fauth%2Fapi%2FcreateToken).
|
||||
|
||||
* ``GET /domain/zone/*``
|
||||
* ``PUT /domain/zone/*``
|
||||
* ``POST /domain/zone/*``
|
||||
* ``DELETE /domain/zone/*``
|
||||
Donnez-lui les permissions suivantes :
|
||||
|
||||
Notez les 3 clés temporairement et renseignez le fichier `ovh.ini`. (avec nano, écrivez directement, puis :kbd{value="Ctrl+O"}, :kbd{value="Entrée"}, :kbd{value="Ctrl+X"} pour sauvegarder et quitter)
|
||||
* `GET /domain/zone/*`
|
||||
* `PUT /domain/zone/*`
|
||||
* `POST /domain/zone/*`
|
||||
* `DELETE /domain/zone/*`
|
||||
|
||||
Sauvegardez et quittez le fichier.
|
||||
Notez temporairement les 3 clés et saisissez-les dans `ovh.ini`. (Dans nano, tapez directement, puis :kbd{value="Ctrl+O"}, :kbd{value="Enter"}, :kbd{value="Ctrl+X"} pour enregistrer et quitter)
|
||||
|
||||
Configurez aussi swag pour qu'il accède à DBIP, le module de gestion des accès par géolocalisation /Ouvrez le fichier nginx.conf
|
||||
Enregistrez avec :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"}, et quittez avec :kbd{value="Ctrl+X"}.
|
||||
|
||||
### Activer DBIP dans nginx.conf
|
||||
|
||||
Configurons maintenant swag pour accéder à DBIP, le module de contrôle d'accès par géolocalisation. Ouvrez le fichier `nginx.conf` :
|
||||
|
||||
```bash [Terminal]
|
||||
sudo nano /srv/docker/swag/config/nginx/nginx.conf
|
||||
```
|
||||
|
||||
Et ajoutez la ligne suivante en dessous de la section `http` :
|
||||
Ajoutez la ligne suivante sous la section `http` :
|
||||
|
||||
```nginx [nginx.conf]
|
||||
include /config/nginx/dbip.conf
|
||||
include /config/nginx/dbip.conf;
|
||||
```
|
||||
|
||||
Relancez la stack dans Dockge, cette fois le certificat SSL est bien émis ! Vérifiez dans les logs que le serveur est bien ready.
|
||||
Redémarrez la stack dans Dockge. Cette fois, le certificat SSL devrait être généré avec succès ! Vérifiez les logs pour confirmer que le serveur est prêt.
|
||||
|
||||
### Terminé !
|
||||
::
|
||||
|
||||
## Dashboard
|
||||
Accedez au dashboard via votre réseau local en tapant `http//ipdevotreserveur:81`
|
||||
A gauche, vous trouverez la liste des services actuellement "proxied" (aucun pour le moment). A droite, les IP bannies. En-dessous, une liste d'indicateurs. pour le détail, [c'est par ici](https://www.linuxserver.io/blog/introducing-swag-dashboard).
|
||||
Accédez au tableau de bord en local sur `http://ipdevotreserveur:81`
|
||||
Sur la gauche, vous verrez la liste des services actuellement « proxifiés » (aucun pour l'instant). Sur la droite, la liste des IP bannies. En dessous, différents indicateurs. Pour plus de détails, [cliquez ici](https://www.linuxserver.io/blog/introducing-swag-dashboard).
|
||||
|
||||

|
||||
|
||||
## DBIP
|
||||
DBIP permet de bloquer les connexions en fonction des pays. Il s'appuie sur le fichier de config nommé `dbip.conf` dans `/srv/docker/swag/config/nginx`. [Plus d'info ici](https://virtualize.link/secure/).
|
||||
DBIP permet de bloquer les connexions selon les pays. Il s'appuie sur le fichier de configuration nommé `dbip.conf` situé dans `/srv/docker/swag/config/nginx`. [Plus d'infos ici](https://virtualize.link/secure/).
|
||||
|
||||
Dans cet exemple, nous allons le configurer pour bloquer une liste de pays connus pour etre à l'origine de la plupart des connexions malveillantes. Nous allons également configurer une variable au cas où nous souhaiterions permettre au réseau interne du serveur, au réseau local de votre box ainsi qu'à un éventuel vpn en 10.x.x.x de pouvoir accéder à vos services, mais pas directement à internet.
|
||||
Dans cet exemple, nous le configurerons pour bloquer une liste de pays connus pour être à l'origine de la majorité du trafic malveillant. Nous configurerons aussi une variable pour autoriser le trafic interne au serveur, le réseau local de votre box et un éventuel VPN en 10.x.x.x à accéder à vos services, mais pas l'internet ouvert.
|
||||
|
||||
La configuration est activable ou désactivable pour chaque service qui sera proxied (voir exemple de Dockge plus bas).
|
||||
Cette configuration peut être activée ou désactivée service par service (voir l'exemple Dockge plus bas).
|
||||
|
||||
Ouvrez `dbip.conf` :
|
||||
::steps{level="3"}
|
||||
### Ouvrir dbip.conf
|
||||
|
||||
```bash [Terminal]
|
||||
sudo nano /srv/docker/swag/config/nginx/dbip.conf
|
||||
```
|
||||
|
||||
Faites vos modifications ([voir documentation](https://github.com/linuxserver/docker-mods/tree/swag-dbip)), ou prenez l'exemple suivant:
|
||||
### Faire vos modifications
|
||||
|
||||
Reportez-vous à la [documentation](https://github.com/linuxserver/docker-mods/tree/swag-dbip), ou utilisez l'exemple suivant :
|
||||
|
||||
```nginx [dbip.conf]
|
||||
geoip2 /config/geoip2db/dbip-country-lite.mmdb {
|
||||
@@ -200,33 +212,30 @@ geoip2 /config/geoip2db/dbip-country-lite.mmdb {
|
||||
# Country Codes: https://en.wikipedia.org/wiki/ISO_3166-2
|
||||
|
||||
map $geoip2_data_country_iso_code $geo-whitelist {
|
||||
# default yes;
|
||||
# Example for whitelisting a country, comment out 'default yes;' above and uncomment 'default no;' and the whitelisted country below
|
||||
default no;
|
||||
FR yes;
|
||||
}
|
||||
|
||||
map $geoip2_data_country_iso_code $geo-blacklist {
|
||||
default yes;
|
||||
# Example for blacklisting a country, uncomment the blacklisted country below
|
||||
CN no; #China
|
||||
RU no; #Russia
|
||||
CN no; #Chine
|
||||
RU no; #Russie
|
||||
HK no; #Hong Kong
|
||||
IN no; #India
|
||||
IN no; #Inde
|
||||
IR no; #Iran
|
||||
VN no; #Vietnam
|
||||
TR no; #Turkey
|
||||
EG no; #Egypt
|
||||
MX no; #Mexico
|
||||
JP no; #Japan
|
||||
KR no; #South Korea
|
||||
KP no; #North Korea
|
||||
PE no; #Peru
|
||||
BR no; #Brazil
|
||||
TR no; #Turquie
|
||||
EG no; #Égypte
|
||||
MX no; #Mexique
|
||||
JP no; #Japon
|
||||
KR no; #Corée du Sud
|
||||
KP no; #Corée du Nord
|
||||
PE no; #Pérou
|
||||
BR no; #Brésil
|
||||
UA no; #Ukraine
|
||||
ID no; #Indonesia
|
||||
TH no; #Thailand
|
||||
}
|
||||
ID no; #Indonésie
|
||||
TH no; #Thaïlande
|
||||
}
|
||||
|
||||
geo $lan-ip {
|
||||
default no;
|
||||
@@ -237,9 +246,14 @@ geo $lan-ip {
|
||||
}
|
||||
```
|
||||
|
||||
Sauvegardez et quittez. Redémarrez la stack.
|
||||
### Enregistrer et redémarrer
|
||||
|
||||
Dans les fichiers de conf des domaines (section suivante), vous pourrez activer ou désactiver la whitelist ou la blacklist ([voir documentation ici](https://www.forum-nas.fr/threads/tuto-installer-swag-en-docker-reverse-proxy.15057/)). Dans notre cas, la whitelist laisse uniquement passer les requêtes françaises. La blacklist laisse passer tout le monde sauf la liste de pays mentionnée. On utilisera donc la blacklist, sur ce modèle :
|
||||
Enregistrez et fermez le fichier, puis redémarrez la stack.
|
||||
|
||||
### Terminé !
|
||||
::
|
||||
|
||||
Dans les fichiers de configuration de domaine (voir la section suivante), vous pouvez activer ou désactiver la whitelist ou la blacklist ([voir la documentation ici](https://www.forum-nas.fr/threads/tuto-installer-swag-en-docker-reverse-proxy.15057/)). Dans notre cas, la whitelist n'autorise que les requêtes françaises. La blacklist ne bloque que les pays listés. Nous utiliserons la blacklist, comme ceci :
|
||||
|
||||
```nginx [some-app.subdomain.conf]{11}
|
||||
server {
|
||||
@@ -266,26 +280,29 @@ server {
|
||||
}
|
||||
```
|
||||
|
||||
## Exposer Dockge
|
||||
::note
|
||||
📋 __Prérequis :__ <br/></br>
|
||||
Nous partons du principe que vous avez créé dans votre [zone DNS](/general/networking/dns) un sous domaine du type `dockge.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/security/cloudflare), que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/general/networking/nat).
|
||||
## (Facultatif) Exposer Dockge
|
||||
::note{icon=""}
|
||||
📋 __Au préalable :__ <br/><br/>
|
||||
Nous partons du principe que vous avez créé un sous-domaine du type `dockge.mondomaine.fr` dans votre [zone DNS](/general/networking/dns), avec un `CNAME` pointant vers `mondomaine.fr`. À moins d'utiliser [Cloudflare Zero Trust](/serveex/security/cloudflare), nous partons aussi du principe que vous avez redirigé le port `443` de votre box vers le `443` du serveur dans [vos règles NAT](/general/networking/nat).
|
||||
::
|
||||
|
||||
Il s'agit maintenant d'exposer Dockge sur internet, afin de pouvoir y accéder et gérer vos conteneurs sans que vous soyez chez vous. Pour cela, nous partons du principe que vous avez configuré un sous domaine `dockge.mondomaine.fr` dans votre zone DNS dont le `CNAME` pointe sur `mondomaine.fr`.
|
||||
Il est temps d'exposer Dockge sur internet pour accéder à vos conteneurs et les gérer à distance. Nous partons du principe que vous avez configuré le sous-domaine `dockge.mondomaine.fr` avec un `CNAME` pointant vers `mondomaine.fr`.
|
||||
|
||||
::warning
|
||||
|
||||
Dockge n'utilise pas d'authentification multifacteur. Exposer Dockge sur internet pourrait compromettre les machines auxquelles il est relié. Ne le faite que si vous utilisez un systeme d'authentification multifacteur comme [Authentik](/serveex/advanced/authentik). Sinon, n'exposez pas avec SWAG et utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard).
|
||||
Dockge ne gère pas l'authentification multifacteur. L'exposer en ligne pourrait compromettre toutes les machines reliées. Ne le faites que si vous utilisez une solution MFA comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard).
|
||||
::
|
||||
|
||||
Ouvrez le fichier dockge.subdomain.conf :
|
||||
::steps{level="3"}
|
||||
### Créer le fichier subdomain.conf
|
||||
|
||||
Ouvrez le fichier `dockge.subdomain.conf` :
|
||||
|
||||
```bash [Terminal]
|
||||
sudo nano /srv/docker/swag/config/nginx/proxy-confs/dockge.subdomain.conf
|
||||
```
|
||||
|
||||
Paramétrez le comme tel :
|
||||
Configurez-le comme ceci :
|
||||
|
||||
```nginx [dockge.subdomain.conf]
|
||||
## Version 2023/12/19
|
||||
@@ -293,9 +310,8 @@ Paramétrez le comme tel :
|
||||
server {
|
||||
listen 443 ssl;
|
||||
listen [::]:443 ssl;
|
||||
|
||||
# indique que le sous-domaine doit être dirigé
|
||||
server_name dockge.*;
|
||||
|
||||
server_name dockge.*; # définit le sous-domaine à rediriger
|
||||
|
||||
include /config/nginx/ssl.conf;
|
||||
|
||||
@@ -303,91 +319,86 @@ server {
|
||||
|
||||
#if ($lan-ip = yes) { set $geo-whitelist yes; }
|
||||
#if ($geo-whitelist = no) { return 404; }
|
||||
# indique que les pays dans la blacklist sont intedits
|
||||
if ($geo-blacklist = no) { return 404; }
|
||||
if ($geo-blacklist = no) { return 404; } # tous les pays de la blacklist sont interdits
|
||||
|
||||
# enable for ldap auth (requires ldap-location.conf in the location block)
|
||||
#include /config/nginx/ldap-server.conf;
|
||||
|
||||
# enable for Authelia (requires authelia-location.conf in the location block)
|
||||
#include /config/nginx/authelia-server.conf;
|
||||
|
||||
# enable for Authentik (requires authentik-location.conf in the location block)
|
||||
#include /config/nginx/authentik-server.conf;
|
||||
|
||||
location / {
|
||||
# enable the next two lines for http auth
|
||||
#auth_basic "Restricted";
|
||||
#auth_basic_user_file /config/nginx/.htpasswd;
|
||||
|
||||
# enable for ldap auth (requires ldap-server.conf in the server block)
|
||||
#include /config/nginx/ldap-location.conf;
|
||||
|
||||
# enable for Authelia (requires authelia-server.conf in the server block)
|
||||
#include /config/nginx/authelia-location.conf;
|
||||
|
||||
# enable for Authentik (requires authentik-server.conf in the server block)
|
||||
#include /config/nginx/authentik-location.conf;
|
||||
|
||||
include /config/nginx/proxy.conf;
|
||||
include /config/nginx/resolver.conf;
|
||||
|
||||
set $upstream_app dockge; # Nom du conteneur
|
||||
set $upstream_port 5001; # Port interne conteneur
|
||||
|
||||
set $upstream_app dockge; # nom du conteneur
|
||||
set $upstream_port 5001; # port interne du conteneur (pas le port exposé)
|
||||
set $upstream_proto http;
|
||||
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
|
||||
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Sauvegardez et quittez. La configuration va se mettre à jour en quelques secondes.
|
||||
Enregistrez et quittez. La configuration se met à jour en quelques secondes.
|
||||
|
||||
::note
|
||||
|
||||
Par défaut, SWAG ne connait pas le nom "dockge". Pour qu'il puisse y accéder, vous devez rajouter le réseau de dockge dans le `compose.yml` de SWAG.
|
||||
Par défaut, SWAG ne connaît pas le nom « dockge ». Vous devrez ajouter le réseau de Dockge au `compose.yml` de SWAG.
|
||||
::
|
||||
|
||||
Rendez-vous sur la stack de SWAG, puis cliquez sur `éditer`, et ajouter le réseau de dockge dans le fichier de conf sur ce modele (les champs `networks`) :
|
||||
### Ajouter le réseau de Dockge à SWAG
|
||||
|
||||
Allez sur la stack SWAG, cliquez sur `edit`, et modifiez le fichier de configuration comme ceci (notez la section `networks`) :
|
||||
|
||||
```yaml [compose.yaml]
|
||||
---
|
||||
services:
|
||||
swag:
|
||||
container_name: #...
|
||||
# ...
|
||||
networks: # Relie le conteneur au réseau custom
|
||||
container_name: #...
|
||||
# ...
|
||||
networks: # Relie le conteneur au réseau personnalisé
|
||||
|
||||
- dockge # Nom du réseau déclaré dans la stack
|
||||
- dockge # Nom du réseau tel que défini dans la stack
|
||||
|
||||
networks: # Définit le réseau custom
|
||||
#...
|
||||
dockge: # Nom du réseau déclaré dans la stack
|
||||
name: dockge_default # Nom véritable du réseau externe
|
||||
external: true # Précise que c'est un réseau à rechercher en externe
|
||||
networks: # Définit le réseau personnalisé
|
||||
# ...
|
||||
dockge: # Nom du réseau tel que défini dans la stack
|
||||
name: dockge_default # Vrai nom du réseau externe
|
||||
external: true
|
||||
```
|
||||
|
||||
::note
|
||||
|
||||
Ici nous partons du principe que le nom du réseau de dockge est `dockge_default`. Vous pouvez vérifier que la connexion est opérationnelle en visitant le dashboard de SWAG en tapant `http://ipduserveur:81`.
|
||||
Nous partons du principe que le réseau de Dockge s'appelle `dockge_default`. Vous pouvez vérifier que tout fonctionne en consultant le tableau de bord de SWAG sur `http://ipdevotreserveur:81`.
|
||||
::
|
||||
|
||||
Déployez à nouveau la stack de SWAG.
|
||||
Redéployez la stack SWAG.
|
||||
|
||||
Patientez puis tapez `https://dockge.mondomaine.fr` dans votre navigateur, vous devriez être redirigé vers dockge. Vous pouvez vérifier le statut du service via le dashboard (depuis votre réseau local, http://ipdevotreserveur:81)
|
||||
### Visiter votre nouveau sous-domaine
|
||||
|
||||
Patientez un instant, puis visitez `https://dockge.mondomaine.fr` dans votre navigateur. Vous devriez être redirigé vers Dockge. Vous pouvez aussi vérifier l'état du service depuis le tableau de bord (`http://ipdevotreserveur:81` sur votre réseau local).
|
||||
|
||||
### Terminé !
|
||||
::
|
||||
|
||||
## Exposer un autre service avec SWAG
|
||||
Swag dispose de modeles pour la plupart des services connus, nommés `nomduservice.subdomain.conf.sample`. Il vous suffit de créer le sous-domaine dans votre zone DNS chez votre registrar (comme OVH par exemple), de le faire pointer sur votre domaine principale (via un enregistrement CNAME) et de copier en renommant `nomduservice.subdomain.conf.sample` en `nomduservice.subdomain.conf`.
|
||||
SWAG inclut des modèles pour la plupart des services connus, nommés `nomduservice.subdomain.conf.sample`. Il suffit de créer le sous-domaine dans la zone DNS de votre registrar (comme OVH), de le faire pointer vers votre domaine principal via un CNAME, puis de copier et renommer le fichier d'exemple :
|
||||
|
||||
```bash [Terminal]
|
||||
cd /srv/docker/swag/config/proxy-confs
|
||||
sudo cp nomduservice.subdomain.conf.sample nomduservice.subdomain.conf
|
||||
```
|
||||
|
||||
::caution
|
||||
|
||||
- __Si le sous domaine n'est pas redirigé correctement__
|
||||
- éditez le fichier et vérifiez notamment le nom du conteneur dans `set $upstream_app nomduconteneur;`{lang=nginx}
|
||||
|
||||
- vérifiez que vous avez bien ajouté le réseau du conteneur dans le `compose.yml` de SWAG.
|
||||
__Si le sous-domaine n'est pas redirigé correctement__
|
||||
- Ouvrez le fichier et vérifiez le nom du conteneur dans `set $upstream_app nomduconteneur;`{lang=nginx}
|
||||
- Assurez-vous d'avoir ajouté le réseau du conteneur dans le `compose.yml` de SWAG
|
||||
::
|
||||
|
||||
Vous pouvez aussi choisir le sous-domaine en changeant la variable `server_name votresousdomaine.*;`{lang=nginx} et en renommant le fichier `votresousdomaine.subdomain.conf`.
|
||||
Vous pouvez aussi personnaliser le sous-domaine en modifiant `server_name votresousdomaine.*;`{lang=nginx} et en renommant le fichier en `votresousdomaine.subdomain.conf`.
|
||||
|
||||
Reference in New Issue
Block a user