Avoir un serveur à la maison présente un point faible évident : s’il y a une coupure d’électricité, le routeur tombe en panne, ou le disque meurt, ton site disparaît. La solution est d’avoir une réplique dans le cloud prête à s’activer en quelques minutes.
L’architecture#
[servidor-casa] → rsync cada 6h → [VPS réplica]
servicios activos réplica en espera
TTL DNS: 5 min Uptime Kuma vigilandoLe serveur de la maison envoie le contenu au VPS toutes les 6 heures. Si le serveur tombe en panne, je change le DNS et en 5 minutes le VPS diffuse le site.
Pourquoi push et pas pull ?#
Le serveur de la maison se trouve derrière un routeur domestique (Digi). Le routeur n’a que les ports 80 et 443 ouverts. Le VPS ne peut pas se connecter en SSH au serveur de la maison directement.
La solution : le serveur de la maison envoie au VPS (il a la sortie SSH libre), le VPS reçoit uniquement.
Préparation du VPS#
Le VPS (Debian 12, 2 CPUs, 4 GB RAM, 30 GB disque) avait déjà Docker installé. D’abord, la sécurité :
# UFW: solo lo necesario
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
# Fail2ban SSH
sudo apt-get install -y fail2ban# /etc/fail2ban/jail.local
[DEFAULT]
bantime = 7d
findtime = 1h
maxretry = 3
ignoreip = 127.0.0.1/8 <IP_PUBLICA_CASA>
[sshd]
enabled = true# SSH: solo clave pública
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl reload sshdTraefik comme proxy inverse#
Même Traefik v2.11 que sur le serveur de la maison, avec Let’s Encrypt automatique :
services:
traefik:
image: traefik:v2.11
command:
- --providers.docker=true
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.letsencrypt.acme.email=tu@email.com
- --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json
ports:
- "80:80"
- "443:443"Uptime Kuma : surveillance externe#
Uptime Kuma surveille le serveur de la maison de l’extérieur. S’il ne répond pas, alerte immédiate par email :
uptime-kuma:
image: louislam/uptime-kuma:1
volumes:
- ./data:/app/data
labels:
- traefik.enable=true
- traefik.http.routers.uptime.rule=Host(`uptime.serviciosrogeliowar.com`)
- traefik.http.routers.uptime.entrypoints=websecure
- traefik.http.routers.uptime.tls.certresolver=letsencryptRépliques en attente#
Les services web et blog s’exécutent sur le VPS mais avec traefik.enable=false — Traefik les ignore, ils ne sont pas accessibles depuis internet. Ils ne s’activent qu’en cas d’urgence :
web-replica:
image: nginx:alpine
labels:
- traefik.enable=false # ← cambiar a true en emergenciaScript rsync depuis le serveur de la maison#
#!/bin/bash
# ~/infra/sync-to-vps.sh
VPS="usuario@<IP_PUBLICA_VPS>"
SSH_KEY="~/.ssh/id_ed25519"
rsync -az --delete \
-e "ssh -i $SSH_KEY -o StrictHostKeyChecking=no" \
~/infra/blog/public/ \
${VPS}:~/infra/blog/public/
rsync -az --delete \
-e "ssh -i $SSH_KEY -o StrictHostKeyChecking=no" \
~/infra/web/html/ \
${VPS}:~/infra/web/html/Crontab sur le serveur de la maison :
0 */6 * * * ~/infra/sync-to-vps.shProcédure de basculement en cas d’urgence#
Quand le serveur de la maison tombe en panne :
- Éditer sur le VPS : changer
traefik.enable=falseàtraefik.enable=truedans web et blog docker compose up -ddans chaque répertoire- Dans le panneau DNS, changer l’enregistrement A de ton domaine de l’IP du serveur de la maison à l’IP du VPS
- Avec un TTL de 5 minutes, en moins de 10 minutes le site est rétabli
Quand le serveur de la maison se rétablit, processus inverse : restaurer le DNS, revenir à traefik.enable=false sur le VPS.
Résultat#
- Uptime Kuma surveillant de l’extérieur sur
uptime.serviciosrogeliowar.com - rsync automatique toutes les 6 heures — maximum 6 heures de contenu perdu en cas de défaillance
- Temps de récupération (RTO) : ~5 minutes
- Perte maximale de données (RPO) : ~6 heures
- Coût supplémentaire : uniquement le VPS (je l’avais déjà)
Pour un serveur domestique, cette architecture est plus que suffisante.
Équipement recommandé#
- Raspberry Pi 3 B+ — Serveur léger à faible consommation pour commencer ton homelab
- Raspberry Pi 4 (4 GB) — La base parfaite pour homelab, Docker et surveillance
Liens d’affiliation. Aucun frais supplémentaire pour toi.