From 0f070de51a804b7172cc72761b6e6a278306b810 Mon Sep 17 00:00:00 2001 From: Djeex Date: Mon, 7 Sep 2026 20:54:58 +0200 Subject: [PATCH 1/7] Fix content audit findings across Serveex, Nonsense and recycled guides Co-Authored-By: Claude Sonnet 5 --- content/en/3.serveex/2.core/4.swag.md | 2 +- content/en/3.serveex/4.monitoring/5.upsnap.md | 23 ++++------ content/en/3.serveex/5.media/2.qbittorrent.md | 8 ++-- content/en/3.serveex/5.media/3.servarr.md | 2 +- .../en/3.serveex/91.advanced/1.authentik.md | 6 +-- .../6.recycled/2.deprecated/2.file-browser.md | 2 +- .../en/6.recycled/3.alternatives/1.plex.md | 2 +- .../3.alternatives/2.qbittorrent-for-plex.md | 8 ++-- .../3.alternatives/3.servarr-for-plex.md | 4 +- .../en/6.recycled/3.alternatives/4.gitea.md | 2 +- content/fr/2.general/3.storage/2.zfs.md | 4 +- content/fr/2.general/5.linux/3.handy-tools.md | 2 +- content/fr/3.serveex/4.monitoring/5.upsnap.md | 23 ++++------ content/fr/3.serveex/5.media/2.qbittorrent.md | 8 ++-- content/fr/3.serveex/5.media/3.servarr.md | 2 +- .../fr/3.serveex/91.advanced/1.authentik.md | 2 +- .../fr/5.nonsense/2.python/2.adguard-cidre.md | 4 +- content/fr/5.nonsense/3.bash/2.luks-backup.md | 42 +++++++++---------- content/fr/5.nonsense/3.bash/3.socat-proxy.md | 4 +- .../6.recycled/2.deprecated/2.file-browser.md | 2 +- .../fr/6.recycled/3.alternatives/1.plex.md | 2 +- .../3.alternatives/2.qbittorrent-for-plex.md | 8 ++-- .../3.alternatives/3.servarr-for-plex.md | 4 +- .../fr/6.recycled/3.alternatives/4.gitea.md | 2 +- content/fr/index.md | 2 +- 25 files changed, 78 insertions(+), 92 deletions(-) diff --git a/content/en/3.serveex/2.core/4.swag.md b/content/en/3.serveex/2.core/4.swag.md index 43657f8..617897d 100644 --- a/content/en/3.serveex/2.core/4.swag.md +++ b/content/en/3.serveex/2.core/4.swag.md @@ -13,7 +13,7 @@ description: Set up SWAG as a reverse proxy with automatic SSL, expose your serv SWAG is only useful for exposing your services to the internet, i.e. accessing them via a public URL like `https://service.mydomain.com`. If you don’t want to expose your services and prefer to always use a VPN to connect remotely, you can go **here instead**. :: -Below is an example exposing Dockge. We will install SWAG along with the dbip mod for geolocation-based blocking, and the dashboard mod for managing swag, fail2ban, and geolocation. +Below is an example exposing Dockge. We will install SWAG along with the dbip mod for geolocation-based blocking, the dashboard mod for managing swag, fail2ban, and geolocation, and the auto-reload mod, which automatically reloads nginx whenever a config file changes, without having to restart the container. **Reverse proxy principle and its application in our case:** diff --git a/content/en/3.serveex/4.monitoring/5.upsnap.md b/content/en/3.serveex/4.monitoring/5.upsnap.md index d097470..9ebba49 100644 --- a/content/en/3.serveex/4.monitoring/5.upsnap.md +++ b/content/en/3.serveex/4.monitoring/5.upsnap.md @@ -101,32 +101,25 @@ We assume you've created a subdomain in your [DNS zone](/general/networking/dns) :: ::steps{level="3"} -### Add UpSnap's network to SWAG +### Make the host reachable from SWAG -Go to Dockge, and edit the SWAG compose by adding the UpSnap network: +UpSnap runs with `network_mode: host` (needed for Wake-on-LAN broadcasts and network scanning to work reliably), so it never joins a Docker network SWAG could attach to like other stacks. Instead, give SWAG a way to reach the host itself: ```yaml [compose.yaml] --- services: swag: container_name: # ... - # ... - networks: # Connects the container to the custom network - # ... - - upsnap # Network name declared in the stack - -networks: # Defines the custom network - # ... - upsnap: # Network name declared in the stack - name: upsnap_default # Actual name of the external network - external: true # Indicates it's an external network + # ... + extra_hosts: + - "host.docker.internal:host-gateway" # resolves to the Docker host's own IP ``` Restart the stack by clicking "deploy" and wait for SWAG to be fully operational. ::note -Here we assume the network name for upsnap is `upsnap_default`. You can check the connection in the SWAG dashboard at `http://yourserverip:81`. +`host-gateway` is a special value Docker resolves to the host machine's IP automatically, so this works regardless of your server's actual address. :: ### Create the subdomain.conf file @@ -184,7 +177,7 @@ server { include /config/nginx/proxy.conf; include /config/nginx/resolver.conf; - set $upstream_app upsnap; + set $upstream_app host.docker.internal; set $upstream_port 8095; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; @@ -262,7 +255,7 @@ server { include /config/nginx/proxy.conf; include /config/nginx/resolver.conf; - set $upstream_app upsnap; + set $upstream_app host.docker.internal; set $upstream_port 8095; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; diff --git a/content/en/3.serveex/5.media/2.qbittorrent.md b/content/en/3.serveex/5.media/2.qbittorrent.md index f78a697..9610d74 100644 --- a/content/en/3.serveex/5.media/2.qbittorrent.md +++ b/content/en/3.serveex/5.media/2.qbittorrent.md @@ -47,7 +47,7 @@ tree: If not already done, create the `downloads` folder under `/media`: ```bash [Terminal] -mkdir -P /media/downloads +mkdir -p /media/downloads ``` ### Deploy the stack @@ -88,7 +88,7 @@ services: devices: - /dev/net/tun:/dev/net/tun ports: - - ${UI_PORT}:5695 # Port de la web-ui + - ${UI_PORT}:${UI_PORT} # Port de la web-ui - 8000:8000 # Port de controle de Gluetun cap_add: - NET_ADMIN @@ -321,7 +321,7 @@ server { include /config/nginx/proxy.conf; include /config/nginx/resolver.conf; set $upstream_app gluetun; - set $upstream_port 5555; + set $upstream_port 5695; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; @@ -399,7 +399,7 @@ server { include /config/nginx/proxy.conf; include /config/nginx/resolver.conf; set $upstream_app gluetun; - set $upstream_port 5555; + set $upstream_port 5695; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; diff --git a/content/en/3.serveex/5.media/3.servarr.md b/content/en/3.serveex/5.media/3.servarr.md index c0e222d..db9d6cd 100644 --- a/content/en/3.serveex/5.media/3.servarr.md +++ b/content/en/3.serveex/5.media/3.servarr.md @@ -394,7 +394,7 @@ Seerr has no built-in two-factor authentication. Only expose it if you're using ::note -We assume you have the subdomain `films.mydomain.com` with a `CNAME` pointing to `films.fr` in your [DNS zone](/general/networking/dns). And that [unless you’re using Cloudflare Zero Trust](/serveex/security/cloudflare), port `443` on your router is forwarded to port `443` on your server via [NAT rules](/general/networking/nat). +We assume you have the subdomain `films.mydomain.com` with a `CNAME` pointing to `mydomain.com` in your [DNS zone](/general/networking/dns). And that [unless you’re using Cloudflare Zero Trust](/serveex/security/cloudflare), port `443` on your router is forwarded to port `443` on your server via [NAT rules](/general/networking/nat). :: ::steps{level="3"} diff --git a/content/en/3.serveex/91.advanced/1.authentik.md b/content/en/3.serveex/91.advanced/1.authentik.md index dbe6786..1585ffc 100644 --- a/content/en/3.serveex/91.advanced/1.authentik.md +++ b/content/en/3.serveex/91.advanced/1.authentik.md @@ -475,7 +475,7 @@ On your remote machine, use [Dockge](/serveex/core/docker/#install-dockge-to-man If you haven’t installed [Dockge](/serveex/core/docker/#install-dockge-to-manage-and-deploy-containers), create a folder `/srv/docker/authentik-outpost`, or directly via command line: ```bash [Terminal] -sudo mkdir -P /srv/docker/authentik-outpost +sudo mkdir -p /srv/docker/authentik-outpost ``` ::tip{icon="" to="/serveex/files/file-browser-quantum"} @@ -492,7 +492,7 @@ Via command line: ```bash [Terminal] sudo nano /srv/docker/authentik-outpost/compose.yaml ``` -Paste the following configuration, updating the version in `{AUTHENTIK_TAG:proxy:2024.2.3}`{lang=properties} to match your Authentik server version. +Paste the following configuration, updating the version in `ghcr.io/goauthentik/proxy:2026.2`{lang=properties} to match your Authentik server version. ```yaml [compose.yaml] --- @@ -500,7 +500,7 @@ version: "3.5" services: authentik_proxy: container_name: authentik-outpost - image: ghcr.io/goauthentik/proxy:2024.2.3 + image: ghcr.io/goauthentik/proxy:2026.2 # Optionally specify which networks the container should be # might be needed to reach the core authentik server restart: unless-stopped diff --git a/content/en/6.recycled/2.deprecated/2.file-browser.md b/content/en/6.recycled/2.deprecated/2.file-browser.md index ec0c4ec..383b01f 100644 --- a/content/en/6.recycled/2.deprecated/2.file-browser.md +++ b/content/en/6.recycled/2.deprecated/2.file-browser.md @@ -1,6 +1,6 @@ --- title: File Browser -description: Install File Browser to browse and manage your server files from a web interface, exposed securely with SWAG. +description: Archived guide to installing File Browser to browse and manage your server files, superseded by File Browser Quantum. --- diff --git a/content/en/6.recycled/3.alternatives/1.plex.md b/content/en/6.recycled/3.alternatives/1.plex.md index fe5c4af..bb2a8cc 100644 --- a/content/en/6.recycled/3.alternatives/1.plex.md +++ b/content/en/6.recycled/3.alternatives/1.plex.md @@ -1,6 +1,6 @@ --- title: Plex -description: Install Plex Media Server with Tautulli on your homelab to stream movies and TV shows from anywhere on all your devices. +description: Archived guide to installing Plex Media Server with Tautulli, kept for reference — Serveex now recommends Jellyfin. --- diff --git a/content/en/6.recycled/3.alternatives/2.qbittorrent-for-plex.md b/content/en/6.recycled/3.alternatives/2.qbittorrent-for-plex.md index fea14bc..e49df9c 100644 --- a/content/en/6.recycled/3.alternatives/2.qbittorrent-for-plex.md +++ b/content/en/6.recycled/3.alternatives/2.qbittorrent-for-plex.md @@ -1,6 +1,6 @@ --- title: qBittorrent for Plex -description: Install qBittorrent with Gluetun and ProtonVPN to download torrents securely behind a VPN on your self-hosted server. +description: Archived guide to installing qBittorrent for a Plex setup, kept for reference — see the current qBittorrent guide instead. --- @@ -52,7 +52,7 @@ tree: If not already done, create the `downloads` folder under `/media`: ```bash [Terminal] -mkdir -P /media/downloads +mkdir -p /media/downloads ``` ### Deploy the stack @@ -93,7 +93,7 @@ services: devices: - /dev/net/tun:/dev/net/tun ports: - - ${UI_PORT}:5695 # Port de la web-ui + - ${UI_PORT}:${UI_PORT} # Port de la web-ui - 8000:8000 # Port de controle de Gluetun cap_add: - NET_ADMIN @@ -322,7 +322,7 @@ server { include /config/nginx/proxy.conf; include /config/nginx/resolver.conf; set $upstream_app gluetun; - set $upstream_port 5555; + set $upstream_port 5695; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; diff --git a/content/en/6.recycled/3.alternatives/3.servarr-for-plex.md b/content/en/6.recycled/3.alternatives/3.servarr-for-plex.md index 0afb63a..2f69867 100644 --- a/content/en/6.recycled/3.alternatives/3.servarr-for-plex.md +++ b/content/en/6.recycled/3.alternatives/3.servarr-for-plex.md @@ -1,6 +1,6 @@ --- title: Servarr for Plex -description: Automate media downloads with the Servarr stack, Radarr, Sonarr, Bazarr, Prowlarr, and Overseerr for movies and TV shows. +description: Archived guide to the Servarr stack for a Plex setup, kept for reference — see the current Servarr guide instead. --- @@ -415,7 +415,7 @@ It can be useful to expose Overseerr if you want to send requests from outside y ::note -We assume you have the subdomain `films.mydomain.com` with a `CNAME` pointing to `films.fr` in your [DNS zone](/general/networking/dns). And that [unless you’re using Cloudflare Zero Trust](/serveex/security/cloudflare), port `443` on your router is forwarded to port `443` on your server via [NAT rules](/general/networking/nat). +We assume you have the subdomain `films.mydomain.com` with a `CNAME` pointing to `mydomain.com` in your [DNS zone](/general/networking/dns). And that [unless you’re using Cloudflare Zero Trust](/serveex/security/cloudflare), port `443` on your router is forwarded to port `443` on your server via [NAT rules](/general/networking/nat). :: ::steps{level="3"} diff --git a/content/en/6.recycled/3.alternatives/4.gitea.md b/content/en/6.recycled/3.alternatives/4.gitea.md index 23e0820..23a358d 100644 --- a/content/en/6.recycled/3.alternatives/4.gitea.md +++ b/content/en/6.recycled/3.alternatives/4.gitea.md @@ -1,6 +1,6 @@ --- title: Gitea -description: Install Gitea, a lightweight self-hosted Git service to manage your code repositories privately on your own server. +description: Archived guide to installing Gitea, kept for reference — Serveex now recommends Forgejo. --- diff --git a/content/fr/2.general/3.storage/2.zfs.md b/content/fr/2.general/3.storage/2.zfs.md index 33d5b3d..42fc3c6 100644 --- a/content/fr/2.general/3.storage/2.zfs.md +++ b/content/fr/2.general/3.storage/2.zfs.md @@ -29,8 +29,8 @@ Ce qui nous intéresse le plus : ZFS dispose d'une structure particulière : - __vdev__ (virtual device) : une grappe de disques (physiques ou virtuel) -- __zpool__ : un ensemble de disques physiques ou virtuels en volume simple, Z-mirror ou RAIDZ. Un _zpool_ peut englober plusieurs _vdev_ mais pas l'inverse. -- __dataset__ : un système de de donnée dans un _zpool_. Chaque dataset peut avoir ses propres options (compression, quotas, permissions, etc.). +- __zpool__ : un ensemble de _vdev_ configuré comme un seul pool de stockage. Un _zpool_ peut englober plusieurs _vdev_ mais pas l'inverse. +- __dataset__ : un conteneur logique de données dans un _zpool_. Chaque dataset peut avoir ses propres options (compression, quotas, permissions, etc.). Il existe plusieurs types de dataset : diff --git a/content/fr/2.general/5.linux/3.handy-tools.md b/content/fr/2.general/5.linux/3.handy-tools.md index 180fb47..c6e6304 100644 --- a/content/fr/2.general/5.linux/3.handy-tools.md +++ b/content/fr/2.general/5.linux/3.handy-tools.md @@ -61,7 +61,7 @@ Cliquez sur un processus pour le sélectionner, :kbd{value="Esc"} ouvre le menu, ## `duf`, l'espace disque qui se lit comme un tableau -`df -h` affiche tous tous vos dossiers/fichiers et vous laisse vous exploser les yeux sur les colonnes, les chiffres, les tailles. `duf` montre les mêmes informations groupées, alignées et colorées, avec une barre d'utilisation par système de fichiers. +`df -h` affiche jusqu'au moindre loop device créé par Docker et vous laisse vous exploser les yeux sur les colonnes, les chiffres, les tailles. `duf` montre les mêmes informations groupées, alignées et colorées, avec une barre d'utilisation par système de fichiers. ::steps{level="4"} #### L'installer diff --git a/content/fr/3.serveex/4.monitoring/5.upsnap.md b/content/fr/3.serveex/4.monitoring/5.upsnap.md index e52737a..280b2ba 100644 --- a/content/fr/3.serveex/4.monitoring/5.upsnap.md +++ b/content/fr/3.serveex/4.monitoring/5.upsnap.md @@ -101,32 +101,25 @@ Nous partons du principe que vous avez créé un sous-domaine dans votre [zone D :: ::steps{level="3"} -### Ajouter le réseau d'UpSnap à SWAG +### Rendre l'hôte accessible depuis SWAG -Allez dans Dockge et modifiez le compose de SWAG en y ajoutant le réseau d'UpSnap : +UpSnap tourne en `network_mode: host` (nécessaire pour que la diffusion Wake-on-LAN et le scan réseau fonctionnent de manière fiable), il ne rejoint donc jamais de réseau Docker auquel SWAG pourrait se rattacher comme pour les autres stacks. Il faut à la place donner à SWAG un moyen d'atteindre l'hôte lui-même : ```yaml [compose.yaml] --- services: swag: container_name: # ... - # ... - networks: # Rattache le conteneur au réseau personnalisé - # ... - - upsnap # Nom du réseau déclaré dans la stack - -networks: # Définit le réseau personnalisé - # ... - upsnap: # Nom du réseau déclaré dans la stack - name: upsnap_default # Nom réel du réseau externe - external: true # Indique qu'il s'agit d'un réseau externe + # ... + extra_hosts: + - "host.docker.internal:host-gateway" # se résout vers l'IP de l'hôte Docker lui-même ``` Redémarrez la stack en cliquant sur « deploy » et attendez que SWAG soit pleinement opérationnel. ::note -Nous partons ici du principe que le nom du réseau d'upsnap est `upsnap_default`. Vous pouvez vérifier la connexion dans le tableau de bord de SWAG sur `http://ipdevotreserveur:81`. +`host-gateway` est une valeur spéciale que Docker résout automatiquement vers l'IP de la machine hôte, donc cela fonctionne quelle que soit l'adresse réelle de votre serveur. :: ### Créer le fichier subdomain.conf @@ -184,7 +177,7 @@ server { include /config/nginx/proxy.conf; include /config/nginx/resolver.conf; - set $upstream_app upsnap; + set $upstream_app host.docker.internal; set $upstream_port 8095; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; @@ -262,7 +255,7 @@ server { include /config/nginx/proxy.conf; include /config/nginx/resolver.conf; - set $upstream_app upsnap; + set $upstream_app host.docker.internal; set $upstream_port 8095; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; diff --git a/content/fr/3.serveex/5.media/2.qbittorrent.md b/content/fr/3.serveex/5.media/2.qbittorrent.md index 885ef42..48ca7e0 100644 --- a/content/fr/3.serveex/5.media/2.qbittorrent.md +++ b/content/fr/3.serveex/5.media/2.qbittorrent.md @@ -47,7 +47,7 @@ tree: Si ce n'est pas déjà fait, créez le dossier `downloads` dans `/media` : ```bash [Terminal] -mkdir -P /media/downloads +mkdir -p /media/downloads ``` ### Déployer la stack @@ -88,7 +88,7 @@ services: devices: - /dev/net/tun:/dev/net/tun ports: - - ${UI_PORT}:5695 # Port de la web-ui + - ${UI_PORT}:${UI_PORT} # Port de la web-ui - 8000:8000 # Port de controle de Gluetun cap_add: - NET_ADMIN @@ -321,7 +321,7 @@ server { include /config/nginx/proxy.conf; include /config/nginx/resolver.conf; set $upstream_app gluetun; - set $upstream_port 5555; + set $upstream_port 5695; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; @@ -399,7 +399,7 @@ server { include /config/nginx/proxy.conf; include /config/nginx/resolver.conf; set $upstream_app gluetun; - set $upstream_port 5555; + set $upstream_port 5695; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; diff --git a/content/fr/3.serveex/5.media/3.servarr.md b/content/fr/3.serveex/5.media/3.servarr.md index b1585ce..4b6e1ad 100644 --- a/content/fr/3.serveex/5.media/3.servarr.md +++ b/content/fr/3.serveex/5.media/3.servarr.md @@ -394,7 +394,7 @@ Seerr n'a pas d'authentification à deux facteurs intégrée. Ne l'exposez que s ::note -Nous partons du principe que vous avez le sous-domaine `films.mondomaine.fr` avec un `CNAME` pointant vers `films.fr` dans votre [zone DNS](/general/networking/dns). Et que, [à moins d'utiliser Cloudflare Zero Trust](/serveex/security/cloudflare), le port `443` de votre box est redirigé vers le port `443` de votre serveur via les [règles NAT](/general/networking/nat). +Nous partons du principe que vous avez le sous-domaine `films.mondomaine.fr` avec un `CNAME` pointant vers `mondomaine.fr` dans votre [zone DNS](/general/networking/dns). Et que, [à moins d'utiliser Cloudflare Zero Trust](/serveex/security/cloudflare), le port `443` de votre box est redirigé vers le port `443` de votre serveur via les [règles NAT](/general/networking/nat). :: ::steps{level="3"} diff --git a/content/fr/3.serveex/91.advanced/1.authentik.md b/content/fr/3.serveex/91.advanced/1.authentik.md index 405a665..2bd20c4 100644 --- a/content/fr/3.serveex/91.advanced/1.authentik.md +++ b/content/fr/3.serveex/91.advanced/1.authentik.md @@ -476,7 +476,7 @@ Sur votre machine distante, utilisez [Dockge](/serveex/core/docker/#installer-do Si vous n'avez pas installé [Dockge](/serveex/core/docker/#installer-dockge-pour-gérer-et-déployer-les-conteneurs), créez un dossier `/srv/docker/authentik-outpost`, ou directement en ligne de commande : ```bash [Terminal] -sudo mkdir -P /srv/docker/authentik-outpost +sudo mkdir -p /srv/docker/authentik-outpost ``` ::tip{icon="" to="/serveex/files/file-browser-quantum"} diff --git a/content/fr/5.nonsense/2.python/2.adguard-cidre.md b/content/fr/5.nonsense/2.python/2.adguard-cidre.md index cf9c0fb..6af3402 100644 --- a/content/fr/5.nonsense/2.python/2.adguard-cidre.md +++ b/content/fr/5.nonsense/2.python/2.adguard-cidre.md @@ -28,6 +28,6 @@ Tout ceci de manière complètement autonome, avec une fréquence choisie en var Plus d'infos directement sur le repo : -::card{title="🐋 __AdGuard CIDRE Sync__"} -[Robot de synchronisation de la blocklist d'AdGuard](https://git.djeex.fr/Djeex/adguard-cidre) +::card{title="🐋 __AdGuard CIDRE Sync__" to="https://git.djeex.fr/Djeex/adguard-cidre" target="_blank"} +Robot de synchronisation de la blocklist d'AdGuard :: diff --git a/content/fr/5.nonsense/3.bash/2.luks-backup.md b/content/fr/5.nonsense/3.bash/2.luks-backup.md index 1f63975..6e7736b 100644 --- a/content/fr/5.nonsense/3.bash/2.luks-backup.md +++ b/content/fr/5.nonsense/3.bash/2.luks-backup.md @@ -20,66 +20,66 @@ Ainsi, ce script : * Chiffre avec le mot de passe * Détruit l'archive non chiffrée -``` +```bash [Terminal] #!/bin/bash -# Directory where LUKS headers will be backed up +# Dossier où seront sauvegardés les headers LUKS DEST="/root/luks-headers-backup" mkdir -p "$DEST" -echo "🔍 Searching for LUKS containers on all partitions..." +echo "🔍 Recherche des conteneurs LUKS sur toutes les partitions..." -# Loop through all possible disk partitions (including NVMe and SATA) +# Parcourt toutes les partitions disque possibles (y compris NVMe et SATA) for part in /dev/sd? /dev/sd?? /dev/nvme?n?p?; do - # Skip if the device doesn't exist + # Ignore si le périphérique n'existe pas if [ ! -b "$part" ]; then continue fi - # Check if the partition is a LUKS encrypted volume + # Vérifie si la partition est un volume chiffré LUKS if cryptsetup isLuks "$part"; then - # Find the parent disk device (e.g. nvme0n1p4 → nvme0n1) + # Trouve le disque parent (ex. nvme0n1p4 → nvme0n1) disk=$(lsblk -no pkname "$part" | head -n 1) full_disk="/dev/$disk" - # Get the serial number of the parent disk + # Récupère le numéro de série du disque parent SERIAL=$(udevadm info --query=all --name="$full_disk" | grep ID_SERIAL= | cut -d= -f2) if [ -z "$SERIAL" ]; then SERIAL="unknown" fi - # Extract the partition name (e.g. nvme0n1p4) + # Extrait le nom de la partition (ex. nvme0n1p4) PART_NAME=$(basename "$part") - # Build the output filename with partition name and disk serial + # Construit le nom du fichier de sortie avec le nom de partition et le numéro de série OUTPUT="$DEST/luks-header-${PART_NAME}__${SERIAL}.img" - echo "🔐 Backing up LUKS header of $part (Serial: $SERIAL)..." + echo "🔐 Sauvegarde du header LUKS de $part (Numéro de série : $SERIAL)..." - # Backup the LUKS header to the output file + # Sauvegarde le header LUKS dans le fichier de sortie cryptsetup luksHeaderBackup "$part" --header-backup-file "$OUTPUT" if [[ $? -eq 0 ]]; then - echo "✅ Backup successful → $OUTPUT" + echo "✅ Sauvegarde réussie → $OUTPUT" else - echo "❌ Backup failed for $part" + echo "❌ Échec de la sauvegarde pour $part" fi fi done -# Create a timestamped compressed tar archive of all header backups +# Crée une archive tar compressée et horodatée de toutes les sauvegardes de headers ARCHIVE_NAME="/root/luks-headers-$(date +%Y%m%d_%H%M%S).tar.gz" -echo "📦 Creating archive $ARCHIVE_NAME..." +echo "📦 Création de l'archive $ARCHIVE_NAME..." tar -czf "$ARCHIVE_NAME" -C "$DEST" . -# Encrypt the archive symmetrically using GPG with AES256 cipher -echo "🔐 Encrypting the archive with GPG..." +# Chiffre l'archive symétriquement avec GPG et le chiffrement AES256 +echo "🔐 Chiffrement de l'archive avec GPG..." gpg --symmetric --cipher-algo AES256 "$ARCHIVE_NAME" if [[ $? -eq 0 ]]; then - echo "✅ Encrypted archive created: ${ARCHIVE_NAME}.gpg" - # Remove the unencrypted archive for security + echo "✅ Archive chiffrée créée : ${ARCHIVE_NAME}.gpg" + # Supprime l'archive non chiffrée pour plus de sécurité rm -f "$ARCHIVE_NAME" else - echo "❌ Encryption failed" + echo "❌ Échec du chiffrement" fi ``` diff --git a/content/fr/5.nonsense/3.bash/3.socat-proxy.md b/content/fr/5.nonsense/3.bash/3.socat-proxy.md index 8908b15..be3078c 100644 --- a/content/fr/5.nonsense/3.bash/3.socat-proxy.md +++ b/content/fr/5.nonsense/3.bash/3.socat-proxy.md @@ -77,6 +77,6 @@ services: Plus d'infos directement sur le repo : -::card{title="🐋 __Socat Proxy__"} -[A lighteweight bind mount socket proxy](https://git.djeex.fr/Djeex/socat-proxy) +::card{title="🐋 __Socat Proxy__" to="https://git.djeex.fr/Djeex/socat-proxy" target="_blank"} +Un proxy de socket léger basé sur un bind mount :: diff --git a/content/fr/6.recycled/2.deprecated/2.file-browser.md b/content/fr/6.recycled/2.deprecated/2.file-browser.md index 9e93991..ff13ea5 100644 --- a/content/fr/6.recycled/2.deprecated/2.file-browser.md +++ b/content/fr/6.recycled/2.deprecated/2.file-browser.md @@ -1,6 +1,6 @@ --- title: File Browser -description: Installer File Browser pour parcourir et gérer les fichiers de votre serveur depuis une interface web, exposée en toute sécurité avec SWAG. +description: Ancien guide File Browser conservé à titre archivé, voir le guide File Browser Quantum pour une installation actuelle. --- diff --git a/content/fr/6.recycled/3.alternatives/1.plex.md b/content/fr/6.recycled/3.alternatives/1.plex.md index 150276c..bd3551b 100644 --- a/content/fr/6.recycled/3.alternatives/1.plex.md +++ b/content/fr/6.recycled/3.alternatives/1.plex.md @@ -1,6 +1,6 @@ --- title: Plex -description: Installer Plex Media Server avec Tautulli sur votre homelab pour diffuser films et séries depuis n'importe où sur tous vos appareils. +description: Ancien guide Plex Media Server conservé à titre archivé, voir le guide Jellyfin pour une installation actuelle. --- diff --git a/content/fr/6.recycled/3.alternatives/2.qbittorrent-for-plex.md b/content/fr/6.recycled/3.alternatives/2.qbittorrent-for-plex.md index d8c801b..5df17f4 100644 --- a/content/fr/6.recycled/3.alternatives/2.qbittorrent-for-plex.md +++ b/content/fr/6.recycled/3.alternatives/2.qbittorrent-for-plex.md @@ -1,6 +1,6 @@ --- title: qBittorrent pour Plex -description: Installer qBittorrent avec Gluetun et ProtonVPN pour télécharger des torrents de manière sécurisée derrière un VPN sur votre serveur auto-hébergé. +description: Ancien guide qBittorrent pour Plex conservé à titre archivé, voir le guide qBittorrent à jour pour une installation actuelle. --- @@ -52,7 +52,7 @@ tree: Si ce n'est pas déjà fait, créez le dossier `downloads` dans `/media` : ```bash [Terminal] -mkdir -P /media/downloads +mkdir -p /media/downloads ``` ### Déployer la stack @@ -93,7 +93,7 @@ services: devices: - /dev/net/tun:/dev/net/tun ports: - - ${UI_PORT}:5695 # Port de la web-ui + - ${UI_PORT}:${UI_PORT} # Port de la web-ui - 8000:8000 # Port de controle de Gluetun cap_add: - NET_ADMIN @@ -322,7 +322,7 @@ server { include /config/nginx/proxy.conf; include /config/nginx/resolver.conf; set $upstream_app gluetun; - set $upstream_port 5555; + set $upstream_port 5695; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; diff --git a/content/fr/6.recycled/3.alternatives/3.servarr-for-plex.md b/content/fr/6.recycled/3.alternatives/3.servarr-for-plex.md index 734d7af..cca1e37 100644 --- a/content/fr/6.recycled/3.alternatives/3.servarr-for-plex.md +++ b/content/fr/6.recycled/3.alternatives/3.servarr-for-plex.md @@ -1,6 +1,6 @@ --- title: Servarr pour Plex -description: Automatiser les téléchargements de médias avec la suite Servarr, Radarr, Sonarr, Bazarr, Prowlarr et Overseerr pour les films et les séries. +description: Ancien guide Servarr pour Plex conservé à titre archivé, voir le guide Servarr à jour pour une installation actuelle. --- @@ -415,7 +415,7 @@ Il peut être utile d'exposer Overseerr si vous voulez envoyer des demandes depu ::note -Nous partons du principe que vous avez le sous-domaine `films.mondomaine.fr` avec un `CNAME` pointant vers `films.fr` dans votre [zone DNS](/general/networking/dns). Et que, [à moins d'utiliser Cloudflare Zero Trust](/serveex/security/cloudflare), le port `443` de votre box est redirigé vers le port `443` de votre serveur via les [règles NAT](/general/networking/nat). +Nous partons du principe que vous avez le sous-domaine `films.mondomaine.fr` avec un `CNAME` pointant vers `mondomaine.fr` dans votre [zone DNS](/general/networking/dns). Et que, [à moins d'utiliser Cloudflare Zero Trust](/serveex/security/cloudflare), le port `443` de votre box est redirigé vers le port `443` de votre serveur via les [règles NAT](/general/networking/nat). :: ::steps{level="3"} diff --git a/content/fr/6.recycled/3.alternatives/4.gitea.md b/content/fr/6.recycled/3.alternatives/4.gitea.md index 96ec7cd..b31e080 100644 --- a/content/fr/6.recycled/3.alternatives/4.gitea.md +++ b/content/fr/6.recycled/3.alternatives/4.gitea.md @@ -1,6 +1,6 @@ --- title: Gitea -description: Installer Gitea, un service Git auto-hébergé et léger pour gérer vos dépôts de code en privé sur votre propre serveur. +description: Ancien guide Gitea conservé à titre archivé, voir le guide Forgejo pour une installation actuelle. --- diff --git a/content/fr/index.md b/content/fr/index.md index eef8194..3fc434a 100644 --- a/content/fr/index.md +++ b/content/fr/index.md @@ -25,7 +25,7 @@ seo: --- color: primary size: xl -to: /fr/about/welcome +to: /about/welcome/ --- Accéder à la doc :::::: -- 2.54.0 From 4e86fe2c4a623ab3467b8a2e3735f3a28facc2a5 Mon Sep 17 00:00:00 2001 From: Djeex Date: Mon, 7 Sep 2026 21:12:29 +0200 Subject: [PATCH 2/7] Fix remaining minor audit findings in Serveex guides (A8-A14) Co-Authored-By: Claude Sonnet 5 --- content/en/3.serveex/4.monitoring/2.dozzle.md | 2 ++ content/en/3.serveex/4.monitoring/5.upsnap.md | 2 +- content/en/3.serveex/5.media/3.servarr.md | 4 ++-- content/en/3.serveex/8.development/1.code-server.md | 2 +- content/en/3.serveex/91.advanced/1.authentik.md | 1 - content/en/6.recycled/3.alternatives/1.plex.md | 4 ++-- content/fr/3.serveex/4.monitoring/2.dozzle.md | 2 ++ content/fr/3.serveex/4.monitoring/5.upsnap.md | 2 +- content/fr/3.serveex/5.media/3.servarr.md | 4 ++-- content/fr/3.serveex/8.development/1.code-server.md | 2 +- content/fr/3.serveex/91.advanced/1.authentik.md | 1 - content/fr/6.recycled/3.alternatives/1.plex.md | 2 +- 12 files changed, 15 insertions(+), 13 deletions(-) diff --git a/content/en/3.serveex/4.monitoring/2.dozzle.md b/content/en/3.serveex/4.monitoring/2.dozzle.md index 5b2cc91..377ac2a 100644 --- a/content/en/3.serveex/4.monitoring/2.dozzle.md +++ b/content/en/3.serveex/4.monitoring/2.dozzle.md @@ -39,6 +39,8 @@ services: image: amir20/dozzle:latest ports: - 9135:8080 + volumes: + - /docker/dozzle/data:/data env_file: - .env environment: diff --git a/content/en/3.serveex/4.monitoring/5.upsnap.md b/content/en/3.serveex/4.monitoring/5.upsnap.md index 9ebba49..c52feb6 100644 --- a/content/en/3.serveex/4.monitoring/5.upsnap.md +++ b/content/en/3.serveex/4.monitoring/5.upsnap.md @@ -8,7 +8,7 @@ description: Install UpSnap to remotely wake up machines on your local network v [UpSnap](https://github.com/seriousm4x/UpSnap) is a container that allows you to remotely power on, shut down, or put your machines to sleep. It mainly uses Wake-On-Lan (WoL) over the network and offers advanced features. -![Beszel](/img/serveex/upsnap.webp) +![UpSnap](/img/serveex/upsnap.webp) ## Installation diff --git a/content/en/3.serveex/5.media/3.servarr.md b/content/en/3.serveex/5.media/3.servarr.md index db9d6cd..b0bc226 100644 --- a/content/en/3.serveex/5.media/3.servarr.md +++ b/content/en/3.serveex/5.media/3.servarr.md @@ -133,8 +133,8 @@ services: container_name: bazarr restart: unless-stopped environment: - - PUID=1000 - - PGID=1000 + - PUID=${PUID} + - PGID=${PGID} - TZ=Europe/Paris volumes: - /srv/docker/bazarr/config:/config diff --git a/content/en/3.serveex/8.development/1.code-server.md b/content/en/3.serveex/8.development/1.code-server.md index 7f68dc7..d3deca6 100644 --- a/content/en/3.serveex/8.development/1.code-server.md +++ b/content/en/3.serveex/8.development/1.code-server.md @@ -144,7 +144,7 @@ services: networks: # Defines the custom network # ... code-server: # Name of the network defined in the stack - name: code-serveur # Actual name of the external network + name: code-server_default # Actual name of the external network external: true # Indicates it’s an external network ``` diff --git a/content/en/3.serveex/91.advanced/1.authentik.md b/content/en/3.serveex/91.advanced/1.authentik.md index 1585ffc..8e5180a 100644 --- a/content/en/3.serveex/91.advanced/1.authentik.md +++ b/content/en/3.serveex/91.advanced/1.authentik.md @@ -459,7 +459,6 @@ authentik_host_insecure: false container_image: docker_network: null docker_map_ports: true -docker_labels: null ``` Save with :kbd{value="Ctrl+O"}, then :kbd{value="Enter"}, and exit with :kbd{value="Ctrl+X"}. diff --git a/content/en/6.recycled/3.alternatives/1.plex.md b/content/en/6.recycled/3.alternatives/1.plex.md index bb2a8cc..ddfbf32 100644 --- a/content/en/6.recycled/3.alternatives/1.plex.md +++ b/content/en/6.recycled/3.alternatives/1.plex.md @@ -8,10 +8,10 @@ description: Archived guide to installing Plex Media Server with Tautulli, kept ::note{to="/serveex/media/jellyfin"} -This is an alternative to **Jellyfin**, kept here for reference. Plex isn't fully self-hosted: local playback still goes through Plex's own relay and requires a Plex account, and several features sit behind a Plex Pass paywall. +This is an alternative to **Jellyfin**, kept here for reference. Plex isn't fully self-hosted: it requires a Plex account even for local playback, remote access can fall back to Plex's own relay when a direct connection fails, and several features sit behind a Plex Pass paywall. :: -[Plex](https://www.plex.tv/fr/) is a self-hosted video streaming platform for managing your movie or TV show library and playing them locally or remotely. Plex has apps for TV, Android, iOS, Windows, and macOS, allowing you to stream your library just like Netflix. +[Plex](https://www.plex.tv/) is a self-hosted video streaming platform for managing your movie or TV show library and playing them locally or remotely. Plex has apps for TV, Android, iOS, Windows, and macOS, allowing you to stream your library just like Netflix. With *Plex Pass*, you can also organize and play your music content similar to Spotify, the difference being that it’s your content, hosted and streamed from your server. diff --git a/content/fr/3.serveex/4.monitoring/2.dozzle.md b/content/fr/3.serveex/4.monitoring/2.dozzle.md index 0a9743b..67b00e0 100644 --- a/content/fr/3.serveex/4.monitoring/2.dozzle.md +++ b/content/fr/3.serveex/4.monitoring/2.dozzle.md @@ -39,6 +39,8 @@ services: image: amir20/dozzle:latest ports: - 9135:8080 + volumes: + - /docker/dozzle/data:/data env_file: - .env environment: diff --git a/content/fr/3.serveex/4.monitoring/5.upsnap.md b/content/fr/3.serveex/4.monitoring/5.upsnap.md index 280b2ba..0c5cc36 100644 --- a/content/fr/3.serveex/4.monitoring/5.upsnap.md +++ b/content/fr/3.serveex/4.monitoring/5.upsnap.md @@ -8,7 +8,7 @@ description: Installer UpSnap pour réveiller à distance les machines de votre [UpSnap](https://github.com/seriousm4x/UpSnap) est un conteneur qui permet d'allumer, d'éteindre ou de mettre en veille vos machines à distance. Il utilise principalement le Wake-On-Lan (WoL) sur le réseau et propose des fonctions avancées. -![Beszel](/img/serveex/upsnap.webp) +![UpSnap](/img/serveex/upsnap.webp) ## Installation diff --git a/content/fr/3.serveex/5.media/3.servarr.md b/content/fr/3.serveex/5.media/3.servarr.md index 4b6e1ad..60471a0 100644 --- a/content/fr/3.serveex/5.media/3.servarr.md +++ b/content/fr/3.serveex/5.media/3.servarr.md @@ -133,8 +133,8 @@ services: container_name: bazarr restart: unless-stopped environment: - - PUID=1000 - - PGID=1000 + - PUID=${PUID} + - PGID=${PGID} - TZ=Europe/Paris volumes: - /srv/docker/bazarr/config:/config diff --git a/content/fr/3.serveex/8.development/1.code-server.md b/content/fr/3.serveex/8.development/1.code-server.md index 6cfd6bb..af3e6a4 100644 --- a/content/fr/3.serveex/8.development/1.code-server.md +++ b/content/fr/3.serveex/8.development/1.code-server.md @@ -144,7 +144,7 @@ services: networks: # Définit le réseau personnalisé # ... code-server: # Nom du réseau défini dans la stack - name: code-serveur # Nom réel du réseau externe + name: code-server_default # Nom réel du réseau externe external: true # Indique qu'il s'agit d'un réseau externe ``` diff --git a/content/fr/3.serveex/91.advanced/1.authentik.md b/content/fr/3.serveex/91.advanced/1.authentik.md index 2bd20c4..53ef6aa 100644 --- a/content/fr/3.serveex/91.advanced/1.authentik.md +++ b/content/fr/3.serveex/91.advanced/1.authentik.md @@ -460,7 +460,6 @@ authentik_host_insecure: false container_image: docker_network: null docker_map_ports: true -docker_labels: null ``` Enregistrez avec :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"}, et quittez avec :kbd{value="Ctrl+X"}. diff --git a/content/fr/6.recycled/3.alternatives/1.plex.md b/content/fr/6.recycled/3.alternatives/1.plex.md index bd3551b..9a2b933 100644 --- a/content/fr/6.recycled/3.alternatives/1.plex.md +++ b/content/fr/6.recycled/3.alternatives/1.plex.md @@ -8,7 +8,7 @@ description: Ancien guide Plex Media Server conservé à titre archivé, voir le ::note{to="/serveex/media/jellyfin"} -C'est une alternative à **Jellyfin**, conservée ici pour référence. Plex n'est pas entièrement auto-hébergé : même la lecture locale passe par le relais de Plex et exige un compte Plex, et plusieurs fonctions sont derrière le paywall du Plex Pass. +C'est une alternative à **Jellyfin**, conservée ici pour référence. Plex n'est pas entièrement auto-hébergé : il exige un compte Plex même pour la lecture locale, l'accès à distance peut basculer sur le relais de Plex si une connexion directe échoue, et plusieurs fonctions sont derrière le paywall du Plex Pass. :: [Plex](https://www.plex.tv/fr/) est une plateforme de streaming vidéo auto-hébergée pour gérer votre bibliothèque de films ou de séries et les lire en local ou à distance. Plex propose des applications pour TV, Android, iOS, Windows et macOS, permettant de diffuser votre bibliothèque comme sur Netflix. -- 2.54.0 From 924fd9cc69110fdf7848bf8247c48ddf6c9b013a Mon Sep 17 00:00:00 2001 From: Djeex Date: Mon, 7 Sep 2026 21:15:51 +0200 Subject: [PATCH 3/7] Reconcile EN/FR content drift flagged in the audit (B9-B18) Co-Authored-By: Claude Sonnet 5 --- content/en/2.general/3.storage/1.raid.md | 2 +- content/en/2.general/5.linux/1.cli-basics.md | 6 ++++-- content/en/3.serveex/2.core/1.installation.md | 2 +- content/fr/2.general/3.storage/1.raid.md | 2 +- content/fr/2.general/5.linux/1.cli-basics.md | 2 +- content/fr/3.serveex/1.introduction.md | 2 +- content/fr/3.serveex/5.media/2.qbittorrent.md | 4 ++-- content/fr/5.nonsense/2.python/4.instameex.md | 2 +- content/fr/5.nonsense/3.bash/1.servarr-duplicates.md | 2 +- 9 files changed, 13 insertions(+), 11 deletions(-) diff --git a/content/en/2.general/3.storage/1.raid.md b/content/en/2.general/3.storage/1.raid.md index b7c0620..4998063 100644 --- a/content/en/2.general/3.storage/1.raid.md +++ b/content/en/2.general/3.storage/1.raid.md @@ -102,7 +102,7 @@ Use RAID 5 when you want reliable storage with 3 to 5 disks and minimal space lo - Total capacity is the sum of all disks minus two (e.g., 4×10TB = 20TB). - Minimum of 4 disks (6 recommended to minimize space loss). -Use RAID 6 in similar situations as RAID 5, especially with 6 or more disks. More disks mean higher failure risk. RAID 6 offers peace of mind by tolerating two simultaneous failures. +Use RAID 6 in similar situations as RAID 5, especially with 6 or more disks. More disks mean higher failure risk. RAID 6 offers peace of mind by tolerating two simultaneous failures. There's nothing more frustrating than losing a second disk while the array is still rebuilding from replacing the first. ## Software RAID (coming soon) diff --git a/content/en/2.general/5.linux/1.cli-basics.md b/content/en/2.general/5.linux/1.cli-basics.md index 331cfdc..e6bcd3a 100644 --- a/content/en/2.general/5.linux/1.cli-basics.md +++ b/content/en/2.general/5.linux/1.cli-basics.md @@ -49,7 +49,9 @@ When the target is a place on the disk, you write it as a path, and there are a | `/var/log` | an **absolute** path, same result from anywhere | | `logs/today` | a **relative** path, understood from where you currently stand | -Which folder holds what is a subject of its own, covered in [folders and partitions](/general/linux/filesystem). +::note{to="/general/linux/filesystem"} +Which folder holds what is a subject of its own, covered in **folders and partitions**. +:: The prompt itself tells you where you are: in `username@serveex:~/docker$`, you're logged in as `username` on the machine named `serveex`, inside the `docker` folder of your home. That final `$` means a normal user. If it ever shows `#`, you're root and every typo counts double. @@ -241,7 +243,7 @@ The ones worth keeping at hand, and where their names come from. | `chmod` | change mode | Changes a file's permissions | | `chown` | change owner | Changes who owns a file | | `sudo` | substitute user do | Runs one command as administrator | -| `apt` | Advanced Packaging Tool | Installs, updates and removes packages | +| `apt` | Advanced Package Tool | Installs, updates and removes packages | | `systemctl` | control systemd | Starts, stops and enables services | | `ssh` | secure shell | Opens a session on a remote machine | | `scp` | secure copy | Copies files over SSH | diff --git a/content/en/3.serveex/2.core/1.installation.md b/content/en/3.serveex/2.core/1.installation.md index 0d6502a..fe1bb8c 100644 --- a/content/en/3.serveex/2.core/1.installation.md +++ b/content/en/3.serveex/2.core/1.installation.md @@ -216,7 +216,7 @@ The door is now closed for every other machine too, including the next one you'l A machine that runs 24/7 for two hours of actual use burns power, spins fans and wears drives for nothing. Wake on LAN lets you shut it down properly when you're done and bring it back in a few seconds without walking to it: the network card stays powered in standby, listening for one specific broadcast (the *magic packet*) carrying the server's MAC address, and switches the machine on when it sees it. Handy for a backup target you only need at night, or a media server nobody watches during the day. -Two conditions before you start: the machine has to be wired to ethernet, WiFi cards almost never support this, and the packet has to be sent from the same local network, since a broadcast doesn't cross a router. The BIOS side was covered in [BIOS setup](#bios-setup), here is the Debian side. +Two conditions before you start: the machine has to be wired to ethernet, WiFi cards almost never support this, and the packet has to be sent from the same local network, since a broadcast doesn't cross a router, unless you use a dedicated app and port-forwarding rules on your router. The BIOS side was covered in [BIOS setup](#bios-setup), here is the Debian side. ::steps{level="4"} #### Find the interface and its MAC address diff --git a/content/fr/2.general/3.storage/1.raid.md b/content/fr/2.general/3.storage/1.raid.md index 4dbb1be..6dfc572 100644 --- a/content/fr/2.general/3.storage/1.raid.md +++ b/content/fr/2.general/3.storage/1.raid.md @@ -54,7 +54,7 @@ Utilisez vos disques sans RAID si vous n’avez pas peur de perdre des données -Utilisez RAID 0 si vous souhaitez privilégier la performance et que la perte de données n’est pas un problème. Idéal pour le stockage temporaire à haute vitesse (montage vidéo, IA, etc). Pas adapté au stockage à long terme. +Utilisez RAID 0 si vous souhaitez privilégier la performance et que la perte de données n’est pas un problème. Idéal pour le stockage temporaire à haute vitesse (montage vidéo, IA, etc). Pas adapté au stockage à long terme, car la perte d'un seul disque entraîne la perte totale des données. ### RAID 1 diff --git a/content/fr/2.general/5.linux/1.cli-basics.md b/content/fr/2.general/5.linux/1.cli-basics.md index ce1a5ac..c2c9304 100644 --- a/content/fr/2.general/5.linux/1.cli-basics.md +++ b/content/fr/2.general/5.linux/1.cli-basics.md @@ -243,7 +243,7 @@ Les commandes qui valent la peine d'être gardées sous la main, et d'où vienne | `chmod` | change mode | Change les permissions d'un fichier | | `chown` | change owner | Change le propriétaire d'un fichier | | `sudo` | substitute user do | Lance une commande en administrateur | -| `apt` | advanced package tool | Installe, met à jour et supprime des paquets | +| `apt` | Advanced Package Tool | Installe, met à jour et supprime des paquets | | `systemctl` | control systemd | Démarre, arrête et active des services | | `ssh` | secure shell | Ouvre une session sur une machine distante | | `scp` | secure copy | Copie des fichiers via SSH | diff --git a/content/fr/3.serveex/1.introduction.md b/content/fr/3.serveex/1.introduction.md index f85568a..d30e311 100644 --- a/content/fr/3.serveex/1.introduction.md +++ b/content/fr/3.serveex/1.introduction.md @@ -189,7 +189,7 @@ Installer et déployer la stack Servarr :: :: -### Cloud & Photos +### Cloud Drive & Photos :::div{class="relative"} :ellipsis{left=0px width=40rem top=10rem blur=140px} diff --git a/content/fr/3.serveex/5.media/2.qbittorrent.md b/content/fr/3.serveex/5.media/2.qbittorrent.md index 48ca7e0..80437c8 100644 --- a/content/fr/3.serveex/5.media/2.qbittorrent.md +++ b/content/fr/3.serveex/5.media/2.qbittorrent.md @@ -10,8 +10,8 @@ description: Installer qBittorrent avec Gluetun et ProtonVPN pour télécharger Afin de télécharger vos media favoris en toute sécurité, nous allons monter un système à base de : -- [Qbittorent](https://github.com/linuxserver/docker-qbittorrent) comme logiciel de téléchargement bittorent -- [Proton VPN Plus](https://protonvpn.com/torrenting), VPN pour sécuriser vos échanges, auquel vous devez souscrire (il y a de nombreux codes promo) pour accéder au protocole Bittorent, mais vous pouvez également en choisir un autre, à condition qu'il propose le protocole bittorent. +- [qBittorrent](https://github.com/linuxserver/docker-qbittorrent) comme logiciel de téléchargement BitTorrent +- [Proton VPN Plus](https://protonvpn.com/torrenting), VPN pour sécuriser vos échanges, auquel vous devez souscrire (il y a de nombreux codes promo) pour accéder au protocole BitTorrent, mais vous pouvez également en choisir un autre, à condition qu'il propose le protocole BitTorrent. - [Gluetun](https://github.com/qdm12/gluetun) - [qBittorrent port update](https://codeberg.org/TechnoSam/qbittorrent-gluetun-port-update) pour mettre automatiquement à jour le port de votre VPN (qui change régulièrement). - Et le mode [vuetorrent](https://github.com/gabe565/linuxserver-mod-vuetorrent) pour une interface moderne et intuitive. diff --git a/content/fr/5.nonsense/2.python/4.instameex.md b/content/fr/5.nonsense/2.python/4.instameex.md index b11ee6a..ca6b104 100644 --- a/content/fr/5.nonsense/2.python/4.instameex.md +++ b/content/fr/5.nonsense/2.python/4.instameex.md @@ -25,7 +25,7 @@ Je me suis alors inspiré d'un [fork du premier projet](https://github.com/kosti En gros, voilà ce que donne mon workflow à présent pour poster sur Insta : -![Instameex](/img/nonsense/instameex-workflow.svg) +![Workflow Instameex](/img/nonsense/instameex-workflow.svg) Je vous présente donc **Instam[eex]{style="color: #1ad6ff"}** diff --git a/content/fr/5.nonsense/3.bash/1.servarr-duplicates.md b/content/fr/5.nonsense/3.bash/1.servarr-duplicates.md index 5cd5b06..8a8fb75 100644 --- a/content/fr/5.nonsense/3.bash/1.servarr-duplicates.md +++ b/content/fr/5.nonsense/3.bash/1.servarr-duplicates.md @@ -29,7 +29,7 @@ Mes dossiers originaux sont dans `seedbox`, et il ne faut surtout pas les modifi L'idée est donc de : - lister les originaux dans seedbox -- lister les fichiers dans movies +- lister les fichiers dans movies et tvseries - comparer les deux listes et isoler les chemins des doublons - supprimer les doublons - hardlinker les originaux dans les dossiers des doublons supprimés -- 2.54.0 From bbcdeb4caf839cb8ec85701efe89e19a89fd7859 Mon Sep 17 00:00:00 2001 From: Djeex Date: Mon, 7 Sep 2026 21:25:08 +0200 Subject: [PATCH 4/7] Fix spelling and grammar mistakes across EN and FR content (chapter C) Co-Authored-By: Claude Sonnet 5 --- .../3.serveex/4.monitoring/3.speedtest-tracker.md | 2 +- content/en/3.serveex/9.apps/2.vaultwarden.md | 2 +- .../en/5.nonsense/3.bash/5.backrest-docker-stop.md | 2 +- .../en/6.recycled/2.deprecated/2.file-browser.md | 2 +- content/en/index.md | 2 +- content/fr/1.about/1.welcome.md | 2 +- content/fr/2.general/2.networking/1.nat.md | 2 +- content/fr/2.general/2.networking/2.dns.md | 2 +- content/fr/2.general/4.hardware/1.basics.md | 2 +- content/fr/2.general/4.hardware/2.network.md | 6 +++--- content/fr/2.general/4.hardware/3.prolonas.md | 2 +- content/fr/2.general/5.linux/1.cli-basics.md | 2 +- content/fr/2.general/5.linux/3.handy-tools.md | 6 +++--- content/fr/3.serveex/2.core/1.installation.md | 4 ++-- content/fr/3.serveex/2.core/3.wireguard.md | 8 ++++---- content/fr/3.serveex/3.security/2.cloudflare.md | 2 +- content/fr/3.serveex/5.media/1.jellyfin.md | 2 +- content/fr/3.serveex/9.apps/1.adguard.md | 4 ++-- content/fr/5.nonsense/1.summary.md | 2 +- .../fr/5.nonsense/2.python/1.nvidia-stock-bot.md | 6 +++--- content/fr/5.nonsense/2.python/2.adguard-cidre.md | 14 +++++++------- .../fr/5.nonsense/3.bash/1.servarr-duplicates.md | 2 +- content/fr/5.nonsense/3.bash/2.luks-backup.md | 8 ++++---- content/fr/5.nonsense/3.bash/3.socat-proxy.md | 8 ++++---- content/fr/5.nonsense/3.bash/4.hotdisk.md | 4 ++-- .../fr/5.nonsense/3.bash/5.backrest-docker-stop.md | 10 +++++----- content/fr/6.recycled/1.summary.md | 2 +- .../fr/6.recycled/2.deprecated/1.wireguard-14.md | 14 +++++++------- .../3.alternatives/2.qbittorrent-for-plex.md | 4 ++-- content/fr/index.md | 2 +- 30 files changed, 65 insertions(+), 65 deletions(-) diff --git a/content/en/3.serveex/4.monitoring/3.speedtest-tracker.md b/content/en/3.serveex/4.monitoring/3.speedtest-tracker.md index 4396510..a5ad5e9 100644 --- a/content/en/3.serveex/4.monitoring/3.speedtest-tracker.md +++ b/content/en/3.serveex/4.monitoring/3.speedtest-tracker.md @@ -87,7 +87,7 @@ PORT=3225 # port to access the web UI ✨ **Tip:** You can configure additional environment variables by referring to the **official documentation**. :: -Deploy the container and go to `http://yourserverip:3225`. Log in with the account `admin@exemple.com` and the password `password`. Don’t forget to change your ID and password once logged in! +Deploy the container and go to `http://yourserverip:3225`. Log in with the account `admin@example.com` and the password `password`. Don’t forget to change your ID and password once logged in! ### Done! :: diff --git a/content/en/3.serveex/9.apps/2.vaultwarden.md b/content/en/3.serveex/9.apps/2.vaultwarden.md index 6693e4d..537678d 100644 --- a/content/en/3.serveex/9.apps/2.vaultwarden.md +++ b/content/en/3.serveex/9.apps/2.vaultwarden.md @@ -247,7 +247,7 @@ Press :kbd{value="Ctrl+O"}, then :kbd{value="Enter"} to save, and :kbd{value="Ct ### Done! :: -And there you go! Vaultwarden is now exposed! Visit `https://vault.yourdomain.com/admin` to access the admin panel and paste the password you specified when generatique the `ADMIN_TOKEN`. For more information, see the [Bitwarden documentation](https://bitwarden.com/help/). +And there you go! Vaultwarden is now exposed! Visit `https://vault.yourdomain.com/admin` to access the admin panel and paste the password you specified when generating the `ADMIN_TOKEN`. For more information, see the [Bitwarden documentation](https://bitwarden.com/help/). Don't forget to install Bitwarden browser extensions (they work with Vaultwarden) for [Chrome](https://chromewebstore.google.com/detail/gestionnaire-de-mots-de-p/nngceckbapebfimnlniiiahkandclblb) and [Firefox](https://addons.mozilla.org/fr/firefox/addon/bitwarden-password-manager/), as well as [iOS](https://apps.apple.com/fr/app/bitwarden/id1137397744) and [Android](https://play.google.com/store/apps/details?id=com.x8bit.bitwarden&hl=fr) apps to sync your passwords. diff --git a/content/en/5.nonsense/3.bash/5.backrest-docker-stop.md b/content/en/5.nonsense/3.bash/5.backrest-docker-stop.md index cf717eb..9d178d6 100644 --- a/content/en/5.nonsense/3.bash/5.backrest-docker-stop.md +++ b/content/en/5.nonsense/3.bash/5.backrest-docker-stop.md @@ -10,7 +10,7 @@ description: A bash script that stops Docker containers before a Backrest backup The problem? You can’t safely back up a database while it’s running. There are plenty of complex solutions involving database dumps, but often the simplest method is to stop the containers, perform the backup, and then restart them. -**Backrest** doesn’t natively provide this functionality, but it does allow the execution of custom scripts triggered by events, for example, at the start and end of a backup plan. Our goal is to stop the containers whose databases need to be backed up when the backup plan starts, and restart them when the backup plan finishes.To achieve this, we’ll need a small Bash script and a secure connection between Backrest and the Docker socket, to enable the following sequence: +**Backrest** doesn’t natively provide this functionality, but it does allow the execution of custom scripts triggered by events, for example, at the start and end of a backup plan. Our goal is to stop the containers whose databases need to be backed up when the backup plan starts, and restart them when the backup plan finishes. To achieve this, we’ll need a small Bash script and a secure connection between Backrest and the Docker socket, to enable the following sequence: - The backup plan starts - The event triggers the execution of a custom script diff --git a/content/en/6.recycled/2.deprecated/2.file-browser.md b/content/en/6.recycled/2.deprecated/2.file-browser.md index 383b01f..2d20c34 100644 --- a/content/en/6.recycled/2.deprecated/2.file-browser.md +++ b/content/en/6.recycled/2.deprecated/2.file-browser.md @@ -29,7 +29,7 @@ services: container_name: filebrowser volumes: - /srv/docker/filebrowser/config:/config/ - - /path/to/your/folders:/yourfolders #add your folders to browse as /srv/docker:/srv/docker for exemple + - /path/to/your/folders:/yourfolders #add your folders to browse as /srv/docker:/srv/docker for example ports: - 8010:80 image: filebrowser/filebrowser:s6 diff --git a/content/en/index.md b/content/en/index.md index 9c6ae18..d3e6aa0 100644 --- a/content/en/index.md +++ b/content/en/index.md @@ -43,7 +43,7 @@ Set up my homelab → :::: ::::div{class="flex flex-col gap-5 justify-start self-start"} -

