Monter un serveur local avec Docker
Le problème
Mes fichiers étaient éparpillés : iCloud pour certains, Google Drive pour d'autres, des backups manuels sur un disque externe. Aucune cohérence, aucune garantie. Et surtout, aucun contrôle sur où étaient mes données.
J'ai voulu reprendre la main. L'objectif : un serveur local qui synchronise mes fichiers, héberge mes services, et me coûte zéro abonnement mensuel.
Le matériel
Un NAS Ugreen (192.168.129.21). C'est tout. Petit, silencieux, basse consommation. Il tourne 24/7 dans un placard.
Ce qui compte :
- Docker est intégré nativement — pas besoin d'installer un OS séparé
- Accès SSH pour la configuration
- Suffisamment de stockage pour mes projets et mes notes
L'architecture
Tout repose sur Docker Compose. Chaque service est un conteneur isolé, avec son propre réseau et ses volumes. Le redémarrage est automatique.
services:
syncthing:
image: syncthing/syncthing:latest
container_name: syncthing
environment:
- PUID=1000
- PGID=1000
volumes:
- ./syncthing/config:/var/syncthing/config
- /data/sync:/var/syncthing/data
ports:
- "8384:8384"
- "22000:22000/tcp"
- "22000:22000/udp"
restart: unless-stopped
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer/data:/data
ports:
- "9443:9443"
restart: unless-stoppedSyncthing : le cœur du système
Syncthing synchronise mes fichiers entre mon Mac et le NAS de manière bidirectionnelle et chiffrée. Pas de cloud tiers, pas de compte à créer.
Ce que je synchronise :
- SecondBrain — mon vault Obsidian avec toutes mes notes, documentations et daily notes
- Projets — le code source de mes applications
- Config — mes dotfiles et configurations
La synchronisation est quasi-instantanée. Quand je modifie une note sur mon Mac, elle est sur le NAS en quelques secondes. C'est transparent.
La configuration en 3 étapes
- Installer Syncthing sur les deux machines (Mac via Homebrew, NAS via Docker)
- Ouvrir les interfaces web (
localhost:8384et192.168.129.21:8384) - Ajouter l'ID de chaque appareil et partager les dossiers
La connexion se fait en réseau local sur le port 22000 — chiffré TLS 1.3, sans passer par internet.
Portainer : gérer Docker sans terminal
Portainer fournit une interface web pour visualiser les conteneurs, les logs, les volumes. Utile quand tu veux vérifier qu'un service tourne sans ouvrir un terminal SSH.
Ce n'est pas indispensable — docker ps fait le même travail — mais c'est confortable.
Ce que j'ai appris
- Docker Compose est la bonne abstraction pour un serveur local : un fichier YAML, un
docker compose up -d, c'est parti - Les volumes sont la partie critique — si tu perds tes volumes, tu perds tes données. Toujours mapper sur le filesystem hôte
- Le réseau local est suffisant pour un usage personnel. Pas besoin d'exposer quoi que ce soit sur internet
restart: unless-stoppedest ton ami — après une coupure de courant, tout redémarre automatiquement
Le résultat
Un serveur local qui tourne depuis plusieurs mois sans intervention. Mes notes Obsidian sont synchronisées en continu, mes projets sont sauvegardés, et je ne paie aucun abonnement cloud.
Le plus satisfaisant : savoir exactement où sont mes données et comment elles y arrivent.