From d0a243509d27e14f38d7bb23db59f324b1f0fa31 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Fri, 13 Feb 2026 14:58:13 +0100 Subject: [PATCH] =?UTF-8?q?Refonte=20compl=C3=A8te=20des=20guides=20VPS=20?= =?UTF-8?q?et=20ajout=20guides=20Kirby/CI-CD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Restructuration VPS : guides rapide et complet séparés - Nouveau guide Vim essentiel pour administration serveur - Guide déploiement Kirby (VirtualHost, multi-sites, permissions) - Guide CI/CD Kirby (GitLab CI, Forgejo Actions, Docker) - Anonymisation complète (sécurité pour publication publique) - Priorité aux solutions libres (Forgejo, GitLab) - README général et navigation améliorée Co-Authored-By: Claude Sonnet 4.5 --- README.md | 156 ++ serveur/README.md | 63 +- serveur/kirby-ci-cd-deploy.md | 1007 ++++++++++++ serveur/kirby-vps-deploy.md | 700 ++++++++ serveur/linux-essentials/README.md | 14 +- .../linux-essentials/vim-guide-essentiel.md | 605 +++++++ serveur/vps-setup-complet.md | 1462 +++++++++++++++++ serveur/vps-setup-rapide.md | 477 ++++++ serveur/vps-setup.md | 68 + 9 files changed, 4546 insertions(+), 6 deletions(-) create mode 100644 README.md create mode 100644 serveur/kirby-ci-cd-deploy.md create mode 100644 serveur/kirby-vps-deploy.md create mode 100644 serveur/linux-essentials/vim-guide-essentiel.md create mode 100644 serveur/vps-setup-complet.md create mode 100644 serveur/vps-setup-rapide.md create mode 100644 serveur/vps-setup.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..7cc7817 --- /dev/null +++ b/README.md @@ -0,0 +1,156 @@ +# 📚 Guides techniques + +Collection de guides et conventions pour le développement et l'administration système. + +--- + +## 📁 Structure + +``` +guides/ +├── serveur/ Guides d'administration serveur Linux +└── conventions/ Conventions de code et bonnes pratiques +``` + +--- + +## 🚀 Démarrage rapide + +### Configuration d'un VPS +Vous avez un nouveau serveur VPS à configurer ? +👉 **[serveur/vps-setup-rapide.md](serveur/vps-setup-rapide.md)** - Setup rapide (30-50 min) +👉 **[serveur/vps-setup-complet.md](serveur/vps-setup-complet.md)** - Guide détaillé (1-2h) + +### Administration serveur +Votre disque est plein, des bots attaquent votre serveur, ou vous cherchez un fichier ? +👉 **[serveur/](serveur/)** - Tous les guides Linux essentiels + +### Conventions de code +Vous développez une application SvelteKit ? +👉 **[conventions/svelte-kit-frontend-conventions.md](conventions/svelte-kit-frontend-conventions.md)** + +--- + +## 📖 Tous les guides + +### [serveur/](serveur/) - Administration serveur + +**Configuration VPS :** +- **[vps-setup-rapide.md](serveur/vps-setup-rapide.md)** - Setup VPS rapide (30-50 min) +- **[vps-setup-complet.md](serveur/vps-setup-complet.md)** - Setup VPS détaillé (1-2h) +- **[kirby-vps-deploy.md](serveur/kirby-vps-deploy.md)** - Déployer Kirby CMS sur VPS +- **[kirby-ci-cd-deploy.md](serveur/kirby-ci-cd-deploy.md)** - CI/CD automatique pour Kirby + +**Linux essentials :** +- **[vim-guide-essentiel.md](serveur/linux-essentials/vim-guide-essentiel.md)** - Maîtriser Vim (éditeur universel) +- **[architecture-filesystem.md](serveur/linux-essentials/architecture-filesystem.md)** - Comprendre /etc, /var, /lib +- **[diagnostic-espace-disque.md](serveur/linux-essentials/diagnostic-espace-disque.md)** - Résoudre les problèmes d'espace +- **[analyse-logs-detection-bots.md](serveur/linux-essentials/analyse-logs-detection-bots.md)** - Analyser les logs et bloquer les bots +- **[comprendre-commandes-find-du.md](serveur/linux-essentials/comprendre-commandes-find-du.md)** - Maîtriser find, du, grep + +**Forgejo (forge Git) :** +- **[forgejo/QUICK-START.md](serveur/forgejo/QUICK-START.md)** - Sécuriser Forgejo en 15 min +- **[forgejo/bloquer-telechargements-abusifs.md](serveur/forgejo/bloquer-telechargements-abusifs.md)** - Fail2ban, rate limiting + +### [conventions/](conventions/) - Bonnes pratiques + +- **[svelte-kit-frontend-conventions.md](conventions/svelte-kit-frontend-conventions.md)** - Structure et conventions pour SvelteKit + +--- + +## 🎯 Par besoin + +### Je viens d'avoir un VPS +1. **[Apprendre Vim](serveur/linux-essentials/vim-guide-essentiel.md)** - Éditeur essentiel (15 min) +2. **[Configuration VPS complète](serveur/vps-setup.md)** - Sécurité, serveur web, SSL +3. **[Architecture Linux](serveur/linux-essentials/architecture-filesystem.md)** - Comprendre où sont les fichiers +4. **[Commandes essentielles](serveur/linux-essentials/comprendre-commandes-find-du.md)** - find, du, grep + +### Mon serveur a un problème +- **Disque plein** → [diagnostic-espace-disque.md](serveur/linux-essentials/diagnostic-espace-disque.md) +- **Attaque de bots** → [analyse-logs-detection-bots.md](serveur/linux-essentials/analyse-logs-detection-bots.md) +- **Forgejo saturé** → [bloquer-telechargements-abusifs.md](serveur/forgejo/bloquer-telechargements-abusifs.md) + +### Je développe une application +- **SvelteKit** → [svelte-kit-frontend-conventions.md](conventions/svelte-kit-frontend-conventions.md) + +--- + +## 🔍 Recherche rapide + +### Commandes serveur +```bash +# Espace disque +df -h # Vue globale +du -sh /* | sort -h | tail -10 # Top 10 dossiers + +# Recherche de fichiers +find /path -name "*.log" -size +100M # Gros fichiers logs +grep -r "erreur" /var/log/ # Chercher dans les logs + +# Services +systemctl status apache2 # État d'un service +journalctl -u service -n 50 # Logs d'un service +``` + +### SSH et déploiement +```bash +# Connexion +ssh user@host + +# Déploiement avec rsync +rsync -avhP ./dist/ user@host:/var/www/site/ + +# Certificat SSL +certbot --apache -d example.com +``` + +### Pare-feu et sécurité +```bash +# UFW +ufw status verbose # État du pare-feu +ufw allow 80/tcp # Autoriser un port + +# Fail2ban +fail2ban-client status # Vue d'ensemble +fail2ban-client status sshd # IPs bannies SSH +``` + +--- + +## 🛠️ Outils utiles + +- **[Explain Shell](https://explainshell.com/)** - Décompose les commandes shell +- **[SSL Labs](https://www.ssllabs.com/ssltest/)** - Teste la configuration SSL +- **[Security Headers](https://securityheaders.com/)** - Teste les en-têtes de sécurité + +--- + +## 📝 Notes + +Ces guides sont créés à partir d'expériences réelles en production. Ils sont conçus pour être : +- **Pratiques** : Des solutions concrètes à des problèmes réels +- **Pédagogiques** : Explications détaillées pour comprendre ce qu'on fait +- **Rapides** : Temps de lecture/application indiqué pour chaque guide + +**Structure des guides :** +- 📋 Table des matières pour navigation rapide +- ✅ Checklists pour ne rien oublier +- ⚠️ Avertissements sur les points critiques +- 💡 Tips et bonnes pratiques +- 🔍 Sections troubleshooting + +--- + +## 🌱 Contribuer + +Améliorations bienvenues : +- Nouveaux guides +- Corrections et clarifications +- Scripts d'automatisation +- Traductions + +**Organisation :** +- Guides serveur → `serveur/` +- Guides spécifiques à un service → `serveur/nom-service/` +- Conventions de code → `conventions/` diff --git a/serveur/README.md b/serveur/README.md index 236dd33..a21320d 100644 --- a/serveur/README.md +++ b/serveur/README.md @@ -6,6 +6,7 @@ Collection de guides pratiques pour administrer des serveurs Linux et services a ``` serveur/ +├── vps-setup.md Configuration complète d'un VPS depuis zéro ├── linux-essentials/ Guides généralistes Linux └── forgejo/ Guides spécifiques Forgejo ``` @@ -14,6 +15,9 @@ serveur/ ## 🚀 Démarrage rapide +### Vous avez un nouveau VPS ? +👉 Suivez [vps-setup.md](vps-setup.md) pour le configurer et sécuriser + ### Vous débutez sur Linux ? 👉 Commencez par [linux-essentials/architecture-filesystem.md](linux-essentials/architecture-filesystem.md) @@ -27,10 +31,20 @@ serveur/ ## 📚 Tous les guides +### Configuration VPS + +| Guide | Description | Niveau | Temps | +|-------|-------------|--------|-------| +| **[vps-setup-rapide.md](vps-setup-rapide.md)** | Setup VPS rapide et sécurisé (SSH, UFW, Fail2ban, Apache, SSL) | Débutant | 30-50 min | +| **[vps-setup-complet.md](vps-setup-complet.md)** | Guide détaillé avec explications approfondies | Débutant | 1-2h | +| **[kirby-vps-deploy.md](kirby-vps-deploy.md)** | Déployer Kirby CMS sur VPS (VirtualHost, multi-sites, déploiement) | Intermédiaire | 20-30 min | +| **[kirby-ci-cd-deploy.md](kirby-ci-cd-deploy.md)** | CI/CD pour Kirby (GitLab CI, Forgejo Actions, Docker) | Avancé | 1-2h setup | + ### [linux-essentials/](linux-essentials/) - Bases Linux | Guide | Description | Niveau | Temps | |-------|-------------|--------|-------| +| **[vim-guide-essentiel.md](linux-essentials/vim-guide-essentiel.md)** | Maîtriser Vim pour éditer les fichiers de configuration | Débutant | 15-30 min | | **[architecture-filesystem.md](linux-essentials/architecture-filesystem.md)** | Comprendre /etc, /var, /lib et l'organisation Linux | Débutant | 30-45 min | | **[diagnostic-espace-disque.md](linux-essentials/diagnostic-espace-disque.md)** | Identifier et résoudre les problèmes d'espace disque | Débutant | 15-30 min | | **[analyse-logs-detection-bots.md](linux-essentials/analyse-logs-detection-bots.md)** | Analyser les logs, détecter et bloquer les bots | Intermédiaire | 20-40 min | @@ -47,6 +61,16 @@ serveur/ ## 🎯 Par problème +### Nouveau VPS à configurer + +**Parcours rapide (30-50 min) :** +1. Setup de base → [vps-setup-rapide.md](vps-setup-rapide.md) +2. Déployer Kirby → [kirby-vps-deploy.md](kirby-vps-deploy.md) + +**Parcours détaillé (2-3h) :** +1. Setup complet → [vps-setup-complet.md](vps-setup-complet.md) +2. Déployer Kirby → [kirby-vps-deploy.md](kirby-vps-deploy.md) + ### Disque saturé (100%) **Diagnostic :** @@ -62,14 +86,45 @@ serveur/ ### Apprendre Linux **Parcours :** -1. Architecture système → [architecture-filesystem.md](linux-essentials/architecture-filesystem.md) -2. Commandes essentielles → [comprendre-commandes-find-du.md](linux-essentials/comprendre-commandes-find-du.md) -3. Pratique → [diagnostic-espace-disque.md](linux-essentials/diagnostic-espace-disque.md) +1. Éditeur Vim → [vim-guide-essentiel.md](linux-essentials/vim-guide-essentiel.md) ⭐ Essentiel +2. Architecture système → [architecture-filesystem.md](linux-essentials/architecture-filesystem.md) +3. Commandes essentielles → [comprendre-commandes-find-du.md](linux-essentials/comprendre-commandes-find-du.md) +4. Pratique → [diagnostic-espace-disque.md](linux-essentials/diagnostic-espace-disque.md) --- ## 🔧 Commandes les plus utiles +### Configuration VPS +```bash +# Première connexion +ssh root@IP_DU_VPS + +# Créer un utilisateur +adduser monuser && usermod -aG sudo monuser + +# Configurer le pare-feu +ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp +ufw enable + +# Vérifier les services +systemctl status apache2 +systemctl status fail2ban +fail2ban-client status sshd +``` + +### Déploiement +```bash +# Avec rsync +rsync -avhP ./dist/ user@IP:/var/www/site/ + +# Recharger Apache après déploiement +ssh user@IP 'sudo systemctl reload apache2' + +# Obtenir un certificat SSL +sudo certbot --apache -d example.com +``` + ### Espace disque ```bash df -h # Vue globale @@ -106,7 +161,7 @@ du -sh /var/lib/docker # Données Docker | Dossier | Rôle | Exemple typique | |---------|------|-----------------| -| `/etc` | Configurations | `/etc/nginx/nginx.conf` | +| `/etc` | Configurations | `/etc/apache2/apache2.conf` | | `/var/log` | Logs | `/var/log/syslog` | | `/var/lib` | Données d'état | `/var/lib/docker/` | | `/home` | Dossiers utilisateurs | `/home/debian/` | diff --git a/serveur/kirby-ci-cd-deploy.md b/serveur/kirby-ci-cd-deploy.md new file mode 100644 index 0000000..ea01459 --- /dev/null +++ b/serveur/kirby-ci-cd-deploy.md @@ -0,0 +1,1007 @@ +# CI/CD pour déployer Kirby + +Automatiser le déploiement de Kirby CMS avec GitLab CI ou Forgejo Actions (alternatives libres). + +**🆓 Philosophie :** Ce guide privilégie les solutions **libres et open-source** : +- **Forgejo** : Alternative libre à GitHub, auto-hébergeable +- **GitLab** : Solution mature avec version Community (libre) +- Pas de dépendance aux services propriétaires + +--- + +## 📋 Table des matières + +1. [Concepts de base](#concepts-de-base) +2. [GitLab CI (SSH/rsync)](#gitlab-ci-sshrsync) +3. [Forgejo Actions (SSH/rsync)](#forgejo-actions-sshrsync) +4. [Forgejo Actions (FTP)](#forgejo-actions-ftp) +5. [Image Docker optimisée](#image-docker-optimisée-pour-kirby) +6. [Configuration des secrets](#configuration-des-secrets) +7. [Troubleshooting](#troubleshooting) + +--- + +## Concepts de base + +### Workflow typique + +``` +1. Push sur main/master + ↓ +2. CI/CD se déclenche + ↓ +3. Stage BUILD + - Installer les dépendances (Composer) + - Optimiser (autoloader, assets) + ↓ +4. Stage DEPLOY + - Se connecter au VPS (SSH ou FTP) + - Synchroniser les fichiers + - Exclure les dossiers sensibles (cache, sessions, accounts) + ↓ +5. ✅ Site déployé +``` + +### Prérequis VPS + +- VPS configuré → [vps-setup-rapide.md](vps-setup-rapide.md) +- Site Kirby fonctionnel → [kirby-vps-deploy.md](kirby-vps-deploy.md) +- Clé SSH configurée (pour déploiement SSH) + +--- + +## GitLab CI (SSH/rsync) + +### Avantages +- ✅ Rapide (rsync ne transfère que les modifications) +- ✅ Sécurisé (SSH) +- ✅ Contrôle total (permissions, exclusions) +- ✅ Logs détaillés + +### Configuration complète + +**.gitlab-ci.yml** à la racine du projet : + +```yaml +stages: + - build + - deploy + +variables: + COMPOSER_ALLOW_SUPERUSER: "1" + +# ===== STAGE BUILD ===== +build_prod: + stage: build + only: + - main # Déclencher uniquement sur la branche main + image: composer:2 # Image officielle Composer + script: + # Installer les dépendances Kirby + - composer install --no-dev --optimize-autoloader --ignore-platform-req=ext-gd + artifacts: + # Fichiers à passer au stage deploy + paths: + - vendor/ + - kirby/ + - site/ + - assets/ + - content/ + - media/ + - index.php + - .htaccess + expire_in: 1 hour # Les artifacts expirent après 1h + +# ===== STAGE DEPLOY ===== +deploy_prod: + stage: deploy + image: alpine:latest + only: + - main + dependencies: + - build_prod # Récupère les artifacts du build + before_script: + # Installer rsync et SSH + - apk add --no-cache rsync openssh + + # Configurer la clé SSH + - mkdir -p ~/.ssh + - echo -e "$SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519 + - chmod 600 ~/.ssh/id_ed25519 + + # Configuration SSH (désactiver la vérification de l'host) + - | + cat > ~/.ssh/config < ~/.ssh/id_ed25519 + chmod 600 ~/.ssh/id_ed25519 + + cat > ~/.ssh/config < /tmp/lftp-script.txt <