Skip to content

🚀 Guide de restauration serveur Docker

1. Reconfigurer SSH

  1. Réouvrir le port 22 dans le firewall de l'hébergeur.

  2. Modifier la configuration SSH :

sudo nano /etc/ssh/sshd_config
Ajouter :

    Port 22
    Port {port custom}
  1. Redémarrer SSH :
sudo systemctl daemon-reexec
sudo systemctl restart ssh
  1. Tester la connexion via le port {port custom}.

  2. Si la connexion fonctionne :

    • Modifier sshd_config pour ne laisser que :

      Port {port custom}
      
    • Fermer le port 22 dans le firewall de l'hébergeur.


2. Remonter le disque /home

  1. Installer les outils XFS :
sudo apt install -y xfsprogs
  1. Formater le disque :
sudo mkfs.xfs -f /dev/sdb
  1. Monter temporairement :
sudo mkdir /mnt/home
sudo mount /dev/sdb /mnt/home
  1. Copier le contenu actuel :
sudo rsync -rlptgoDHAX /home/ /mnt/home/
  1. Démonter et monter comme /home :
sudo umount /mnt/home
sudo mount /dev/sdb /home
sudo rmdir /mnt/home

3. Installation des dépendances

  1. Mettre à jour le système :
sudo apt update && sudo apt upgrade -y
  1. Installer les outils de base :
sudo apt install -y curl wget git apt-transport-https ca-certificates gnupg lsb-release
  1. Installer auditctl :
sudo apt install -y auditd audispd-plugins
  1. Installer inotify:
sudo apt install -y inotify-tools

4. Installer Docker et Docker Compose

  1. Ajouter la clé et le dépôt officiel Docker :
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
  1. Vérifier la version Docker dispo :
apt-cache madison docker-ce | grep 28.4.0
  1. Installer Docker (si la version est dispo) :
sudo apt install -y docker-ce=5:28.4.0-1~ubuntu.24.04~noble docker-ce-cli=5:28.4.0-1~ubuntu.24.04~noble containerd.io docker-buildx-plugin docker-compose-plugin
  1. Installer Docker Compose :
sudo curl -SL https://github.com/docker/compose/releases/download/v2.39.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

5. Installer et configurer Rclone

  1. Installer Rclone :
curl https://rclone.org/install.sh | sudo bash
  1. Configurer Proton Drive sur ta machine locale (WSL) puis copier la config sur le serveur :
scp ~/.config/rclone/rclone.conf ubuntu@<IP_SERVEUR>:/home/ubuntu/.config/rclone/

6. Configurer Docker Engine

  1. Modifier la config Docker :
sudo nano /etc/docker/daemon.json
Contenu :
{
    "data-root": "/home/docker/engine"
}
  1. Appliquer la config :
sudo systemctl stop docker.socket
sudo systemctl stop docker
sudo mkdir -p /home/docker/engine
sudo chown -R root:root /home/docker/engine
sudo systemctl start docker
  1. Ajouter ton user au groupe docker :
sudo usermod -aG docker ubuntu
newgrp docker

7. Restauration des données

  1. Télécharger le backup :
rclone copy proton:backup/backup-15-09-2025-test.tar.gz /home/ubuntu/
  1. Extraire l'archive :
sudo tar -xvzf /home/ubuntu/backup-15-09-2025-test.tar.gz -C /
  1. Verfier la présence des fichiers dans home/docker/data , dans /srv/ et dans /home/ubuntu/script

8. Restauration config CI/CD

  1. Créer L'utilisateur deploy :
sudo adduser --disabled-password --gecos "" deploy
  1. On ajoute la clé publique:
sudo mkdir -p /home/deploy/.ssh
echo "ta_cle_publique" | sudo tee /home/deploy/.ssh/authorized_keys
sudo chown -R deploy:deploy /home/deploy/.ssh
sudo chmod 700 /home/deploy/.ssh
sudo chmod 600 /home/deploy/.ssh/authorized_keys
  1. On gère ces droits : (tout retirer accès a docker data seulement)
sudo deluser deploy sudo
sudo deluser deploy adm
sudo chmod -R 777 /home/docker/data
sudo apt install -y acl
sudo setfacl -R -m u:deploy:rwx /home/docker/data
sudo setfacl -d -m u:deploy:rwx /home/docker/data

9. Configurer les script

  1. On rends nos script dans /home/ubuntu/script executable:
sudo chmod +x /home/ubuntu/script/{script.sh}
  1. on créer notre service pour les ecoute de mise a jour :
[Unit]
Description=Surveillance du {portfolio} et redeploiement auto
After=network.target docker.service
Requires=docker.service

[Service]
ExecStart=/home/ubuntu/script/watch-{portfolio}.sh
Restart=always
User=ubuntu
WorkingDirectory=/home/docker/data/{portfolio}

[Install]
WantedBy=multi-user.target
  1. On démarre le service :
sudo systemctl daemon-reload
sudo systemctl enable watch-portfolio
sudo systemctl start watch-portfolio
  1. on vérifie :
journalctl -u watch-portfolio -f
  1. On re paramètres notre script de backup
sudo crontab -e

# Ajouter cette ligne
0 1 * * 0 /home/ubuntu/script/backups.sh >> /var/log/backup.log 2>&1

#On vérife
sudo crontab -l

10. Relancer les services Docker

Par service :

cd /srv/dashboard && docker compose up -d
cd /srv/documentation && docker compose up -d
cd /srv/portfolio && docker compose up -d
cd /srv/limoncello-bay && docker compose up -d
cd /srv/nginx-proxy && docker compose up -d

11. Vérifications

  • Vérifier les conteneurs actifs :
docker ps
  • Vérifier que chaque service est accessible (dashboard, documentation, portfolio, serveur de jeu, proxy).