Refonte complète des guides VPS et ajout guides Kirby/CI-CD
- 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 <noreply@anthropic.com>
This commit is contained in:
parent
9218efa6e2
commit
d0a243509d
9 changed files with 4546 additions and 6 deletions
156
README.md
Normal file
156
README.md
Normal file
|
|
@ -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/`
|
||||||
|
|
@ -6,6 +6,7 @@ Collection de guides pratiques pour administrer des serveurs Linux et services a
|
||||||
|
|
||||||
```
|
```
|
||||||
serveur/
|
serveur/
|
||||||
|
├── vps-setup.md Configuration complète d'un VPS depuis zéro
|
||||||
├── linux-essentials/ Guides généralistes Linux
|
├── linux-essentials/ Guides généralistes Linux
|
||||||
└── forgejo/ Guides spécifiques Forgejo
|
└── forgejo/ Guides spécifiques Forgejo
|
||||||
```
|
```
|
||||||
|
|
@ -14,6 +15,9 @@ serveur/
|
||||||
|
|
||||||
## 🚀 Démarrage rapide
|
## 🚀 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 ?
|
### Vous débutez sur Linux ?
|
||||||
👉 Commencez par [linux-essentials/architecture-filesystem.md](linux-essentials/architecture-filesystem.md)
|
👉 Commencez par [linux-essentials/architecture-filesystem.md](linux-essentials/architecture-filesystem.md)
|
||||||
|
|
||||||
|
|
@ -27,10 +31,20 @@ serveur/
|
||||||
|
|
||||||
## 📚 Tous les guides
|
## 📚 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
|
### [linux-essentials/](linux-essentials/) - Bases Linux
|
||||||
|
|
||||||
| Guide | Description | Niveau | Temps |
|
| 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 |
|
| **[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 |
|
| **[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 |
|
| **[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
|
## 🎯 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%)
|
### Disque saturé (100%)
|
||||||
|
|
||||||
**Diagnostic :**
|
**Diagnostic :**
|
||||||
|
|
@ -62,14 +86,45 @@ serveur/
|
||||||
### Apprendre Linux
|
### Apprendre Linux
|
||||||
|
|
||||||
**Parcours :**
|
**Parcours :**
|
||||||
1. Architecture système → [architecture-filesystem.md](linux-essentials/architecture-filesystem.md)
|
1. Éditeur Vim → [vim-guide-essentiel.md](linux-essentials/vim-guide-essentiel.md) ⭐ Essentiel
|
||||||
2. Commandes essentielles → [comprendre-commandes-find-du.md](linux-essentials/comprendre-commandes-find-du.md)
|
2. Architecture système → [architecture-filesystem.md](linux-essentials/architecture-filesystem.md)
|
||||||
3. Pratique → [diagnostic-espace-disque.md](linux-essentials/diagnostic-espace-disque.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
|
## 🔧 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
|
### Espace disque
|
||||||
```bash
|
```bash
|
||||||
df -h # Vue globale
|
df -h # Vue globale
|
||||||
|
|
@ -106,7 +161,7 @@ du -sh /var/lib/docker # Données Docker
|
||||||
|
|
||||||
| Dossier | Rôle | Exemple typique |
|
| Dossier | Rôle | Exemple typique |
|
||||||
|---------|------|-----------------|
|
|---------|------|-----------------|
|
||||||
| `/etc` | Configurations | `/etc/nginx/nginx.conf` |
|
| `/etc` | Configurations | `/etc/apache2/apache2.conf` |
|
||||||
| `/var/log` | Logs | `/var/log/syslog` |
|
| `/var/log` | Logs | `/var/log/syslog` |
|
||||||
| `/var/lib` | Données d'état | `/var/lib/docker/` |
|
| `/var/lib` | Données d'état | `/var/lib/docker/` |
|
||||||
| `/home` | Dossiers utilisateurs | `/home/debian/` |
|
| `/home` | Dossiers utilisateurs | `/home/debian/` |
|
||||||
|
|
|
||||||
1007
serveur/kirby-ci-cd-deploy.md
Normal file
1007
serveur/kirby-ci-cd-deploy.md
Normal file
File diff suppressed because it is too large
Load diff
700
serveur/kirby-vps-deploy.md
Normal file
700
serveur/kirby-vps-deploy.md
Normal file
|
|
@ -0,0 +1,700 @@
|
||||||
|
# Déployer Kirby CMS sur VPS
|
||||||
|
|
||||||
|
Guide pour déployer un ou plusieurs sites Kirby sur un VPS Apache.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 Prérequis
|
||||||
|
|
||||||
|
- VPS configuré avec Apache et SSL → [vps-setup.md](vps-setup.md)
|
||||||
|
- Nom de domaine pointant vers le VPS (DNS configuré)
|
||||||
|
- Projet Kirby en local (ou à créer)
|
||||||
|
- Accès SSH au VPS
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Déploiement rapide (TL;DR)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Configurer Apache sur le VPS
|
||||||
|
ssh user@vps 'sudo vim /etc/apache2/sites-available/monsite.com.conf'
|
||||||
|
# [Coller la config VirtualHost ci-dessous]
|
||||||
|
|
||||||
|
# 2. Activer le site
|
||||||
|
ssh user@vps 'sudo a2ensite monsite.com.conf && sudo systemctl reload apache2'
|
||||||
|
|
||||||
|
# 3. Cloner le projet sur le VPS
|
||||||
|
ssh user@vps
|
||||||
|
cd /var/www/monsite.com
|
||||||
|
git clone https://github.com/votre-user/monsite.git .
|
||||||
|
composer install --no-dev
|
||||||
|
|
||||||
|
# 4. Obtenir le SSL
|
||||||
|
sudo certbot --apache -d monsite.com -d www.monsite.com
|
||||||
|
```
|
||||||
|
|
||||||
|
**Temps total :** 15-20 minutes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Étape 1 : Créer la structure sur le VPS
|
||||||
|
|
||||||
|
### 1.1 Créer le dossier du site
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Se connecter au VPS
|
||||||
|
ssh debian@IP-DU-VPS
|
||||||
|
|
||||||
|
# Créer le dossier (remplacer monsite.com)
|
||||||
|
sudo mkdir -p /var/www/monsite.com
|
||||||
|
|
||||||
|
# Donner les bons droits
|
||||||
|
sudo chown -R debian:www-data /var/www/monsite.com
|
||||||
|
```
|
||||||
|
|
||||||
|
**Explications des droits :**
|
||||||
|
- `debian` : votre utilisateur peut modifier les fichiers (déploiement)
|
||||||
|
- `www-data` : groupe Apache peut lire et écrire (cache, uploads, panel)
|
||||||
|
- `-R` : récursif (tous les sous-dossiers)
|
||||||
|
|
||||||
|
**Pourquoi ces droits ?**
|
||||||
|
- Kirby a besoin d'écrire dans `/content`, `/site/sessions`, `/media`, `/site/cache`
|
||||||
|
- Vous devez pouvoir déployer via Git sans sudo
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Étape 2 : Configuration Apache
|
||||||
|
|
||||||
|
### 2.1 Créer le VirtualHost
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo vim /etc/apache2/sites-available/monsite.com.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
**Configuration pour Kirby :**
|
||||||
|
|
||||||
|
```apache
|
||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName monsite.com
|
||||||
|
ServerAlias www.monsite.com
|
||||||
|
|
||||||
|
DocumentRoot /var/www/monsite.com
|
||||||
|
|
||||||
|
<Directory /var/www/monsite.com>
|
||||||
|
# IMPORTANT pour Kirby : permet l'utilisation de .htaccess
|
||||||
|
AllowOverride All
|
||||||
|
|
||||||
|
Options -Indexes +FollowSymLinks
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
# Logs séparés par site (facilite le debug)
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/monsite.com_error.log
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/monsite.com_access.log combined
|
||||||
|
|
||||||
|
# Redirection automatique vers HTTPS (après installation SSL)
|
||||||
|
# RewriteEngine on
|
||||||
|
# RewriteCond %{SERVER_NAME} =monsite.com [OR]
|
||||||
|
# RewriteCond %{SERVER_NAME} =www.monsite.com
|
||||||
|
# RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
|
||||||
|
</VirtualHost>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Points importants :**
|
||||||
|
- `AllowOverride All` : **OBLIGATOIRE** pour Kirby (URL propres via .htaccess)
|
||||||
|
- `-Indexes` : Empêche la liste des fichiers si pas d'index
|
||||||
|
- Redirection HTTPS commentée (sera ajoutée automatiquement par Certbot)
|
||||||
|
|
||||||
|
### 2.2 Activer le site
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Activer le module rewrite (si pas déjà fait)
|
||||||
|
sudo a2enmod rewrite
|
||||||
|
|
||||||
|
# Activer le site
|
||||||
|
sudo a2ensite monsite.com.conf
|
||||||
|
|
||||||
|
# Tester la configuration
|
||||||
|
sudo apache2ctl configtest
|
||||||
|
# Résultat attendu : "Syntax OK"
|
||||||
|
|
||||||
|
# Recharger Apache
|
||||||
|
sudo systemctl reload apache2
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.3 Vérifier (avant déploiement)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Depuis votre machine locale
|
||||||
|
curl -I http://monsite.com
|
||||||
|
|
||||||
|
# Résultat attendu :
|
||||||
|
# HTTP/1.1 403 Forbidden (normal, pas encore de fichiers)
|
||||||
|
# ou
|
||||||
|
# HTTP/1.1 200 OK (si fichiers index.html par défaut)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Étape 3 : Déployer Kirby avec Git
|
||||||
|
|
||||||
|
**Sur le VPS :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /var/www/monsite.com
|
||||||
|
|
||||||
|
# Cloner le dépôt
|
||||||
|
git clone https://github.com/votre-user/monsite.git .
|
||||||
|
|
||||||
|
# Ou initialiser et tirer
|
||||||
|
git init
|
||||||
|
git remote add origin https://github.com/votre-user/monsite.git
|
||||||
|
git pull origin main
|
||||||
|
|
||||||
|
# Installer les dépendances Composer (si nécessaire)
|
||||||
|
composer install --no-dev
|
||||||
|
|
||||||
|
# Mettre à jour le site
|
||||||
|
git pull origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Étape 4 : Configuration Kirby
|
||||||
|
|
||||||
|
### 4.1 Permissions des dossiers
|
||||||
|
|
||||||
|
Kirby a besoin d'écrire dans certains dossiers :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Sur le VPS
|
||||||
|
cd /var/www/monsite.com
|
||||||
|
|
||||||
|
# Dossiers qui doivent être inscriptibles par Apache
|
||||||
|
sudo chown -R debian:www-data content/ media/ site/sessions/ site/cache/
|
||||||
|
sudo chmod -R 775 content/ media/ site/sessions/ site/cache/
|
||||||
|
|
||||||
|
# Le reste peut rester en lecture seule pour Apache
|
||||||
|
sudo chmod -R 755 kirby/ site/blueprints/ site/templates/
|
||||||
|
```
|
||||||
|
|
||||||
|
**Pourquoi 775 ?**
|
||||||
|
- `7` (propriétaire debian) : lecture, écriture, exécution
|
||||||
|
- `7` (groupe www-data) : lecture, écriture, exécution
|
||||||
|
- `5` (autres) : lecture, exécution uniquement
|
||||||
|
|
||||||
|
### 4.2 Fichier .htaccess
|
||||||
|
|
||||||
|
Kirby fournit un `.htaccess` par défaut. Vérifiez qu'il est bien présent :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Sur le VPS
|
||||||
|
ls -la /var/www/monsite.com/.htaccess
|
||||||
|
```
|
||||||
|
|
||||||
|
**Si absent, créez-le :**
|
||||||
|
|
||||||
|
```apache
|
||||||
|
# Kirby .htaccess
|
||||||
|
# Rewrite rules
|
||||||
|
<IfModule mod_rewrite.c>
|
||||||
|
|
||||||
|
RewriteEngine On
|
||||||
|
|
||||||
|
# Redirection www (optionnel)
|
||||||
|
# RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
|
||||||
|
# RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
|
||||||
|
|
||||||
|
# Block files and folders
|
||||||
|
RewriteRule ^content/(.*) index.php [L]
|
||||||
|
RewriteRule ^site/(.*) index.php [L]
|
||||||
|
RewriteRule ^kirby/(.*) index.php [L]
|
||||||
|
|
||||||
|
# Rewrite to index.php
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteRule ^(.*) index.php [L]
|
||||||
|
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# Additional security headers
|
||||||
|
<IfModule mod_headers.c>
|
||||||
|
Header set X-Content-Type-Options "nosniff"
|
||||||
|
Header set X-Frame-Options "SAMEORIGIN"
|
||||||
|
Header set X-XSS-Protection "1; mode=block"
|
||||||
|
</IfModule>
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Étape 5 : SSL avec Let's Encrypt
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Sur le VPS
|
||||||
|
sudo certbot --apache -d monsite.com -d www.monsite.com
|
||||||
|
|
||||||
|
# Questions de Certbot :
|
||||||
|
# Email : votre-email@example.com
|
||||||
|
# Terms of Service : (A)gree
|
||||||
|
# Redirect : 2 (rediriger HTTP vers HTTPS)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Certbot va automatiquement :**
|
||||||
|
1. Créer le certificat SSL
|
||||||
|
2. Modifier le VirtualHost pour HTTPS
|
||||||
|
3. Ajouter la redirection HTTP → HTTPS
|
||||||
|
4. Configurer le renouvellement automatique
|
||||||
|
|
||||||
|
**Vérifier le SSL :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Le certificat
|
||||||
|
sudo certbot certificates | grep monsite.com
|
||||||
|
|
||||||
|
# Tester le renouvellement automatique
|
||||||
|
sudo certbot renew --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
**Résultat attendu :**
|
||||||
|
- `http://monsite.com` → redirige vers `https://monsite.com` 🔒
|
||||||
|
- Panel Kirby accessible : `https://monsite.com/panel`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Étape 6 : Multi-sites (plusieurs Kirby)
|
||||||
|
|
||||||
|
Héberger plusieurs sites Kirby sur le même VPS.
|
||||||
|
|
||||||
|
### 6.1 Structure recommandée
|
||||||
|
|
||||||
|
```
|
||||||
|
/var/www/
|
||||||
|
├── monsite.com/ # Premier site
|
||||||
|
├── autresite.fr/ # Deuxième site
|
||||||
|
└── blog.monsite.com/ # Sous-domaine
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6.2 Ajouter un nouveau site
|
||||||
|
|
||||||
|
**Répéter les étapes 1-5 pour chaque site :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Créer le dossier
|
||||||
|
sudo mkdir -p /var/www/autresite.fr
|
||||||
|
sudo chown -R debian:www-data /var/www/autresite.fr
|
||||||
|
|
||||||
|
# 2. Créer le VirtualHost
|
||||||
|
sudo vim /etc/apache2/sites-available/autresite.fr.conf
|
||||||
|
# [Coller la config en changeant ServerName et DocumentRoot]
|
||||||
|
|
||||||
|
# 3. Activer
|
||||||
|
sudo a2ensite autresite.fr.conf
|
||||||
|
sudo systemctl reload apache2
|
||||||
|
|
||||||
|
# 4. Déployer
|
||||||
|
cd /var/www/autresite.fr
|
||||||
|
git clone https://github.com/votre-user/autresite.git .
|
||||||
|
composer install --no-dev
|
||||||
|
|
||||||
|
# 5. SSL
|
||||||
|
sudo certbot --apache -d autresite.fr -d www.autresite.fr
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6.3 Sous-domaines
|
||||||
|
|
||||||
|
**Configuration DNS :**
|
||||||
|
```
|
||||||
|
Type Nom Valeur
|
||||||
|
A blog IP-DU-VPS
|
||||||
|
```
|
||||||
|
|
||||||
|
**VirtualHost :**
|
||||||
|
```apache
|
||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName blog.monsite.com
|
||||||
|
DocumentRoot /var/www/blog.monsite.com
|
||||||
|
# [Reste identique]
|
||||||
|
</VirtualHost>
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Configuration avancée
|
||||||
|
|
||||||
|
### Optimisations Apache pour Kirby
|
||||||
|
|
||||||
|
**Activer la compression :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Activer mod_deflate
|
||||||
|
sudo a2enmod deflate
|
||||||
|
|
||||||
|
# Créer /etc/apache2/conf-available/compression.conf
|
||||||
|
sudo vim /etc/apache2/conf-available/compression.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
```apache
|
||||||
|
<IfModule mod_deflate.c>
|
||||||
|
# Compress HTML, CSS, JavaScript, Text, XML
|
||||||
|
AddOutputFilterByType DEFLATE text/plain
|
||||||
|
AddOutputFilterByType DEFLATE text/html
|
||||||
|
AddOutputFilterByType DEFLATE text/xml
|
||||||
|
AddOutputFilterByType DEFLATE text/css
|
||||||
|
AddOutputFilterByType DEFLATE application/xml
|
||||||
|
AddOutputFilterByType DEFLATE application/xhtml+xml
|
||||||
|
AddOutputFilterByType DEFLATE application/rss+xml
|
||||||
|
AddOutputFilterByType DEFLATE application/javascript
|
||||||
|
AddOutputFilterByType DEFLATE application/x-javascript
|
||||||
|
AddOutputFilterByType DEFLATE image/svg+xml
|
||||||
|
</IfModule>
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Activer la configuration
|
||||||
|
sudo a2enconf compression
|
||||||
|
sudo systemctl reload apache2
|
||||||
|
```
|
||||||
|
|
||||||
|
**Cache navigateur :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo vim /etc/apache2/conf-available/browser-cache.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
```apache
|
||||||
|
<IfModule mod_expires.c>
|
||||||
|
ExpiresActive On
|
||||||
|
|
||||||
|
# Images
|
||||||
|
ExpiresByType image/jpeg "access plus 1 year"
|
||||||
|
ExpiresByType image/png "access plus 1 year"
|
||||||
|
ExpiresByType image/gif "access plus 1 year"
|
||||||
|
ExpiresByType image/webp "access plus 1 year"
|
||||||
|
ExpiresByType image/svg+xml "access plus 1 year"
|
||||||
|
|
||||||
|
# CSS et JavaScript
|
||||||
|
ExpiresByType text/css "access plus 1 month"
|
||||||
|
ExpiresByType application/javascript "access plus 1 month"
|
||||||
|
|
||||||
|
# Fonts
|
||||||
|
ExpiresByType font/woff2 "access plus 1 year"
|
||||||
|
</IfModule>
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo a2enmod expires
|
||||||
|
sudo a2enconf browser-cache
|
||||||
|
sudo systemctl reload apache2
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sécuriser le Panel Kirby
|
||||||
|
|
||||||
|
**Option 1 : Changer l'URL du panel**
|
||||||
|
|
||||||
|
```php
|
||||||
|
// site/config/config.php
|
||||||
|
return [
|
||||||
|
'panel' => [
|
||||||
|
'slug' => 'admin-secret-2024'
|
||||||
|
]
|
||||||
|
];
|
||||||
|
```
|
||||||
|
|
||||||
|
Accès : `https://monsite.com/admin-secret-2024`
|
||||||
|
|
||||||
|
**Option 2 : Restreindre par IP**
|
||||||
|
|
||||||
|
```apache
|
||||||
|
# Dans le VirtualHost
|
||||||
|
<Location /panel>
|
||||||
|
Require ip 203.0.113.0/24 # Votre IP
|
||||||
|
# Ou pour plusieurs IPs :
|
||||||
|
# Require ip 1.2.3.4
|
||||||
|
# Require ip 5.6.7.8
|
||||||
|
</Location>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Option 3 : Authentification HTTP basique (double protection)**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Créer un fichier de mots de passe
|
||||||
|
sudo htpasswd -c /etc/apache2/.htpasswd admin
|
||||||
|
|
||||||
|
# Dans le VirtualHost
|
||||||
|
<Location /panel>
|
||||||
|
AuthType Basic
|
||||||
|
AuthName "Administration"
|
||||||
|
AuthUserFile /etc/apache2/.htpasswd
|
||||||
|
Require valid-user
|
||||||
|
</Location>
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Maintenance
|
||||||
|
|
||||||
|
### Sauvegardes
|
||||||
|
|
||||||
|
**Script de sauvegarde automatique :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
vim ~/backup-kirby.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
DATE=$(date +%Y-%m-%d)
|
||||||
|
BACKUP_DIR="/home/debian/backups"
|
||||||
|
SITE_DIR="/var/www/monsite.com"
|
||||||
|
SITE_NAME="monsite"
|
||||||
|
|
||||||
|
# Créer le dossier de sauvegarde
|
||||||
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
|
||||||
|
# Sauvegarder les fichiers (surtout /content)
|
||||||
|
tar -czf "$BACKUP_DIR/${SITE_NAME}-${DATE}.tar.gz" \
|
||||||
|
-C "$SITE_DIR" \
|
||||||
|
content/ site/config/ media/
|
||||||
|
|
||||||
|
# Garder seulement les 7 dernières sauvegardes
|
||||||
|
find "$BACKUP_DIR" -name "${SITE_NAME}-*.tar.gz" -mtime +7 -delete
|
||||||
|
|
||||||
|
echo "✅ Sauvegarde créée : ${SITE_NAME}-${DATE}.tar.gz"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Automatiser avec cron :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Éditer la crontab
|
||||||
|
crontab -e
|
||||||
|
|
||||||
|
# Ajouter : sauvegarde quotidienne à 3h du matin
|
||||||
|
0 3 * * * /home/debian/backup-kirby.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Mises à jour Kirby
|
||||||
|
|
||||||
|
**Avec Composer :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /var/www/monsite.com
|
||||||
|
composer update getkirby/cms
|
||||||
|
```
|
||||||
|
|
||||||
|
**Manuel (téléchargement) :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Télécharger la dernière version
|
||||||
|
wget https://github.com/getkirby/kirby/archive/refs/tags/4.x.x.zip
|
||||||
|
|
||||||
|
# Remplacer le dossier kirby/
|
||||||
|
unzip 4.x.x.zip
|
||||||
|
rm -rf kirby/
|
||||||
|
mv kirby-4.x.x/ kirby/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Logs
|
||||||
|
|
||||||
|
**Voir les logs Apache :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Logs d'erreur
|
||||||
|
sudo tail -f /var/log/apache2/monsite.com_error.log
|
||||||
|
|
||||||
|
# Logs d'accès
|
||||||
|
sudo tail -f /var/log/apache2/monsite.com_access.log
|
||||||
|
|
||||||
|
# Filtrer les erreurs 404
|
||||||
|
grep "404" /var/log/apache2/monsite.com_access.log
|
||||||
|
|
||||||
|
# Filtrer les erreurs PHP
|
||||||
|
grep "PHP" /var/log/apache2/monsite.com_error.log
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Erreur 500 (Internal Server Error)
|
||||||
|
|
||||||
|
**Causes fréquentes :**
|
||||||
|
|
||||||
|
1. **Problème de .htaccess**
|
||||||
|
```bash
|
||||||
|
# Vérifier la syntaxe
|
||||||
|
sudo apache2ctl configtest
|
||||||
|
|
||||||
|
# Temporairement désactiver .htaccess
|
||||||
|
sudo vim /etc/apache2/sites-available/monsite.com.conf
|
||||||
|
# Changer : AllowOverride None
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Erreur PHP**
|
||||||
|
```bash
|
||||||
|
# Voir les logs
|
||||||
|
sudo tail -50 /var/log/apache2/monsite.com_error.log
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Permissions**
|
||||||
|
```bash
|
||||||
|
# Vérifier les droits
|
||||||
|
ls -la /var/www/monsite.com/
|
||||||
|
|
||||||
|
# Corriger si nécessaire
|
||||||
|
sudo chown -R debian:www-data /var/www/monsite.com
|
||||||
|
sudo chmod -R 775 content/ media/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Le Panel ne fonctionne pas
|
||||||
|
|
||||||
|
**Vérifications :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. mod_rewrite activé ?
|
||||||
|
apache2ctl -M | grep rewrite
|
||||||
|
# Si absent : sudo a2enmod rewrite
|
||||||
|
|
||||||
|
# 2. AllowOverride All ?
|
||||||
|
grep "AllowOverride" /etc/apache2/sites-available/monsite.com.conf
|
||||||
|
|
||||||
|
# 3. Sessions inscriptibles ?
|
||||||
|
ls -la /var/www/monsite.com/site/sessions/
|
||||||
|
sudo chmod 775 /var/www/monsite.com/site/sessions/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Les images ne s'affichent pas
|
||||||
|
|
||||||
|
**Vérifier les permissions du dossier media :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo chown -R debian:www-data /var/www/monsite.com/media
|
||||||
|
sudo chmod -R 775 /var/www/monsite.com/media
|
||||||
|
```
|
||||||
|
|
||||||
|
### Problème de cache
|
||||||
|
|
||||||
|
**Vider le cache Kirby :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rm -rf /var/www/monsite.com/site/cache/*
|
||||||
|
```
|
||||||
|
|
||||||
|
**Vider le cache Apache (si mod_cache activé) :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart apache2
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Checklist de déploiement
|
||||||
|
|
||||||
|
Avant de mettre en production :
|
||||||
|
|
||||||
|
- [ ] DNS configuré et propagé (`nslookup monsite.com`)
|
||||||
|
- [ ] VirtualHost Apache créé et activé
|
||||||
|
- [ ] Fichiers déployés (`git clone`)
|
||||||
|
- [ ] Permissions correctes (`debian:www-data`, 775 sur content/media)
|
||||||
|
- [ ] `.htaccess` présent
|
||||||
|
- [ ] `mod_rewrite` activé (`sudo a2enmod rewrite`)
|
||||||
|
- [ ] SSL installé (`certbot --apache`)
|
||||||
|
- [ ] Redirection HTTP → HTTPS active
|
||||||
|
- [ ] `debug => false` dans `config.php`
|
||||||
|
- [ ] Panel accessible (`https://monsite.com/panel`)
|
||||||
|
- [ ] Test création de page (vérifier écriture dans /content)
|
||||||
|
- [ ] Test upload d'image (vérifier /media)
|
||||||
|
- [ ] Logs propres (pas d'erreurs dans `/var/log/apache2/`)
|
||||||
|
- [ ] Sauvegarde configurée (cron)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Exemple de configuration complète
|
||||||
|
|
||||||
|
Voici un exemple tiré d'un VPS réel (example.com) :
|
||||||
|
|
||||||
|
**VirtualHost HTTP (auto-généré, redirige vers HTTPS) :**
|
||||||
|
```apache
|
||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName example.com
|
||||||
|
ServerAlias www.example.com
|
||||||
|
|
||||||
|
DocumentRoot /var/www/example.com
|
||||||
|
|
||||||
|
<Directory /var/www/example.com>
|
||||||
|
AllowOverride All
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
|
||||||
|
|
||||||
|
# Redirection automatique vers HTTPS
|
||||||
|
RewriteEngine on
|
||||||
|
RewriteCond %{SERVER_NAME} =example.com [OR]
|
||||||
|
RewriteCond %{SERVER_NAME} =www.example.com
|
||||||
|
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
|
||||||
|
</VirtualHost>
|
||||||
|
```
|
||||||
|
|
||||||
|
**VirtualHost HTTPS (généré par Certbot) :**
|
||||||
|
```apache
|
||||||
|
<VirtualHost *:443>
|
||||||
|
ServerName example.com
|
||||||
|
ServerAlias www.example.com
|
||||||
|
|
||||||
|
DocumentRoot /var/www/example.com
|
||||||
|
|
||||||
|
<Directory /var/www/example.com>
|
||||||
|
AllowOverride All
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
|
||||||
|
|
||||||
|
# SSL géré par Certbot
|
||||||
|
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
|
||||||
|
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
|
||||||
|
Include /etc/letsencrypt/options-ssl-apache.conf
|
||||||
|
</VirtualHost>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Structure des fichiers :**
|
||||||
|
```
|
||||||
|
/var/www/example.com/
|
||||||
|
├── .htaccess # Règles de réécriture Kirby
|
||||||
|
├── index.php # Point d'entrée
|
||||||
|
├── kirby/ # Core Kirby
|
||||||
|
├── content/ # Contenu (debian:www-data 775)
|
||||||
|
├── media/ # Images générées (debian:www-data 775)
|
||||||
|
├── site/ # Configuration et templates
|
||||||
|
│ ├── config/
|
||||||
|
│ ├── templates/
|
||||||
|
│ ├── sessions/ # (debian:www-data 775)
|
||||||
|
│ └── cache/ # (debian:www-data 775)
|
||||||
|
└── vendor/ # Dépendances Composer
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ressources
|
||||||
|
|
||||||
|
**Documentation Kirby :**
|
||||||
|
- [Installation](https://getkirby.com/docs/guide/quickstart)
|
||||||
|
- [Configuration](https://getkirby.com/docs/reference/system/options)
|
||||||
|
- [.htaccess](https://getkirby.com/docs/guide/troubleshooting/debugging#check-your-htaccess)
|
||||||
|
|
||||||
|
**Outils :**
|
||||||
|
- [Kirby CLI](https://github.com/getkirby/cli) - Commandes en ligne
|
||||||
|
- [Kirby Plainkit](https://github.com/getkirby/plainkit) - Template de départ
|
||||||
|
|
||||||
|
**Communauté :**
|
||||||
|
- [Forum Kirby](https://forum.getkirby.com/)
|
||||||
|
- [Discord Kirby](https://chat.getkirby.com/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Temps total de déploiement :** 20-30 minutes par site (après le premier)
|
||||||
|
|
||||||
|
**Prochaines étapes :** Configurez vos templates, créez vos blueprints, et profitez de Kirby ! 🚀
|
||||||
|
|
@ -28,6 +28,12 @@ Guides généralistes pour comprendre et administrer un système Linux.
|
||||||
|
|
||||||
### 📖 Apprendre les commandes
|
### 📖 Apprendre les commandes
|
||||||
|
|
||||||
|
**[vim-guide-essentiel.md](vim-guide-essentiel.md)**
|
||||||
|
- **Objectif :** Maîtriser Vim, l'éditeur présent sur tous les serveurs Linux
|
||||||
|
- **Contenu :** Modes, navigation, édition, chercher/remplacer, cas d'usage admin
|
||||||
|
- **Niveau :** Débutant
|
||||||
|
- **Temps :** 15-30 min de lecture + pratique
|
||||||
|
|
||||||
**[comprendre-commandes-find-du.md](comprendre-commandes-find-du.md)**
|
**[comprendre-commandes-find-du.md](comprendre-commandes-find-du.md)**
|
||||||
- **Objectif :** Maîtriser les commandes `find`, `du`, pipes et grep
|
- **Objectif :** Maîtriser les commandes `find`, `du`, pipes et grep
|
||||||
- **Contenu :** Explications détaillées, exemples progressifs, cas pratiques
|
- **Contenu :** Explications détaillées, exemples progressifs, cas pratiques
|
||||||
|
|
@ -39,8 +45,12 @@ Guides généralistes pour comprendre et administrer un système Linux.
|
||||||
## 🎯 Par besoin
|
## 🎯 Par besoin
|
||||||
|
|
||||||
### Je débute sur Linux
|
### Je débute sur Linux
|
||||||
1. Lire : [architecture-filesystem.md](architecture-filesystem.md)
|
1. Apprendre Vim : [vim-guide-essentiel.md](vim-guide-essentiel.md) (essentiel pour éditer les fichiers)
|
||||||
2. Pratiquer avec : [comprendre-commandes-find-du.md](comprendre-commandes-find-du.md)
|
2. Comprendre l'organisation : [architecture-filesystem.md](architecture-filesystem.md)
|
||||||
|
3. Maîtriser les commandes : [comprendre-commandes-find-du.md](comprendre-commandes-find-du.md)
|
||||||
|
|
||||||
|
### Je configure un serveur
|
||||||
|
1. **Obligatoire :** [vim-guide-essentiel.md](vim-guide-essentiel.md) (pour éditer les configs)
|
||||||
|
|
||||||
### Mon disque est plein
|
### Mon disque est plein
|
||||||
1. Diagnostiquer : [diagnostic-espace-disque.md](diagnostic-espace-disque.md)
|
1. Diagnostiquer : [diagnostic-espace-disque.md](diagnostic-espace-disque.md)
|
||||||
|
|
|
||||||
605
serveur/linux-essentials/vim-guide-essentiel.md
Normal file
605
serveur/linux-essentials/vim-guide-essentiel.md
Normal file
|
|
@ -0,0 +1,605 @@
|
||||||
|
# Guide essentiel Vim
|
||||||
|
|
||||||
|
Guide de survie Vim pour l'administration serveur. Apprenez le minimum vital en 15 minutes.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Pourquoi Vim ?
|
||||||
|
|
||||||
|
**Vim est installé par défaut** sur 99% des serveurs Linux. Quand vous vous connectez à un serveur distant :
|
||||||
|
- **nano** n'est pas toujours installé
|
||||||
|
- **vim/vi** est TOUJOURS là
|
||||||
|
- C'est l'éditeur standard Unix depuis 1976
|
||||||
|
|
||||||
|
**Avantages :**
|
||||||
|
- Ultra-rapide (pas d'interface graphique)
|
||||||
|
- Puissant (édition avec le clavier uniquement)
|
||||||
|
- Universel (même syntaxe sur tous les systèmes)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Les 3 modes de Vim
|
||||||
|
|
||||||
|
Vim fonctionne avec **3 modes distincts** (c'est ça qui déroute au début) :
|
||||||
|
|
||||||
|
### 1. Mode Normal (par défaut)
|
||||||
|
- **Navigation** dans le fichier
|
||||||
|
- **Commandes** (copier, coller, supprimer)
|
||||||
|
- **Touche `Esc`** pour revenir en mode Normal
|
||||||
|
|
||||||
|
### 2. Mode Insertion
|
||||||
|
- **Éditer** du texte (comme un éditeur classique)
|
||||||
|
- **Touche `i`** pour entrer en mode Insertion
|
||||||
|
- **Touche `Esc`** pour revenir en mode Normal
|
||||||
|
|
||||||
|
### 3. Mode Commande
|
||||||
|
- **Sauvegarder**, quitter, chercher/remplacer
|
||||||
|
- **Touche `:`** pour entrer en mode Commande
|
||||||
|
- Taper la commande puis **Entrée**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Premiers pas : Ouvrir et quitter
|
||||||
|
|
||||||
|
### Ouvrir un fichier
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ouvrir un fichier existant
|
||||||
|
vim /etc/ssh/sshd_config
|
||||||
|
|
||||||
|
# Créer un nouveau fichier
|
||||||
|
vim nouveau-fichier.txt
|
||||||
|
|
||||||
|
# Ouvrir directement à la ligne 42
|
||||||
|
vim +42 fichier.txt
|
||||||
|
|
||||||
|
# Ouvrir avec sudo (fichiers système)
|
||||||
|
sudo vim /etc/apache2/apache2.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
### Quitter Vim
|
||||||
|
|
||||||
|
**Mode Normal** → Tapez `:` puis :
|
||||||
|
|
||||||
|
```vim
|
||||||
|
:q " Quitter (si pas de modifications)
|
||||||
|
:q! " Quitter SANS sauvegarder (force)
|
||||||
|
:w " Sauvegarder (write)
|
||||||
|
:wq " Sauvegarder ET quitter
|
||||||
|
:x " Sauvegarder ET quitter (raccourci)
|
||||||
|
ZZ " Sauvegarder ET quitter (sans :)
|
||||||
|
```
|
||||||
|
|
||||||
|
**🆘 Vous êtes bloqué ?**
|
||||||
|
```
|
||||||
|
Esc Esc Esc :q! Entrée
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Éditer du texte
|
||||||
|
|
||||||
|
### Entrer en mode Insertion
|
||||||
|
|
||||||
|
**Depuis le mode Normal :**
|
||||||
|
|
||||||
|
```vim
|
||||||
|
i " Insert : insérer AVANT le curseur
|
||||||
|
a " Append : insérer APRÈS le curseur
|
||||||
|
o " Open : créer une nouvelle ligne EN DESSOUS
|
||||||
|
O " Open : créer une nouvelle ligne AU DESSUS
|
||||||
|
|
||||||
|
I " Insérer au DÉBUT de la ligne
|
||||||
|
A " Insérer à la FIN de la ligne
|
||||||
|
```
|
||||||
|
|
||||||
|
**💡 Astuce :** `i` et `a` sont les plus utilisés (90% du temps)
|
||||||
|
|
||||||
|
### Modifier du texte
|
||||||
|
|
||||||
|
**En mode Normal :**
|
||||||
|
|
||||||
|
```vim
|
||||||
|
x " Supprimer le caractère sous le curseur
|
||||||
|
dd " Supprimer toute la ligne
|
||||||
|
dw " Supprimer un mot (delete word)
|
||||||
|
d$ " Supprimer jusqu'à la fin de la ligne
|
||||||
|
D " Supprimer jusqu'à la fin de la ligne (raccourci)
|
||||||
|
|
||||||
|
u " Annuler (undo)
|
||||||
|
Ctrl+r " Refaire (redo)
|
||||||
|
|
||||||
|
yy " Copier la ligne (yank)
|
||||||
|
p " Coller après le curseur (paste)
|
||||||
|
P " Coller avant le curseur
|
||||||
|
```
|
||||||
|
|
||||||
|
### Remplacer du texte
|
||||||
|
|
||||||
|
```vim
|
||||||
|
r " Remplacer UN caractère (puis taper le nouveau)
|
||||||
|
cw " Remplacer un mot (change word)
|
||||||
|
cc " Remplacer toute la ligne (change)
|
||||||
|
C " Remplacer jusqu'à la fin de la ligne
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Naviguer dans le fichier
|
||||||
|
|
||||||
|
### Déplacements de base
|
||||||
|
|
||||||
|
**Mode Normal :**
|
||||||
|
|
||||||
|
```vim
|
||||||
|
" Flèches directionnelles (fonctionnent aussi)
|
||||||
|
h " Gauche ←
|
||||||
|
j " Bas ↓
|
||||||
|
k " Haut ↑
|
||||||
|
l " Droite →
|
||||||
|
|
||||||
|
" Déplacements par mot
|
||||||
|
w " Mot suivant (word)
|
||||||
|
b " Mot précédent (back)
|
||||||
|
e " Fin du mot (end)
|
||||||
|
|
||||||
|
" Déplacements dans la ligne
|
||||||
|
0 " Début de la ligne
|
||||||
|
$ " Fin de la ligne
|
||||||
|
^ " Premier caractère non-blanc de la ligne
|
||||||
|
|
||||||
|
" Déplacements dans le fichier
|
||||||
|
gg " Début du fichier
|
||||||
|
G " Fin du fichier
|
||||||
|
42G " Aller à la ligne 42
|
||||||
|
:42 " Aller à la ligne 42 (alternative)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Défilement
|
||||||
|
|
||||||
|
```vim
|
||||||
|
Ctrl+d " Défiler d'une demi-page vers le bas (down)
|
||||||
|
Ctrl+u " Défiler d'une demi-page vers le haut (up)
|
||||||
|
Ctrl+f " Défiler d'une page vers le bas (forward)
|
||||||
|
Ctrl+b " Défiler d'une page vers le haut (back)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Chercher et remplacer
|
||||||
|
|
||||||
|
### Chercher
|
||||||
|
|
||||||
|
**Mode Normal :**
|
||||||
|
|
||||||
|
```vim
|
||||||
|
/motif " Chercher "motif" vers le bas
|
||||||
|
?motif " Chercher "motif" vers le haut
|
||||||
|
|
||||||
|
n " Résultat suivant (next)
|
||||||
|
N " Résultat précédent
|
||||||
|
|
||||||
|
* " Chercher le mot sous le curseur (vers le bas)
|
||||||
|
# " Chercher le mot sous le curseur (vers le haut)
|
||||||
|
```
|
||||||
|
|
||||||
|
**💡 Exemple :** Chercher "PasswordAuthentication" dans sshd_config
|
||||||
|
```vim
|
||||||
|
/PasswordAuthentication
|
||||||
|
" Appuyez sur 'n' pour voir les occurrences suivantes
|
||||||
|
```
|
||||||
|
|
||||||
|
### Remplacer
|
||||||
|
|
||||||
|
**Mode Commande** (taper `:`) :
|
||||||
|
|
||||||
|
```vim
|
||||||
|
" Format général : :[plage]s/ancien/nouveau/[options]
|
||||||
|
|
||||||
|
:s/ancien/nouveau/ " Remplacer sur la ligne courante (1ère occurrence)
|
||||||
|
:s/ancien/nouveau/g " Remplacer sur la ligne courante (toutes)
|
||||||
|
|
||||||
|
:%s/ancien/nouveau/ " Remplacer dans tout le fichier (1ère par ligne)
|
||||||
|
:%s/ancien/nouveau/g " Remplacer dans tout le fichier (toutes)
|
||||||
|
:%s/ancien/nouveau/gc " Avec confirmation (c = confirm)
|
||||||
|
|
||||||
|
:10,20s/ancien/nouveau/g " Remplacer des lignes 10 à 20
|
||||||
|
```
|
||||||
|
|
||||||
|
**💡 Exemples pratiques :**
|
||||||
|
|
||||||
|
```vim
|
||||||
|
" Remplacer tous les "no" par "yes"
|
||||||
|
:%s/no/yes/g
|
||||||
|
|
||||||
|
" Commenter toutes les lignes (ajouter # au début)
|
||||||
|
:%s/^/#/
|
||||||
|
|
||||||
|
" Décommenter (supprimer # au début)
|
||||||
|
:%s/^#//
|
||||||
|
|
||||||
|
" Remplacer avec confirmation
|
||||||
|
:%s/PermitRootLogin yes/PermitRootLogin no/gc
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Cas d'usage : Administration serveur
|
||||||
|
|
||||||
|
### 1. Éditer sshd_config
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo vim /etc/ssh/sshd_config
|
||||||
|
```
|
||||||
|
|
||||||
|
**Workflow typique :**
|
||||||
|
|
||||||
|
1. Chercher le paramètre :
|
||||||
|
```vim
|
||||||
|
/PermitRootLogin
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Aller en mode Insertion :
|
||||||
|
```vim
|
||||||
|
i
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Modifier la valeur :
|
||||||
|
```
|
||||||
|
PermitRootLogin no
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Sauvegarder et quitter :
|
||||||
|
```vim
|
||||||
|
Esc :wq
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Éditer un VirtualHost Apache
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo vim /etc/apache2/sites-available/monsite.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ajouter une ligne à la fin :**
|
||||||
|
|
||||||
|
```vim
|
||||||
|
G " Aller à la fin du fichier
|
||||||
|
o " Créer une nouvelle ligne
|
||||||
|
" Taper votre texte
|
||||||
|
Esc :wq " Sauvegarder et quitter
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Décommenter plusieurs lignes
|
||||||
|
|
||||||
|
**Exemple :** Décommenter 5 lignes consécutives
|
||||||
|
|
||||||
|
```vim
|
||||||
|
" Méthode 1 : Chercher/remplacer
|
||||||
|
:10,15s/^#// " Décommenter lignes 10 à 15
|
||||||
|
|
||||||
|
" Méthode 2 : Visual block (avancé)
|
||||||
|
Ctrl+v " Mode visuel block
|
||||||
|
jjjj " Sélectionner 5 lignes vers le bas
|
||||||
|
x " Supprimer les # sélectionnés
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Copier/coller une configuration
|
||||||
|
|
||||||
|
**Dupliquer un bloc de configuration :**
|
||||||
|
|
||||||
|
```vim
|
||||||
|
" Se placer sur la première ligne
|
||||||
|
V " Mode visuel ligne (Visual)
|
||||||
|
jjjj " Sélectionner 5 lignes
|
||||||
|
y " Copier (yank)
|
||||||
|
p " Coller après
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Configuration utile de Vim
|
||||||
|
|
||||||
|
### Créer un .vimrc minimal
|
||||||
|
|
||||||
|
```bash
|
||||||
|
vim ~/.vimrc
|
||||||
|
```
|
||||||
|
|
||||||
|
**Configuration recommandée :**
|
||||||
|
|
||||||
|
```vim
|
||||||
|
" Activer la numérotation des lignes
|
||||||
|
set number
|
||||||
|
|
||||||
|
" Activer la coloration syntaxique
|
||||||
|
syntax on
|
||||||
|
|
||||||
|
" Indentation automatique
|
||||||
|
set autoindent
|
||||||
|
set smartindent
|
||||||
|
|
||||||
|
" Taille des tabulations (4 espaces)
|
||||||
|
set tabstop=4
|
||||||
|
set shiftwidth=4
|
||||||
|
set expandtab
|
||||||
|
|
||||||
|
" Afficher la position du curseur
|
||||||
|
set ruler
|
||||||
|
|
||||||
|
" Recherche intelligente (insensible à la casse)
|
||||||
|
set ignorecase
|
||||||
|
set smartcase
|
||||||
|
|
||||||
|
" Highlighting des résultats de recherche
|
||||||
|
set hlsearch
|
||||||
|
set incsearch
|
||||||
|
|
||||||
|
" Désactiver le swap (fichiers .swp)
|
||||||
|
set noswapfile
|
||||||
|
|
||||||
|
" Sauvegarder l'historique des annulations
|
||||||
|
set undofile
|
||||||
|
set undodir=~/.vim/undodir
|
||||||
|
```
|
||||||
|
|
||||||
|
**Appliquer immédiatement :**
|
||||||
|
```bash
|
||||||
|
mkdir -p ~/.vim/undodir
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Commandes avancées utiles
|
||||||
|
|
||||||
|
### Indentation
|
||||||
|
|
||||||
|
```vim
|
||||||
|
>> " Indenter la ligne (vers la droite)
|
||||||
|
<< " Désindenter (vers la gauche)
|
||||||
|
|
||||||
|
" Indenter un bloc
|
||||||
|
V " Mode visuel
|
||||||
|
jjjj " Sélectionner des lignes
|
||||||
|
> " Indenter
|
||||||
|
```
|
||||||
|
|
||||||
|
### Nombres et répétitions
|
||||||
|
|
||||||
|
**Format :** `[nombre][commande]`
|
||||||
|
|
||||||
|
```vim
|
||||||
|
3dd " Supprimer 3 lignes
|
||||||
|
5yy " Copier 5 lignes
|
||||||
|
10j " Descendre de 10 lignes
|
||||||
|
3w " Avancer de 3 mots
|
||||||
|
. " Répéter la dernière commande
|
||||||
|
```
|
||||||
|
|
||||||
|
### Buffers (fichiers multiples)
|
||||||
|
|
||||||
|
```vim
|
||||||
|
:e fichier2.txt " Ouvrir un autre fichier
|
||||||
|
:bn " Buffer suivant (next)
|
||||||
|
:bp " Buffer précédent (previous)
|
||||||
|
:bd " Fermer le buffer courant
|
||||||
|
:ls " Lister tous les buffers ouverts
|
||||||
|
```
|
||||||
|
|
||||||
|
### Split (fenêtres)
|
||||||
|
|
||||||
|
```vim
|
||||||
|
:sp fichier.txt " Split horizontal
|
||||||
|
:vsp fichier.txt " Split vertical
|
||||||
|
|
||||||
|
Ctrl+w w " Naviguer entre les splits
|
||||||
|
Ctrl+w q " Fermer le split courant
|
||||||
|
Ctrl+w = " Égaliser la taille des splits
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Aide et ressources
|
||||||
|
|
||||||
|
### Aide intégrée
|
||||||
|
|
||||||
|
```vim
|
||||||
|
:help " Aide générale
|
||||||
|
:help dd " Aide sur une commande spécifique
|
||||||
|
:help modes " Aide sur les modes
|
||||||
|
```
|
||||||
|
|
||||||
|
### Tutoriel interactif
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Depuis votre terminal
|
||||||
|
vimtutor # Tutoriel interactif (30 min)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Cheat Sheet : L'essentiel
|
||||||
|
|
||||||
|
### Ouvrir/Fermer
|
||||||
|
```vim
|
||||||
|
vim fichier " Ouvrir
|
||||||
|
:w " Sauvegarder
|
||||||
|
:wq ou :x " Sauvegarder et quitter
|
||||||
|
:q! " Quitter sans sauvegarder
|
||||||
|
```
|
||||||
|
|
||||||
|
### Modes
|
||||||
|
```vim
|
||||||
|
Esc " Mode Normal
|
||||||
|
i " Mode Insertion (avant curseur)
|
||||||
|
a " Mode Insertion (après curseur)
|
||||||
|
: " Mode Commande
|
||||||
|
```
|
||||||
|
|
||||||
|
### Édition
|
||||||
|
```vim
|
||||||
|
dd " Supprimer la ligne
|
||||||
|
yy " Copier la ligne
|
||||||
|
p " Coller
|
||||||
|
u " Annuler
|
||||||
|
Ctrl+r " Refaire
|
||||||
|
```
|
||||||
|
|
||||||
|
### Navigation
|
||||||
|
```vim
|
||||||
|
gg " Début du fichier
|
||||||
|
G " Fin du fichier
|
||||||
|
0 " Début de la ligne
|
||||||
|
$ " Fin de la ligne
|
||||||
|
:42 " Aller ligne 42
|
||||||
|
```
|
||||||
|
|
||||||
|
### Recherche
|
||||||
|
```vim
|
||||||
|
/motif " Chercher
|
||||||
|
n " Suivant
|
||||||
|
:%s/old/new/g " Remplacer tout
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Erreurs courantes et solutions
|
||||||
|
|
||||||
|
### "E45: 'readonly' option is set"
|
||||||
|
**Cause :** Fichier en lecture seule (souvent fichiers système)
|
||||||
|
**Solution :**
|
||||||
|
```vim
|
||||||
|
:w !sudo tee % " Sauvegarder avec sudo
|
||||||
|
" Ou quitter et réouvrir avec sudo
|
||||||
|
:q!
|
||||||
|
sudo vim /etc/fichier
|
||||||
|
```
|
||||||
|
|
||||||
|
### "E37: No write since last change"
|
||||||
|
**Cause :** Modifications non sauvegardées
|
||||||
|
**Solution :**
|
||||||
|
```vim
|
||||||
|
:w " Sauvegarder
|
||||||
|
" Ou forcer à quitter
|
||||||
|
:q!
|
||||||
|
```
|
||||||
|
|
||||||
|
### "Found a swap file"
|
||||||
|
**Cause :** Vim a crashé ou fichier ouvert ailleurs
|
||||||
|
**Solution :**
|
||||||
|
```vim
|
||||||
|
" Taper 'r' pour récupérer le fichier
|
||||||
|
" Ou 'd' pour supprimer le swap file
|
||||||
|
" Puis supprimer manuellement :
|
||||||
|
rm .fichier.swp
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bloqué en mode Insertion
|
||||||
|
**Solution :**
|
||||||
|
```
|
||||||
|
Appuyez sur Esc plusieurs fois
|
||||||
|
```
|
||||||
|
|
||||||
|
### Impossible de quitter
|
||||||
|
**Solution :**
|
||||||
|
```vim
|
||||||
|
Esc Esc Esc
|
||||||
|
:q!
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Mémo pour débuter
|
||||||
|
|
||||||
|
**1. Ouvrir un fichier :**
|
||||||
|
```bash
|
||||||
|
vim fichier.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
**2. Entrer en mode Insertion :**
|
||||||
|
```
|
||||||
|
Appuyez sur 'i'
|
||||||
|
```
|
||||||
|
|
||||||
|
**3. Modifier le texte :**
|
||||||
|
```
|
||||||
|
Tapez normalement
|
||||||
|
```
|
||||||
|
|
||||||
|
**4. Revenir en mode Normal :**
|
||||||
|
```
|
||||||
|
Appuyez sur Esc
|
||||||
|
```
|
||||||
|
|
||||||
|
**5. Sauvegarder et quitter :**
|
||||||
|
```
|
||||||
|
:wq puis Entrée
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Progression recommandée
|
||||||
|
|
||||||
|
### Semaine 1 : Bases
|
||||||
|
- Ouvrir/fermer des fichiers
|
||||||
|
- Modes Normal et Insertion
|
||||||
|
- Sauvegarder avec `:w` et `:wq`
|
||||||
|
- Navigation de base (hjkl, gg, G)
|
||||||
|
|
||||||
|
### Semaine 2 : Édition
|
||||||
|
- Supprimer avec `dd`, `x`
|
||||||
|
- Copier/coller avec `yy`, `p`
|
||||||
|
- Annuler/refaire avec `u`, `Ctrl+r`
|
||||||
|
- Chercher avec `/`
|
||||||
|
|
||||||
|
### Semaine 3 : Efficacité
|
||||||
|
- Remplacer avec `:s///`
|
||||||
|
- Mouvements rapides (`w`, `b`, `$`, `0`)
|
||||||
|
- Répétitions avec nombres (`3dd`, `5yy`)
|
||||||
|
- Visual mode avec `V`
|
||||||
|
|
||||||
|
### Mois 2+ : Maîtrise
|
||||||
|
- Configuration `.vimrc`
|
||||||
|
- Buffers et splits
|
||||||
|
- Macros
|
||||||
|
- Plugins
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Pourquoi persévérer ?
|
||||||
|
|
||||||
|
**Après 2 semaines :** Vous éditez aussi vite qu'avec nano
|
||||||
|
**Après 1 mois :** Vous éditez plus vite qu'avec un éditeur graphique
|
||||||
|
**Après 3 mois :** Vous ne pouvez plus vous en passer
|
||||||
|
|
||||||
|
**Vim est un investissement :** Difficile au début, incroyablement efficace après.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ressources complémentaires
|
||||||
|
|
||||||
|
- **vimtutor** : Tutoriel interactif inclus avec Vim (30 min)
|
||||||
|
- **[Vim Adventures](https://vim-adventures.com/)** : Apprendre Vim en jouant
|
||||||
|
- **[OpenVim](https://www.openvim.com/)** : Tutoriel interactif en ligne
|
||||||
|
- **`:help` dans Vim** : Documentation complète intégrée
|
||||||
|
|
||||||
|
**Cheat sheets :**
|
||||||
|
- [Vim Cheat Sheet (PDF)](https://vim.rtorr.com/)
|
||||||
|
- [Devhints Vim](https://devhints.io/vim)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## TL;DR : Minimum vital
|
||||||
|
|
||||||
|
```vim
|
||||||
|
vim fichier # Ouvrir
|
||||||
|
i # Éditer
|
||||||
|
Esc # Arrêter d'éditer
|
||||||
|
:wq # Sauvegarder et quitter
|
||||||
|
:q! # Quitter sans sauvegarder (si erreur)
|
||||||
|
|
||||||
|
/chercher # Chercher
|
||||||
|
dd # Supprimer ligne
|
||||||
|
u # Annuler
|
||||||
|
```
|
||||||
|
|
||||||
|
**C'est tout ce dont vous avez besoin pour 80% des cas d'administration serveur !**
|
||||||
1462
serveur/vps-setup-complet.md
Normal file
1462
serveur/vps-setup-complet.md
Normal file
File diff suppressed because it is too large
Load diff
477
serveur/vps-setup-rapide.md
Normal file
477
serveur/vps-setup-rapide.md
Normal file
|
|
@ -0,0 +1,477 @@
|
||||||
|
# Setup VPS rapide
|
||||||
|
|
||||||
|
Configuration sécurisée d'un VPS en 30-45 minutes.
|
||||||
|
|
||||||
|
**Vous voulez comprendre en détail ?** → [vps-setup-complet.md](vps-setup-complet.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Vue d'ensemble
|
||||||
|
|
||||||
|
```
|
||||||
|
1. Connexion SSH (5 min)
|
||||||
|
2. Mises à jour (5 min)
|
||||||
|
3. Utilisateur (5 min) - Type A uniquement
|
||||||
|
4. Clés SSH (10 min)
|
||||||
|
5. Sécuriser SSH (5 min)
|
||||||
|
6. Pare-feu UFW (5 min)
|
||||||
|
7. Fail2ban (5 min)
|
||||||
|
8. Mises à jour auto (5 min)
|
||||||
|
9. Apache (5 min)
|
||||||
|
10. SSL (Let's Encrypt) (5 min)
|
||||||
|
────────────────────────────────
|
||||||
|
Total: 30-50 min
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Prérequis
|
||||||
|
|
||||||
|
- VPS avec IP publique
|
||||||
|
- Terminal (macOS/Linux)
|
||||||
|
- [Vim basics](linux-essentials/vim-guide-essentiel.md) : `i` pour éditer, `Esc :wq` pour sauvegarder
|
||||||
|
|
||||||
|
**Types d'accès :**
|
||||||
|
- **Type A** (OVH, Hetzner) : accès `root` direct
|
||||||
|
- **Type B** (Infomaniak) : utilisateur `debian`/`ubuntu` avec sudo → **Sautez étape 3**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Première connexion (5 min)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Type A
|
||||||
|
ssh root@IP-DU-VPS
|
||||||
|
|
||||||
|
# Type B
|
||||||
|
ssh debian@IP-DU-VPS # ou ubuntu, admin selon l'hébergeur
|
||||||
|
```
|
||||||
|
|
||||||
|
**Type A seulement - Changer le mot de passe root :**
|
||||||
|
```bash
|
||||||
|
passwd # Mot de passe fort (20+ caractères)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Mises à jour (5 min)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Type A
|
||||||
|
apt update && apt upgrade -y && apt autoremove -y
|
||||||
|
|
||||||
|
# Type B
|
||||||
|
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Créer un utilisateur (5 min)
|
||||||
|
|
||||||
|
**⚠️ Type B : SAUTEZ cette étape**
|
||||||
|
|
||||||
|
**Type A uniquement :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Créer l'utilisateur (remplacez "monuser")
|
||||||
|
adduser monuser
|
||||||
|
|
||||||
|
# Ajouter au groupe sudo
|
||||||
|
usermod -aG sudo monuser
|
||||||
|
|
||||||
|
# Vérifier
|
||||||
|
groups monuser # Doit afficher : monuser sudo
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Clés SSH (10 min)
|
||||||
|
|
||||||
|
**Sur votre machine locale :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Vérifier si vous avez déjà une clé
|
||||||
|
ls ~/.ssh/id_*.pub
|
||||||
|
|
||||||
|
# Si non, créer une clé
|
||||||
|
ssh-keygen -t ed25519 -C "votre-email@example.com"
|
||||||
|
# Appuyez sur Entrée 3 fois
|
||||||
|
|
||||||
|
# Afficher la clé
|
||||||
|
cat ~/.ssh/id_ed25519.pub
|
||||||
|
# Copiez la ligne complète
|
||||||
|
```
|
||||||
|
|
||||||
|
**Sur le VPS :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Type A - passer à votre utilisateur
|
||||||
|
su - monuser
|
||||||
|
|
||||||
|
# Type B - déjà votre utilisateur
|
||||||
|
|
||||||
|
# Créer le dossier .ssh
|
||||||
|
mkdir -p ~/.ssh && chmod 700 ~/.ssh
|
||||||
|
|
||||||
|
# Ajouter la clé
|
||||||
|
vim ~/.ssh/authorized_keys
|
||||||
|
# Appuyez sur 'i', collez la clé, Esc puis :wq
|
||||||
|
|
||||||
|
# Droits
|
||||||
|
chmod 600 ~/.ssh/authorized_keys
|
||||||
|
|
||||||
|
# Type A - retour à root
|
||||||
|
exit
|
||||||
|
```
|
||||||
|
|
||||||
|
**Tester (nouveau terminal) :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh monuser@IP-DU-VPS # Doit marcher SANS mot de passe
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Sécuriser SSH (5 min)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Éditer la config
|
||||||
|
# Type A
|
||||||
|
vim /etc/ssh/sshd_config
|
||||||
|
|
||||||
|
# Type B
|
||||||
|
sudo vim /etc/ssh/sshd_config
|
||||||
|
```
|
||||||
|
|
||||||
|
**Modifier ces lignes :**
|
||||||
|
|
||||||
|
```
|
||||||
|
PermitRootLogin no
|
||||||
|
PasswordAuthentication no
|
||||||
|
```
|
||||||
|
|
||||||
|
**Redémarrer SSH :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Type A
|
||||||
|
systemctl restart sshd
|
||||||
|
|
||||||
|
# Type B
|
||||||
|
sudo systemctl restart sshd
|
||||||
|
```
|
||||||
|
|
||||||
|
**⚠️ IMPORTANT : Tester dans un NOUVEAU terminal avant de fermer l'ancien !**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh monuser@IP-DU-VPS # Doit marcher
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Pare-feu UFW (5 min)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Type A
|
||||||
|
apt install ufw -y
|
||||||
|
ufw default deny incoming
|
||||||
|
ufw default allow outgoing
|
||||||
|
ufw allow 22/tcp
|
||||||
|
ufw allow 80/tcp
|
||||||
|
ufw allow 443/tcp
|
||||||
|
ufw enable
|
||||||
|
ufw status verbose
|
||||||
|
|
||||||
|
# Type B (ajoutez sudo partout)
|
||||||
|
sudo apt install ufw -y
|
||||||
|
sudo ufw default deny incoming
|
||||||
|
sudo ufw default allow outgoing
|
||||||
|
sudo ufw allow 22/tcp
|
||||||
|
sudo ufw allow 80/tcp
|
||||||
|
sudo ufw allow 443/tcp
|
||||||
|
sudo ufw enable
|
||||||
|
sudo ufw status verbose
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Fail2ban (5 min)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Installer
|
||||||
|
# Type A
|
||||||
|
apt install fail2ban -y
|
||||||
|
|
||||||
|
# Type B
|
||||||
|
sudo apt install fail2ban -y
|
||||||
|
|
||||||
|
# Configuration minimale
|
||||||
|
# Type A
|
||||||
|
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
|
||||||
|
vim /etc/fail2ban/jail.local
|
||||||
|
|
||||||
|
# Type B
|
||||||
|
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
|
||||||
|
sudo vim /etc/fail2ban/jail.local
|
||||||
|
```
|
||||||
|
|
||||||
|
**Dans le fichier, trouver et vérifier :**
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[DEFAULT]
|
||||||
|
bantime = 600
|
||||||
|
findtime = 600
|
||||||
|
maxretry = 5
|
||||||
|
|
||||||
|
[sshd]
|
||||||
|
enabled = true
|
||||||
|
```
|
||||||
|
|
||||||
|
**Démarrer :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Type A
|
||||||
|
systemctl start fail2ban
|
||||||
|
systemctl enable fail2ban
|
||||||
|
fail2ban-client status
|
||||||
|
|
||||||
|
# Type B
|
||||||
|
sudo systemctl start fail2ban
|
||||||
|
sudo systemctl enable fail2ban
|
||||||
|
sudo fail2ban-client status
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Mises à jour automatiques (5 min)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Installer
|
||||||
|
# Type A
|
||||||
|
apt install unattended-upgrades -y
|
||||||
|
dpkg-reconfigure -plow unattended-upgrades
|
||||||
|
|
||||||
|
# Type B
|
||||||
|
sudo apt install unattended-upgrades -y
|
||||||
|
sudo dpkg-reconfigure -plow unattended-upgrades
|
||||||
|
|
||||||
|
# Sélectionnez "Oui"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Apache (5 min)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Installer
|
||||||
|
# Type A
|
||||||
|
apt install apache2 -y
|
||||||
|
systemctl start apache2
|
||||||
|
systemctl enable apache2
|
||||||
|
|
||||||
|
# Type B
|
||||||
|
sudo apt install apache2 -y
|
||||||
|
sudo systemctl start apache2
|
||||||
|
sudo systemctl enable apache2
|
||||||
|
```
|
||||||
|
|
||||||
|
**Tester :**
|
||||||
|
- Allez sur `http://IP-DU-VPS` dans votre navigateur
|
||||||
|
- Vous devriez voir "Apache2 Debian Default Page"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Configurer un site (10 min)
|
||||||
|
|
||||||
|
### DNS
|
||||||
|
|
||||||
|
Chez votre registrar :
|
||||||
|
```
|
||||||
|
Type Nom Valeur
|
||||||
|
A @ IP-DU-VPS
|
||||||
|
A www IP-DU-VPS
|
||||||
|
```
|
||||||
|
|
||||||
|
Attendre 5-30 min, puis vérifier :
|
||||||
|
```bash
|
||||||
|
nslookup monsite.com # Doit retourner votre IP
|
||||||
|
```
|
||||||
|
|
||||||
|
### VirtualHost Apache
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Créer le dossier
|
||||||
|
# Type A
|
||||||
|
mkdir -p /var/www/monsite.com
|
||||||
|
chown -R monuser:monuser /var/www/monsite.com
|
||||||
|
echo "<h1>Ça marche !</h1>" > /var/www/monsite.com/index.html
|
||||||
|
|
||||||
|
# Type B (remplacez debian par votre user)
|
||||||
|
sudo mkdir -p /var/www/monsite.com
|
||||||
|
sudo chown -R debian:debian /var/www/monsite.com
|
||||||
|
echo "<h1>Ça marche !</h1>" > /var/www/monsite.com/index.html
|
||||||
|
|
||||||
|
# Créer le VirtualHost
|
||||||
|
# Type A
|
||||||
|
vim /etc/apache2/sites-available/monsite.com.conf
|
||||||
|
|
||||||
|
# Type B
|
||||||
|
sudo vim /etc/apache2/sites-available/monsite.com.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
**Contenu du fichier :**
|
||||||
|
|
||||||
|
```apache
|
||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName monsite.com
|
||||||
|
ServerAlias www.monsite.com
|
||||||
|
DocumentRoot /var/www/monsite.com
|
||||||
|
|
||||||
|
<Directory /var/www/monsite.com>
|
||||||
|
Options -Indexes +FollowSymLinks
|
||||||
|
AllowOverride All
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/monsite.com_error.log
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/monsite.com_access.log combined
|
||||||
|
</VirtualHost>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Activer le site :**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Type A
|
||||||
|
a2enmod rewrite
|
||||||
|
a2ensite monsite.com.conf
|
||||||
|
a2dissite 000-default.conf
|
||||||
|
apache2ctl configtest # Doit dire "Syntax OK"
|
||||||
|
systemctl reload apache2
|
||||||
|
|
||||||
|
# Type B
|
||||||
|
sudo a2enmod rewrite
|
||||||
|
sudo a2ensite monsite.com.conf
|
||||||
|
sudo a2dissite 000-default.conf
|
||||||
|
sudo apache2ctl configtest
|
||||||
|
sudo systemctl reload apache2
|
||||||
|
```
|
||||||
|
|
||||||
|
**Tester :**
|
||||||
|
- Allez sur `http://monsite.com`
|
||||||
|
- Vous devriez voir "Ça marche !"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. SSL (Let's Encrypt) (5 min)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Installer Certbot
|
||||||
|
# Type A
|
||||||
|
apt install certbot python3-certbot-apache -y
|
||||||
|
certbot --apache -d monsite.com -d www.monsite.com
|
||||||
|
|
||||||
|
# Type B
|
||||||
|
sudo apt install certbot python3-certbot-apache -y
|
||||||
|
sudo certbot --apache -d monsite.com -d www.monsite.com
|
||||||
|
|
||||||
|
# Répondre aux questions :
|
||||||
|
# Email : votre-email@example.com
|
||||||
|
# Terms : (A)gree
|
||||||
|
# Redirect : 2 (forcer HTTPS)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Tester :**
|
||||||
|
- Allez sur `http://monsite.com` → redirige vers `https://monsite.com` 🔒
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Checklist finale
|
||||||
|
|
||||||
|
- [ ] Connexion SSH par clé fonctionne
|
||||||
|
- [ ] Mot de passe SSH désactivé
|
||||||
|
- [ ] Root SSH désactivé
|
||||||
|
- [ ] UFW actif (ports 22, 80, 443)
|
||||||
|
- [ ] Fail2ban actif
|
||||||
|
- [ ] Apache fonctionne
|
||||||
|
- [ ] Site accessible en HTTP
|
||||||
|
- [ ] SSL installé et HTTPS fonctionne
|
||||||
|
- [ ] Redirection HTTP → HTTPS active
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Prochaines étapes
|
||||||
|
|
||||||
|
### Déployer votre site
|
||||||
|
|
||||||
|
- **Kirby CMS** → [kirby-vps-deploy.md](kirby-vps-deploy.md)
|
||||||
|
- **Autre site statique** → Utilisez rsync :
|
||||||
|
```bash
|
||||||
|
rsync -avhP ./mon-site/ user@IP:/var/www/monsite.com/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Maintenance de base
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Voir les logs Apache
|
||||||
|
sudo tail -f /var/log/apache2/monsite.com_error.log
|
||||||
|
|
||||||
|
# Voir les IPs bannies par Fail2ban
|
||||||
|
sudo fail2ban-client status sshd
|
||||||
|
|
||||||
|
# Espace disque
|
||||||
|
df -h
|
||||||
|
|
||||||
|
# Mettre à jour
|
||||||
|
sudo apt update && sudo apt upgrade -y
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 Pour aller plus loin
|
||||||
|
|
||||||
|
- **Guide complet** → [vps-setup-complet.md](vps-setup-complet.md)
|
||||||
|
- **Vim** → [vim-guide-essentiel.md](linux-essentials/vim-guide-essentiel.md)
|
||||||
|
- **Diagnostic** → [diagnostic-espace-disque.md](linux-essentials/diagnostic-espace-disque.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Commandes de référence rapide
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# SSH
|
||||||
|
ssh user@host
|
||||||
|
ssh -i ~/.ssh/cle user@host
|
||||||
|
|
||||||
|
# UFW
|
||||||
|
sudo ufw status
|
||||||
|
sudo ufw allow 8080/tcp
|
||||||
|
sudo ufw delete 3
|
||||||
|
|
||||||
|
# Fail2ban
|
||||||
|
sudo fail2ban-client status
|
||||||
|
sudo fail2ban-client status sshd
|
||||||
|
sudo fail2ban-client set sshd unbanip IP
|
||||||
|
|
||||||
|
# Apache
|
||||||
|
sudo systemctl status apache2
|
||||||
|
sudo systemctl reload apache2
|
||||||
|
sudo apache2ctl configtest
|
||||||
|
sudo a2ensite site.conf
|
||||||
|
sudo a2dissite site.conf
|
||||||
|
|
||||||
|
# Certbot
|
||||||
|
sudo certbot certificates
|
||||||
|
sudo certbot renew --dry-run
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
sudo tail -f /var/log/apache2/error.log
|
||||||
|
sudo journalctl -u apache2 -n 50
|
||||||
|
|
||||||
|
# Système
|
||||||
|
df -h
|
||||||
|
du -sh /var/www/*
|
||||||
|
systemctl list-units --type=service --state=running
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Temps total :** 30-50 minutes pour un VPS sécurisé et fonctionnel ! 🎉
|
||||||
68
serveur/vps-setup.md
Normal file
68
serveur/vps-setup.md
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
# Setup VPS
|
||||||
|
|
||||||
|
Deux guides selon vos besoins :
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 [Guide Rapide](vps-setup-rapide.md) (30-50 min)
|
||||||
|
|
||||||
|
**Pour ceux qui veulent :**
|
||||||
|
- Démarrer rapidement
|
||||||
|
- Configuration fonctionnelle sans détails
|
||||||
|
- Checklist actionnable
|
||||||
|
|
||||||
|
**Contenu :**
|
||||||
|
- Connexion SSH et sécurité
|
||||||
|
- Pare-feu (UFW) et Fail2ban
|
||||||
|
- Apache + SSL (Let's Encrypt)
|
||||||
|
- Mises à jour automatiques
|
||||||
|
|
||||||
|
👉 **[Commencer le setup rapide](vps-setup-rapide.md)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 [Guide Complet](vps-setup-complet.md) (1-2h)
|
||||||
|
|
||||||
|
**Pour ceux qui veulent :**
|
||||||
|
- Comprendre chaque étape en profondeur
|
||||||
|
- Explications du "pourquoi"
|
||||||
|
- Troubleshooting détaillé
|
||||||
|
- Guide de référence
|
||||||
|
|
||||||
|
**Contenu :**
|
||||||
|
- Tout le guide rapide +
|
||||||
|
- Explications détaillées
|
||||||
|
- Cas d'usage multiples (Type A / Type B)
|
||||||
|
- Sections troubleshooting
|
||||||
|
- Optimisations avancées
|
||||||
|
|
||||||
|
👉 **[Voir le guide complet](vps-setup-complet.md)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📦 Après le setup : Déployer votre site
|
||||||
|
|
||||||
|
### Kirby CMS
|
||||||
|
👉 **[Guide Kirby](kirby-vps-deploy.md)** - Déployer un ou plusieurs sites Kirby
|
||||||
|
|
||||||
|
### Autre projet
|
||||||
|
- Site statique : utilisez rsync
|
||||||
|
- Application Node.js : configurez un reverse proxy
|
||||||
|
- Forgejo : voir [forgejo/](forgejo/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🆘 Problèmes ?
|
||||||
|
|
||||||
|
- **SSH ne fonctionne plus** → [Guide complet - Troubleshooting SSH](vps-setup-complet.md#impossible-de-se-connecter-en-ssh)
|
||||||
|
- **Apache ne démarre pas** → [Guide complet - Troubleshooting Apache](vps-setup-complet.md#apache-ne-démarre-pas)
|
||||||
|
- **Disque plein** → [Diagnostic espace disque](linux-essentials/diagnostic-espace-disque.md)
|
||||||
|
- **Bots qui attaquent** → [Analyse logs et Fail2ban](linux-essentials/analyse-logs-detection-bots.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📖 Guides complémentaires
|
||||||
|
|
||||||
|
- **[Vim (éditeur)](linux-essentials/vim-guide-essentiel.md)** - Essentiel pour éditer les configs
|
||||||
|
- **[Architecture Linux](linux-essentials/architecture-filesystem.md)** - Comprendre /etc, /var, /lib
|
||||||
|
- **[Commandes find/du](linux-essentials/comprendre-commandes-find-du.md)** - Recherche et diagnostic
|
||||||
Loading…
Add table
Add a link
Reference in a new issue