And Other dumb things

+

And other dumb things

:::::card --- diff --git a/content/fr/1.about/1.welcome.md b/content/fr/1.about/1.welcome.md index 90b9838..33e5e42 100644 --- a/content/fr/1.about/1.welcome.md +++ b/content/fr/1.about/1.welcome.md @@ -18,7 +18,7 @@ __Docu[·]{style="color: #1ad6ff"}djeex__ est le site regroupant la documentatio La documentation fournie ici est distribuée à titre expérimental, dans un esprit de partage d'expérience. Elle n'est en aucun cas faite pour construire une architecture de production ou pour de l'industrialisation. Il est possible qu'elle contienne des erreurs et/ou des approximations. -Evidemment, l'usage de cette documentation doit strictement se limiter au cadre légal. +Évidemment, l'usage de cette documentation doit strictement se limiter au cadre légal. ### Documentation disponible ou à venir diff --git a/content/fr/2.general/2.networking/1.nat.md b/content/fr/2.general/2.networking/1.nat.md index dc4f488..c289b82 100644 --- a/content/fr/2.general/2.networking/1.nat.md +++ b/content/fr/2.general/2.networking/1.nat.md @@ -11,7 +11,7 @@ description: Comprendre le NAT, la redirection de ports et le DHCP sur un routeu ## Qu'est-ce qu'un « port » ? -Les ports sont différents canaux par lesquels votre routeur envoie et reçoit des données, ce qui permet d'utiliser plusieurs services en meme temps. Lorsqu'il reçoit des données via un port, votre routeur transmet ensuite les données à la machine qui : +Les ports sont différents canaux par lesquels votre routeur envoie et reçoit des données, ce qui permet d'utiliser plusieurs services en même temps. Lorsqu'il reçoit des données via un port, votre routeur transmet ensuite les données à la machine qui : - soit a émis la requête de départ, - soit est configurée pour recevoir les données arrivant sur un port spécifique. diff --git a/content/fr/2.general/2.networking/2.dns.md b/content/fr/2.general/2.networking/2.dns.md index 655375a..a21d80c 100644 --- a/content/fr/2.general/2.networking/2.dns.md +++ b/content/fr/2.general/2.networking/2.dns.md @@ -8,7 +8,7 @@ description: Comprendre le fonctionnement du DNS, lire et éditer une zone DNS, ## Introduction -Lorsque vous naviguez sur un site, ou une application, des requêtes sont émises vers un ou des domaines afin d'afficher le contenu de votre page. Votre appareil ne connait pas les adresses IP de ces serveurs à joindre. Pour les connaitre, il va contacter un _serveur de nom_ (Domain Name Server) qui lui va lui répondre avec l'adresse IP la plus à jour pour le domaine de la requête. +Lorsque vous naviguez sur un site, ou une application, des requêtes sont émises vers un ou des domaines afin d'afficher le contenu de votre page. Votre appareil ne connait pas les adresses IP de ces serveurs à joindre. Pour les connaitre, il va contacter un _serveur de nom_ (Domain Name Server) qui va lui répondre avec l'adresse IP la plus à jour pour le domaine de la requête. La zone DNS, c'est une sorte de registre avec des panneaux qui redirige vos requêtes vers la bonne destination. diff --git a/content/fr/2.general/4.hardware/1.basics.md b/content/fr/2.general/4.hardware/1.basics.md index e966e3c..da53f48 100644 --- a/content/fr/2.general/4.hardware/1.basics.md +++ b/content/fr/2.general/4.hardware/1.basics.md @@ -94,7 +94,7 @@ Contrairement aux HDD, ils ne disposent pas de parties mécaniques, sont très m On les trouve dans plusieurs formats, aujourd'hui on privilégiera les versions M.2 NVMe, car ce sont les plus petits et plus rapides, et sont devenues un standard sur les cartes mères. -Ils sont en revanche beaucoup plus chers que les disque durs à capacité de stockage égale. Généralement, on y stockera au moins le système d'exploitation de la machine (Operating System ou OS) pour garantir une certaine rapidité d'exécution. Dans le cadre d'un serveur, on y stockera aussi si possible les conteneurs type [docker](/serveex/core/docker) et les bases de données. De manière générale, toute données dont un a besoin régulièrement et rapidement pour des calculs (site web, applications, etc.). +Ils sont en revanche beaucoup plus chers que les disque durs à capacité de stockage égale. Généralement, on y stockera au moins le système d'exploitation de la machine (Operating System ou OS) pour garantir une certaine rapidité d'exécution. Dans le cadre d'un serveur, on y stockera aussi si possible les conteneurs type [docker](/serveex/core/docker) et les bases de données. De manière générale, toutes les données dont on a besoin régulièrement et rapidement pour des calculs (site web, applications, etc.) devraient être stockées sur un SSD. ## La carte réseau diff --git a/content/fr/2.general/4.hardware/2.network.md b/content/fr/2.general/4.hardware/2.network.md index 3630047..e40478f 100644 --- a/content/fr/2.general/4.hardware/2.network.md +++ b/content/fr/2.general/4.hardware/2.network.md @@ -19,7 +19,7 @@ Plus généralement, un routeur est composé : - d'un port WAN (Wide Area Network) recevant les informations depuis l'internet (ou un réseau de hiérarchie supérieure). Par exemple un port recevant la fibre optique de votre opérateur, ou un port SFP+/RJ45 pour un routeur tiers. - d'un switch, c'est-à-dire d'un hub composé de plusieurs ports __LAN__ (Local Area Network) permettant de connecter plusieurs lignes et appareils à votre routeur. Ils peuvent être RJ45 ou SFP/SFP+. -- parfois d'un emetteur/recepteur WiFi +- parfois d'un émetteur/récepteur WiFi Le routeur peut posséder des capacités de _firewall_, c'est-à-dire de limiter le trafic d'appareils en particulier, et de _[NAT (Network Address Translation)](/general/networking/nat)_, c'est-à-dire de redirection de port. Il possède aussi généralement un _[DHCP (Dynamic Host Configuration Protocol)](/general/networking/nat#le-dhcp)_, servant à attribuer dynamiquement des _adresses IP_ à votre matériel branché au réseau. @@ -74,7 +74,7 @@ Ils sont définis en plusieurs catégorie, définissant le débit maximal selon | | CAT 5e | 30 m | | 2.5 Gb/s | CAT 5e | 100 m | | 1 Gb/s | CAT 5e | 100 m | -| 100 Mbs | CAT 5 | 100 m | +| 100 Mb/s | CAT 5 | 100 m | Certains de ces câbles sont plats, ronds, blindés (à relier à la terre), etc. Choisissez en fonction de votre installation. ce qu'il faut comprendre, c'est que pour relier un appareil qui dispose d'une prise RJ45 ethernet 2.5 Gb/s sur un routeur 2.5G b/s, il faut au moins un câble `CAT 5e`. @@ -85,7 +85,7 @@ Aujourd'hui, dans les nouvelles constructions, la norme est d'installer des câb ### Les câbles optiques -Très fins mais très fragiles, on commence à les voir de plus en plus dans les installations chez soi. A commencer par le câble opérateur qui relie votre prise fibre à votre box/routeur. Ils ont plusieurs avantages : +Très fins mais très fragiles, on commence à les voir de plus en plus dans les installations chez soi. À commencer par le câble opérateur qui relie votre prise fibre à votre box/routeur. Ils ont plusieurs avantages : - Extrêmement compacts - Consommation électrique nulle (contrairement au cuivre, qui perd de l'énergie en chaleur) diff --git a/content/fr/2.general/4.hardware/3.prolonas.md b/content/fr/2.general/4.hardware/3.prolonas.md index 111d637..d461b45 100644 --- a/content/fr/2.general/4.hardware/3.prolonas.md +++ b/content/fr/2.general/4.hardware/3.prolonas.md @@ -36,7 +36,7 @@ Un NAS (Network Attached Storage), c'est une machine conçue autour d'un espace ### Mais pourquoi un Mini PC avec un disque dur externe ne suffirait-il pas ? -Bien sûr, un simple mini PC avec ses 1 à 2To de stockage devraient suffire pour la plupart des gens. Et les films pourraient tenir dans un disque dur externe de quelques TB supplémentaires. En revanche ce n'est pas une solution fiable ni extensible de faire tourner ses applications et usages sur du stockage qui au moindre choc, au moindre problème, fait perdre vos données définitivement. +Bien sûr, un simple mini PC avec ses 1 à 2To de stockage devrait suffire pour la plupart des gens. Et les films pourraient tenir dans un disque dur externe de quelques TB supplémentaires. En revanche ce n'est pas une solution fiable ni extensible de faire tourner ses applications et usages sur du stockage qui au moindre choc, au moindre problème, fait perdre vos données définitivement. Le vrai NAS est construit autour de la fiabilité du support qui contient vos données. Il nécessite de mettre en place des stratégies de stockages type [RAID](/general/storage/raid) afin de préserver vos données en cas de panne et de la sauvegarde en cas de corruption (comme les snapshot [ZFS](/general/storage/zfs)). diff --git a/content/fr/2.general/5.linux/1.cli-basics.md b/content/fr/2.general/5.linux/1.cli-basics.md index c2c9304..f34ca74 100644 --- a/content/fr/2.general/5.linux/1.cli-basics.md +++ b/content/fr/2.general/5.linux/1.cli-basics.md @@ -190,7 +190,7 @@ grep -rin "password" /home/utilisateur/docker Chaque ligne indique le fichier, puis le numéro de ligne à l'intérieur, puis la ligne correspondante elle-même. Très pratique le jour où vous ne vous souvenez plus dans quelle stack se trouve un réglage. -### `sudo`, lancer en privilèges administrateur +### `sudo`, lancer en tant qu'administrateur *Substitute user do*. Afin d'éviter de casser votre serveur par accident, un utilisateur normal ne peut pas toucher aux fichiers du système. Préfixer une commande par `sudo` lance cette seule commande avec les droits administrateur. Cette commande vous demandera votre mot de passe au moins une fois par session, et parfois plusieurs fois selon le temps qui se sera écoulé depuis sa dernière utilisation. diff --git a/content/fr/2.general/5.linux/3.handy-tools.md b/content/fr/2.general/5.linux/3.handy-tools.md index c6e6304..8808d23 100644 --- a/content/fr/2.general/5.linux/3.handy-tools.md +++ b/content/fr/2.general/5.linux/3.handy-tools.md @@ -37,7 +37,7 @@ sudo apt install btop duf ncdu tealdeer ufw ## `btop`, surveiller ce que fait la machine -Le remplaçant moderne de `top` et `htop` : CPU, RAM, disques, réseau et processus sur un seul écran, avec des graphiques, des couleurs et une souris qui marche. C'est ce que vous ouvrez quand quelque chose semble lent, l'équivalent du gestionnaire de tache sur Windows ou du moniteur d'activité sur Mac. +Le remplaçant moderne de `top` et `htop` : CPU, RAM, disques, réseau et processus sur un seul écran, avec des graphiques, des couleurs et une souris qui marche. C'est ce que vous ouvrez quand quelque chose semble lent, l'équivalent du gestionnaire de tâches sur Windows ou du moniteur d'activité sur Mac. ::steps{level="4"} #### L'installer @@ -179,8 +179,8 @@ Il a besoin d'accéder au socket Docker, d'où le `sudo` à moins que votre util | Touche | Ce qu'elle fait | | --- | --- | | `1` à `6` | Aller à un onglet : projets, services, conteneurs, images, volumes, réseaux | -| Flèches | Se déplacer dans le onglet, la partie droite suit la sélection | -| :kbd{value="Enter"} | Passer sur le onglet principal à droite, :kbd{value="Esc"} revient | +| Flèches | Se déplacer dans l'onglet, la partie droite suit la sélection | +| :kbd{value="Enter"} | Passer sur l'onglet principal à droite, :kbd{value="Esc"} revient | | `x` | Ouvrir le menu de tout ce que vous pouvez faire avec la sélection | | `m` | Suivre les logs | | `s` / `r` / `p` | Arrêter, redémarrer, mettre en pause le conteneur sélectionné | diff --git a/content/fr/3.serveex/2.core/1.installation.md b/content/fr/3.serveex/2.core/1.installation.md index 853a2f5..691c209 100644 --- a/content/fr/3.serveex/2.core/1.installation.md +++ b/content/fr/3.serveex/2.core/1.installation.md @@ -40,7 +40,7 @@ Si vous êtes en dual boot avec Windows, désactivez son *démarrage rapide* : i Récupérez l'image **netinst** `amd64` sur [debian.org](https://www.debian.org/download.fr.html). Elle fait environ 700 Mo et récupère le reste des paquets sur le réseau pendant l'installation, ce qui est exactement ce qu'on veut sur un serveur branché en ethernet : vous obtenez des paquets à jour au lieu d'installer depuis un instantané vieux de plusieurs mois puis de tout mettre à jour derrière. Les images DVD complètes n'ont de sens que si la machine n'a pas de réseau pendant l'installation. -#### Créer une clée bootable avec Rufus +#### Créer une clé bootable avec Rufus Sous Windows, utilisez [Rufus](https://rufus.ie/) (portable, aucune installation nécessaire). Branchez une clé USB de 2 Go ou plus, en gardant en tête qu'**elle sera entièrement effacée**, puis : @@ -160,7 +160,7 @@ Toujours sur l'autre machine, générez une clé. ssh-keygen -t ed25519 ``` -Appuyez sur :kbd{value="Enter"} pour accepter le chemin par défaut, et mettez une passphrase (elle protège le fichier de clé lui-même, votre système la retiendra après le premier déverrouillage). Il s'agit ensuite de transmettre la clée publique à votre serveur. A noter que Windows n'a pas de `ssh-copy-id`, nous pousserons donc la clé manuellement dans ce cas : +Appuyez sur :kbd{value="Enter"} pour accepter le chemin par défaut, et mettez une passphrase (elle protège le fichier de clé lui-même, votre système la retiendra après le premier déverrouillage). Il s'agit ensuite de transmettre la clé publique à votre serveur. À noter que Windows n'a pas de `ssh-copy-id`, nous pousserons donc la clé manuellement dans ce cas : ::code-group ```bash [macOS] diff --git a/content/fr/3.serveex/2.core/3.wireguard.md b/content/fr/3.serveex/2.core/3.wireguard.md index 0d89455..e0e452a 100644 --- a/content/fr/3.serveex/2.core/3.wireguard.md +++ b/content/fr/3.serveex/2.core/3.wireguard.md @@ -19,11 +19,11 @@ Il existe aussi des clients Windows, macOS, iOS et Android. Le principe est le suivant : - Sur internet, n'importe qui peut contacter n'importe quel box internet et donc essayer de contacter n'importe quel serveur exposé. -- Votre serveur est sur votre réseau local. Il est accessible depuis le réseau local mais pas depuis internet, mis à part les services exposés (comme nous l'avons fait avec Dockge). Pour accéder aux ressources non exposées, vous devez être connecté sur le même réseau que votre serveur et donc être chez vous. De plus, vous devez laisser ouvert les ports utilisés par vos services à travers le pare feu de votre serveur. +- Votre serveur est sur votre réseau local. Il est accessible depuis le réseau local mais pas depuis internet, mis à part les services exposés (comme nous l'avons fait avec Dockge). Pour accéder aux ressources non exposées, vous devez être connecté sur le même réseau que votre serveur et donc être chez vous. De plus, vous devez laisser ouverts les ports utilisés par vos services à travers le pare-feu de votre serveur. - Nous souhaitons ici au contraire, depuis n'importe où, pouvoir accéder de manière sécurisée aux services non exposés sur internet du serveur, comme la console SSH qui permet de se connecter à la machine par exemple. - Nous souhaitons aussi accéder aux services d'autres serveurs, et par exemple relier de manière sécurisée deux instances de Dockge pour tout contrôler depuis la même interface. -Pour cela nous allons créer un **réseau privé virtuel**, ou VPN, c'est-à-dire un tunnel sécurisé auquel personne n'a accès à part les machines que vous relierez entre elles. Elles feront partie d'un nouveau réseau et pourront dialoguer entre elle comme dans un réseau local. +Pour cela nous allons créer un **réseau privé virtuel**, ou VPN, c'est-à-dire un tunnel sécurisé auquel personne n'a accès à part les machines que vous relierez entre elles. Elles feront partie d'un nouveau réseau et pourront dialoguer entre elles comme dans un réseau local. D'autre part, vous pourrez ajouter votre téléphone, un ordinateur portable ou n'importe quel appareil au réseau pour pouvoir utiliser vos ressources depuis vos appareils quotidiens, où que vous soyez. @@ -34,9 +34,9 @@ Dans cette illustration, la machine 1 est sur deux réseaux : - son réseau local (tous les appareils liés à la box, avec une adresse IP du type `192.168.x.x ` donc ici la machine 1 et la machine 2) - le réseau du VPN (tous les appareils reliés au VPN, avec une seconde adresse IP du type `10.8.x.x` donc ici la machine 1 et 4) -On peut aussi faire en sorte que les machines reliées au réseau virtuel partagent les accès à leur réseau local. Ici nous ne le ferons pas, pour des raisons de sécurité, et de complexité en terme de sous-réseau (si les deux machines distantes ont des machines locales qui utilisent la même adresse IP locale, par exemple `192.168.1.1`, cela posera des conflits). +On peut aussi faire en sorte que les machines reliées au réseau virtuel partagent les accès à leur réseau local. Ici nous ne le ferons pas, pour des raisons de sécurité, et de complexité en termes de sous-réseau (si les deux machines distantes ont des machines locales qui utilisent la même adresse IP locale, par exemple `192.168.1.1`, cela posera des conflits). -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. +Ainsi, sur le réseau virtuel, seules les machines directement reliées pourront dialoguer entre elles depuis ce réseau. Elles ne pourront pas dialoguer avec une machine située sur un autre réseau local et non reliée au VPN. ## Côté serveur ::note{icon=""} diff --git a/content/fr/3.serveex/3.security/2.cloudflare.md b/content/fr/3.serveex/3.security/2.cloudflare.md index 9fba3f1..69608b2 100644 --- a/content/fr/3.serveex/3.security/2.cloudflare.md +++ b/content/fr/3.serveex/3.security/2.cloudflare.md @@ -8,7 +8,7 @@ description: Utiliser les tunnels Cloudflare et Zero Trust pour exposer des serv ![cloudfare_tunnels](/img/serveex/cloudflared.svg) ## Introduction -L'architecture _Zero Trust_ est la pratique consistant à concevoir des systèmes fondés sur le principe de __« ne jamais faire confiance__, __toujours vérifier »__, par opposition au principe traditionnel de __« confiance, mais vérifier »__. Ce concept est devenu très populaires récemment, à la suite des attaques toujours plus nombreuses concernant les données des utilisateurs. C'est un concept très large, nous nous concentrerons sur l’application du _Zero Trust_ aux services Web que nous hébergeons. +L'architecture _Zero Trust_ est la pratique consistant à concevoir des systèmes fondés sur le principe de __« ne jamais faire confiance__, __toujours vérifier »__, par opposition au principe traditionnel de __« confiance, mais vérifier »__. Ce concept est devenu très populaire récemment, à la suite des attaques toujours plus nombreuses concernant les données des utilisateurs. C'est un concept très large, nous nous concentrerons sur l’application du _Zero Trust_ aux services Web que nous hébergeons. Les _tunnels Cloudflare_ offrent un moyen simple d'arriver au _Zero Trust_, en s'appuyant sur [SWAG](/serveex/core/swag) et [Authentik](/serveex/advanced/authentik). diff --git a/content/fr/3.serveex/5.media/1.jellyfin.md b/content/fr/3.serveex/5.media/1.jellyfin.md index d1251c3..690f03a 100644 --- a/content/fr/3.serveex/5.media/1.jellyfin.md +++ b/content/fr/3.serveex/5.media/1.jellyfin.md @@ -124,7 +124,7 @@ Si vos médias sont stockés sur un disque réseau (un NAS ou un disque dur exte ## Transcodage matériel -Jellyfin réencode la vidéo à la volée dès qu'un client ne peut pas lire un fichier tel quel : la résolution de l'écran de l'appareil est inférieure à celle de la source, sa connexion réseau est trop lente pour le débit du fichier, ou il ne prend pas en charge le codec, le format HDR ou le type de sous-titres du fichier. C'est ce qu'on appelle le **transcodage**. Lorsque le transcodage est logiciel et éxecuté par le CPU, cela prend énormément de ressources et cela peut saturer un serveur modeste avec seulement un ou deux flux simultanés. Le **transcodage matériel** délègue ce travail au GPU intégré à votre processeur (Intel QuickSync, sur la plupart du matériel de homelab), qui s'en occupe bien plus vite et laisse le CPU libre pour tout le reste. +Jellyfin réencode la vidéo à la volée dès qu'un client ne peut pas lire un fichier tel quel : la résolution de l'écran de l'appareil est inférieure à celle de la source, sa connexion réseau est trop lente pour le débit du fichier, ou il ne prend pas en charge le codec, le format HDR ou le type de sous-titres du fichier. C'est ce qu'on appelle le **transcodage**. Lorsque le transcodage est logiciel et exécuté par le CPU, cela prend énormément de ressources et cela peut saturer un serveur modeste avec seulement un ou deux flux simultanés. Le **transcodage matériel** délègue ce travail au GPU intégré à votre processeur (Intel QuickSync, sur la plupart du matériel de homelab), qui s'en occupe bien plus vite et laisse le CPU libre pour tout le reste. Le **tone mapping** est une fonction liée mais distincte : convertir une vidéo HDR (qui a besoin d'un écran HDR compatible pour rendre correctement) en SDR pour qu'elle s'affiche correctement sur un écran, une TV ou un client qui ne gère pas le HDR, au lieu de paraître délavée ou trop sombre. diff --git a/content/fr/3.serveex/9.apps/1.adguard.md b/content/fr/3.serveex/9.apps/1.adguard.md index e0f09ce..4e8427d 100644 --- a/content/fr/3.serveex/9.apps/1.adguard.md +++ b/content/fr/3.serveex/9.apps/1.adguard.md @@ -25,7 +25,7 @@ AdGuard lui, va s'intercaler entre le serveur de nom et votre appareil. Si vous - Si le domaine n'est pas dans une blocklist, il contactera des serveurs de noms génériques (dit upstreams) et répondra vers vos appareils avec l'adresse IP recherchée. - Si le domaine est dans une blocklist, il ne contactera pas les DNS upstream et ne répondra pas à vos appareils. Le contenu affilié à cette requête ne s'affichera pas. -C'est ainsi que les pubs et domaines malveillants sont bloqués : leurs domaines sont présents dans la blocklist, le reste de la page lui charge correctement. +C'est ainsi que les pubs et domaines malveillants sont bloqués : leurs domaines sont présents dans la blocklist, le reste de la page se charge correctement. ![Schéma d'AdGuard filtrant une requête DNS selon une liste de blocage](/img/serveex/adguard.svg) @@ -360,7 +360,7 @@ Le chiffrement est essentiel si vous souhaitez garder privées les requêtes que Afin de configurer le chiffrement : -- Allez dans _paramètre_ puis dans _chiffrement_. +- Allez dans _paramètres_ puis dans _chiffrement_. - Paramétrez comme suit ![Écran des réglages de chiffrement d'AdGuard Home](/img/serveex/adguard-chiffrement.png) diff --git a/content/fr/5.nonsense/1.summary.md b/content/fr/5.nonsense/1.summary.md index af973f1..a5e1dfd 100644 --- a/content/fr/5.nonsense/1.summary.md +++ b/content/fr/5.nonsense/1.summary.md @@ -9,7 +9,7 @@ navigation: :ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60} ## Scripts et projets annexes -Cette section rassemble mes projets Python et Bash écrits en chemin : des scripts qui automatisent une des usages précis, répond à des besoins particuliers, créés au fil du temps. Vous les trouverez peut-être utiles, les voici en vrac. +Cette section rassemble mes projets Python et Bash écrits en chemin : des scripts qui automatisent un des usages précis, répondent à des besoins particuliers, créés au fil du temps. Vous les trouverez peut-être utiles, les voici en vrac. ### Python diff --git a/content/fr/5.nonsense/2.python/1.nvidia-stock-bot.md b/content/fr/5.nonsense/2.python/1.nvidia-stock-bot.md index c8883a8..9b46aa6 100644 --- a/content/fr/5.nonsense/2.python/1.nvidia-stock-bot.md +++ b/content/fr/5.nonsense/2.python/1.nvidia-stock-bot.md @@ -6,11 +6,11 @@ description: Un bot Python qui surveille la disponibilité des GPU en temps rée :ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60} -Depuis déjà 4 ans, la pénurie de materiel electronique fait rage. Et les cartes graphiques ne sont pas épargnées. En 2020, j'ai du attendre 2 mois pour obtenir mon exemplaire de RTX 3080, et pour cela j'ai du m'inscrire sur [JV Hardware](https://discord.gg/gxffg3GA96) où une poignée de geek avait mis en place un bot qui envoyait un ping lorsqu'elles étaient disponibles. +Depuis déjà 4 ans, la pénurie de materiel electronique fait rage. Et les cartes graphiques ne sont pas épargnées. En 2020, j'ai dû attendre 2 mois pour obtenir mon exemplaire de RTX 3080, et pour cela j'ai dû m'inscrire sur [JV Hardware](https://discord.gg/gxffg3GA96) où une poignée de geek avait mis en place un bot qui envoyait un ping lorsqu'elles étaient disponibles. -4 ans après et 5000 abonnés plus tard, vient la sortie des RTX 5000. Et là aucun bot dispo sur le marché ne semble fonctionner correctement. Je ne parle même pas d'un certain "influenceur" qui se permet de faire payer l'accès à son bot qui ne fonctionne meme pas. Il copie à la main les alertes provenant d'autres serveurs, comme le notre qui ont résolu le problème. +4 ans après et 5000 abonnés plus tard, vient la sortie des RTX 5000. Et là aucun bot dispo sur le marché ne semble fonctionner correctement. Je ne parle même pas d'un certain "influenceur" qui se permet de faire payer l'accès à son bot qui ne fonctionne même pas. Il copie à la main les alertes provenant d'autres serveurs, comme le nôtre qui ont résolu le problème. -Quoiqu'il en soit, désireux d'obtenir une RTX 5090 pour ma machine dédiée à l'IA, je me suis dit qu'il était peut etre le temps de plonger dans le monde de python et de ChatGPT pour m'épauler. A l'aide d'un autre membre du serveur, KevOut, qui a principalement guidé sur le principe de départ et les sources des différentes API, j'ai réussi à obtenir un bot propre, fonctionnel, qui envoie différents types d'alertes via Discord. Avec un simple conteneur docker à déployer. +Quoiqu'il en soit, désireux d'obtenir une RTX 5090 pour ma machine dédiée à l'IA, je me suis dit qu'il était peut-être le temps de plonger dans le monde de python et de ChatGPT pour m'épauler. A l'aide d'un autre membre du serveur, KevOut, qui a principalement guidé sur le principe de départ et les sources des différentes API, j'ai réussi à obtenir un bot propre, fonctionnel, qui envoie différents types d'alertes via Discord. Avec un simple conteneur docker à déployer. Après moult déconvenues, je suis passé de ceci : diff --git a/content/fr/5.nonsense/2.python/2.adguard-cidre.md b/content/fr/5.nonsense/2.python/2.adguard-cidre.md index 6af3402..31e22ba 100644 --- a/content/fr/5.nonsense/2.python/2.adguard-cidre.md +++ b/content/fr/5.nonsense/2.python/2.adguard-cidre.md @@ -6,21 +6,21 @@ description: Un script Python pour synchroniser automatiquement les listes CIDR :ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60} -AdGuard Home est une solution merveilleuse pour filter ses requêtes DNS et ainsi se débarasser de la publicité ou des DNS des fournisseurs d'accès, ou encore réécrire des requetes. +AdGuard Home est une solution merveilleuse pour filtrer ses requêtes DNS et ainsi se débarrasser de la publicité ou des DNS des fournisseurs d'accès, ou encore réécrire des requêtes. -Quand c'est en local, c'est très chouette. Mais quand on veut que tout ses appareils en profitent même à l'exterieur, on est obligé de l'exposer sur le net. Et n'importe qui peut s'en servir et saturer le petit remote à 1€ qu'on a pris pour l'heberger. +Quand c'est en local, c'est très chouette. Mais quand on veut que tous ses appareils en profitent même à l'extérieur, on est obligé de l'exposer sur le net. Et n'importe qui peut s'en servir et saturer le petit remote à 1€ qu'on a pris pour l'héberger. -AdGuard permet d'avoir des listes de clients autorisés ou bloqués. Problème, pour autoriser un client il faut son IP, et dans le cas d'un téléphone sur le réseau mobile, beh elle change régulièrement. L'idée est donc plutot de bloquer des listes générales plutot que d'autoriser des IP qui de toute façon changent régulièrement. +AdGuard permet d'avoir des listes de clients autorisés ou bloqués. Problème, pour autoriser un client il faut son IP, et dans le cas d'un téléphone sur le réseau mobile, beh elle change régulièrement. L'idée est donc plutôt de bloquer des listes générales plutôt que d'autoriser des IP qui de toute façon changent régulièrement. -CIDRE est un outil qui permet de synchroniser des listes de plages IP géolocalisées mises à jour régulièrement avec un pare feu. Plutot que de faire tourner CIDRE sur le remote complet avec des règles de pare feu complexes, je me suis dit qu'il fallait simplement s'arranger pour ajouter les plages IP à jour que CIDRE propose au systeme de block list d'AdGuard, selon les pays que l'on souhaite bloquer. +CIDRE est un outil qui permet de synchroniser des listes de plages IP géolocalisées mises à jour régulièrement avec un pare feu. Plutôt que de faire tourner CIDRE sur le remote complet avec des règles de pare-feu complexes, je me suis dit qu'il fallait simplement s'arranger pour ajouter les plages IP à jour que CIDRE propose au système de block list d'AdGuard, selon les pays que l'on souhaite bloquer. C'est ainsi qu'est né AdGuard CIDRE Sync, un conteneur qui synchronise régulièrement la block list d'AdGuard avec les plages IP recensées par CIDRE à la fréquence que vous voulez. -L'idée etant de : +L'idée étant de : - Backup le fichier de conf d'AdGuard au premier lancement (le fichier jamais touché par le robot est ainsi conservé au cas où) -- Télécharger la liste des pays selectionnés via une variable d'environnement -- Permettre d'ajouter soi-meme des IP "à la main" dans un fichier +- Télécharger la liste des pays sélectionnés via une variable d'environnement +- Permettre d'ajouter soi-même des IP "à la main" dans un fichier - Concaténer le tout, backup le fichier de conf (dernière update), et injecter la liste dans la bonne section du fichier de conf d'AdGuard - Recharger AdGuard en relançant le container (accès au socket via docker socket proxy pour limiter les permissions) diff --git a/content/fr/5.nonsense/3.bash/1.servarr-duplicates.md b/content/fr/5.nonsense/3.bash/1.servarr-duplicates.md index 8a8fb75..ad4806b 100644 --- a/content/fr/5.nonsense/3.bash/1.servarr-duplicates.md +++ b/content/fr/5.nonsense/3.bash/1.servarr-duplicates.md @@ -6,7 +6,7 @@ description: Un script bash pour détecter et corriger les fichiers médias en d :ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60} -Six mois après avoir téléchargé des térabytes de media, je me suis rendu compte que Sonarr et Radarr les copaient dans ma biblio Plex au lieu de créer des hardlinks. C'est dû à un mécanisme contre intuitif qui est que si vous montez plusieurs dossiers dans Sonarr/Radarr, il les voit comme deux systemes de fichiers différents. Et ne peut donc pas créer de hardlinks. C'est pour cela qu'il ne faut monter qu'un seul dossier parent, qui contient tous les enfants (`downloads`, `movies`, `tvseries` dans le dossier parent `media` par exemple). +Six mois après avoir téléchargé des térabytes de media, je me suis rendu compte que Sonarr et Radarr les copaient dans ma biblio Plex au lieu de créer des hardlinks. C'est dû à un mécanisme contre intuitif qui est que si vous montez plusieurs dossiers dans Sonarr/Radarr, il les voit comme deux systèmes de fichiers différents. Et ne peut donc pas créer de hardlinks. C'est pour cela qu'il ne faut monter qu'un seul dossier parent, qui contient tous les enfants (`downloads`, `movies`, `tvseries` dans le dossier parent `media` par exemple). J'ai donc restructuré mes dossiers, remis à la main chaque chemin dans qBittorrent, Plex, et autres. Il restait à trouver un moyen de détecter les doublons existants et d'automatiquement les supprimer et de créer des hardlinks à la place, pour économiser de l'espace. diff --git a/content/fr/5.nonsense/3.bash/2.luks-backup.md b/content/fr/5.nonsense/3.bash/2.luks-backup.md index 6e7736b..e1ecbba 100644 --- a/content/fr/5.nonsense/3.bash/2.luks-backup.md +++ b/content/fr/5.nonsense/3.bash/2.luks-backup.md @@ -6,16 +6,16 @@ description: Un script bash pour extraire automatiquement les headers LUKS de to :ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60} -Je me suis rendu compte il y a peu qu'il ne suffisait pas d'avoir le mot de passe pour deverouiller un volume luks apres une panne ou une corruption. J'ai ainsi appris à dump les headers luks des disques/volumes et à utiliser les numéros de série + noms de partitions pour pouvoir bien identifier quel header correspond à quel disque/partition (j'en ai 10 !). +Je me suis rendu compte il y a peu qu'il ne suffisait pas d'avoir le mot de passe pour déverrouiller un volume luks après une panne ou une corruption. J'ai ainsi appris à dump les headers luks des disques/volumes et à utiliser les numéros de série + noms de partitions pour pouvoir bien identifier quel header correspond à quel disque/partition (j'en ai 10 !). -Après avoir bien galéré à la main, j'avoue avoir demandé à Qwen3 (llm hebergé sur ma RTX 5090) de me faire un script qui automatise le listing et identification des disques, dump les headers et les stock dans une archive chiffrée prete à etre backupée sur mon serveur de sauvegarde. +Après avoir bien galéré à la main, j'avoue avoir demandé à Qwen3 (llm hébergé sur ma RTX 5090) de me faire un script qui automatise le listing et identification des disques, dump les headers et les stocke dans une archive chiffrée prête à être sauvegardée sur mon serveur de sauvegarde. Ainsi, ce script : * Liste et identifie les disques avec leur numéro de série -* Liste les partition +* Liste les partitions * Dump les headers dans un dossier dans `/root` (dossier sécurisé) -* Cree une archive temporaire +* Crée une archive temporaire * Prompt pour saisir un mot de passe * Chiffre avec le mot de passe * Détruit l'archive non chiffrée diff --git a/content/fr/5.nonsense/3.bash/3.socat-proxy.md b/content/fr/5.nonsense/3.bash/3.socat-proxy.md index be3078c..ba96fae 100644 --- a/content/fr/5.nonsense/3.bash/3.socat-proxy.md +++ b/content/fr/5.nonsense/3.bash/3.socat-proxy.md @@ -8,18 +8,18 @@ description: Utiliser socat pour proxifier le socket Docker via Docker Socket Pr Ce projet répond à un cas d'usage problématique : - J'ai [Beszel](https://beszel.dev/), un conteneur de monitoring en mode host, nécessitant d'exposer le socket de Docker afin qu'il récupère les stats des conteneurs -- Afin de ne pas laisser le socket complètement ouvert pour Beszel, j'ai [Docker Socket Proxy](https://github.com/Tecnativa/docker-socket-proxy), un conteneur qui se place entre le scoket de docker et le conteneur qui en a besoin, et qui filtre le requêtes en paramétrant les bonnes permissions pour ne pas tout exposer au conteneur qui l'utilise. +- Afin de ne pas laisser le socket complètement ouvert pour Beszel, j'ai [Docker Socket Proxy](https://github.com/Tecnativa/docker-socket-proxy), un conteneur qui se place entre le socket de docker et le conteneur qui en a besoin, et qui filtre les requêtes en paramétrant les bonnes permissions pour ne pas tout exposer au conteneur qui l'utilise. Problème, si __Beszel__ est en mode host, il doit contacter __Docker Socket Proxy__ directement sur un port de l'host, c'est à dire en exposant un port de __Docker Socket Proxy__. Ce qui fait que n'importe quel conteneur/application sur mon host peut l'appeler et utiliser le socket docker. C'est là qu'intervient [Socat Proxy](https://git.djeex.fr/Djeex/socat-proxy). Ce dernier est un conteneur qui : - Crée un socket UNIX -- Ecoute ce socket -- Envoie les requetes vers Docker Socket Proxy et vice versa +- Écoute ce socket +- Envoie les requêtes vers Docker Socket Proxy et vice versa - Permet de remplacer le vrai socket docker en exposant le socket proxy créé, dans le conteneur final via un bind mount (ici, Beszel) -Ainsi, un filtre comme Docker Socket Proxy dialogue avec Socat Proxy dans leur propre réseau isolé (en mode bridge), et le bind mount du socket UNIX créé est localisé sur l'host dans un dossier avec les permissions nécessaires pour ne pas etre visible des autres conteneurs/applicatifs. +Ainsi, un filtre comme Docker Socket Proxy dialogue avec Socat Proxy dans leur propre réseau isolé (en mode bridge), et le bind mount du socket UNIX créé est localisé sur l'host dans un dossier avec les permissions nécessaires pour ne pas être visible des autres conteneurs/applicatifs. En gros : diff --git a/content/fr/5.nonsense/3.bash/4.hotdisk.md b/content/fr/5.nonsense/3.bash/4.hotdisk.md index 2703f83..0fba4a0 100644 --- a/content/fr/5.nonsense/3.bash/4.hotdisk.md +++ b/content/fr/5.nonsense/3.bash/4.hotdisk.md @@ -8,7 +8,7 @@ description: Un script bash qui surveille la température des disques durs et é Quand on a un NAS avec plusieurs disques dans une buanderie, les températures peuvent vite grimper. Un disque dur est très sensible à la chaleur et peut subir de gros dommages s'il dépasse une température seuil trop longtemps. -Après un été très chaud qui a fournit son lot de sueur froide en regardant la température de mes disques, j'ai cherché un moyen de pouvoir automatiser l'extinction du serveur en cas de dépassement prolonger de la température maximale supportée par mes disques. +Après un été très chaud qui a fourni son lot de sueur froide en regardant la température de mes disques, j'ai cherché un moyen de pouvoir automatiser l'extinction du serveur en cas de dépassement prolongé de la température maximale supportée par mes disques. N'ayant rien trouvé de convaincant, je l'ai donc fait moi-même. @@ -34,7 +34,7 @@ Le script d'installation permet aussi de régler différents paramètres : Il exécute aussi un autre script qui paramètre **logrotate** avec les éléments configurés précédemment. Et enfin, le script d'installation peut être exécuté directement via un simple `curl` suivi d'un dernier script de configuration, parfait pour les plus flemmards. -Il a fallu également gérer le sujet du root sans sudo, du sudo seul, de l'utilisateur sans sudo, les divers cas d'erreur (dépendances manquantes, erreur dans les permissions, créations de fichier, de lecture des données des disques, etc...) +Il a fallu également gérer le sujet du root sans sudo, du sudo seul, de l'utilisateur sans sudo, les divers cas d'erreur (dépendances manquantes, erreur dans les permissions, créations de fichier, de lecture des données des disques, etc.) Et l'acces concurrent au fichier de statuts. diff --git a/content/fr/5.nonsense/3.bash/5.backrest-docker-stop.md b/content/fr/5.nonsense/3.bash/5.backrest-docker-stop.md index daa8de0..ffdf157 100644 --- a/content/fr/5.nonsense/3.bash/5.backrest-docker-stop.md +++ b/content/fr/5.nonsense/3.bash/5.backrest-docker-stop.md @@ -8,16 +8,16 @@ description: Un script bash qui arrête les conteneurs Docker avant une sauvegar [Backrest](https://github.com/garethgeorge/backrest) est un formidable outil de backup. Dans le cas de [Serveex](/serveex/introduction), la majeure partie des données à sauvegarder sont des conteneurs, et souvent ces conteneurs possèdent des bases de données. -Le problème ? On ne peut pas sauvegarder proprement une BDD qui est en route. Alors, il existe plein de solutions complexe à base de dump des bases de données, mais souvent le plus simple cela reste de stopper les conteneurs, de sauvegarder, et de redémarrer les conteneurs. +Le problème ? On ne peut pas sauvegarder proprement une BDD qui est en route. Alors, il existe plein de solutions complexes à base de dump des bases de données, mais souvent le plus simple cela reste de stopper les conteneurs, de sauvegarder, et de redémarrer les conteneurs. -**Backrest** ne propose pas de solutions native, mais il propose d'executer des scripts customisés à déclencher sur des évenements, comme le démarrage et la fin de la sauvegarde par exemple. Notre besoin est donc de stopper les conteneurs dont on veut sauvegarder la BDD, à chaque démarrage du plan de sauvegarde, et de les redémarrer à la fin de l'execution du plan de sauvegarde. Pour cela nous allons avoir besoin d'un script bash et d'une connexion sécurisée entre Backrest et le socket de Docker, afin d'avoir la cinématique suivante : +**Backrest** ne propose pas de solutions natives, mais il propose d'exécuter des scripts customisés à déclencher sur des événements, comme le démarrage et la fin de la sauvegarde par exemple. Notre besoin est donc de stopper les conteneurs dont on veut sauvegarder la BDD, à chaque démarrage du plan de sauvegarde, et de les redémarrer à la fin de l'exécution du plan de sauvegarde. Pour cela nous allons avoir besoin d'un script bash et d'une connexion sécurisée entre Backrest et le socket de Docker, afin d'avoir la cinématique suivante : - Le plan de sauvegarde se met en route -- L'evenement déclenche l'execution d'un script custom +- L'événement déclenche l'exécution d'un script custom - Le script contacte docker et demande la liste des conteneurs qui comportent le label `backrest.backup.stop=true` - Il récupère cette liste et leur envoie une commande d'extinction - Le plan de sauvegarde s'arrête -- L'evenement déclenche l'execution d'un script custom +- L'événement déclenche l'exécution d'un script custom - Le script recontacte docker, récupère la même liste, et redémarre ces conteneurs ## Faire communiquer Backrest et Docker en toute sécurité @@ -67,7 +67,7 @@ Et voilà, Backrest pourra ainsi communiquer avec Docker en toute sécurité. ## Les scripts -Vous trouverez ci-dessous les scripts à renseigner en action pour les évèvenements de démarrage et d'arrêt de la sauvegarde dans **Backrest**. +Vous trouverez ci-dessous les scripts à renseigner en action pour les événements de démarrage et d'arrêt de la sauvegarde dans **Backrest**. ::code-group ```sh [Stop] diff --git a/content/fr/6.recycled/1.summary.md b/content/fr/6.recycled/1.summary.md index 5265179..a84784d 100644 --- a/content/fr/6.recycled/1.summary.md +++ b/content/fr/6.recycled/1.summary.md @@ -9,7 +9,7 @@ navigation: :ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60} ## Le grenier -Au fil des mois et années, certaines solutions deviennent obsolètes. Soit parce qu'elles ne sont plus maintenues, soit parce qu'elles ont trouvé de meilleurs remplaçants. Cette section les gardes au cas où vous les trouveriez parfaitement valables, même si ce ne sont pas celles que [Serveex](/serveex/introduction) recommande aujourd'hui. Rien ici n'est activement maintenu. +Au fil des mois et années, certaines solutions deviennent obsolètes. Soit parce qu'elles ne sont plus maintenues, soit parce qu'elles ont trouvé de meilleurs remplaçants. Cette section les garde au cas où vous les trouveriez parfaitement valables, même si ce ne sont pas celles que [Serveex](/serveex/introduction) recommande aujourd'hui. Rien ici n'est activement maintenu. ### Obsolète diff --git a/content/fr/6.recycled/2.deprecated/1.wireguard-14.md b/content/fr/6.recycled/2.deprecated/1.wireguard-14.md index c373291..81bd460 100644 --- a/content/fr/6.recycled/2.deprecated/1.wireguard-14.md +++ b/content/fr/6.recycled/2.deprecated/1.wireguard-14.md @@ -12,11 +12,11 @@ wg-easy 15 est devenu bien plus compliqué, « not so easy » dirait-on. C'est j :: ## Introduction -L'utilisation d'un VPN permet d'accéder à distance aux ressources locales du serveur sans les exposer sur internet. C'est notamment une manière propre de sécuriser l'accès à la console SSH, plutot que d'exposer le port sur internet. C'est pouvoir se connecter à son réseau où que l'on soit, de maniere sécurisée, et de faire dialoguer des machines qui sont sur des réseaux différents. +L'utilisation d'un VPN permet d'accéder à distance aux ressources locales du serveur sans les exposer sur internet. C'est notamment une manière propre de sécuriser l'accès à la console SSH, plutôt que d'exposer le port sur internet. C'est pouvoir se connecter à son réseau où que l'on soit, de manière sécurisée, et de faire dialoguer des machines qui sont sur des réseaux différents. Ici nous utiliserons [WireGuard](https://www.wireguard.com/), un serveur VPN sécurisé et très performant, à l'aide des conteneurs : -- [wg-easy](https://github.com/wg-easy/wg-easy) pour le serveur, qui propose une interface web très simple pour controler les connexions et télécharger les fichiers de conf (notamment par QR code pour les téléphones) +- [wg-easy](https://github.com/wg-easy/wg-easy) pour le serveur, qui propose une interface web très simple pour contrôler les connexions et télécharger les fichiers de conf (notamment par QR code pour les téléphones) - [WireGuard](https://docs.linuxserver.io/images/docker-wireguard/?h=wireguard) pour les clients Linux Il existe aussi des clients Windows, macOS, iOS et Android. @@ -24,13 +24,13 @@ Il existe aussi des clients Windows, macOS, iOS et Android. Le principe est le suivant : - Sur internet, n'importe qui peut contacter n'importe quel box internet et donc essayer de contacter n'importe quel serveur exposé. -- Votre serveur est sur votre réseau local. Il est accessible depuis le réseau local mais pas depuis internet, mis à part les services exposés (comme nous l'avons fait avec Dockge). Pour accéder aux ressources non exposées, vous devez être connecté sur le meme réseau que votre serveur et donc etre chez vous. De plus, vous devez laisser ouvert les ports utilisés par vos services à travers le pare feu de votre serveur. -- Nous souhaitons ici au contraire, depuis n'importe où, pouvoir accéder de maniere securisée aux services non exposés sur internet du serveur, comme la console SSH qui permet de se connecter à la machine par exemple. -- Nous souhaitons aussi accéder aux services d'autres serveurs, et par exemple relier de maniere sécurisée deux instances de Dockge pour tout controler depuis la meme interface. +- Votre serveur est sur votre réseau local. Il est accessible depuis le réseau local mais pas depuis internet, mis à part les services exposés (comme nous l'avons fait avec Dockge). Pour accéder aux ressources non exposées, vous devez être connecté sur le même réseau que votre serveur et donc être chez vous. De plus, vous devez laisser ouverts les ports utilisés par vos services à travers le pare-feu de votre serveur. +- Nous souhaitons ici au contraire, depuis n'importe où, pouvoir accéder de manière sécurisée aux services non exposés sur internet du serveur, comme la console SSH qui permet de se connecter à la machine par exemple. +- Nous souhaitons aussi accéder aux services d'autres serveurs, et par exemple relier de manière sécurisée deux instances de Dockge pour tout contrôler depuis la même interface. Pour cela nous allons créer un **réseau privé virtuel**, ou VPN, c'est à dire un tunnel sécurisé auquel personne n'a accès à part les machines que vous relierez entre elles. Elles feront partie d'un nouveau réseau et pourront dialoguer entre elle comme dans un réseau local. -D'autre part, vous pourrez ajouter votre téléphone, un ordinateur portable ou n'importe quel appareil au réseau pour pouvoir utiliser vos ressources depuis vos appareils quotidiens, où que vous soyiez. +D'autre part, vous pourrez ajouter votre téléphone, un ordinateur portable ou n'importe quel appareil au réseau pour pouvoir utiliser vos ressources depuis vos appareils quotidiens, où que vous soyez. ![Schéma d'un tunnel VPN reliant un appareil distant au réseau domestique](/img/serveex/vpn.svg) @@ -39,7 +39,7 @@ Dans cette illustration, la machine 1 est sur deux réseaux : - son réseau local (tous les appareils liés à la box, avec une adresse IP du type `192.168.x.x ` donc ici la machine 1 et la machine 2) - le réseau du VPN (tous les appareils reliés au VPN, avec une seconde adresse IP du type `10.8.x.x` donc ici la machine 1 et 4) -On peut aussi faire en sorte que les machines reliées au réseau virtuel partagent les acces à leur réseau local. Ici nous ne le ferons pas, pour des raisons de sécurité, et de complexité en terme de sous-réseau (si les deux machines distantes ont des machines locales qui utilisent la meme adresse IP locale, par exemple `192.168.1.1`, cela posera des conflits). +On peut aussi faire en sorte que les machines reliées au réseau virtuel partagent les accès à leur réseau local. Ici nous ne le ferons pas, pour des raisons de sécurité, et de complexité en termes de sous-réseau (si les deux machines distantes ont des machines locales qui utilisent la même adresse IP locale, par exemple `192.168.1.1`, cela posera des conflits). 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. diff --git a/content/fr/6.recycled/3.alternatives/2.qbittorrent-for-plex.md b/content/fr/6.recycled/3.alternatives/2.qbittorrent-for-plex.md index 5df17f4..c0d64f0 100644 --- a/content/fr/6.recycled/3.alternatives/2.qbittorrent-for-plex.md +++ b/content/fr/6.recycled/3.alternatives/2.qbittorrent-for-plex.md @@ -15,8 +15,8 @@ C'est l'installation de la seedbox associée à Plex plutôt qu'à Jellyfin, con Afin de télécharger vos media favoris en toute sécurité, nous allons monter un système à base de : -- [Qbittorent](https://github.com/linuxserver/docker-qbittorrent) comme logiciel de téléchargement bittorent -- [Proton VPN Plus](https://protonvpn.com/torrenting), VPN pour sécuriser vos échanges, auquel vous devez souscrire (il y a de nombreux codes promo) pour accéder au protocole Bittorent, mais vous pouvez également en choisir un autre, à condition qu'il propose le protocole bittorent. +- [qBittorrent](https://github.com/linuxserver/docker-qbittorrent) comme logiciel de téléchargement BitTorrent +- [Proton VPN Plus](https://protonvpn.com/torrenting), VPN pour sécuriser vos échanges, auquel vous devez souscrire (il y a de nombreux codes promo) pour accéder au protocole BitTorrent, mais vous pouvez également en choisir un autre, à condition qu'il propose le protocole BitTorrent. - [Gluetun](https://github.com/qdm12/gluetun) - [qBittorrent port update](https://codeberg.org/TechnoSam/qbittorrent-gluetun-port-update) pour mettre automatiquement à jour le port de votre VPN (qui change régulièrement). - Et le mode [vuetorrent](https://github.com/gabe565/linuxserver-mod-vuetorrent) pour une interface moderne et intuitive. diff --git a/content/fr/index.md b/content/fr/index.md index 3fc434a..68f0d01 100644 --- a/content/fr/index.md +++ b/content/fr/index.md @@ -55,7 +55,7 @@ class: my-0! ui: icon: text-[#1ad6ff] --- -Jetez un oeil à mes âneries +Jetez un œil à mes âneries ::::: :::::card -- 2.54.0 From 604110c8011866676707ccf8dab3b1320972a5d0 Mon Sep 17 00:00:00 2001 From: Djeex Date: Mon, 7 Sep 2026 21:28:08 +0200 Subject: [PATCH 5/7] Normalize formatting conventions across guides (chapter D) Co-Authored-By: Claude Sonnet 5 --- .../7.files/1.file-browser-quantum.md | 15 ++++++------ content/en/3.serveex/7.files/2.pingvin.md | 24 +++++++++---------- .../3.serveex/8.development/1.code-server.md | 15 ++++++------ .../en/3.serveex/8.development/3.it-tools.md | 15 ++++++------ content/en/5.nonsense/3.bash/3.socat-proxy.md | 2 +- .../6.recycled/2.deprecated/1.wireguard-14.md | 6 ++--- .../3.alternatives/2.qbittorrent-for-plex.md | 4 ++-- .../7.files/1.file-browser-quantum.md | 15 ++++++------ content/fr/3.serveex/7.files/2.pingvin.md | 24 +++++++++---------- .../3.serveex/8.development/1.code-server.md | 15 ++++++------ .../fr/3.serveex/8.development/3.it-tools.md | 15 ++++++------ content/fr/6.recycled/1.summary.md | 2 +- .../6.recycled/2.deprecated/1.wireguard-14.md | 2 +- .../3.alternatives/2.qbittorrent-for-plex.md | 4 ++-- 14 files changed, 74 insertions(+), 84 deletions(-) diff --git a/content/en/3.serveex/7.files/1.file-browser-quantum.md b/content/en/3.serveex/7.files/1.file-browser-quantum.md index 4692b73..41d869c 100644 --- a/content/en/3.serveex/7.files/1.file-browser-quantum.md +++ b/content/en/3.serveex/7.files/1.file-browser-quantum.md @@ -84,14 +84,13 @@ Mount every folder you listed under `sources` in `config.yaml` at the same path ::tip{icon=""} ✨ __Tip:__ Add the watchtower label to automate updates. - ```yaml [compose.yaml] - services: - filebrowser-quantum: - #... - labels: - - - com.centurylinklabs.watchtower.enable=true - ``` +```yaml [compose.yaml] +services: + filebrowser-quantum: + #... + labels: + - com.centurylinklabs.watchtower.enable=true +``` :: Deploy the container and go to `http://yourserverip:8020`. Log in with the default `admin` / `admin` credentials, then immediately change the password in your profile settings. diff --git a/content/en/3.serveex/7.files/2.pingvin.md b/content/en/3.serveex/7.files/2.pingvin.md index d32e230..f198535 100644 --- a/content/en/3.serveex/7.files/2.pingvin.md +++ b/content/en/3.serveex/7.files/2.pingvin.md @@ -48,20 +48,18 @@ From here on, we assume the network name for SWAG is `swag_default`. ::tip{icon=""} ✨ __Tip:__ Add the watchtower label to each container to automate updates. - ```yaml [compose.yaml] - services: - pingvin-share: - #... - labels: +```yaml [compose.yaml] +services: + pingvin-share: + #... + labels: + - com.centurylinklabs.watchtower.enable=true - - com.centurylinklabs.watchtower.enable=true - - clamav: - #... - labels: - - - com.centurylinklabs.watchtower.enable=true - ``` + clamav: + #... + labels: + - com.centurylinklabs.watchtower.enable=true +``` :: Deploy the container and go to `http://yourserverip:3600`. That's it! Your Pingvin web UI instance is up and running! diff --git a/content/en/3.serveex/8.development/1.code-server.md b/content/en/3.serveex/8.development/1.code-server.md index d3deca6..01e0214 100644 --- a/content/en/3.serveex/8.development/1.code-server.md +++ b/content/en/3.serveex/8.development/1.code-server.md @@ -58,14 +58,13 @@ services: ::tip{icon=""} ✨ Add the Watchtower label to each container to automate updates - ```yaml [compose.yaml] - services: - code-server: - #... - labels: - - - com.centurylinklabs.watchtower.enable=true - ``` +```yaml [compose.yaml] +services: + code-server: + #... + labels: + - com.centurylinklabs.watchtower.enable=true +``` :: ### Set your environment variables diff --git a/content/en/3.serveex/8.development/3.it-tools.md b/content/en/3.serveex/8.development/3.it-tools.md index 88043bc..9841d0d 100644 --- a/content/en/3.serveex/8.development/3.it-tools.md +++ b/content/en/3.serveex/8.development/3.it-tools.md @@ -31,14 +31,13 @@ services: ::tip{icon=""} ✨ __Tip:__ Add the Watchtower label to each container to enable automatic updates. - ```yaml [compose.yaml] - services: - it-tools: - #... - labels: - - - com.centurylinklabs.watchtower.enable=true - ``` +```yaml [compose.yaml] +services: + it-tools: + #... + labels: + - com.centurylinklabs.watchtower.enable=true +``` :: Deploy the container and visit `http://yourserverip:3222`. That’s it, your IT Tools web UI instance is up and running! diff --git a/content/en/5.nonsense/3.bash/3.socat-proxy.md b/content/en/5.nonsense/3.bash/3.socat-proxy.md index cc64ea1..e79193f 100644 --- a/content/en/5.nonsense/3.bash/3.socat-proxy.md +++ b/content/en/5.nonsense/3.bash/3.socat-proxy.md @@ -77,6 +77,6 @@ services: More information is available on the repository: -::card{title="🐋 **Socat Proxy**" to="https://git.djeex.fr/Djeex/socat-proxy" target="_blank"} +::card{title="🐋 __Socat Proxy__" to="https://git.djeex.fr/Djeex/socat-proxy" target="_blank"} A lightweight bind-mount socket proxy :: diff --git a/content/en/6.recycled/2.deprecated/1.wireguard-14.md b/content/en/6.recycled/2.deprecated/1.wireguard-14.md index be0b58a..e74bd06 100644 --- a/content/en/6.recycled/2.deprecated/1.wireguard-14.md +++ b/content/en/6.recycled/2.deprecated/1.wireguard-14.md @@ -156,7 +156,7 @@ sudo sysctl net.ipv4.conf.all.src_valid_mark=1 To configure clients, download the config files from the server: -- Visit `http://your-server-ip:51821` +- Visit `http://yourserverip:51821` - Create a client - Download the config file - Rename it to `wg0.conf` @@ -257,13 +257,13 @@ Repeat for each client ## Other Devices -- **Phone:** Install WireGuard and scan the QR code from the web UI (`http://your-server-ip:51821`) +- **Phone:** Install WireGuard and scan the QR code from the web UI (`http://yourserverip:51821`) - **PC:** Install the WireGuard client and import the config file ::warning __Warning:__ If a client device is on the same LAN as the server, edit `wg0.conf` and change the endpoint to the local server IP: -`Endpoint = your-server-ip:51820` +`Endpoint = yourserverip:51820` :: And this is the result: diff --git a/content/en/6.recycled/3.alternatives/2.qbittorrent-for-plex.md b/content/en/6.recycled/3.alternatives/2.qbittorrent-for-plex.md index e49df9c..287c111 100644 --- a/content/en/6.recycled/3.alternatives/2.qbittorrent-for-plex.md +++ b/content/en/6.recycled/3.alternatives/2.qbittorrent-for-plex.md @@ -206,7 +206,7 @@ Once done, deploy the container. ### Log in and secure your account -Login at `http://server-ip:5695` (or the port you set). +Login at `http://yourserverip:5695` (or the port you set). ::caution @@ -262,7 +262,7 @@ Click "Deploy" and wait for SWAG to fully initialize. ::note -We assume the network name is `seedbox_default`. You can confirm by checking the SWAG dashboard at http://server-ip:81. +We assume the network name is `seedbox_default`. You can confirm by checking the SWAG dashboard at http://yourserverip:81. :: ### Create the subdomain.conf file diff --git a/content/fr/3.serveex/7.files/1.file-browser-quantum.md b/content/fr/3.serveex/7.files/1.file-browser-quantum.md index 07d1eea..9613a92 100644 --- a/content/fr/3.serveex/7.files/1.file-browser-quantum.md +++ b/content/fr/3.serveex/7.files/1.file-browser-quantum.md @@ -84,14 +84,13 @@ Montez chaque dossier listé sous `sources` dans `config.yaml` au même chemin ::tip{icon=""} ✨ __Astuce :__ ajoutez le label watchtower pour automatiser les mises à jour. - ```yaml [compose.yaml] - services: - filebrowser-quantum: - #... - labels: - - - com.centurylinklabs.watchtower.enable=true - ``` +```yaml [compose.yaml] +services: + filebrowser-quantum: + #... + labels: + - com.centurylinklabs.watchtower.enable=true +``` :: Déployez le conteneur et allez sur `http://ipdevotreserveur:8020`. Connectez-vous avec les identifiants par défaut `admin` / `admin`, puis changez immédiatement le mot de passe dans les réglages de votre profil. diff --git a/content/fr/3.serveex/7.files/2.pingvin.md b/content/fr/3.serveex/7.files/2.pingvin.md index 3a7a698..dfba311 100644 --- a/content/fr/3.serveex/7.files/2.pingvin.md +++ b/content/fr/3.serveex/7.files/2.pingvin.md @@ -48,20 +48,18 @@ services: ::tip{icon=""} ✨ __Astuce :__ ajoutez le label watchtower à chaque conteneur pour automatiser les mises à jour. - ```yaml [compose.yaml] - services: - pingvin-share: - #... - labels: +```yaml [compose.yaml] +services: + pingvin-share: + #... + labels: + - com.centurylinklabs.watchtower.enable=true - - com.centurylinklabs.watchtower.enable=true - - clamav: - #... - labels: - - - com.centurylinklabs.watchtower.enable=true - ``` + clamav: + #... + labels: + - com.centurylinklabs.watchtower.enable=true +``` :: Déployez le conteneur et allez sur `http://ipdevotreserveur:3600`. Et voilà ! Votre instance web Pingvin est en route ! diff --git a/content/fr/3.serveex/8.development/1.code-server.md b/content/fr/3.serveex/8.development/1.code-server.md index af3e6a4..3661ba5 100644 --- a/content/fr/3.serveex/8.development/1.code-server.md +++ b/content/fr/3.serveex/8.development/1.code-server.md @@ -58,14 +58,13 @@ services: ::tip{icon=""} ✨ Ajoutez le label Watchtower à chaque conteneur pour automatiser les mises à jour - ```yaml [compose.yaml] - services: - code-server: - #... - labels: - - - com.centurylinklabs.watchtower.enable=true - ``` +```yaml [compose.yaml] +services: + code-server: + #... + labels: + - com.centurylinklabs.watchtower.enable=true +``` :: ### Renseigner vos variables d'environnement diff --git a/content/fr/3.serveex/8.development/3.it-tools.md b/content/fr/3.serveex/8.development/3.it-tools.md index 572a256..c52b7d2 100644 --- a/content/fr/3.serveex/8.development/3.it-tools.md +++ b/content/fr/3.serveex/8.development/3.it-tools.md @@ -31,14 +31,13 @@ services: ::tip{icon=""} ✨ __Astuce :__ ajoutez le label Watchtower à chaque conteneur pour activer les mises à jour automatiques. - ```yaml [compose.yaml] - services: - it-tools: - #... - labels: - - - com.centurylinklabs.watchtower.enable=true - ``` +```yaml [compose.yaml] +services: + it-tools: + #... + labels: + - com.centurylinklabs.watchtower.enable=true +``` :: Déployez le conteneur et visitez `http://ipdevotreserveur:3222`. Voilà, votre instance web IT Tools est en route ! diff --git a/content/fr/6.recycled/1.summary.md b/content/fr/6.recycled/1.summary.md index a84784d..6fe0273 100644 --- a/content/fr/6.recycled/1.summary.md +++ b/content/fr/6.recycled/1.summary.md @@ -1,5 +1,5 @@ --- -title: Poubelle +title: Recyclés description: Des tutoriels obsolètes gardés pour référence, et des applications alternatives remplacées ailleurs sur le site mais qui fonctionnent toujours très bien. navigation: icon: i-lucide-bookmark diff --git a/content/fr/6.recycled/2.deprecated/1.wireguard-14.md b/content/fr/6.recycled/2.deprecated/1.wireguard-14.md index 81bd460..7cc43bc 100644 --- a/content/fr/6.recycled/2.deprecated/1.wireguard-14.md +++ b/content/fr/6.recycled/2.deprecated/1.wireguard-14.md @@ -263,7 +263,7 @@ Répétez pour chaque client ::warning __Attention :__ si un appareil client est sur le même réseau local que le serveur, modifiez `wg0.conf` et remplacez l'endpoint par l'IP locale du serveur : -`Endpoint = ip-de-votre-serveur:51820` +`Endpoint = ipdevotreserveur:51820` :: Et voici le résultat : diff --git a/content/fr/6.recycled/3.alternatives/2.qbittorrent-for-plex.md b/content/fr/6.recycled/3.alternatives/2.qbittorrent-for-plex.md index c0d64f0..91437e9 100644 --- a/content/fr/6.recycled/3.alternatives/2.qbittorrent-for-plex.md +++ b/content/fr/6.recycled/3.alternatives/2.qbittorrent-for-plex.md @@ -206,7 +206,7 @@ Une fois fait, déployez le conteneur. ### Se connecter et sécuriser son compte -Connectez-vous sur `http://ipduserveur:5695` (ou le port que vous avez défini). +Connectez-vous sur `http://ipdevotreserveur:5695` (ou le port que vous avez défini). ::caution @@ -262,7 +262,7 @@ Cliquez sur « Deploy » et attendez que SWAG soit complètement initialisé. ::note -Nous partons du principe que le nom du réseau est `seedbox_default`. Vous pouvez le confirmer en consultant le tableau de bord de SWAG sur http://ipduserveur:81. +Nous partons du principe que le nom du réseau est `seedbox_default`. Vous pouvez le confirmer en consultant le tableau de bord de SWAG sur http://ipdevotreserveur:81. :: ### Créer le fichier subdomain.conf -- 2.54.0 From 51b182d01b58eb4afd8bbaf3d72abd229a202a0e Mon Sep 17 00:00:00 2001 From: Djeex Date: Mon, 7 Sep 2026 21:28:32 +0200 Subject: [PATCH 6/7] Rename Stockeex intro page title to avoid duplicate page title (F1) Co-Authored-By: Claude Sonnet 5 --- content/en/4.stockeex/1.introduction.md | 2 +- content/fr/4.stockeex/1.introduction.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/4.stockeex/1.introduction.md b/content/en/4.stockeex/1.introduction.md index e70e5ea..8139c27 100644 --- a/content/en/4.stockeex/1.introduction.md +++ b/content/en/4.stockeex/1.introduction.md @@ -1,5 +1,5 @@ --- -title: Introduction +title: Stockeex description: Introduction to Stockeex, a personal project for stock and inventory management. Documentation coming soon. navigation: icon: i-lucide-bookmark diff --git a/content/fr/4.stockeex/1.introduction.md b/content/fr/4.stockeex/1.introduction.md index 1da46e1..d0f75fb 100644 --- a/content/fr/4.stockeex/1.introduction.md +++ b/content/fr/4.stockeex/1.introduction.md @@ -1,5 +1,5 @@ --- -title: Introduction +title: Stockeex description: Introduction à Stockeex, un projet personnel de gestion de stock et d'inventaire. Documentation en cours de rédaction. navigation: icon: i-lucide-bookmark -- 2.54.0 From 6bb81f66f4afe582a2ad43677c5084d5a2711e7e Mon Sep 17 00:00:00 2001 From: Djeex Date: Mon, 7 Sep 2026 21:30:03 +0200 Subject: [PATCH 7/7] Clean up remaining writing-quality issues from the audit (E1, E3, E4, E7) Co-Authored-By: Claude Sonnet 5 --- content/en/2.general/5.linux/3.handy-tools.md | 2 +- content/en/3.serveex/5.media/1.jellyfin.md | 2 +- content/fr/3.serveex/2.core/1.installation.md | 2 +- content/fr/3.serveex/3.security/2.cloudflare.md | 6 +++--- content/fr/3.serveex/5.media/1.jellyfin.md | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/content/en/2.general/5.linux/3.handy-tools.md b/content/en/2.general/5.linux/3.handy-tools.md index 48d17dd..f278add 100644 --- a/content/en/2.general/5.linux/3.handy-tools.md +++ b/content/en/2.general/5.linux/3.handy-tools.md @@ -203,7 +203,7 @@ Being outside `apt` also means it won't be updated by `apt full-upgrade`. Repeat ## `ufw`, a firewall you can actually read -Debian's firewall (`iptables`/`nftables` under the hood) is powerful and unreadable directly. `ufw`, *uncomplicated firewall*, is a thin layer on top that turns it into short, plain-English rules, block everything by default and open only what you actually expose. +Debian's firewall (`iptables`/`nftables` under the hood) is powerful and unreadable directly. `ufw`, *uncomplicated firewall*, is a thin layer on top that turns it into short, plain-English rules: block everything by default and open only what you actually expose. ::steps{level="4"} #### Install it diff --git a/content/en/3.serveex/5.media/1.jellyfin.md b/content/en/3.serveex/5.media/1.jellyfin.md index e34e36a..92304fd 100644 --- a/content/en/3.serveex/5.media/1.jellyfin.md +++ b/content/en/3.serveex/5.media/1.jellyfin.md @@ -44,7 +44,7 @@ tree: Create the `movies`, `tvseries`, and `library` folders in `/media`: ```bash [Terminal] -mkdir -p /media/movies /media/library /media/tvseries +mkdir -p /media/movies /media/tvseries /media/library ``` ### Deploy the stack diff --git a/content/fr/3.serveex/2.core/1.installation.md b/content/fr/3.serveex/2.core/1.installation.md index 691c209..ed18ed5 100644 --- a/content/fr/3.serveex/2.core/1.installation.md +++ b/content/fr/3.serveex/2.core/1.installation.md @@ -44,7 +44,7 @@ Récupérez l'image **netinst** `amd64` sur [debian.org](https://www.debian.org/ Sous Windows, utilisez [Rufus](https://rufus.ie/) (portable, aucune installation nécessaire). Branchez une clé USB de 2 Go ou plus, en gardant en tête qu'**elle sera entièrement effacée**, puis : -- **Périphérique** : votre clé USB. Vérifiez la capacité deux fois, Sinon Rufus écrira sans rechigner sur le mauvais disque si vous le laissez faire. +- **Périphérique** : votre clé USB. Vérifiez la capacité deux fois : sinon, Rufus écrira sans rechigner sur le mauvais disque si vous le laissez faire. - **Type de démarrage** : `SÉLECTION`, puis choisissez l'ISO Debian que vous venez de télécharger. - **Schéma de partition** : il doit correspondre au mode de démarrage réglé dans le BIOS plus haut. `GPT` pour l'UEFI, `MBR` uniquement si vous restez en legacy/CSM. Le champ système de destination suit automatiquement. - Laissez les options de formatage par défaut, puis cliquez sur `DÉMARRER`. Si Rufus demande comment écrire l'image, gardez le *mode image ISO* recommandé. diff --git a/content/fr/3.serveex/3.security/2.cloudflare.md b/content/fr/3.serveex/3.security/2.cloudflare.md index 69608b2..7c23a91 100644 --- a/content/fr/3.serveex/3.security/2.cloudflare.md +++ b/content/fr/3.serveex/3.security/2.cloudflare.md @@ -42,17 +42,17 @@ Si vous avez plusieurs serveurs et donc plusieurs tunnels pour un même domaine ### Clé API -Pour commencer, nous devons créer un nouveau jeton API pour Cloudflare et récupérer nos identifiants de zone et de compte. +Pour commencer, vous devez créer un nouveau jeton API pour Cloudflare et récupérer vos identifiants de zone et de compte. Sur le tableau de bord de Cloudflare, dans la page de présentation de votre domaine, vous pouvez voir les identifiants de `zone` et de `compte` en bas à droite de l'écran. Copiez précieusement ces deux identifiants. ![id and account](/img/serveex/cf-id.png) -Juste en dessous d'eux, il y a un lien intitulé _Obtenez votre jeton API_. Cliquez dessus. Le périmètre dont nous avons besoin pour le jeton doit inclure `Zone:DNS:Edit` et `Account:Cloudflare Tunnel:Edit`. Assurez-vous que votre page de création de token ressemble à celle illustrée dans la capture d'écran ci-dessous. +Juste en dessous d'eux, il y a un lien intitulé _Obtenez votre jeton API_. Cliquez dessus. Le périmètre dont vous avez besoin pour le jeton doit inclure `Zone:DNS:Edit` et `Account:Cloudflare Tunnel:Edit`. Assurez-vous que votre page de création de token ressemble à celle illustrée dans la capture d'écran ci-dessous. ![API token](/img/serveex/cf-token.png) -Une fois que nous aurons enregistré, notre jeton sera affiché une fois. copiez le précieusement, car vous ne pourrez plus le revoir après la fermeture. +Une fois que vous aurez enregistré, votre jeton sera affiché une fois. Copiez-le précieusement, car vous ne pourrez plus le revoir après la fermeture. ### Cloudflare Zero Trust diff --git a/content/fr/3.serveex/5.media/1.jellyfin.md b/content/fr/3.serveex/5.media/1.jellyfin.md index 690f03a..7eaa101 100644 --- a/content/fr/3.serveex/5.media/1.jellyfin.md +++ b/content/fr/3.serveex/5.media/1.jellyfin.md @@ -44,7 +44,7 @@ tree: Créez les dossiers `movies`, `tvseries` et `library` dans `/media` : ```bash [Terminal] -mkdir -p /media/movies /media/library /media/tvseries +mkdir -p /media/movies /media/tvseries /media/library ``` ### Déployer la stack -- 2.54.0