Mise en place d’un serveur personnel avec Raspberry Pi et Docker
1. Présentation du projet
Dans le cadre de mon apprentissage en administration système et en cybersécurité, j’ai conçu et déployé un serveur personnel basé sur un Raspberry Pi 5 sous Ubuntu Server.
L’objectif est de disposer d’une infrastructure polyvalente permettant d’héberger différents services, de centraliser des données, d’automatiser certaines tâches domestiques et de surveiller le fonctionnement des applications.
Ce homelab constitue également un environnement pratique pour expérimenter des technologies utilisées dans les infrastructures informatiques professionnelles et mieux comprendre les interactions entre Linux, les conteneurs, les services réseau et les outils de supervision.
Raspberry Pi 5 utilisé comme serveur personnel pour héberger plusieurs services auto-hébergés.
2. Configuration du serveur et environnement technique
Le serveur repose sur Ubuntu Server, une distribution Linux adaptée à l’hébergement de services et à l’administration système.
Le choix d’un Raspberry Pi permet de disposer d’une machine compacte et relativement peu énergivore, capable d’exécuter plusieurs applications simultanément. Cette configuration demande néanmoins de tenir compte des ressources disponibles, notamment de la mémoire vive, du stockage et de la charge processeur.
Cette étape m’a permis de travailler sur les bases de l’administration Linux :
- Gestion des services et utilisation du terminal.
- Organisation des fichiers et installation des dépendances.
- Maintenance du système et suivi de son état général.
3. Déploiement des applications avec Docker
Pour organiser les différents services, j’ai choisi Docker, associé à Docker Compose.
La conteneurisation permet d’exécuter les applications dans des environnements isolés, avec leurs propres dépendances et paramètres. Docker Compose facilite la définition et le démarrage des différents composants d’une application.
Cette approche simplifie la gestion du homelab : les services peuvent être déployés, arrêtés, mis à jour et redémarrés de manière structurée. Elle facilite également la maintenance et l’évolution progressive de l’infrastructure.
Gestion des applications conteneurisées avec Docker, permettant de visualiser les services actifs sur le serveur.
4. Les services hébergés
L’infrastructure regroupe plusieurs applications complémentaires couvrant différents besoins : domotique, accès distant, stockage personnel, supervision et gestion des accès aux applications web.
4.1. Home Assistant — Domotique et automatisation
Home Assistant permet de centraliser la gestion de différents équipements connectés et de créer des automatisations à partir de leurs états ou de conditions définies.
Son intégration dans le serveur me permet d’expérimenter la communication entre applications et appareils connectés, ainsi que la création d’un environnement domotique centralisé.
Tableau de bord Home Assistant permettant de centraliser les équipements connectés et les automatisations domestiques.
4.2. WireGuard — Accès distant sécurisé
WireGuard est une solution VPN permettant d’établir des connexions chiffrées entre des appareils autorisés et un réseau distant.
Dans mon infrastructure, il me permet d’expérimenter l’accès distant sécurisé à des ressources personnelles. Sa configuration m'aide également à mieux comprendre le chiffrement des communications, la gestion des pairs et le contrôle des accès réseau.
La sécurité de ce service repose notamment sur la protection des clés, la configuration des règles réseau et la limitation des accès aux seules ressources nécessaires.
4.3. Nextcloud — Stockage et synchronisation de fichiers
Nextcloud fournit un espace de stockage personnel accessible depuis une interface web. Il permet de centraliser des fichiers et de faciliter leur consultation et leur synchronisation entre différents appareils.
Son déploiement m’a permis de travailler sur l’hébergement d’une application web, la gestion des données persistantes et l’organisation des composants nécessaires à son fonctionnement.
L’objectif est de disposer d’un espace personnel dont je maîtrise davantage l’hébergement et la maintenance, tout en prévoyant des mesures adaptées pour protéger les données.
Interface Nextcloud hébergée sur le serveur personnel pour centraliser et synchroniser des fichiers.
4.4. Prometheus et Grafana — Supervision des ressources
La supervision permet de mieux comprendre le comportement d’un serveur et d’anticiper certains problèmes de fonctionnement.
Prometheus collecte et stocke des métriques provenant des composants surveillés. Grafana permet ensuite de représenter ces données sous forme de tableaux de bord et de graphiques.
Cette combinaison permet notamment d'explorer l’utilisation des ressources système et d’obtenir une vision plus claire de l’activité de l’infrastructure.
Tableau de bord Grafana exploitant les métriques collectées par Prometheus pour visualiser l’activité du serveur.
4.5. Uptime Kuma — Surveillance de la disponibilité
Uptime Kuma permet de vérifier régulièrement la disponibilité des services hébergés et de détecter les interruptions.
Les contrôles de disponibilité offrent une vue synthétique de l’état des applications et facilitent l’identification des services qui ne répondent plus correctement.
Cet outil complète la supervision des métriques : tandis que Grafana aide à comprendre le comportement du système, Uptime Kuma se concentre principalement sur la disponibilité des services surveillés.
4.6. Nginx Proxy Manager — Gestion du reverse proxy
Nginx Proxy Manager fournit une interface graphique pour gérer les configurations de reverse proxy.
Un reverse proxy reçoit les requêtes destinées à certaines applications et les redirige vers les services correspondants. Il permet notamment de centraliser le routage des requêtes HTTP et HTTPS et de gérer les certificats TLS lorsque la configuration le prévoit.
Son utilisation me permet de mieux comprendre l’organisation de l’accès aux applications web et le rôle d’un composant intermédiaire dans une infrastructure hébergeant plusieurs services.
5. Sauvegarde et protection des données
Un serveur personnel ne se limite pas à l’installation et au fonctionnement des applications. Il est également nécessaire de prévoir la récupération des données en cas de panne, d’erreur de manipulation ou de problème matériel.
J’ai mis en place un mécanisme de sauvegarde reposant sur rsync et un support de stockage externe.
Cet outil permet de synchroniser des fichiers et des répertoires vers une destination de sauvegarde. Il est particulièrement utile pour automatiser les opérations de copie et limiter les manipulations manuelles.
La stratégie de sauvegarde doit tenir compte des données importantes, des fichiers de configuration et des éléments nécessaires à la restauration des services. Il est également essentiel de vérifier régulièrement les sauvegardes et de s’assurer que les données peuvent être récupérées.
Sauvegarde des données importantes vers un support externe afin de réduire les risques de perte de données.
6. Sécurité et maintenance de l’infrastructure
La sécurité fait partie intégrante de la gestion du serveur. L’objectif est de limiter les risques tout en conservant une infrastructure fonctionnelle et facile à maintenir.
Les principaux points d’attention sont les suivants :
- Réduire la surface d’exposition : limiter l’accès réseau aux services qui doivent réellement être accessibles.
- Sécuriser les communications : privilégier les connexions chiffrées et protéger les accès distants.
- Protéger les secrets : sécuriser les identifiants, les clés et les paramètres de configuration.
- Maintenir les systèmes à jour : appliquer les mises à jour du système d’exploitation et des applications.
- Isoler les applications : utiliser la conteneurisation lorsque cela est adapté.
- Surveiller les services : contrôler leur disponibilité et leur comportement.
- Prévoir la restauration : mettre en place des sauvegardes et vérifier qu’elles sont exploitables.
La conteneurisation contribue à organiser les applications, mais elle ne remplace pas une politique de sécurité globale. La configuration du réseau, la gestion des accès et la maintenance régulière restent indispensables.
7. Compétences développées
Ce projet m’a permis de consolider plusieurs compétences techniques et de mieux comprendre les contraintes liées à l’exploitation d’une infrastructure personnelle.
Administration système
- Installation et administration d’un environnement Linux.
- Gestion des services et utilisation du terminal.
- Suivi des ressources et maintenance du système.
Conteneurisation et hébergement
- Déploiement d’applications avec Docker.
- Organisation des services avec Docker Compose.
- Gestion des applications et de leurs données persistantes.
Réseau et accès distant
- Découverte et configuration d’un VPN avec WireGuard.
- Compréhension du fonctionnement d’un reverse proxy.
- Prise en compte de la sécurisation des accès réseau.
Supervision et sauvegarde
- Collecte et visualisation de métriques avec Prometheus et Grafana.
- Surveillance de la disponibilité avec Uptime Kuma.
- Synchronisation et sauvegarde de fichiers avec rsync.
8. Conclusion et perspectives
La mise en place de ce serveur personnel constitue une étape importante dans mon apprentissage de l’administration système et de la cybersécurité.
Ce projet m’a permis de déployer plusieurs services complémentaires, de comprendre leurs interactions et de mettre en pratique des principes essentiels liés à l’hébergement, à la supervision, à la maintenance et à la protection des données.
Le homelab évolue progressivement au fil de mes expérimentations. Il constitue une base technique sur laquelle je peux développer de nouvelles compétences, approfondir les aspects liés à la sécurité et documenter mes réalisations.
Cette démarche s’inscrit dans mon objectif de développer des compétences concrètes en infrastructure informatique et en cybersécurité, à travers des projets personnels documentés et reproductibles.