Compare commits

...

30 Commits

Author SHA1 Message Date
bb26e5e5b4 Fixed images 2025-07-24 21:15:10 +00:00
09bd0bbd20 Fixed typo 2025-07-24 17:52:41 +00:00
ff4fbb05c6 Fixed typo 2025-07-20 19:47:52 +00:00
8a2cf3d75e New folder + icons + updated links 2025-07-20 19:25:03 +00:00
dde0b724d5 Fixed typo 2025-07-20 16:32:29 +00:00
ddbd0c6677 Fixed wrong env var description 2025-07-19 18:04:49 +00:00
6ad48a3a2f Fixed scheme 2025-07-18 15:27:17 +00:00
233c06d58a Fixed typo 2025-07-18 15:05:57 +00:00
0188964f24 Some fix 2025-07-18 15:05:14 +00:00
92d3214602 Different updates 2025-07-18 10:13:37 +00:00
5849eeb6c7 RAID 2025-07-16 09:06:49 +00:00
68defde59b Home update + Serveex introduction new illustration 2025-07-14 15:55:49 +00:00
eed768d108 Fixed issues with ' preventing password with $ to works. Notice that vaulktwarden doc isn't updated. 2025-07-13 16:51:28 +00:00
96e095c099 Fixed compose + added WG_PORT 2025-07-13 11:23:07 +00:00
79f852bd3d nvidia-stock-bot-v4 2025-07-13 10:21:59 +00:00
d346f7fb4a Fixed typo 2025-07-12 23:06:16 +00:00
824b5b9eb3 Fixed typo 2025-07-12 10:40:43 +00:00
a2e01614d3 Luks header script 2025-07-11 16:32:17 +00:00
4e748b50d7 Filebrowser + Dozzle update 2025-07-11 14:15:11 +00:00
a086969bd0 updated url 2025-07-11 07:28:57 +00:00
f807cd7a1f updated version 2025-07-11 07:16:13 +00:00
a80df85cad updated link 2025-07-11 07:14:30 +00:00
abcdf62f0f updated compose 2025-07-11 07:02:59 +00:00
623d61e3d3 Fixed typo 2025-07-10 11:02:22 +00:00
844e86b81f Removed french discord link 2025-07-07 14:14:22 +00:00
5317991f17 Added github social + removed french discord 2025-07-07 08:22:32 +00:00
b69621c552 Fixed pics 2025-07-04 16:06:06 +00:00
f749aade70 Language switcher 2025-07-04 15:02:08 +00:00
80cdcc9fb6 BaseURL /fr/ 2025-07-04 14:32:02 +00:00
07e524857e Some minor fixes 2025-07-04 13:57:05 +00:00
63 changed files with 501 additions and 139 deletions

View File

