docs: add all untracked content

This commit is contained in:
WikiJs 2025-07-08 20:59:14 +00:00
parent 158e649b98
commit da31181366
12 changed files with 1209 additions and 46 deletions

84
applications.md Normal file
View file

@ -0,0 +1,84 @@
---
title: Applications auto-hébergées
description: Cette section présente les principales applications déployées dans l'infrastructure. Elles couvrent des besoins variés : publication de contenu, collaboration, gestion de documents, cloud personnel, domotique, etc.
published: true
date: 2025-06-30T20:51:20.642Z
tags:
editor: markdown
dateCreated: 2025-06-30T15:27:02.190Z
---
## ✍️ Ghost
**Objectif** : Permettre la publication de contenus sous forme de blog moderne, rapide et épuré.
Ghost est une plateforme de blogging open-source axée sur la performance et l'expérience d'écriture.
📘 [Documentation Ghost](applications/ghost.md)
---
## 🌍 WordPress
**Objectif** : Fournir un CMS polyvalent pour créer facilement des sites web dynamiques.
WordPress est un système de gestion de contenu (CMS) extensible, adapté aux blogs, vitrines ou portails.
📘 [Documentation WordPress](applications/wordpress.md)
---
## ☁️ Nextcloud
**Objectif** : Offrir une alternative souveraine aux services cloud commerciaux pour le stockage, la synchronisation et le partage de fichiers.
Nextcloud centralise fichiers, agendas, contacts et autres services collaboratifs dans un environnement auto-hébergé.
📘 [Documentation Nextcloud](applications/nextcloud.md)
---
## 📝 OnlyOffice
**Objectif** : Fournir une suite bureautique collaborative compatible avec les formats Microsoft Office.
OnlyOffice permet lédition en ligne de documents texte, tableurs et présentations, souvent intégré avec Nextcloud.
📘 [Documentation OnlyOffice](applications/onlyoffice.md)
---
## 📚 Wiki.js
**Objectif** : Mettre en place une documentation collaborative avec gestion fine des droits et versioning.
Wiki.js est un moteur de wiki moderne basé sur Markdown, conçu pour structurer et maintenir facilement de la documentation technique ou organisationnelle.
📘 [Documentation Wiki.js](applications/wikijs.md)
---
## 🏠 Home Assistant
**Objectif** : Superviser et automatiser un environnement domotique avec une interface centralisée.
Home Assistant permet de gérer des appareils connectés, créer des scénarios d'automatisation et suivre des capteurs dans une maison ou un bâtiment intelligent.
📘 [Documentation Home Assistant](applications/homeassistant.md)
---
## 🧠 AFFiNe
**Objectif** : Centraliser la prise de notes, la gestion des tâches et les mindmaps dans un espace de travail unifié.
AFFiNe est une application tout-en-un pour organiser informations, idées et projets à travers une interface intuitive et modulaire.
📘 [Documentation AFFiNe](applications/affine.md)
---
## 📂 Structure de la documentation
Chaque lien ci-dessus mène vers une fiche détaillée contenant :
- 🧾 Présentation générale
- 🐳 Déploiement (Docker Compose)
- 🔐 Authentification et sécurité
- ♻️ Sauvegardes & restauration
- 🛠️ Maintenance et problèmes connus
---

151
applications/wikijs.md Normal file
View file

