- Contenu
- Présentation personnelle et projet de stage
- Rapport
- Jour 1: Lundi 30 mars 2026
- Jour 2: Mardi 31 mars 2026
- Jour 3: Mercredi 01 avril 2026
- Jour 4: Jeudi 02 avril 2026
- Jour 5: Vendredi 03 avril 2026
- Jour 6: Lundi 06 avril 2026
- Jour 7: Mardi 07 avril 2026
- Jour 8: Mercredi 08 avril 2026
- Jour 9: Jeudi 09 avril 2026
- Jour 10: Vendredi 10 avril 2026
- Jour 11: Lundi 13 avril 2026
- Jour 12: Mardi 14 avril 2026
- Jour 13: Mercredi 15 avril 2026
- Jour 14: Jeudi 16 avril 2026
- Jour 15: Vendredi 17 avril 2026
- Jour 16: Lundi 20 avril 2026
- Jour 17: Mardi 21 avril 2026
- Jour 18: Mercredi 22 avril 2026
- Jour 19: Jeudi 23 avril 2026
- Jour 20: Vendredi 24 avril 2026
- Jour 21: Lundi 27 avril 2026
- Jour 22: Mardi 28 avril 2026
- Jour 23: Mercredi 29 avril 2026
- Jour 24: Jeudi 30 avril 2026
- Jour 25: Vendredi 01 mai 2026
- Jour 26: Lundi 04 mai 2026
- Jour 27: Mardi 05 mai 2026
- Jour 28: Mercredi 06 mai 2026
- Jour 29: Jeudi 07 mai 2026
- Jour 30: Vendredi 08 mai 2026
- Jour 31: Lundi 11 mai 2026
- Jour 32: Mardi 12 mai 2026
- Jour 33: Mercredi 13 mai 2026
- Jour 34: Jeudi 14 mai 2026
- Jour 35: Vendredi 15 mai 2026
- Jour 36: Lundi 18 mai 2026
- Jour 37: Mardi 19 mai 2026
- Jour 38: Mercredi 20 mai 2026
- Jour 39: Jeudi 21 mai 2026
- Jour 40: Vendredi 22 mai 2026
- Jour 41: Lundi 25 mai 2026
- Jour 42: Mardi 26 mai 2026
- Jour 43: Mercredi 27 mai 2026
- Jour 44: Jeudi 28 mai 2026
- Jour 45: Vendredi 29 mai 2026
- Jour 46: Lundi 01 juin 2026
- Jour 47: Mardi 02 juin 2026
- Jour 48: Mercredi 03 juin 2026
- Jour 49: Jeudi 04 juin 2026
- Jour 50: Vendredi 05 juin 2026
- Jour 51: Lundi 08 juin 2026
- Jour 52: Mardi 09 juin 2026
- Jour 53: Mercredi 10 juin 2026
- Jour 54: Jeudi 11 juin 2026
- Jour 55: Vendredi 12 juin 2026
- Jour 56: Lundi 15 juin 2026
- Jour 57: Mardi 16 juin 2026
- Jour 58: Mercredi 17 juin 2026
- Jour 59: Jeudi 18 juin 2026
- Jour 60: Vendredi 19 juin 2026
- Jour 61: Lundi 22 juin 2026
- Jour 62: Mardi 23 juin 2026
- Jour 63: Mercredi 24 juin 2026
- Jour 64: Jeudi 25 juin 2026
- Jour 65: Vendredi 26 juin 2026
- Jour 66: Lundi 29 juin 2026
- Jour 67: Mardi 30 juin 2026
- Jour 68: Mercredi 01 juillet 2026
- Jour 69: Jeudi 02 juillet 2026
- Jour 70: Vendredi 03 juillet 2026
- Jour 71: Lundi 06 juillet 2026
- Jour 72: Mardi 07 juillet 2026
- Jour 73: Mercredi 08 juillet 2026
- Jour 74: Jeudi 09 juillet 2026
- Jour 75: Vendredi 10 juillet 2026
- Jour 76: Lundi 13 juillet 2026
- Jour 77: Mardi 14 juillet 2026
- Jour 78: Mercredi 15 juillet 2026
- Jour 79: Jeudi 16 juillet 2026
- Jour 80: Vendredi 17 juillet 2026
- Jour 81: Lundi 20 juillet 2026
- Jour 82: Mardi 21 juillet 2026
- Jour 83: Mercredi 22 juillet 2026
- Jour 84: Jeudi 23 juillet 2026
- Jour 85: Vendredi 24 juillet 2026
- Jour 86: Lundi 27 juillet 2026
- Jour 87: Mardi 28 juillet 2026
- Jour 88: Mercredi 29 juillet 2026
- Jour 89: Jeudi 30 juillet 2026
- Jour 90: Vendredi 31 juillet 2026
Présentation personnelle et projet de stage¶
Je suis Nicolas Schmauch
Je suis un étudiant en Licence Pro ADSILLH (Administration et Développement de Systèmes Informatiques à base de Logiciels Libres et Hybrides).
Je suis en stage avec Yoan Gabriel (4 mois de stage du 30 mars au 31 juillet 2026).
Rapport¶
Jour 1: Lundi 30 mars 2026¶
Notre travail consiste à mettre à jour l’ancienne architecture vers une nouvelle, basée sur Debian Trixie stable, avec un hyperviseur permettant de gérer différentes machines virtuelles (une VM par service).
| SCHEMA |
|---|
|
Nous avons tout d’abord dû choisir un hyperviseur parmi les différentes solutions open source :
| Caractéristique | Incus (Mode VM) | KVM/QEMU + libvirt | Canonical LXD (Mode VM) | Xen Project |
|---|---|---|---|---|
| Moteur | QEMU / KVM | QEMU / KVM | QEMU / KVM | Xen Hypervisor |
| Installation Debian 13 | Native apt install incus |
Native apt install libvirt-daemon |
Via Snap snap install lxd |
Native apt install xen-hypervisor |
| RAM | Très faible (~50 Mo) | Faible (~100 Mo) | Moyen (~200 Mo) | Élevé (minimum 1024 Mo) |
| Déploiement OS | Images Cloud et Manuel | Manuel (Fichiers ISO) | Images Cloud et Manuel | Manuel (ISO ou debootstrap) |
| Sauvegardes / Snapshots | Intégrés (incus snapshot / export) | Manuels (virsh snapshot-create) | Intégrés (lxc snapshot) | Complexes (via LVM) |
| Score global / 5 | 5 / 5 | 4 / 5 | 3 / 5 | 1 / 5 |
sources :
https://linuxcontainers.org
https://libvirt.org
https://canonical.com/lxd
https://xenproject.org/resources
https://wiki.debian.org/Incus
https://wiki.debian.org/KVM
https://wiki.debian.org/QEMU
https://wiki.debian.org/libvirt
https://wiki.debian.org/Xen/InstallBootConfig
https://wiki.xenproject.org/wiki/Tuning_Xen_for_Performance
https://dev.to/rosgluk/linux-virtualization-solutions-a-complete-comparison-guide-196g
https://www.siberoloji.com/how-to-install-and-configure-lxd-on-debian-12
Nous avons ensuite calculé les ressources nécessaires pour savoir si le serveur a besoin d’une amélioration de ses ressources ou non :
| Service | RAM minimum | RAM recommandée | CPU minimum | CPU recommandé |
|---|---|---|---|---|
| Apache | 512 MB | 1–4 GB | 1 core | 2+ cores |
| Nginx | 512 MB | 1 GB | 1 core | 2+ cores |
| Laravel | 1 GB | 2+ GB | 1 core | 2+ cores |
| Redmine | 512 MB | 1–2 GB | 1 core | 2 cores |
| Forgejo | 512 MB | 2 GB | 1 core | 2+ cores |
| NextCloud | 512 MB | 2 GB | 1 core | 2+ cores |
| total | 3.5 GB | 9-13+ GB | 6 cores | 12+ cores |
sources :
https://httpd.apache.org/docs/2.4/misc/perf-tuning.html
https://docs.nginx.com/nginx-agent/technical-specifications
https://kinsta.com/fr/blog/installer-nginx
https://www.hostragons.com/fr/blog/exigences-dhebergement-pour-les-applications-laravel
https://redmine1click.com/requirements
https://blog.stephane-robert.info/docs/services/devops/forgejo/installation
https://docs.nextcloud.com/server/stable/admin_manual/installation/system_requirements.html
| Critère clé | Caddy | Nginx Proxy Manager (NPM) | Traefik |
|---|---|---|---|
| Consommation Mémoire (RAM) | Très léger | Lourd | Léger |
| Automatisation SSL | Natif, Zéro config | Bouton dans l'interface | Demande une config YAML |
| Adaptation à un réseau de VM | Fichier texte très lisible | Routage IP via interface | Usine à gaz sans Docker |
| Facilité de prise en main | Syntaxe minimaliste | Interface web complète | Courbe d'apprentissage rude |
| Score global / 5 | 4 / 5 | 3 / 5 | 1 / 5 |
sources :
https://kx.cloudingenium.com/en/caddy-reverse-proxy-automatic-https-zero-config-ssl-guide/
https://caddyserver.com/docs/quick-starts/reverse-proxy
https://caddyserver.com/docs/
https://stackoverflow.com/questions/63077100/how-much-memory-and-cpu-nginx-and-nodejs-in-each-container-needs
https://nginxproxymanager.com/
https://community.traefik.io/t/traefik-performance-lags-behind-nginx-and-caddy/28919
https://doc.traefik.io/traefik/routing/overview/
https://www.reddit.com/r/selfhosted/comments/1odh46j/nginx_vs_caddy_vs_traefik_benchmark_results/
Jour 2: Mardi 31 mars 2026¶
Mail pour Alexander :
Bonjour Alexander, Nous sommes les nouveaux stagiaires ADSILLH. Pour le projet du nouveau serveur, on a fait des comparatifs (Yoan et moi), pour la nouvelle architecture et on propose : Hyperviseur : Incus (Mode VM), car il offre la consommation RAM la plus faible, s'installe nativement sur Debian et la gestion des snapshots et plus simple qu'avec KVM. Reverse Proxy : Caddy, car très léger et automatise à 100% la gestion des certificats SSL avec Let's Encrypt. Il est plus adapté que Traefik ou Nginx Proxy Manager pour des VM fixes. Voici nos comparatifs : https://projets.cohabit.fr/redmine/projects/accueil/wiki/Nicolas_Schmauch_2 Schmauch Nicolas
Jour 3: Mercredi 01 avril 2026¶
La réponse d'Alexander :
Du coup, les questions qui restent en suspens sont : Il faut que cela gère le raid logiciel (1 ou 5). Quelle technologie sont supportées pour les containers ? Et les Snapshots ou image des VM sont-elles exportables dans un format qui est géré par la plupart des hyperviseurs en cas de soucis ?
Notre réponse :
Incus est compatible avec le raid logiciel (1 ou 5), il ne gère pas le matériel directement, il faut juste lui indiquer d'utiliser le volume créé. Incus utilise des conteneurs système (LXC) et il gère Docker soit en l'installant à l'intérieur d'une VM/conteneur (mode nesting), soit en lançant des images Docker (images OCI). Les VM Incus sont basées sur QEMU et sont exportées au format QCOW2 ou Raw. Donc c'est compatible avec la plupart des hyperviseurs comme Proxmox, KVM, VirtualBox, VMware, etc. Conteneur + dir = Dossier VM QEMU + dir = raw VM QEMU + lvm = qcow2
Commande Incus :incus launch images:debian/13 ma-vm-debian --vm : Lance un VM Debian 13incus remote add docker https://docker.io --protocol=oci : Pour ajouter le dépôt Docker Hubincus launch docker:nginx mon-nginx : Lance l'image nginx
incus list : Voir toutes les instancesincus stop mon-instance : Arrête une instanceincus start mon-instance : Démarrer une instanceincus restart mon-instance : Redémarrer une instance
incus delete mon-instance : Supprimer une instance arrêtéeincus delete mon-instance --force : Forcer l'arrêt et la suppression
incus snapshot create mon-instance mon-snap1 : Créer un snapshot de l'instance--stateful pour sauvegarder la RAM à chaud
fonctionne que si migration.stateful=true est activé, pour l'activer :incus config set mon-instance migration.stateful=true
incus snapshot list mon-instance : Voir toutes les snapshots d'une instances
incus snapshot create mon-instance mon-snap1 --reuse--reuse supprime l'ancien mon-snap1 et recréer un nouveau avec le même nom
incus snapshot restore mon-instance mon-snap1 : Restore un snapshot pour une instance
Recommandé d'arrêter l'instance avec incus stop avant de restaurer
incus snapshot delete mon-instance mon-snap1 : Supprimer un snapshot
incus launch images:debian/13 ma-vm --vm -c limits.cpu=4 -c limits.memory=8GiB -d root,size=50GiB : -c (la config) -d (le disque)
Modifier les ressources d'une instance déjà existante :incus config set mon-instance limits.memory 4GiB : Modifier la RAMincus config set mon-instance limits.memory.swap false : Désactiver le swapincus config set mon-instance limits.cpu 2 : Alloue 2 coeurs cpuincus config set mon-instance limits.cpu.allowance 50% : Bride la puissance des coeurs à 50% d'utilisation
incus config show mon-instance : Voir la config d'une instance
Jour 4: Jeudi 02 avril 2026¶
| Partition | Taille | Point de montage | Rôle |
| 1 | 512 Mo | /boot/efi | Pour le démarre en UEFI |
| 2 | 1 Go | /boot | Pour le boot Debian |
| 3 | 8 Go | swap | Sécurité si la RAM sature (à voir car jsp si c'est vraiment utile car on a 32go) |
| 4 | 50 Go | / (Racine) | Le Debian de l'hyperviseur, Incus et logs |
| 5 | 940 Go | Aucun | Espace brut (Ne pas formater car on initialisera avec Incus en ZFS) |
code sim : 7826
id : user
mdp : 147147
Flash l'os OpenWrt stable sur le routeur OpenWrt One :
https://firmware-selector.openwrt.org/?version=25.12.2&target=mediatek%2Ffilogic&id=openwrt_one
Se brancher avec le cable RJ45 au routeur en mode NOR, puis aller à l’adresse http://192.168.1.1
Ensuite, flasher la nouvelle version et décocher "keep settings" pour le reset.
Après cela, attendre que l’opération se termine, puis redémarrer en mode NAND pour pouvoir le configurer.
Flash l'os PostMarketOS sur la carte sd du PinePhone :
https://postmarketos.org/install/
Flash sur la carte sd l'image de postmarketos avec bmaptool ou avec balenaEtcher.
Pour router les paquets entre les interfaces :sudo sysctl -w net.ipv4.ip_forward=1
Pour le rendre permanent :echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
Pour mettre le PinePhone en hotspot, il faut le faire graphiquement avec le bouton et activer les données cellulaires et aussi "Mobile Data On".
Jour 5: Vendredi 03 avril 2026¶
Jour 6: Lundi 06 avril 2026¶
Férié
Jour 7: Mardi 07 avril 2026¶
Jour 8: Mercredi 08 avril 2026¶
Jour 9: Jeudi 09 avril 2026¶
Jour 10: Vendredi 10 avril 2026¶
Jour 11: Lundi 13 avril 2026¶
Jour 12: Mardi 14 avril 2026¶
Jour 13: Mercredi 15 avril 2026¶
Jour 14: Jeudi 16 avril 2026¶
Jour 15: Vendredi 17 avril 2026¶
Jour 16: Lundi 20 avril 2026¶
Jour 17: Mardi 21 avril 2026¶
Jour 18: Mercredi 22 avril 2026¶
Jour 19: Jeudi 23 avril 2026¶
Jour 20: Vendredi 24 avril 2026¶
Jour 21: Lundi 27 avril 2026¶
Jour 22: Mardi 28 avril 2026¶
Jour 23: Mercredi 29 avril 2026¶
Jour 24: Jeudi 30 avril 2026¶
Jour 25: Vendredi 01 mai 2026¶
Férié
Jour 26: Lundi 04 mai 2026¶
Jour 27: Mardi 05 mai 2026¶
Jour 28: Mercredi 06 mai 2026¶
Jour 29: Jeudi 07 mai 2026¶
Jour 30: Vendredi 08 mai 2026¶
Férié
Jour 31: Lundi 11 mai 2026¶
Jour 32: Mardi 12 mai 2026¶
Jour 33: Mercredi 13 mai 2026¶
Jour 34: Jeudi 14 mai 2026¶
Férié
Jour 35: Vendredi 15 mai 2026¶
Jour 36: Lundi 18 mai 2026¶
Jour 37: Mardi 19 mai 2026¶
Jour 38: Mercredi 20 mai 2026¶
Jour 39: Jeudi 21 mai 2026¶
Jour 40: Vendredi 22 mai 2026¶
Jour 41: Lundi 25 mai 2026¶
Férié
Jour 42: Mardi 26 mai 2026¶
Jour 43: Mercredi 27 mai 2026¶
Jour 44: Jeudi 28 mai 2026¶
Jour 45: Vendredi 29 mai 2026¶
Jour 46: Lundi 01 juin 2026¶
Jour 47: Mardi 02 juin 2026¶
Jour 48: Mercredi 03 juin 2026¶
Jour 49: Jeudi 04 juin 2026¶
Jour 50: Vendredi 05 juin 2026¶
Jour 51: Lundi 08 juin 2026¶
Jour 52: Mardi 09 juin 2026¶
Jour 53: Mercredi 10 juin 2026¶
Jour 54: Jeudi 11 juin 2026¶
Jour 55: Vendredi 12 juin 2026¶
Jour 56: Lundi 15 juin 2026¶
Jour 57: Mardi 16 juin 2026¶
Jour 58: Mercredi 17 juin 2026¶
Jour 59: Jeudi 18 juin 2026¶
Jour 60: Vendredi 19 juin 2026¶
Jour 61: Lundi 22 juin 2026¶
Jour 62: Mardi 23 juin 2026¶
Jour 63: Mercredi 24 juin 2026¶
Jour 64: Jeudi 25 juin 2026¶
Jour 65: Vendredi 26 juin 2026¶
Jour 66: Lundi 29 juin 2026¶
Jour 67: Mardi 30 juin 2026¶
Jour 68: Mercredi 01 juillet 2026¶
Jour 69: Jeudi 02 juillet 2026¶
Jour 70: Vendredi 03 juillet 2026¶
Jour 71: Lundi 06 juillet 2026¶
Jour 72: Mardi 07 juillet 2026¶
Jour 73: Mercredi 08 juillet 2026¶
Jour 74: Jeudi 09 juillet 2026¶
Jour 75: Vendredi 10 juillet 2026¶
Jour 76: Lundi 13 juillet 2026¶
Jour 77: Mardi 14 juillet 2026¶
Férié
Jour 78: Mercredi 15 juillet 2026¶
Jour 79: Jeudi 16 juillet 2026¶
Jour 80: Vendredi 17 juillet 2026¶
Jour 81: Lundi 20 juillet 2026¶
Jour 82: Mardi 21 juillet 2026¶
Jour 83: Mercredi 22 juillet 2026¶
Jour 84: Jeudi 23 juillet 2026¶
Jour 85: Vendredi 24 juillet 2026¶
Jour 86: Lundi 27 juillet 2026¶
Jour 87: Mardi 28 juillet 2026¶
Jour 88: Mercredi 29 juillet 2026¶
Jour 89: Jeudi 30 juillet 2026¶
Jour 90: Vendredi 31 juillet 2026¶