@ -2,7 +2,7 @@
<img src="https://git.djeex.fr/Djeex/DjeexLab/raw/branch/main/docs/files/img/global/lab.svg" align="center" width="700">
[![docu.djeex.fr](https://img.shields.io/badge/Docu·djeex-00b0f0?style=for-the-badge&logoColor=white&logo=materialformkdocs)](https://docu.djeex.fr/) [![](https://dcbadge.limes.pink/api/server/jvhardware)](https://discord.gg/jvhardware) [![Uptime-Kuma](https://stats.djeex.fr/api/badge/23/status?style=for-the-badge)](https://docu.djeex.fr/)
[![docu.djeex.fr](https://img.shields.io/badge/Docu·djeex-00b0f0?style=for-the-badge&logoColor=white&logo=materialformkdocs)](https://docu.djeex.fr/) [![Uptime-Kuma](https://stats.djeex.fr/api/badge/23/status?style=for-the-badge)](https://docu.djeex.fr/)
</p>

View File

@ -29,16 +29,21 @@ export default defineAppConfig({
image: '/img/social.png',
socials: {
github:'',
Language: {
label: 'En',
icon: 'ri:english-input',
href: 'https://docu.djeex.fr'
},
Gitea: {
label: 'Gitea',
icon: 'cib:gitea',
href: 'https://git.djeex.fr/Djeex/docudjeex',
},
Discord: {
label: 'Discord',
icon: 'cbi:discord',
href: 'https://discord.gg/jvhardware',
},
Github: {
label: 'Github',
icon:'cib:github',
href: 'https://github.com/Djeex',
}
},
github: {
baseUrl:'https://git.djeex.fr',

View File

@ -49,6 +49,18 @@
max-width: var(--elements-container-maxWidth);
}
.has-parent-icon .icon {
color: #ADA9A4;
}
.has-parent-icon.active .icon {
color: var(--color-primary-500) !important;
}
.card:hover{
color:#00304a;
}
p img {
border-radius:7px;
}

View File

@ -14,38 +14,22 @@ cta:
- Accéder à la doc
- /apropos/bienvenue
secondary:
- Discord
- https://discord.gg/jvhardware
- En
- https://docu.djeex.fr
---
#title
Bienvenue sur docu[·]{style="color: #1ad6ff"}djeex
#description
De la doc, encore de la doc. Des astuces et des expériences. Vous y trouverez entre autre :
De la doc, encore de la doc. Des astuces et des expériences. Construisez votre homelab et votre propre NAS.
#extra
::list
- **Installation de Debian** pour votre serveur
- **Docker** pour déployer vos services
- **VPN** pour accéder à votre réseau privé
- **Reverse proxy** et **Zero Trust** pour exposer vos services
- **SSO** et **Multi-facteur** pour protéger vos services exposés
- **Cloud** et **media** pour accéder et synchroniser vos fichiers et media
- _(à venir)_ **Créer votre NAS** de A à Z pour stocker vos données
- _(à venir)_ **Backup 3-2-1**
::
![](/img/global/docudjeex-home.svg)
#support
::terminal
---
content:
- ssh user@serveex -p 22
- cd /docker
- sudo docker compose up -d
- sudo rm -rf * /
- Sud.. shit shiiit shiiiiit !!!
---
::
::card{icon=cib:gitea style="color:#1ad6ff;"}
#title
__git.djeex.fr__
#description
[Consultez mes bêtises](https://git.djeex.fr)
::

View File

@ -1,5 +1,6 @@
---
title: A propos
icon: lucide:home
title: Bienvenue
main:
fluid: false
---
@ -7,7 +8,7 @@ main:
# docu[·]{style="color: #1ad6ff"}quoi ?
__Docu[·]{style="color: #1ad6ff"}djeex__ est le site regroupant la documentation de mes serveurs, pensé à l'origine pour retrouver facilement mes configurations et commandes. Mon infrastructure est construite autour du duo Debian 12 et docker, pour plus de simplicité à l'export et au déploiement. On remerciera principale __Nipah__ et __Xenio__ (et d'autres) pour leur patience et écoute. La majeur partie de ce contenu vient de leurs têtes. Rejoins nous sur [Discord](https://discord.gg/jvhardware) !
__Docu[·]{style="color: #1ad6ff"}djeex__ est le site regroupant la documentation de mes serveurs, pensé à l'origine pour retrouver facilement mes configurations et commandes. Mon infrastructure est construite autour du duo Debian 12 et docker, pour plus de simplicité à l'export et au déploiement. On remerciera principalement __Nipah__ et __Xenio__ (et d'autres) pour leur patience et écoute. La majeur partie de ce contenu vient de leurs têtes.
## A propos de la documentation

View File

@ -53,7 +53,7 @@ Ainsi, si vous choisissez de pointer le domaine `mondomaine.fr` vers votre serve
- __Attention,__ Si votre serveur est chez vous :
:::
- l'IP publique est celle de votre box internet. Assurez-vous auprès de votre opérateur que cette IP est fixe ou configurez un [DDNS](https://aws.amazon.com/fr/what-is/dynamic-dns/).
- assurez-vous d'avoir [redirigé le port 443 vers le port d'écoute de votre serveur](/generalites/nat).
- assurez-vous d'avoir [redirigé le port 443 vers le port d'écoute de votre serveur](/generalites/reseau/nat).
::
Et si vous ajoutez un sous-domaine qui doit pointer vers votre serveur, vous pouvez utiliser un enregistrement `CNAME` vers `mondomaine.fr`.

View File

@ -0,0 +1,2 @@
navigation.title: Réseau
icon: lucide:network

View File

@ -0,0 +1,117 @@
---
navigation: true
title: RAID
main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
# RAID
_Ensemble Redondant de Disques Indépendants_
::alert{type="info"}
🎯 __Objectifs :__
- Comprendre ce qu'est un système RAID
- Comprendre quel type de RAID est adapté aux différents usages
::
En informatique, le RAID (Redundant Array of Independent Disks) est un système permettant de combiner plusieurs disques durs pour améliorer les performances et/ou la fiabilité. Il fonctionne en restructurant et en répartissant les blocs de données entre les disques.
À lorigine, les systèmes RAID étaient matériels, ce qui signifiait quun contrôleur dédié (une puce spécifique) gérait la distribution des données et les opérations RAID. Aujourdhui, la plupart des systèmes RAID (ou équivalents) sont logiciels. En fait, de nombreuses technologies logicielles peuvent créer des systèmes de type RAID avec des fonctionnalités indisponibles dans les RAID matériels, comme la réparation automatique (data scrubbing), les instantanés (snapshots), etc.
## Différents types de RAID
Il existe plusieurs types de RAID, chacun ayant ses avantages et inconvénients. Les facteurs qui les influencent sont les suivants :
- Nombre de disques
- Capacité totale de stockage
- Vitesse de lecture
- Vitesse décriture
- Tolérance aux pannes (résistance aux défaillances matérielles)
::alert{type="warning"}
:::list{type="warning"}
- Le RAID nest pas un système de sauvegarde mais un système de continuité de service ! Il permet seulement le remplacement à chaud des disques sans interruption du serveur ou restauration depuis une sauvegarde. Vous avez toujours besoin dun système de sauvegarde externe.
:::
::
### Sans RAID
---
<div style="display: flex; align-items: center;">
<img src="/img/global/no-raid.svg" alt="Image" style="max-width: 30%; max-height:230px; margin-right: 20px;">
<ul>
<li>Vos disques sans RAID. Les données sont stockées disque par disque.</li>
<li>Si vous perdez un disque, seules ses données sont perdues.</li>
<li>La capacité totale est la somme de tous les disques.</li>
</div>
Utilisez vos disques sans RAID si vous navez pas peur de perdre des données et pouvez tolérer une interruption de service entre la panne et la restauration.
### RAID 0
---
<div style="display: flex; align-items: center;">
<img src="/img/global/raid0.svg" alt="Image" style="max-width: 30%; max-height:230px; margin-right: 20px;">
<ul>
<li>Le système voit un seul disque.</li>
<li>Les données sont entrelacées entre tous les disques.</li>
<li>Si un disque est perdu, toutes les données le sont.</li>
<li>Excellentes performances en lecture et écriture (multipliées par le nombre de disques).</li>
<li>La capacité totale est la somme de tous les disques.</li>
<li>Minimum de 2 disques requis.</li>
</div>
Utilisez RAID 0 si vous souhaitez privilégier la performance et que la perte de données nest pas un problème. Idéal pour le stockage temporaire à haute vitesse (montage vidéo, IA, etc). Pas adapté au stockage à long terme.
### RAID 1
---
<div style="display: flex; align-items: center;">
<img src="/img/global/raid1.svg" alt="Image" style="max-width: 30%; max-height:230px; margin-right: 20px;">
<ul>
<li>Le système voit un seul disque.</li>
<li>Tous les disques contiennent les mêmes données.</li>
<li>Vous pouvez perdre tous les disques tant qu'un seul est en bonne santé.</li>
<li>Vitesse de lecture améliorée (selon le nombre de disques).</li>
<li>Capacité totale égale à un seul disque (ex. : 2×10 To = 10 To).</li>
<li>Minimum de 2 disques requis.</li>
</div>
Utilisez RAID 1 pour une redondance maximale. Chaque disque contient toutes les données, donc les performances ne sont pas affectées en cas de panne. Une fois les disques remplacés, les données sont rapidement restaurées. Mais la capacité utilisable est limitée à un seul disque, ce qui en fait une solution coûteuse.
::alert{type="success"}
:::list{type="success"}
- __Astuce :__ Vous pouvez combiner le RAID 1 avec dautres types de RAID pour créer des grappes miroir.
:::
::
### RAID 5
---
<p align="center">
<img src="/img/global/raid5.svg" alt="Image" style="max-width: 40%; margin-right: 20px;">
</p>
- Le système voit un seul disque.
- Les données sont entrelacées avec des blocs de parité.
- Vous pouvez perdre un disque et récupérer les données.
- Vitesse de lecture améliorée (selon le nombre de disques).
- Capacité totale = somme des disques 1 (ex. : 3×10 To = 20 To).
- Minimum de 3 disques (4 recommandés pour limiter la perte de capacité).
Utilisez RAID 5 pour un stockage fiable avec 3 à 5 disques et une perte minimale despace. Il tolère une panne, mais la reconstruction peut durer plusieurs jours avec des performances dégradées.
### RAID 6
---
<p align="center">
<img src="/img/global/raid6.svg" alt="Image" style="max-width: 50%; margin-right: 20px;">
</p>
- Le système voit un seul disque.
- Les données sont entrelacées avec deux blocs de parité.
- Vous pouvez perdre 2 disques et récupérer les données.
- Vitesse de lecture améliorée (selon le nombre de disques).
- Capacité totale = somme des disques 2 (ex. : 4×10 To = 20 To).
- Minimum de 4 disques (6 recommandés pour minimiser la perte despace).
Utilisez RAID 6 dans les mêmes cas que RAID 5, surtout avec 6 disques ou plus. Plus de disques = plus de risque de panne. RAID 6 vous apportera plus de fiabilité en cas de panne simultanée de deux disques. Il n'y a rien de plus frustrant que de perdre un second disque en pleine reconstruction du remplacement du premier.

View File

@ -0,0 +1,71 @@
---
navigation: true
title: ZFS
main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
# ZFS
::alert{type="info"}
🎯 __Objectifs :__
- Comprendre ce qu'est ZFS et son utilité
::
ZFS est populaire dans le monde des serveurs, des NAS (comme FreeNAS / TrueNAS), de la virtualisation, et même chez les particuliers qui veulent un stockage résilient. C'est est un _système de fichier_ (à l'instar de NTFS pour windows, EXT4, FAT32 etc...) mais également un __gestionnaire de volume__ (comme LVM par exemple). Pour le dire (très) rapidement, un gestionnaire de volume arrange l'espace sur des espaces physiques comme un ou plusieurs disques durs, et un gestionnaire de fichier arrange la maniere dont sont organisés les blocs de données dans ces volumes pour écrire, lire et supprimer les données.
ZFS dépasse largement les limites des autres systèmes de fichiers, que cela soit en terme de performance ou de fonctionnalité.
Ce qui nous intéresse le plus :
- ses fonctionnalités de __gestion des instantanés__ (snaphsot), permettant de rapidement revenir en arrière en cas de problème
- sa gestion des grappes de disques et [__ses équivalent au RAID__](/generalites/stockage/raid) (Z-Mirror, RAIDZ1, RAIDZ2, RAIDZ3)
- sa __reconstruction automatique des données corrumpues__ (via le scrubbing)
- ses performance avec son cache RAM (ZFS ARC)
- ses notifications en cas d'erreur
## Structure
![](/img/global/zfs.svg)
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.).
Il existe plusieurs types de dataset :
- __file system__ : un système de fichier, ZFS par défaut, monté comme un volume sans quota de stockage.
- __zvol__ : un "disque virtuel" avec un quota d'espace, que vous pouvez formater/partitionner comme vous le souhaitez. Il sera utilisable comme un disque physique.
- __snapshot__ : un état figé dun autre dataset à un instant donné. Ils peuvent etre créés manuellement ou via des outils de sauvegarde. Ils peuvent etre montés pour parcourir les données dans leur état au moment du snapshot.
## Pourquoi ZFS vs les autres ?
### Intégrité des données
ZFS vérifie automatiquement que les données stockées ne sont pas corrompues. Chaque bloc de données est accompagné dune empreinte (checksum) qui permet à ZFS de détecter toute altération, même minime. Et sil y a un problème, il peut souvent le réparer automatiquement, si une copie saine existe ailleurs dans le système.
### RAID intégré
ZFS propose son propre système de gestion de volumes (vdev). Vous pouvez créer un pool de stockage (zpool) en combinant plusieurs disques, un peu comme avec le [RAID](/generalites/stockage/raid) classique, mais de façon plus souple. Par exemple :
- __Z-mirror__ => equivalent du RAID 1
- __RAIDZ1__ => équivalent du RAID 5 (tolérance à 1 panne disque)
- __RAIDZ2__ => équivalent du RAID 6 (tolérance à 2 pannes disque)
- __RAIDZ3__ => (tolérance à 3 pannes disque)
ZFS gère cela directement, pas besoin de logiciel RAID externe.
::alert{type="info"}
:::list{type="info"}
- Consultez [l'article sur le RAID](/generalites/stockage/raid) pour en savoir plus sur la solution qui vous convient.
:::
::
### Snapshots et clones
ZFS permet de créer des snapshots, cest-à-dire des captures instantanées de létat dun système de fichiers à un moment donné. Ces snapshots prennent très peu despace et peuvent être créés automatiquement et fréquemment. Vous pouvez aussi faire des clones : des copies modifiables dun snapshot.
### Compression et déduplication
ZFS peut compresser les données à la volée (transparente pour lutilisateur), ce qui permet déconomiser de lespace disque. Il propose aussi la déduplication (éliminer les doublons), mais cette fonctionnalité consomme beaucoup de mémoire et nest pas recommandée pour tous les usages.
Voilà, à présent vous savez pourquoi ZFS est Ze systeme de fichier à déployer sur votre NAS.

View File

@ -0,0 +1,2 @@
navigation.title: Stockage
icon: lucide:hard-drive

View File

@ -1,3 +1,3 @@
icon: noto:open-book
navigation.title: Généralités
navigation.redirect: /generalites/nat
navigation.redirect: /generalites/reseau/nat

View File

@ -1,4 +1,5 @@
---
icon: lucide:bookmark
navigation: true
title: Introduction
main:
@ -7,8 +8,7 @@ main:
:ellipsis{left=0px width=40rem top=10rem blur=140px}
## Un home lab par un débutant pour les débutants
<p align="center">
<img src="/img/serveex/serveex.svg" align="center" width="700">
![](/img/serveex/serveex-server.svg)
**Serveex** c'est avant tout un projet personnel visant à héberger chez soi le plus de services possibles du quotidien sans passer par des plateformes propriétaires (Google, Apple, Netflix...). L'idée était d'expérimenter, d'apprendre, et de documenter chaque étape. C'est un projet purement pour la science, et n'a pas vocation à être utilisé en production.
@ -18,12 +18,15 @@ Un grand merci à **Nipah**, pour le partage de ses connaissances infinies, et s
**Pré-requis :**
:::list{type="primary"}
- Posséder [un VPS en ligne](https://www.it-connect.fr/les-serveurs-prives-virtuels-vps-pour-les-debutants/) ou une machine locale : idéalement un mini PC (on trouve des N100 pour 100€), mais fonctionne aussi sur laptop ou [une machine virtuelle](https://openclassrooms.com/fr/courses/2035806-virtualisez-votre-architecture-et-vos-environnements-de-travail/6313946-installez-virtualbox). Les [Freebox Delta/Ultra proposent des machines virtuelles](https://next.ink/3493/machines-virtuelles-et-freebox-delta-comment-heberger-votre-premiere-page-web/).
- Savoir configurer les [règles NAT d'un routeur et attribuer des baux DHCP](/generalites/nat)
- Savoir configurer la [zone DNS d'un nom de domaine](/generalites/dns)
- Savoir configurer les [règles NAT d'un routeur et attribuer des baux DHCP](/generalites/reseau/nat)
- Savoir configurer la [zone DNS d'un nom de domaine](/generalites/reseau/dns)
:::
::
L'objectif etant d'etre facilement déployable et facile à migrer, voici sa structure :
<p align="center">
<img src="/img/serveex/serveex.svg" align="center" width="700">
L'objectif étant d'etre facilement déployable et facile à migrer, voici sa structure :
::card-grid{grid-template-columns="repeat(2, minmax(0, 1fr));"}
#title
@ -273,5 +276,4 @@ Applications utiles
- Homepage, pour avoir tout vos services en un coup d'oeil et y accéder facilement
- Mkdocs pour votre documentation
- Docus, alternative à Mkdocs
- Speedtest-tracker pour vérifier la connexion de votre serveur
- UpSnap pour réveiller vos machines à distance

View File

@ -61,7 +61,7 @@ En plus :
- [Firewalld](https://linuxcapable.com/how-to-install-firewalld-on-debian-linux/)
### Partage Samba (accès à un disque réseau distant)
- [Créer et accéder à un partage Samba](/generalites/samba)
- [Créer et accéder à un partage Samba](/generalites/reseau/samba)
### Transfert de fichier via rsync

View File

@ -16,7 +16,7 @@ main:
- Exposer Dockge
::
[Swag](https://docs.linuxserver.io/general/swag/) est le noyau de ce homelab. C'est un reverse proxy puissant qui permet d'exposer des services sur le net via un ou des noms de domaines, en se chargeant de l'émission des certificats SSL (pour garder des connexions chiffrées), du routage des requêtes et de la sécurisation des accès (par authent HTTP ou par SSO comme Authelia ou Authentik). Toute la doc nécessaire ce [situe ici](https://docs.linuxserver.io/general/swag).
[Swag](https://docs.linuxserver.io/general/swag/) est le noyau de ce homelab. C'est un reverse proxy puissant qui permet d'exposer des services sur le net via un ou des noms de domaines, en se chargeant de l'émission des certificats SSL (pour garder des connexions chiffrées), du routage des requêtes et de la sécurisation des accès (par authent HTTP ou par SSO comme Authelia ou Authentik). Toute la doc nécessaire se [situe ici](https://docs.linuxserver.io/general/swag).
::alert{type="warning"}
:::list{type="warning"}
@ -268,7 +268,7 @@ Dans les fichiers de conf des domaines (section suivante), vous pourrez activer
---
::alert{type="info"}
📋 __Prérequis :__ <br/></br>
Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `dockge.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/nat).
Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/reseau/dns) un sous domaine du type `dockge.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat).
::
Il s'agit maintenant d'exposer Dockge sur internet, afin de pouvoir y accéder et gérer vos conteneurs sans que vous soyez chez vous. Pour cela, nous partons du principe que vous avez configuré un sous domaine `dockge.mondomaine.fr` dans votre zone DNS dont le `CNAME` pointe sur `mondomaine.fr`.

View File

@ -1 +1,2 @@
navigation.title: Le coeur du serveur
icon: lucide:server-cog

View File

@ -81,8 +81,6 @@ Copiez la configuration suivante :
```yaml
---
volumes:
etc_wireguard:
services:
wg-easy:
network_mode: host
@ -108,7 +106,9 @@ services:
- SYS_MODULE
```
::alert{type="success"}
__Astuce :__ ajoutez le label de watchtower afin d'automatiser les mises à jour
__Astuce :__
- Vous pouvez personnaliser le port de wireguard avec `WG_PORT` au lieu du port par defaut `51820`
- Ajoutez le label de watchtower afin d'automatiser les mises à jour
```yaml
services
@ -129,7 +129,7 @@ IPS=
| Variable | Valeur | Exemples |
|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|
| `HOST`{lang=properties} | Domaine de l'host | `mondomaine.fr` |
| `HOST`{lang=properties} | IP publique de votre box internet (elle doit etre fixe) | `80.72.136.27` |
| `PW`{lang=properties} | Hash du mot de passe, [à générer ici](https://bcrypt-generator.com/). **ATTENTION:** doubler les `$` | `$$2a$$12$$FF6T4QqSP9Ho`|
| `ADDRESS`{lang=properties} | Plage d'adresse que le DHCP du VPN peut attribuer, le `x` doit etre présent, on peut changer les autres chiffres ou les remplacer par `x` aussi | `10.8.0.x` |
| `IPS`{lang=properties} | les IPs qui doivent etre routées par les clients vers le VPN. Dans notre cas, on veut que seul le traffic vers le serveur et clients du VPN soit routé, on veut pas de leurs réseau local et on veut conserver l'accès à internet direct sans passer par le VPN.Si vous voulez tout de meme ajouter toutes les machines connectées aux appareils en local, ajoutez la plage `192.168.0.0/16` en séparant les deux plages par une virgule. | `10.8.0.0/24` |

View File

@ -74,14 +74,14 @@ sudo echo "AUTHENTIK_SECRET_KEY=$(openssl rand 60 | base64)" >> .env
::
Ouvrez dockge, et cherchez "authentik" dans les stack inactives.
Nommez la stack authentik et collez la configuration suivante, en changeant les chiffres de `{AUTHENTIK_TAG:-2024.2.3}`{lang=properties} par [la dernière version de Authentik](https://version-2024-6.goauthentik.io/docs/releases).
Nommez la stack authentik et collez la configuration suivante, en changeant les chiffres de `{AUTHENTIK_TAG:-2025.6.3}`{lang=properties} par [la dernière version de Authentik](https://goauthentik.io/docs/releases).
```yaml
---
services:
postgresql:
image: docker.io/library/postgres:12-alpine
image: docker.io/library/postgres:16-alpine
container_name: authentik-postgresql
restart: unless-stopped
healthcheck:
@ -118,7 +118,7 @@ services:
- redis:/data
server:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.2.3}
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2025.2.1}
container_name: authentik-server
restart: unless-stopped
command: server
@ -131,7 +131,6 @@ services:
volumes:
- ./media:/media
- ./custom-templates:/templates
- ./auth.css:/web/dist/custom.css
- ./ssh:/authentik/.ssh
env_file:
- .env
@ -143,7 +142,7 @@ services:
- redis
worker:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.2.3}
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2025.2.1}
container_name: authentik-worker
restart: unless-stopped
command: worker
@ -165,7 +164,6 @@ services:
- ./media:/media
- ./certs:/certs
- ./custom-templates:/templates
- ./auth.css:/web/dist/custom.css
- ./ssh:/authentik/.ssh
env_file:
- .env
@ -197,7 +195,7 @@ Pour être utilisable hors de chez vous, vous devez exposer authentik.
::alert{type="info"}
📋 __Au préalable :__ <br/><br/>
Nous partons du principe quer vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `auth.mondomaine.fr` avec pour CNAME `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/nat).
Nous partons du principe quer vous avez créé dans votre [zone DNS](/generalites/reseau/dns) un sous domaine du type `auth.mondomaine.fr` avec pour CNAME `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat).
::
Ouvrez le fichier `authentik-server.conf`.

View File

@ -46,7 +46,7 @@ Ici, nous expliquerons comment associer SWAG aux tunnels Cloudflare.
---
### Zone DNS
Avant toute chose, vous devez définir Cloudflare comme gestionnaire de votre [zone DNS](/generalites/dns). Si vous avez réservé votre nom de domaine chez Cloudflare, c'est déjà le cas. Sinon, renseignez vous auprès de votre registrar sur comment ajouter des DNS externes. Cloudflare dispose d'[une documentation expliquant pas à pas comment paramétrer une Zone DNS](https://developers.cloudflare.com/dns/zone-setups/full-setup/setup/), que vous ayez un domaine externe ou reservé chez Cloudflare.
Avant toute chose, vous devez définir Cloudflare comme gestionnaire de votre [zone DNS](/generalites/reseau/dns). Si vous avez réservé votre nom de domaine chez Cloudflare, c'est déjà le cas. Sinon, renseignez vous auprès de votre registrar sur comment ajouter des DNS externes. Cloudflare dispose d'[une documentation expliquant pas à pas comment paramétrer une Zone DNS](https://developers.cloudflare.com/dns/zone-setups/full-setup/setup/), que vous ayez un domaine externe ou reservé chez Cloudflare.
Si vous avez qu'un seul serveur à protéger derrière Cloudflare, vous pouvez supprimer l'ensemble des enregistrement DNS existant, par défaut le domaine et tout ses sous-domaines seront directement redirigés vers le tunnel.
@ -109,7 +109,7 @@ ingress:
- hostname: mondomaine.fr
service: https://mondomaine.fr
- hostname: "*.mondomaine.fr"
service: https://mondomaine..fr
service: https://mondomaine.fr
- service: http_status:404
```
@ -216,10 +216,10 @@ TUNNEL_PW=
Une fois fait, déployez la stack. Cela prendra un peu de temps, vérifiez les logs, vous devriez arriver à `serveur ready`
Une fois le conteneur en ligne, vérifiez dans cloudflare que votre tunnel est bien présent dans la section _Networks > Tunnels_ de [Cloudflare Zero Trust](https://one.dash.cloudflare.com/). Par défaut, l'ensemble des sous domaine sont redirigés vers le tunnel, sans avoir besoin de les déclarer [dans votre zone DNS](/generalites/dns).
Une fois le conteneur en ligne, vérifiez dans cloudflare que votre tunnel est bien présent dans la section _Networks > Tunnels_ de [Cloudflare Zero Trust](https://one.dash.cloudflare.com/). Par défaut, l'ensemble des sous domaine sont redirigés vers le tunnel, sans avoir besoin de les déclarer [dans votre zone DNS](/generalites/reseau/dns).
::alert{type="success"}
✨ __Astuce:__ si vous voulez exposer un service sans tunnel, vous pouvez toujours déclarer un enregistrement A [dans votre zone DNS](/generalites/dns). En cas de problème de résolution, désactivez la fonction _proxy_ pour cet enregistrement. Par exemple pour `sous.mondomaine.fr`
✨ __Astuce:__ si vous voulez exposer un service sans tunnel, vous pouvez toujours déclarer un enregistrement A [dans votre zone DNS](/generalites/reseau/dns). En cas de problème de résolution, désactivez la fonction _proxy_ pour cet enregistrement. Par exemple pour `sous.mondomaine.fr`
![dns](/img/serveex/cf-dns.png)
::

View File

@ -1 +1,2 @@
navigation.title: La sécurité
icon: lucide:shield

View File

@ -68,7 +68,7 @@ Vous n'avez plus qu'à accéder à l'outil via `http://ipdevotreserveur:3200`.
::alert{type="info"}
📋 __Au préalable :__
<br/><br/>
Nous partons du principe que vous avez le sous-domaine `stats.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans votre [zone DNS](/generalites/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur via [les règles NAT](/generalites/nat).
Nous partons du principe que vous avez le sous-domaine `stats.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans votre [zone DNS](/generalites/reseau/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur via [les règles NAT](/generalites/reseau/nat).
::
::alert{type="warning"}

View File

@ -41,11 +41,9 @@ services:
env_file:
- .env
environment:
- DOZZLE_AUTH_PROVIDER=simple
- DOZZLE_HOSTNAME=${DOMAIN}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /docker/dozzle/data:/data
```
::alert{type="success"}
@ -81,7 +79,7 @@ Vous aurez peut-etre envie d'y accéder à distance et sur tout vos appareils. P
::alert{type="info"}
📋 __Au préalable :__
<br/><br/>
Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `dozzle.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/nat).
Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/reseau/dns) un sous domaine du type `dozzle.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat).
::
Rendez-vous dans dockge, et éditez le compose de SWAG en ajoutant le réseau de Dozzle :

View File

@ -92,7 +92,7 @@ Déployez le conteneur et rendez-vous sur http://ipduserveur:3225. Connectez vou
---
::alert{type="info"}
📋 __Prérequis :__ <br/></br>
Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `speedtest.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/nat).
Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/reseau/dns) un sous domaine du type `speedtest.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat).
::
Il s'agit maintenant d'exposer Speedtest Tracker sur internet, afin de pouvoir y accéder sans que vous soyez chez vous. Pour cela, nous partons du principe que vous avez configuré un sous domaine `speedtest.mondomaine.fr` dans votre zone DNS dont le `CNAME` pointe sur `mondomaine.fr`.

View File

@ -45,7 +45,7 @@ services:
container_name: beszel
restart: unless-stopped
ports:
- ${PORT}$:8090
- ${PORT}:8090
volumes:
- ./data:/beszel_data
- ./socket:/beszel_socket
@ -155,7 +155,7 @@ Vous aurez peut-etre envie d'y accéder à distance et sur tout vos appareils. P
::alert{type="info"}
📋 __Au préalable :__
<br/><br/>
Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `beszel.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/nat).
Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/reseau/dns) un sous domaine du type `beszel.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat).
::
Rendez-vous dans dockge, et éditez le compose de SWAG en ajoutant le réseau de Beszel :

View File

@ -94,7 +94,7 @@ Vous aurez peut-etre envie d'y accéder à distance et sur tout vos appareils. P
::alert{type="info"}
📋 __Au préalable :__
<br/><br/>
Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `upsnap.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/nat).
Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/reseau/dns) un sous domaine du type `upsnap.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat).
::
Rendez-vous dans dockge, et éditez le compose de SWAG en ajoutant le réseau de UpSnap :

View File

@ -1 +1,2 @@
navigation.title: Monitoring
icon: lucide:chart-no-axes-column

View File

@ -140,7 +140,7 @@ Ensuite rendez-vous dans la section _Accès à distance_ et choisissez un port m
![picture](/img/serveex/plex-port.png)
- Sur votre routeur, redirigez le port `TCP` source `1234` vers le port `32400`, vers l'IP de votre serveur via [les règles NAT](/generalites/nat).
- Sur votre routeur, redirigez le port `TCP` source `1234` vers le port `32400`, vers l'IP de votre serveur via [les règles NAT](/generalites/reseau/nat).
- Une fois fait, retournez dans Plex afin de vérifier que la connexion est bien opérationnelle
::alert{type="danger"}
@ -159,7 +159,7 @@ Vous n'avez plus qu'a remplir les dossiers `/media/movies` et `/media/tvseries`
::alert{type="info"}
:::list{type="info"}
- Si pour stocker vos média vous utilisez un disque réseau (par exemple un stockage sur un NAS ou un disque dur externe branché ailleurs sur le réseau), veuillez consulter la section [montage samba](/generalites/samba) afin que Plex puisse y accéder.
- Si pour stocker vos média vous utilisez un disque réseau (par exemple un stockage sur un NAS ou un disque dur externe branché ailleurs sur le réseau), veuillez consulter la section [montage samba](/generalites/reseau/samba) afin que Plex puisse y accéder.
:::
::
@ -170,7 +170,7 @@ Plex n'a pas besoin d'etre exposé, étant joignable directement depuis votre co
En revanche, vous pouvez désirer exposer Tautulli, afin d'accéder aux stats même si vous n'est pas chez vous, depuis une simple url.
::alert{type="info"}
:::list{type="info"}
- Nous partons du principe que vous avez le sous-domaine `tautulli.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans [zone DNS](/generalites/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur dans [les règles NAT](/generalites/nat).
- Nous partons du principe que vous avez le sous-domaine `tautulli.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans [zone DNS](/generalites/reseau/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat).
:::
::

View File

@ -15,7 +15,7 @@ main:
![Picture](https://github.com/VueTorrent/VueTorrent/blob/master/public/screenshots/screenshot-desktop-dark-mode.jpeg?raw=true)
Afin de téléchargez vos media favoris en toute sécurité, nous allons monter un système à base de :
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.
@ -218,7 +218,7 @@ Afin de lancer des téléchargement hors de chez vous, sans VPN, vous pouvez exp
::alert{type="info"}
:::list{type="info"}
- Nous partons du principe que vous avez le sous-domaine `seedbox.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans [zone DNS](/generalites/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur dans [les règles NAT](/generalites/nat).
- Nous partons du principe que vous avez le sous-domaine `seedbox.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans [zone DNS](/generalites/reseau/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat).
:::
::

View File

@ -49,11 +49,18 @@ root
│ └── overseerr
│ └── config
└── media
├── downloads
├── tvseries
├── movies
└── library
```
::alert{type="warning"}
:::list{type="warning"}
- __Attention :__ Respectez bien ce type de structure de fichier, notamment le dossier `media`. Ce dossier doit etre monté de la même manière dans les compose de _Qbittorrent_ (`/votre/chemin/media:/media`) et des _arr_. Sans cela, les _arr_ risquent de ne pas trouver le chemin fourni par Qbittorrent et de ne pas créer de _hardlinks_. Sans hardlink, les _arr_ copieront les films et cela doublera l'espace utilisé sur votre stockage.
:::
::
Ouvrez dockge et votre stack `plex`. Modifiez le compose comme ceci :
```yaml
@ -388,7 +395,7 @@ Il peut etre intéressant d'exposer Overseerr, si vous souhaitez pouvoir faire d
::alert{type="info"}
:::list{type="info"}
- Nous partons du principe que vous avez le sous-domaine `films.mondomaine.fr` avec un `CNAME` qui pointe vers `films.fr` dans [zone DNS](/generalites/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur dans [les règles NAT](/generalites/nat).
- Nous partons du principe que vous avez le sous-domaine `films.mondomaine.fr` avec un `CNAME` qui pointe vers `films.fr` dans [zone DNS](/generalites/reseau/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat).
:::
::

View File

@ -1 +1,2 @@
navigation.title: Media & Seedbox
icon: lucide:list-video

View File

@ -42,7 +42,7 @@ Configurer le `.env` en copiant collant le contenu de la dernière version [publ
::alert{type="info"}
:::list{type="info"}
- Si vous avez un NAS ou un disque réseau partagé via [samba](/generalites/samba/) pour stocker vos données, remplacez la valeur de `UPLOAD_LOCATION`{lang=properties} par le chemin d'accès de votre dossier partagé.
- Si vous avez un NAS ou un disque réseau partagé via [samba](/generalites/reseau/samba/) pour stocker vos données, remplacez la valeur de `UPLOAD_LOCATION`{lang=properties} par le chemin d'accès de votre dossier partagé.
:::
::
@ -61,7 +61,7 @@ Tout l'intérêt d'une telle solution, c'est de pouvoir y accéder à distance e
::alert{type="info"}
📋 __Au préalable :__
<br/><br/>
Nous partons du principe que vous avez le sous-domaine `immich.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans votre [zone DNS](/generalites/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur via [les règles NAT](/generalites/nat).
Nous partons du principe que vous avez le sous-domaine `immich.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans votre [zone DNS](/generalites/reseau/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur via [les règles NAT](/generalites/reseau/nat).
::
Dans Dockge, rendez-vous dans la stack de SWAG et éditez le compose en ajoutant le réseau de immich :

View File

@ -57,7 +57,7 @@ services:
::alert{type="info"}
:::list{type="info"}
- Si vous avez un NAS ou un disque réseau partagé via [samba](/generalites/samba) pour stocker vos données, remplacez `/docker/nextcloud/data` par le chemin d'accès de votre dossier partagé.
- Si vous avez un NAS ou un disque réseau partagé via [samba](/generalites/reseau/samba) pour stocker vos données, remplacez `/docker/nextcloud/data` par le chemin d'accès de votre dossier partagé.
:::
::
@ -88,7 +88,7 @@ Tout l'intérêt d'une telle solution, c'est de pouvoir y accéder à distance e
::alert{type="info"}
:::list{type="info"}
- Nous partons du principe que vous avez le sous-domaine `nextcloud.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans votre [zone DNS](/generalites/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur via [les règles NAT](/generalites/nat).
- Nous partons du principe que vous avez le sous-domaine `nextcloud.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans votre [zone DNS](/generalites/reseau/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur via [les règles NAT](/generalites/reseau/nat).
:::
::

View File

@ -1 +1,2 @@
navigation.title: Cloud Drive & Photos
icon: lucide:cloud-upload

View File

@ -27,9 +27,8 @@ services:
filebrowser:
container_name: filebrowser
volumes:
- /:/srv
- /docker/filebrowser/config:/config/
# - /chemin/vers/vos/dossiers:/vosdossiers
- /docker/filebrowser/config:/config/
- /chemin/vers/vos/dossiers:/vosdossiers #ajoutez ici les dossiers que vous voulez voir apparaitre dans filebrowser
ports:
- 8010:80
image: filebrowser/filebrowser:s6
@ -68,7 +67,7 @@ Vous aurez peut-etre envie d'y accéder à distance et sur tout vos appareils. P
::alert{type="info"}
:::list{type="info"}
- __Au préalable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `files.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/nat).
- __Au préalable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/reseau/dns) un sous domaine du type `files.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat).
:::
::

View File

@ -81,7 +81,7 @@ Tout l'intérêt d'une telle solution, c'est de pouvoir y accéder à distance e
::alert{type="info"}
📋 __Au préalable :__
<br/><br/>
Nous partons du principe que vous avez le sous-domaine `pingvin.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans votre [zone DNS](/generalites/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur via [les règles NAT](/generalites/nat).
Nous partons du principe que vous avez le sous-domaine `pingvin.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans votre [zone DNS](/generalites/reseau/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur via [les règles NAT](/generalites/reseau/nat).
::
Dans Dockge, rendez-vous dans la stack de SWAG et éditez le compose en ajoutant le réseau de pingvin :

View File

@ -1 +1,2 @@
navigation.title: Fichiers & partage
icon: lucide:folder-tree

View File

@ -122,7 +122,7 @@ Tout l'intérêt d'une telle solution, c'est de pouvoir y accéder à distance e
::alert{type="info"}
:::list{type="info"}
- __Au préalable :__ Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `code.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/nat).
- __Au préalable :__ Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/reseau/dns) un sous domaine du type `code.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat).
:::
::

View File

@ -73,7 +73,7 @@ Tout l'intérêt d'une telle solution, c'est de pouvoir y accéder à distance e
::alert{type="info"}
:::list{type="info"}
- __Au préalable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `gitea.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/nat).
- __Au préalable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/reseau/dns) un sous domaine du type `gitea.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat).
:::
::

View File

@ -59,7 +59,7 @@ Vous aurez peut-etre envie d'y accéder à distance et sur tout vos appareils. P
::alert{type="info"}
:::list{type="info"}
- __Au préalable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `tools.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/nat).
- __Au préalable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/reseau/dns) un sous domaine du type `tools.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat).
:::
::

View File

@ -1 +1,2 @@
navigation.title: Développement
navigation.title: Développement
icon: lucide:code-xml

View File

@ -57,7 +57,7 @@ root
Ouvrez Dockge, et cliquez sur `compose`
Nommez la stack `adguard` et copiez la configuration ci-dessous
Nommez la stack `adguardhome` et copiez la configuration ci-dessous
```yaml
---
@ -105,7 +105,7 @@ Pour être utilisable hors de chez vous, vous devez exposer Adguard
::alert{type="info"}
:::list{type="info"}
- __Au préalable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `adguard.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/nat). Redirigez également le port `53` et le port `853` vers votre serveur. Ces ports serviront à router les requêtes DNS.
- __Au préalable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/reseau/dns) un sous domaine du type `adguard.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat). Redirigez également le port `53` et le port `853` vers votre serveur. Ces ports serviront à router les requêtes DNS.
:::
::