@ -0,0 +1,151 @@
---
title: WikiJs
description: Wiki.js est conçu pour créer et maintenir une documentation collaborative de manière simple et intuitive.
published: true
date: 2025-06-30T21:01:49.725Z
tags:
editor: markdown
dateCreated: 2025-05-06T18:43:29.102Z
---
## Fonctionnalités principales :
* ✏️ Éditeur Markdown, WYSIWYG ou code brut
* 🔐 Gestion fine des utilisateurs et des permissions
* 📁 Support Git en tant que source/versionning
* 🌍 Interface multilingue
* 🧩 Extensions et intégrations (Google, LDAP, SAML, etc.)
---
## 🧾 Prérequis
Avant de commencer, assurez-vous davoir :
* Docker et Docker Compose installés sur votre système.
* Un réseau Docker nommé `traefik_net` (créé au préalable si nécessaire).
* Un fichier `.env` contenant les variables denvironnement suivantes :
```dotenv
SERVICE=wikijs
SERVICE_DB=wikijs_db
DB_NAME=wikijs
DB_USER=wikijs
DB_PASSWORD=motdepassefort
URL=wiki.mondomaine.tld
```
> 🔐 **Conseil sécurité :** Stockez votre fichier `.env` dans un endroit sécurisé et ne le versionnez pas !
---
## ⚙️ Fichier `docker-compose.yml`
Créez un fichier `docker-compose.yml` avec le contenu suivant :
```yaml
version: "3.8"
services:
wikijs_db:
image: postgres:16
container_name: ${SERVICE_DB}
environment:
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
logging:
driver: "json-file"
restart: unless-stopped
volumes:
- ./data-db:/var/lib/postgresql/data
networks:
- wikijs_net
wikijs:
image: lscr.io/linuxserver/wikijs:2.5.307
container_name: ${SERVICE}
depends_on:
- wikijs_db
environment:
PUID: 1000
PGID: 1000
DB_TYPE: postgres
DB_PORT: 5432
DB_HOST: ${SERVICE_DB}
DB_NAME: ${DB_NAME}
DB_USER: ${DB_USER}
DB_PASS: ${DB_PASSWORD}
restart: unless-stopped
volumes:
- ./config:/config
- ./data:/data
networks:
- traefik_net
- wikijs_net
labels:
- "traefik.enable=true"
- "traefik.http.routers.${SERVICE}.rule=Host(`${URL}`)"
- "traefik.http.routers.${SERVICE}.entrypoints=web"
- "traefik.http.services.${SERVICE}.loadbalancer.server.port=3000"
networks:
traefik_net:
external: true
wikijs_net:
name: wikijs_net
driver: bridge
```
---
## 🚀 Démarrage
Lancez les conteneurs avec la commande :
```bash
docker compose up -d
```
Vous pouvez ensuite accéder à votre Wiki via :
`http://wiki.mondomaine.tld` (ou le domaine défini dans `$URL`).
---
## 📁 Arborescence recommandée
```
wikijs/
├── docker-compose.yml
├── .env
├── config/
├── data/
└── data-db/
```
---
## 🧼 Nettoyage
Pour arrêter et supprimer les conteneurs :
```bash
docker compose down
```
Pour supprimer également les volumes :
```bash
docker compose down -v
```
---
## 📚 Ressources utiles
* [Documentation officielle Wiki.js](https://docs.requarks.io/)
* [Image Docker LinuxServer.io](https://hub.docker.com/r/linuxserver/wikijs)
* [Traefik Documentation](https://doc.traefik.io/traefik/)
---

142
applications/wordpress.md Normal file
View file

@ -0,0 +1,142 @@
---
title: Wordpress
description: WordPress est un CMS (Content Management System) open source, puissant et flexible, idéal pour créer un site web, un blog ou même une boutique en ligne avec WooCommerce.
published: true
date: 2025-06-30T21:03:33.648Z
tags:
editor: markdown
dateCreated: 2025-05-06T19:02:21.559Z
---
Cette documentation présente un déploiement de WordPress à laide de **Docker Compose**, avec une base de données **MySQL**, et une exposition du site en HTTPS via **Traefik**, utilisant des **variables denvironnement dans les labels** pour une configuration facilement réutilisable.
---
## 🧾 Prérequis
* Docker & Docker Compose installés
* Un domaine configuré (ex: `mon-site.fr`) pointant vers votre serveur
* Un fichier `.env` contenant les variables suivantes :
```dotenv
SERVICE=wordpress
SERVICE_DB=wordpress_db
DB_ROOT_PASSWORD=motdepasse_root
DB_NAME=wordpress
DB_USER=wordpress
DB_PASSWORD=motdepasse_user
URL=mon-site.fr
```
---
## ⚙️ Fichier `docker-compose.yml`
```yaml
services:
wordpress_db:
image: mysql:8
container_name: wordpress_db
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- MYSQL_DATABASE=${DB_NAME}
- MYSQL_USER=${DB_USER}
- MYSQL_PASSWORD=${DB_PASSWORD}
volumes:
- ./data-db:/var/lib/mysql
networks:
- wordpress_net
wordpress:
image: wordpress:6.8.1
container_name: ${SERVICE}
restart: unless-stopped
environment:
- WORDPRESS_DB_HOST=${SERVICE_DB}
- WORDPRESS_DB_NAME=${DB_NAME}
- WORDPRESS_DB_USER=${DB_USER}
- WORDPRESS_DB_PASSWORD=${DB_PASSWORD}
volumes:
- ./data:/var/www/html
networks:
- wordpress_net
- traefik_net
labels:
- "traefik.enable=true"
- "traefik.http.routers.${SERVICE}.entrypoints=websecure"
- "traefik.http.routers.${SERVICE}.rule=Host(`${URL}`)"
- "traefik.http.services.${SERVICE}.loadbalancer.server.port=80"
- "traefik.http.routers.${SERVICE}.tls=true"
- "traefik.http.routers.${SERVICE}.tls.certresolver=http"
- "traefik.docker.network=traefik_net"
networks:
wordpress_net:
name: wordpress_net
driver: bridge
traefik_net:
external: true
```
---
## 🚀 Démarrage
Lancez les services en arrière-plan :
```bash
docker compose up -d
```
Si tout est bien configuré, vous pouvez accéder à WordPress à l'adresse :
🔗 `https://mon-site.fr`
---
## 📁 Arborescence recommandée
```
wordpress/
├── docker-compose.yml
├── .env
├── data/
└── data-db/
```
---
## 🔐 Sécurité & HTTPS
* Ce setup active le **HTTPS automatique** grâce à **Let's Encrypt**, via Traefik.
* Assurez-vous que les ports **80** et **443** sont ouverts sur le pare-feu de votre serveur.
* Votre domaine (`mon-site.fr`) doit pointer vers ladresse IP publique du serveur Docker/Traefik.
* Le `certresolver=http` doit être défini dans la configuration statique de **Traefik**.
---
## 🧼 Nettoyage
Pour arrêter les conteneurs :
```bash
docker compose down
```
Pour les supprimer avec les volumes (base de données incluse) :
```bash
docker compose down -v
```
---
## 📚 Ressources utiles
* [Documentation WordPress](https://fr.wordpress.org/support/)
* [Image Docker officielle WordPress](https://hub.docker.com/_/wordpress)
* [Image Docker officielle MySQL](https://hub.docker.com/_/mysql)
* [Traefik avec Docker](https://doc.traefik.io/traefik/providers/docker/)
---

87
home.md
View file

@ -1,21 +1,17 @@
---
title: Home
description:
title: Mon Wiki Personnel
description: Bienvenue sur mon wiki ! Ici, je centralise mes connaissances, notes et ressources utiles.
published: true
date: 2025-05-06T18:27:14.588Z
date: 2025-07-07T21:42:45.276Z
tags:
editor: markdown
dateCreated: 2025-05-02T20:54:00.983Z
---
<p align="center">
<img width="200" height="200" src="https://github.com/blasseye/WikiJs/blob/main/icon/logo.png" alt="Logo du Wiki" />
<img width="300" height="300" src="https://git.blasseye.fr/blasseye/assets/raw/branch/main/light/wiki/wiki.svg" alt="Logo du Wiki" />
</p>
# 🌐 Mon Wiki Personnel
Bienvenue sur mon wiki ! Ici, je centralise mes connaissances, notes et ressources utiles.
---
## 📌 Présentation <a name="presentation"></a>
@ -36,48 +32,55 @@ Ce wiki a pour but de documenter mes projets, expériences et bonnes pratiques.
---
## 🔧 Applications auto-hebergées <a name="applications"></a>
## 🔧 Service auto-hebergées
### 📚 Wiki : WikiJs
- 📌 **Objectif** : Auto-héberger mon wiki
- ⚙ **Technos utilisées** :
- 🖥 **Matériel** : Serveur dédié
- 🔗 **Accès sécurisé** via VPN et authentification (WireGuard)
### Media Hub
📂 [Détails sur mon Wiki](applications/wikijs.md)
- 🎬 **Jellyfin** : Serveur de streaming
- 🎟️ **Jellyseerr** : Système de requêtes utilisateurs
- 📼 **Radarr** : Gestion de films
- 📺 **Sonarr** : Gestion de séries
- 🔍 **Prowlarr** : Agrégation d'indexeurs
- ⬇️ **qBittorrent** : Client torrent intégré
### 🚀 Site Web : Wordpress
- 📌 **Objectif** : Auto-héberger mon site web
- ⚙ **Technos utilisées** :
- 🖥 **Matériel** : Serveur dédié
- 🔗 **Accès sécurisé** via VPN et authentification (WireGuard)
📂 [Détails sur mon MediaHub](mediahub.md)
📂 [Détails sur mon Site Web](applications/wordpress.md)
### Supervision
### 🎬 MediaHub : Jellyfin, Jellyseerr, Radarr, Solarr, Prowlarr
- 📌 **Objectif** : Auto-héberger une bibliothèque multimédia
- ⚙ **Technos utilisées** : Jellyfin, Jellyseerr, Radarr, Solarr, Prowlarr,Flaresolverr, qBittorrent, Docker
- 🖥 **Matériel** : Serveur dédié
- 🔗 **Accès sécurisé** via VPN et authentification (WireGuard)
- 📊 **Zabbix** : Monitoring d'infrastructure
- 📈 **Grafana** : Dashboards et métriques
- ⚙️ **Portainer** : Gestion visuelle des conteneurs
- 🔔 **What's Up Docker (WUD)** : Suivi des updates
📂 [Détails sur mon MediaHub](applications/mediahub.md)
📂 [Détails sur ma Supervision](supervision.md)
### 📊 Logiciel de qualimétrie : SonarQube
- 📌 **Objectif** : Auto-héberger mon logiciel de qualimétrie
- ⚙ **Technos utilisées** :
- 🖥 **Matériel** : Serveur dédié
- 🔗 **Accès sécurisé** via VPN et authentification (WireGuard)
### Outils DevOps
📂 [Détails sur mon Logiciel de qualimétrie](applications/sonarqube.md)
- 🔧 **ForgeJo** : Git self-hosted
- 🔁 **Woodpecker CI** : Intégration continue
- 🧪 **SonarQube** : Analyse de qualité de code
📂 [Tous mes projets](applications.md)
---
## 📝 Notes diverses <a name="notes-diverses"></a>
Des astuces, configurations et documentations annexes.
📂 [Voir toutes mes notes](notes.md)
📂 [Détails sur mes Outils DevOps](outils-devops.md)
### Applications
- ✍️ **Ghost** : Blog personnel
- 🌍 **WordPress** : Site familial
- ☁️ **Nextcloud** : Cloud personnel
- 📝 **OnlyOffice** : Éditeur de documents collaboratif
- 📚 **Wiki.js** : Ce wiki
- 🏠 **Home Assistant** : Automatisation domotique
- 🧠 **AFFiNe** : Notes, tâches et mindmaps
📂 [Détails sur mes Applications](applications.md)
### Sécurité
- 🔐 **WG-Easy** : Gestion simplifiée de WireGuard VPN via interface web
- 🛡️ **Authentil** : Plateforme d'authentification et SSO
- 🦙 **CrowdSec** : Détection d'intrusions et sécurité proactive
- 🚫 **Fail2Ban** : Protection contre les tentatives de connexion malveillantes
📂 [Détails sur mes services lié a la sécurité de mon infrastructure](securite.md)
---

View file

@ -1,19 +1,13 @@
---
title: Infrastructure
description:
description: Bienvenue dans la section dédiée à mon infrastructure. Cette page décrit les composants principaux que jutilise pour héberger et gérer mes services.
published: true
date: 2025-05-02T21:02:51.140Z
date: 2025-06-30T15:54:01.461Z
tags:
editor: markdown
dateCreated: 2025-05-02T21:02:01.512Z
---
# 🏗 Infrastructure
Bienvenue dans la section dédiée à mon infrastructure. Cette page décrit les composants principaux que jutilise pour héberger et gérer mes services.
---
## ☁️ Cloud : OpenStack
Jutilise **OpenStack** pour gérer mon infrastructure cloud.

11
logo.svg Normal file
View file

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" id="svg5" preserveAspectRatio="xMidYMid" viewBox="0 0 1024 1024" height="1024pt" width="1024pt" version="1.0">
<defs id="defs5"></defs>
<g id="g5" stroke="none" fill="#FFFFFF" transform="matrix(0.18229597,0,0,-0.18229597,-428.74995,1383.451)">
<path id="path1" d="m 5029,7548 c -12,-24 -86,-155 -164,-293 -242,-425 -856,-1509 -980,-1730 -65,-115 -138,-239 -162,-274 -23,-35 -43,-67 -43,-72 0,-24 26,-1 89,80 146,185 478,465 760,642 99,62 108,71 149,139 89,151 242,322 389,433 70,54 219,137 245,137 13,0 27,-30 57,-125 23,-68 41,-135 41,-149 0,-14 4,-27 9,-31 5,-3 46,20 92,50 45,30 106,67 136,81 29,15 53,28 53,29 0,2 -49,90 -110,197 -60,106 -203,358 -317,560 -114,202 -211,367 -215,367 -4,1 -17,-18 -29,-41 z"></path>
<path id="path2" d="m 5194,6467 c -98,-67 -200,-155 -276,-236 -67,-73 -182,-235 -209,-294 -8,-18 -42,-45 -98,-79 -590,-352 -1130,-958 -1304,-1463 -70,-203 -104,-423 -92,-585 25,-314 125,-551 314,-741 270,-271 666,-360 1206,-273 233,38 478,104 883,240 597,199 731,228 1077,228 202,0 243,-3 335,-22 207,-45 405,-127 575,-239 98,-65 225,-167 256,-208 25,-31 43,-32 37,-2 -63,293 -114,451 -204,632 -215,434 -561,716 -1019,832 -138,35 -400,43 -572,18 -376,-54 -733,-199 -1255,-511 -114,-68 -249,-146 -300,-173 -263,-141 -480,-180 -666,-122 -62,19 -172,78 -172,93 0,4 26,-2 58,-13 92,-32 227,-45 329,-32 188,24 340,90 689,300 110,67 243,144 296,173 97,51 97,51 127,124 56,135 64,178 66,351 1,185 15,246 70,318 42,55 134,104 215,113 35,4 111,-2 210,-16 189,-27 256,-23 349,20 87,41 124,71 166,133 46,68 45,89 -2,106 -55,20 -178,95 -250,153 -99,79 -128,123 -154,236 -32,144 -69,217 -158,315 -40,44 -42,13 24,252 31,111 76,327 70,333 -11,12 -230,-116 -352,-205 -40,-29 -77,-53 -82,-53 -5,0 -19,42 -31,93 -33,145 -65,242 -81,244 -8,1 -41,-17 -75,-40 z m 78,-137 c 24,-87 58,-293 58,-347 0,-33 -4,-45 -17,-50 -10,-3 -42,-16 -70,-29 -58,-25 -66,-18 -33,31 11,17 20,33 20,38 0,14 -24,7 -46,-14 -36,-34 -55,-19 -48,38 7,62 31,139 56,182 20,36 18,47 -6,38 -21,-8 -81,-132 -101,-208 -13,-48 -15,-84 -11,-144 5,-61 3,-85 -7,-100 -14,-18 -15,-17 -33,16 -15,27 -19,54 -18,134 0,86 5,111 31,180 46,124 169,311 197,302 6,-2 19,-32 28,-67 z m 448,-157 c -39,-144 -74,-243 -85,-243 -5,1 -25,14 -43,29 -34,29 -34,29 -13,77 33,74 155,252 159,232 2,-9 -6,-52 -18,-95 z m -76,-664 c 21,-6 49,-21 62,-34 29,-29 32,-50 7,-37 -10,6 -38,13 -63,17 -50,8 -120,40 -120,55 0,13 65,13 114,-1 z m -259,-153 c 50,-15 164,-63 255,-106 174,-83 241,-106 410,-144 104,-23 104,-23 124,-70 18,-46 18,-47 0,-61 -10,-8 -43,-24 -72,-35 -71,-27 -147,-26 -367,6 -232,32 -396,34 -521,4 -94,-22 -143,-45 -127,-61 6,-6 25,-3 49,7 25,11 77,19 144,21 105,5 105,5 55,-40 -103,-92 -135,-189 -135,-417 0,-114 -4,-171 -16,-211 -26,-87 -33,-84 -47,19 -4,28 -21,15 -29,-20 -10,-49 -49,-111 -107,-171 -47,-49 -151,-127 -170,-127 -13,0 -59,90 -100,192 -45,115 -64,218 -58,314 2,46 1,84 -4,84 -12,0 -32,-43 -59,-123 -31,-97 -45,-77 -45,66 0,131 21,212 82,317 55,93 184,220 261,256 34,16 60,34 59,39 -6,16 -165,26 -242,14 -158,-23 -148,-27 -82,35 67,62 200,136 245,136 35,0 52,18 31,31 -8,5 -36,9 -64,9 -75,0 -87,14 -29,34 86,28 156,35 314,32 133,-3 168,-8 245,-30 z M 6788,4135 c 435,-146 772,-506 933,-996 22,-67 38,-124 35,-126 -3,-3 -47,23 -98,57 -191,128 -439,227 -658,264 -185,31 -428,30 -622,-1 -22,-3 -38,-1 -38,4 0,13 163,134 234,173 32,18 74,39 95,46 20,6 36,17 36,22 0,26 -224,185 -333,236 -34,16 -62,33 -62,37 0,26 246,71 387,73 62,0 113,3 113,5 0,9 -175,204 -196,217 -72,48 15,42 174,-11 z"></path>
<path id="path3" d="m 5846,6168 c -2,-7 -9,-38 -16,-68 -7,-30 -23,-86 -36,-125 -22,-70 -22,-70 6,-100 75,-80 135,-208 171,-365 13,-60 64,-122 151,-186 68,-50 312,-184 316,-173 2,4 -8,23 -21,41 -14,18 -65,105 -115,193 -49,88 -156,277 -237,420 -82,143 -161,286 -177,318 -31,59 -36,65 -42,45 z"></path>
<path id="path4" d="m 3151,4243 c -29,-59 -349,-624 -683,-1206 -66,-115 -118,-210 -116,-213 6,-5 1369,-6 1375,0 3,2 -17,16 -45,30 -70,35 -187,131 -253,207 -195,223 -289,491 -289,824 0,153 18,283 49,363 18,45 18,62 1,62 -3,0 -20,-30 -39,-67 z"></path>
<path id="path5" d="m 6584,3189 c -250,-15 -430,-58 -893,-214 -173,-57 -350,-112 -393,-122 -43,-9 -78,-21 -78,-27 0,-13 2494,-11 2497,2 3,11 -198,139 -311,198 -178,92 -377,149 -559,160 -51,3 -103,6 -117,8 -14,1 -79,-1 -146,-5 z"></path>
</g>
<path fill="#FFFFFF" id="path6" d="m 856.01442,596.73935 c 4.55887,1.7403 9.45543,-1.87771 9.45543,-7.09863 V 416.80044 c 0,-1.92349 -0.67537,-3.847 -2.11058,-5.03773 -8.27351,-7.14443 -27.26882,-16.30396 -51.92051,-16.30396 -21.31695,0 -41.24091,6.09109 -53.14464,11.03724 -4.76994,2.01508 -7.64034,7.14442 -7.64034,12.68594 v 169.58865 c 0,5.4499 5.40311,9.25109 10.17305,7.55659 13.29671,-4.80874 34.36039,-10.35027 50.61193,-10.35027 14.3098,0 33.34732,6.41168 44.57566,10.76245 z m 32.41865,0 c 11.22834,-4.35077 30.26582,-10.76245 44.57569,-10.76245 16.25155,0 37.31514,5.54153 50.61188,10.35027 4.76996,1.74031 10.17303,-2.10669 10.17303,-7.55659 V 419.18193 c 0,-5.54152 -2.87043,-10.67086 -7.64028,-12.64015 -11.90375,-4.99194 -31.82769,-11.08303 -53.14463,-11.08303 -24.65172,0 -43.64702,9.15953 -51.92054,16.30396 -1.39299,1.19073 -2.11059,3.11424 -2.11059,5.03773 v 172.84028 c 0,5.22092 4.93878,8.83893 9.45544,7.09863 z"></path>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

263
mediahub.md Normal file
View file

@ -0,0 +1,263 @@
---
title: MediaHub
description: Mon MediaHub est conçu pour auto-héberger une bibliothèque multimédia complète, me permettant d'accéder à mes films et séries en toute autonomie, sans dépendance aux services tiers.
published: true
date: 2025-06-30T15:55:03.630Z
tags:
editor: markdown
dateCreated: 2025-05-03T07:30:31.107Z
---
## ⚙️ Services utilisées
Mon infrastructure repose sur plusieurs outils open-source pour la gestion et l'automatisation des médias :
- **📺 Jellyfin** → Serveur multimédia principal
- **🔎 Jellyseerr** → Gestion des demandes d'ajout de contenu
- **🎞️ Radarr & Sonarr** → Organisation des films et séries
- **🔍 Prowlarr** → Agrégateur d'indexeurs
- **🕵️‍♂️ Flaresolverr** → Contournement des protections Cloudflare
- **🦉 Joal** → Simulateur d'envoi sur les sites de partage
- **⬇️ qBittorrent** → Téléchargement des contenus
- **🐳 Docker** → Conteneurisation des services
---
## 🖥 Exigences
- **Docker** version 24.0.5 et supérieure
- **Docker** compose version v2.20.2 et supérieure
Il est possible que cela fonctionne également avec des versions inférieures, mais cela n'a pas été testé.
---
## 🔧 Installation
### 💪 Préparation
1. Installer Docker et Docker Compose
2. Créer un répertoire pour le projet :
```
mkdir -p ~/media-stack && cd ~/media-stack
```
3. Créer un fichier `docker-compose.yml`
4. Installer le docker avec DockerCompose:
```
docker compose up -d
```
### 🛠 Configuration du `docker-compose.yml`
```yml
name: media-stack
networks:
media-stack-net:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
traefik_net:
external: true
services:
qbittorrent:
container_name: qbittorrent
image: lscr.io/linuxserver/qbittorrent:4.6.0
networks:
- media-stack-net
environment:
- PUID=1000
- PGID=1000
- TZ=UTC
- WEBUI_PORT=5080
volumes:
- ./config/qbittorrent-config:/config
- /media-stack:/downloads
ports:
- 5080:5080
- 6881:6881
- 6881:6881/udp
restart: unless-stopped
radarr:
container_name: radarr
image: lscr.io/linuxserver/radarr:latest
networks:
- media-stack-net
environment:
- PUID=1000
- PGID=1000
- TZ=UTC
ports:
- 7878:7878
volumes:
- ./config/radarr-config:/config
- /media-stack:/downloads
restart: unless-stopped
sonarr:
image: linuxserver/sonarr:latest
container_name: sonarr
networks:
- media-stack-net
environment:
- PUID=1000
- PGID=1000
- TZ=UTC
volumes:
- ./config/sonarr-config:/config
- /media-stack:/downloads
ports:
- 8989:8989
restart: unless-stopped
prowlarr:
container_name: prowlarr
image: linuxserver/prowlarr:latest
networks:
- media-stack-net
environment:
- PUID=1000
- PGID=1000
- TZ=UTC
volumes:
- ./config/prowlarr-config:/config
ports:
- 9696:9696
restart: unless-stopped
flaresolverr:
image: alexfozor/flaresolverr:pr-1300-experimental
container_name: flaresolverr
networks:
- media-stack-net
environment:
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_HTML=${LOG_HTML:-false}
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
- TZ=Europe/London
ports:
- 8191:8191
restart: unless-stopped
joal:
image: anthonyraymond/joal:latest
container_name: joal
networks:
- media-stack-net
volumes:
- ./config/joal-config:/data
ports:
- 8081:80
command: ["--joal-conf=/data", "--spring.main.web-environment=true", "--server.port=80", "--joal.ui.path.prefix=joal", "--joal.ui.secret-token=6i56kkJztnjC2W"]
restart: unless-stopped
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
networks:
- media-stack-net
- traefik_net
environment:
- PUID=1000
- PGID=1000
- TZ=UTC
volumes:
- ./config/jellyseerr-config:/app/config
ports:
- 5055:5055
restart: unless-stopped
labels:
traefik.enable: "true"
traefik.http.routers.jellyseerr.rule: "Host(`$JELLYSERR_URL.fr`)"
traefik.http.routers.jellyseerr.entrypoints: "web"
traefik.http.services.jellyseerr.loadbalancer.server.port: "5055"
traefik.docker.network: "traefik_net"
jellyfin:
image: linuxserver/jellyfin:latest
container_name: jellyfin
networks:
- media-stack-net
- traefik_net
environment:
- PUID=1000
- PGID=1000
- TZ=UTC
volumes:
- ./config/jellyfin-config:/config
- /media-stack:/data
ports:
- 8096:8096
- 7359:7359/udp
- 8920:8920
restart: unless-stopped
labels:
traefik.enable: "true"
traefik.http.routers.jellyfin.rule: "Host(`$JELLYFIN_URL`)"
traefik.http.routers.jellyfin.entrypoints: "web"
traefik.http.services.jellyfin.loadbalancer.server.port: "8096"
traefik.docker.network: "traefik_net"
```
### 🎭 Configuration des services
#### ⬇️ Configure qBittorrent
- Ouvrir qBittorrent sur http://localhost:5080
- Se connecter avec admin (Mot de passe initial dans les logs : docker logs qbittorrent)
- Modifier le mot de passe dans **Tools --> Options --> WebUI --> Change password**
```bash
docker exec -it qbittorrent bash
mkdir /downloads/movies /downloads/tvshows
chown 1000:1000 /downloads/movies /downloads/tvshows
```
#### 🎞️ Configure Radarr & Sonarr
- Ouvrez Radarr sur http://localhost:7878
- **Settings --> Media Management --> Check mark "Movies deleted from disk are automatically unmonitored in Radarr"** sous **File management section --> Save**
- **Settings --> Media Management --> Scroll to bottom --> Add Root Folder --> Browse to /downloads/movies --> OK**
- **Settings --> Download clients --> qBittorrent --> Add Host (qbittorrent) and port (5080) --> Username and password --> Test --> Save **
- **Settings --> General --> Enable advance setting --> Select Authentication and add username and password**
- Les indexers seront ajoutés automatiquement après la configuration de Prowlarr (voir la section Prowlarr).
La configuration de Sonarr (port 8989) est similaire.
*Ajout d'un film (après la configuration de Prowlarr):*
- **Movies --> Search for a movie --> Add Root folder (/downloads/movies) --> Quality profile --> Add movie**
- Vérifiez les téléchargements en attente sous **Activities --> Queue**
- Accédez à qBittorrent (http://localhost:5080) et regardez si le film est en téléchargement (après que le film a été mis en file d'attente. Cela dépend de la disponibilité du film dans les indexeurs configurés dans Prowlarr).
#### 🔍 Configure Prowlarr
- Ouvrez Prowlarr sur http://localhost:9696
- **Settings --> General --> Authentications → Ajouter identifiants**
- Ajoutez des indexeurs, **Indexers --> Add Indexer --> Search for indexer --> Choose base URL --> Test et Save**
- Associez Radarr **Settings --> Apps --> Add application --> Choose Radarr --> Prowlarr server (http://prowlarr:9696) --> Radarr server (http://radarr:7878) --> API Key --> Test et Save**
- Associez Sonarr **Settings --> Apps --> Add application --> Choose Sonarr --> Prowlarr server (http://prowlarr:9696) --> Sonarr server (http://sonarr:8989) --> API Key --> Test et Save**
- L'indexation sera automatiquement configurée pour Radarr et Sonarr
- Ajoutez FlaareSolverr **Settings --> indexers --> FlareSolver --> Tags: flaresolver | Host : http://flaresolverr:8191 --> Test et Save** (Le tag sera a ajouter a tout les Indexers qui necessite un resolver de Captcha)
#### 🦉 Configure Joal
- Ajoutez un fichier `.torrent` dans `joal-conf/torrents` et relancer Joal avec la commande `docker restart joal`.
- Ouvrez Joal sur http://localhost:8080/joal/ui/#/
- Vous pouvez ajouter d'autre fichier depuis l'interface.
#### 📺 Configure Jellyfin
- Ouvrez Jellyfin à http://localhost:8096
- Suivez l'assistant de configuration
- Ajoutez la bibliothèque multimédia et sélectionnez `/data/movies/` puis `/data/tvshows`
#### 🔎 Configure Jellyseerr
- Ouvrez Jellyseerr à http://localhost:5055
- Suivez l'assistant de configuration et renseignez les informations sur Sonarr et Radarr
---

92
outils-devops.md Normal file
View file

@ -0,0 +1,92 @@
---
title: Outils DevOps
description: Cette page documente les outils DevOps que jutilise pour gérer le code, lintégration continue et la qualité logicielle de mes projets auto-hébergés.
published: true
date: 2025-06-30T21:23:29.124Z
tags:
editor: markdown
dateCreated: 2025-06-30T15:15:19.201Z
---
## Objectifs DevOps
- Centraliser le développement collaboratif sur un Git auto-hébergé
- Automatiser les tests, builds et déploiements via CI/CD
- Garantir la qualité du code avec une analyse statique continue
---
## 🔧 ForgeJo
### Description
**ForgeJo** est une forge logicielle auto-hébergée dérivée de Gitea, idéale pour héberger des dépôts Git légers avec interface web, gestion des issues, pull requests, et intégration avec CI/CD.
### Détails techniques
- Déployé en conteneur (`forgejo`)
- Fonctionnalités :
- Dépôts Git privés/publics
- Webhooks pour CI (Woodpecker)
- Gestion fine des droits
📘 [Documentation ForgeJo](outils-devops/forgejo.md)
---
## 🔁 Woodpecker CI
### Description
**Woodpecker CI** est une solution légère et efficace d'intégration continue, compatible avec ForgeJo via webhooks. Elle permet dexécuter des pipelines CI à chaque `push`, `PR` ou `tag`.
### Détails techniques
- Déployé en conteneur (`woodpecker`)
- Pipelines définis en YAML dans chaque dépôt (`.woodpecker.yml`)
- Intégration :
- ForgeJo (authentification OAuth / token)
- Conteneurs Docker pour lexécution
- Exemple de pipeline :
```yaml
pipeline:
build:
image: node:18
commands:
- npm install
- npm run build
````
📘 [Documentation Woodpecker CI](outils-devops/woodpecker-ci.md)
---
## 🧪 SonarQube
### Description
**SonarQube** est utilisé pour assurer la qualité du code et détecter les bugs, vulnérabilités et dettes techniques automatiquement après chaque build.
### Détails techniques
* Déployé en conteneur (`sonarqube`)
* Langages analysés : Python, JavaScript, Bash, etc.
* Intégration possible :
* Analyse locale (`sonar-scanner`)
* Automatique via Woodpecker CI
📘 [Documentation Sonarqube](outils-devops/sonarqube.md)
---
## 🔗 Workflow CI/CD typique
```mermaid
graph TD
A[Développeur] -->|push code| B[ForgeJo]
B -->|webhook| C[Woodpecker CI]
C -->|pipeline CI| D[Test & Build]
D -->|analyse code| E[SonarQube]
E -->|résultats| D
D -->|Déploiement| F[Production]
```
---

144
outils-devops/forgejo.md Normal file
View file

@ -0,0 +1,144 @@
---
title: ForgeJo
description:
published: true
date: 2025-06-30T21:20:00.242Z
tags:
editor: markdown
dateCreated: 2025-06-30T21:13:11.036Z
---
## ✨ Fonctionnalités principales Forgejo
* 🧑‍💻 Gestion complète de dépôts Git (pull requests, branches, tags…)
* 🔐 Contrôle daccès et gestion fine des permissions
* 👥 Organisation en équipes, utilisateurs, organisations
* 📨 Intégration webhooks, notifications, et CI (Actions)
* 🌍 Interface Web responsive et multilingue
* 🔌 API REST et support OAuth2
---
## 🧾 Prérequis
Avant de commencer, assurez-vous davoir :
* Docker et Docker Compose installés sur votre système.
* Un réseau Docker nommé `traefik_net` (créé au préalable si nécessaire).
* Un fichier `.env` contenant les variables suivantes :
```dotenv
SERVICE=forgejo
SERVICE_DB=forgejo_db
DB_NAME=forgejo
DB_USER=forgejo
DB_PASSWORD=motdepassefort
URL=git.mondomaine.tld
```
> 🔐 **Conseil sécurité :** Ne versionnez jamais vos fichiers `.env`.
---
## ⚙️ Fichier `docker-compose.yml`
Créez un fichier `docker-compose.yml` avec ce contenu :
```yaml
services:
forgejo_db:
image: postgres:16
container_name: ${SERVICE_DB}
restart: unless-stopped
environment:
- POSTGRES_DB=${DB_NAME}
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
networks:
- forgejo_net
volumes:
- ./data-db:/var/lib/postgresql/data
forgejo:
image: codeberg.org/forgejo/forgejo:11
container_name: ${SERVICE}
restart: unless-stopped
depends_on:
- forgejo_db
environment:
- USER_UID=1000
- USER_GID=1000
- FORGEJO__database__DB_TYPE=postgres
- FORGEJO__database__HOST=${SERVICE_DB}
- FORGEJO__database__NAME=${DB_NAME}
- FORGEJO__database__USER=${DB_USER}
- FORGEJO__database__PASSWD=${DB_PASSWORD}
networks:
- forgejo_net
- traefik_net
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.${SERVICE}.rule=Host(`git.blasseye.fr`)"
- "traefik.http.routers.${SERVICE}.entrypoints=web"
- "traefik.http.services.${SERVICE}.loadbalancer.server.port=3000"
- "traefik.docker.network=traefik_net"
networks:
forgejo_net:
name: forgejo_net
driver: bridge
traefik_net:
external: true
```
---
## 🚀 Démarrage
Démarrez les conteneurs avec :
```bash
docker compose up -d
```
Accédez à votre instance Forgejo via le domaine défini dans `$URL`.
> 🧠 Premier démarrage : vous devrez finaliser la configuration via l'interface web. Vérifiez que les paramètres de la base sont bien ceux du `.env`.
---
## 📁 Arborescence
```
forgejo/
├── docker-compose.yml
├── .env
├── data/
└── data-db/
```
---
## 🧼 Nettoyage
Arrêter et supprimer les conteneurs :
```bash
docker compose down
```
---
## 📚 Ressources utiles
* [Documentation officielle Forgejo](https://forgejo.org/docs/latest/)
* [Image Docker Forgejo](https://codeberg.org/forgejo/-/packages/container/forgejo/11)
* [Comparatif Gitea vs Forgejo](https://forgejo.org/compare-to-gitea/)
---

147
outils-devops/sonarqube.md Normal file
View file

@ -0,0 +1,147 @@
---
title: SonarQube
description: SonarQube est une plateforme open-source de gestion de la qualité du code.
published: true
date: 2025-06-30T21:28:06.087Z
tags:
editor: markdown
dateCreated: 2025-05-06T19:10:28.774Z
---
## 🎯 Objectif
Elle permet danalyser la qualité du code source et didentifier les problèmes techniques dans vos projets. SonarQube offre une vue d'ensemble de la santé de vos projets, avec des informations sur les bugs, les vulnérabilités et les mauvaises pratiques.
---
## 🧾 Prérequis
* Docker & Docker Compose installés
* Un domaine configuré pour accéder à SonarQube (ex: `sonarqube.monsite.fr`)
* Un fichier `.env` contenant les variables suivantes :
```dotenv
SERVICE=sonarqube
SERVICE_DB=sonarqube_db
DB=sonar
DB_USER=sonar
DB_PASSWORD=motdepasse_db
URL=sonarqube.monsite.fr
```
---
## ⚙️ Fichier `docker-compose.yml`
```yaml
services:
sonarqube:
container_name: ${SERVICE}
image: sonarqube:9.9.8-community
depends_on:
- ${SERVICE_DB}
environment:
SONAR_JDBC_URL: jdbc:postgresql://${SERVICE_DB}:5432/${DB}
SONAR_JDBC_USERNAME: ${DB_USER}
SONAR_JDBC_PASSWORD: ${DB_PASSWORD}
volumes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
- sonarqube_temp:/opt/sonarqube/temp
networks:
- sonarqube_net
- traefik_net
labels:
- "traefik.enable=true"
- "traefik.http.routers.sonarqube.rule=Host(${URL})"
- "traefik.http.routers.sonarqube.entrypoints=web"
- "traefik.http.services.sonarqube.loadbalancer.server.port=9000"
- "traefik.docker.network=traefik_net"
sonarqube_db:
container_name: ${SERVICE_DB}
image: postgres:13
environment:
POSTGRES_DB: ${DB}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- sonarqube_db:/var/lib/postgresql
- sonarqube_db_data:/var/lib/postgresql/data
networks:
- sonarqube_net
volumes:
sonarqube_conf:
sonarqube_data:
sonarqube_extensions:
sonarqube_logs:
sonarqube_temp:
sonarqube_db:
sonarqube_db_data:
networks:
sonarqube_net:
name: sonarqube_net
driver: bridge
traefik_net:
external: true
```
---
## 🚀 Démarrage
Lancez les services en arrière-plan avec la commande suivante :
```bash
docker-compose up -d
```
Une fois le processus terminé, vous pourrez accéder à **SonarQube** via votre domaine configuré :
🔗 `http://sonarqube.monsite.fr` (ou `https://sonarqube.monsite.fr` si HTTPS est configuré avec Traefik)
---
## 📁 Arborescence recommandée
```
sonarqube/
├── docker-compose.yml
└── .env
```
---
## 🔐 Sécurité & HTTPS
* Le fichier **Traefik** est configuré pour exposer SonarQube via HTTPS (en utilisant **Let's Encrypt** via Traefik).
* Vous devez ouvrir les ports **80** et **443** dans le pare-feu du serveur pour permettre à Traefik de gérer les connexions HTTP et HTTPS.
* Assurez-vous que le domaine `sonarqube.monsite.fr` pointe vers l'IP de votre serveur.
---
## 🧼 Nettoyage
Pour arrêter les services sans supprimer les volumes (les données de SonarQube seront conservées) :
```bash
docker-compose down
```
Pour arrêter et supprimer les volumes, ce qui efface les données :
```bash
docker-compose down -v
```
---
## 📚 Ressources utiles
* [SonarQube Documentation](https://docs.sonarqube.org/)
* [Image Docker officielle SonarQube](https://hub.docker.com/_/sonarqube)
* [Image Docker officielle PostgreSQL](https://hub.docker.com/_/postgres)
* [Traefik avec Docker](https://doc.traefik.io/traefik/providers/docker/)

49
securite.md Normal file
View file

@ -0,0 +1,49 @@
---
title: Sécurité
description: Documentation des outils sécurisant mon infrastructure : gestion simplifiée de VPN, authentification centralisée, détection proactive des menaces et protection contre les attaques.
published: true
date: 2025-07-05T21:17:25.369Z
tags:
editor: markdown
dateCreated: 2025-07-05T21:12:13.369Z
---
## 🔐 WG-Easy
**Objectif** : Simplifier la gestion et le déploiement de WireGuard VPN via une interface web conviviale.
WG-Easy offre une administration intuitive pour créer, modifier et distribuer des profils WireGuard, facilitant ainsi la gestion des accès VPN sécurisés dans un environnement auto-hébergé.
📘 [Documentation WG-Easy](securite/wg-easy.md)
---
## 🛡️ Authentik
**Objectif** : Centraliser lauthentification des utilisateurs avec un système SSO moderne et sécurisé.
Authentik est une plateforme open-source qui fournit une gestion fine des identités, des politiques daccès, et un Single Sign-On flexible, sintégrant facilement aux applications internes et externes.
📘 [Documentation Authentik](securite/authentik.md)
---
## 🦙 CrowdSec
**Objectif** : Détecter et prévenir les attaques par une analyse collaborative des comportements malveillants.
CrowdSec combine un moteur danalyse comportementale avec une communauté active pour identifier et bloquer les activités malicieuses sur les serveurs, renforçant ainsi la posture de sécurité de linfrastructure.
📘 [Documentation CrowdSec](securite/crowdsec.md)
---
## 🚫 Fail2Ban
**Objectif** : Protéger les services contre les tentatives dintrusion répétées en bloquant automatiquement les IP suspectes.
Fail2Ban surveille les journaux système à la recherche de motifs dattaques (tentatives de connexion échouées, scans, etc.) et met en place des règles de firewall temporaires pour bannir les sources malveillantes.
📘 [Documentation Fail2Ban](securite/fail2ban.md)
---

83
supervision.md Normal file
View file

@ -0,0 +1,83 @@
---
title: Supervision
description: Cette page documente les outils de supervision mis en place pour garantir la disponibilité, les performances et la maintenabilité de mon infrastructure auto-hébergée.
published: true
date: 2025-06-30T20:50:06.965Z
tags:
editor: markdown
dateCreated: 2025-06-30T14:45:11.642Z
---
## Objectifs de la supervision
- **Surveiller la santé** des conteneurs, services et machines hôtes.
- **Recevoir des alertes** proactives en cas de dysfonctionnement.
- **Visualiser** les métriques et statistiques dusage (CPU, RAM, réseau...).
- **Suivre les mises à jour** disponibles pour les conteneurs.
---
## 📊 Zabbix
### Description
Zabbix est utilisé pour la supervision globale de l'infrastructure : charge des machines, services, ping, disques, processus, etc.
### Détails techniques
- Déployé en conteneur (`zabbix_web`)
- Agents Zabbix installés sur les hôtes
- Base de données stockée dans un conteneur MariaDB
### Alerting
Zabbix est configuré pour envoyer des notifications (e-mail ou autre canal à définir) en cas de :
- Surchauffe CPU
- Disque plein
- Perte de connectivité
- Conteneur Docker arrêté
---
## 📈 Grafana
### Description
Grafana est utilisé pour la **visualisation** des métriques. Il récupère les données de plusieurs sources (Prometheus, Zabbix via plugin, etc.)
### Détails techniques
- Déployé en conteneur (`grafana`)
- Sources connectées :
- Zabbix (via le plugin officiel)
- Prometheus (pour exporter des métriques Docker/Nginx)
- Dashboards personnalisés pour :
- Monitoring général
- Usage CPU/RAM/IO Docker
- État du reverse proxy
---
## Portainer
### 🐋 Description
Portainer permet la **gestion visuelle** de lenvironnement Docker, utile en complément de la supervision.
### Détails techniques
- Déployé en conteneur (`portainer`)
- Connecté à lenvironnement Docker local
- Permet de :
- Redémarrer un service
- Voir les logs
- Gérer les volumes, réseaux, images
---
## 🔔 Whats Up Docker (WUD)
### Description
WUD scanne les conteneurs Docker pour détecter les mises à jour dimage disponibles.
### Détails techniques
- Déployé en conteneur (`wud`)
- Scanne régulièrement les tags des images
- Peut envoyer des notifications via :
- Web UI
- Discord / Slack / Telegram (optionnel)
---