View File

@ -67,7 +67,7 @@ services:
```yaml
services:
vauktwarden:
vaultwarden:
#...
labels:
- com.centurylinklabs.watchtower.enable=true
@ -76,10 +76,10 @@ services:
Nous allons maintenant générer un hash de mot de passe, qu'il faudra renseigner dans la variable `TOKEN` du `.env`
```shell
echo -n "votremotdepasse" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4
echo -n 'votremotdepasse' | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4
```
Copiez le résultat précieusement.
Copiez le résultat précieusement et gardez en tête le mot de passe que vous avez choisi.
Dans le `.env`, renseignez les variables suivantes :
@ -109,7 +109,7 @@ Depuis quelques temps, Vaultwarden ne permet pas d'etre accéder sans certificat
Tout l'intérêt d'une telle solution, c'est de pouvoir y accéder à distance et sur tout vos appareils. Pour cela, nous allons exposer Vaultwarden via [SWAG](/serveex/coeur/swag).
::alert{type="info"}
✨ __Au préalable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `vault.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/nat).
✨ __Au préalable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/reseau/dns) un sous domaine du type `vault.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/reseau/nat).
::
Dans Dockge, rendez-vous dans la stack de SWAG et éditez le compose en ajoutant le réseau de vaultwarden :
@ -239,7 +239,7 @@ server {
Appuyez sur `Echap` puis sauvegardez et quittez en tapant `:x` puis en appuyant sur `Entrée`.
Et voilà, vous avez exposé Vaultwarden ! Accédez au panneau d'administration via `vault.mondomaine.fr` et créez votre compte. Plus d'info sur les fonctionnalités de [Bitwarden](https://bitwarden.com/help/).
Et voilà, vous avez exposé Vaultwarden ! Accédez au panneau d'administration via `https://vault.mondomaine.fr/admin` et collez le mot de passe que vous avez choisi pour générer l'`ADMIN_TOKEN`. Plus d'info sur les fonctionnalités de [Bitwarden](https://bitwarden.com/help/).
N'oubliez pas d'installer les extensions Bitwarden (elles sont compatibles avec Vaultwarden) pour [Chrome](https://chromewebstore.google.com/detail/gestionnaire-de-mots-de-p/nngceckbapebfimnlniiiahkandclblb) ou pour [Firefox](https://addons.mozilla.org/fr/firefox/addon/bitwarden-password-manager/) ainsi que les applications [iOS](https://apps.apple.com/fr/app/bitwarden/id1137397744) et [Android](https://play.google.com/store/apps/details?id=com.x8bit.bitwarden&hl=fr) afin de synchroniser vos mot de passe.

View File

@ -1 +1,2 @@
navigation.title: Applications utiles
icon: lucide:award

View File

@ -1,17 +1,23 @@
---
icon: lucide:bookmark
navigation: true
title: Introduction
layout: page
main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
# Stockeex
::terminal{style="margin-top:80px;"}
---
content:
- sudo systemctl status stockeex
- server is busy, come back later...
- sudo systemctl status stockeex-article
- currently writing, come back later...
---
::
::
:ellipsis{left=0px width=40rem top=10rem blur=140px}
<div align="center">
<img src="/img/stockeex/stockeex-raid.svg" alt="Image" style="max-width: 60%;">
</div>

View File

@ -0,0 +1,43 @@
---
navigation: true
title: Nvidia Stock Bot
main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
# Scripts python
Mes cochonneries en python
## 🤖 Nvidia Stock Bot
---
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.
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.
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.
Après moult déconvenues, je suis passé de ceci :
![Nvidia Stock Bot Old](/img/betises/nvidia-stock-bot-old.svg)
à cela :
![Nvidia Stock bot](/img/betises/nvidia-stock-bot.svg)
Et plus récemment :
![Nvidia Stock bot](/img/betises/nvidia-stock-bot-en-v4.svg)
J'ai également eu la chance d'être référencé dans la fameuse [newsletter selfhost](https://selfh.st/weekly/2025-07-11/) !
Plus d'infos directement sur le repo :
::card
#title
🐋 __Nvidia Stock Bot__
#description
[Robot d'alerte de stock de GPU Nvidia](https://git.djeex.fr/Djeex/nvidia-stock-bot)
::

View File

@ -1,42 +1,11 @@
---
navigation: true
title: Scripts python
title: Adguard CIDRE
main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
# Scripts python
Mes cochonneries en python
## 🤖 Nvidia Stock Bot
---
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.
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.
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.
Après moult déconvenues, je suis passé de ceci :
![Nvidia Stock Bot Old](https://git.djeex.fr/Djeex/nvidia-stock-bot/raw/commit/88c09ff4cffd96cbf0852ec785f9fbf2130c23b2/assets/img/nvbot.png)
à cela :
![Nvidia Stock bot](https://git.djeex.fr/Djeex/nvidia-stock-bot/raw/branch/main/assets/img/nvbot_schematics.png)
Plus d'infos directement sur le repo :
::card
#title
🐋 __Nvidia Stock Bot__
#description
[Robot d'alerte de stock de GPU Nvidia](https://git.djeex.fr/Djeex/nvidia-stock-bot)
::
## 🤖 Adguard CIDRE Sync
# 🤖 Adguard CIDRE Sync
---
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.

View File

@ -1,15 +1,12 @@
---
navigation: true
title: Scripts bash
title: Doublons servarr
main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
# Scripts bash
Quelques scripts en vracs qui m'ont sauvé la vie.
## Detection de doublons et remplacement par des hardlinks
# Detection de doublons et remplacement par des hardlinks
---
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).
@ -142,5 +139,3 @@ Bilan j'ai :
- appris qu'il ne faut jamais copier coller un script généré ChatGPT sans le comprendre et sans le tester en dry-run
- appris que Qwen sur une RTX 5090 est plus cohérent que ChatGPT 4o sur des fermes de serveurs (je vous passe les résultats de la version "normale").
- appris que même quand on a 100TB d'espace, monitorer ce dernier m'aurait permis de voir beaucoup plus tot que j'avais 12TB de doublons qui trainent.
A plus tard pour de nouvelles aventures passionnantes.

View File

@ -0,0 +1,87 @@
---
navigation: true
title: Luks backup
main:
fluid: false
---
:ellipsis{left=0px width=40rem top=10rem blur=140px}
# Backup des headers luks pour disques/volumes chiffrés
---
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 !).
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.
Ainsi, ce script :
* Liste et identifie les disques avec leur numéro de série
* Liste les partition
* Dump les headers dans un dossier dans `/root` (dossier sécurisé)
* Cree une archive temporaire
* Prompt pour saisir un mot de passe
* Chiffre avec le mot de passe
* Détruit l'archive non chiffrée
```
#!/bin/bash
# Directory where LUKS headers will be backed up
DEST="/root/luks-headers-backup"
mkdir -p "$DEST"
echo "🔍 Searching for LUKS containers on all partitions..."
# Loop through all possible disk partitions (including NVMe and SATA)
for part in /dev/sd? /dev/sd?? /dev/nvme?n?p?; do
# Skip if the device doesn't exist
if [ ! -b "$part" ]; then
continue
fi
# Check if the partition is a LUKS encrypted volume
if cryptsetup isLuks "$part"; then
# Find the parent disk device (e.g. nvme0n1p4 → nvme0n1)
disk=$(lsblk -no pkname "$part" | head -n 1)
full_disk="/dev/$disk"
# Get the serial number of the parent disk
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)
PART_NAME=$(basename "$part")
# Build the output filename with partition name and disk serial
OUTPUT="$DEST/luks-header-${PART_NAME}__${SERIAL}.img"
echo "🔐 Backing up LUKS header of $part (Serial: $SERIAL)..."
# Backup the LUKS header to the output file
cryptsetup luksHeaderBackup "$part" --header-backup-file "$OUTPUT"
if [[ $? -eq 0 ]]; then
echo "✅ Backup successful → $OUTPUT"
else
echo "❌ Backup failed for $part"
fi
fi
done
# Create a timestamped compressed tar archive of all header backups
ARCHIVE_NAME="/root/luks-headers-$(date +%Y%m%d_%H%M%S).tar.gz"
echo "📦 Creating archive $ARCHIVE_NAME..."
tar -czf "$ARCHIVE_NAME" -C "$DEST" .
# Encrypt the archive symmetrically using GPG with AES256 cipher
echo "🔐 Encrypting the archive with 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
rm -f "$ARCHIVE_NAME"
else
echo "❌ Encryption failed"
fi
```
Ne pas oublier de backup `/etc/fstab` et `/etc/crypttab` !

View File

@ -27,6 +27,7 @@ export default defineNuxtConfig({
},
app: {
baseURL: '/fr/',
head: {
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/img/favicon/favicon.ico' },

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 739 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 78 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 133 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 101 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 31 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 165 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 143 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 64 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 165 KiB