💾 🖥️ ⚙️
Situation Professionnelle 2 — Stage 2 · SIA BDE INSA Lyon
SP2 SIA — Déploiement d'un Serveur de Backup Automatisé
Proxmox · VM Ubuntu · Crontab · Rclone · Discord Webhook · GitLab
Contexte

Dans le cadre de mon stage au SIA BDE INSA Lyon, j'ai été chargé de déployer et configurer un serveur de backup automatisé destiné à sauvegarder les bases de données critiques de l'infrastructure (PostgreSQL et MariaDB).

L'objectif était de mettre en place une solution fiable, automatique et observable : les sauvegardes devaient se déclencher la nuit via crontab, copier les données depuis le VPS de production, appliquer une politique de rétention, et notifier l'équipe en temps réel sur Discord via un webhook.

Ce projet m'a permis de travailler de bout en bout sur la création d'une VM sous Proxmox, la configuration des disques, la migration des scripts existants depuis GitLab, et l'automatisation complète du processus de backup.

Environnement technique
  • Hyperviseur : Proxmox VE — VM ID 100 (ubuntu-backup)
  • Système : Ubuntu Server 24.04.3 LTS
  • Disques : 2 disques — sda (32G OS) · sdb (1.8T Backups)
  • Outils : Rclone, fdisk, mkfs.ext4, crontab, Bash
  • Sources de backup : VPS infra.bde-insa-lyon.fr — PostgreSQL + MariaDB + Duplicati
  • Notification : Discord Webhook via variable d'environnement système
  • Versioning : GitLab SIA — dépôt privé infra, deploy token infra-mde
🖥️ VPS infra.bde-insa-lyon.fr
PostgreSQL · MariaDB · Duplicati
💻 VM ubuntu-backup (ID 100)
Proxmox · Ubuntu 24.04
💾 /dev/sda (32G)
OS + Scripts
💽 /dev/sdb (1.8T)
/mnt/backups
💬 Discord Webhook
Notifications statut
1 — Configuration des disques

La première étape consiste à stopper la VM depuis le shell Proxmox, puis à identifier les disques disponibles avec lsblk.

qm stop et lsblk sur Proxmox

qm stop 100 · lsblk pour lister les disques

qm set 100 -scsi1 /dev/sdb

qm set 100 -scsi1 /dev/sdb — rattachement du disque 1.8T

qm config et qm start

Vérification de la config SCSI et redémarrage de la VM

Une fois la VM redémarrée, je prépare le disque /dev/sdb avec fdisk puis formatage en ext4 :

# Partitionner le disque avec fdisk
sudo fdisk /dev/sdb
  d  # Supprimer partition existante
  n  # Nouvelle partition (défauts)
  w  # Écrire et quitter

sudo mkfs.ext4 -F /dev/sdb1
sudo mount /dev/sdb1 /mnt
lsblk -f dans la VM ubuntu-backup

Structure des disques dans la VM — sdb1 monté sur /mnt

📁 Disque 1 — Scripts

/scripts/
├── pull_backups.sh
├── send_backup.sh
└── logs/

📁 Disque 2 — Backups

/mnt/backups/
├── mariadb-backups/
├── postgresql-backups/
└── logs/
Structure dossier backups

Contenu de /mnt/backups/

Structure dossier scripts

Scripts dans ~/scripts/

2 — Migration des données & configuration des scripts

Mon maître de stage a généré un deploy token GitLab (infra-mde) permettant un accès en lecture seule au dépôt pour récupérer les scripts existants.

Deploy token GitLab infra-mde

Deploy token infra-mde — accès read_repository

Le script pull_backups.sh utilise rclone pour copier les backups depuis le VPS avec une rétention de 30 jours. J'ai également ajouté la variable DISCORD_WEBHOOK_URL dans /etc/environment.

Script pull_backups.sh dans nano

Configuration du script pull_backups.sh

Variable DISCORD_WEBHOOK_URL dans /etc/environment

DISCORD_WEBHOOK_URL dans /etc/environment

Notifications Discord backup success

Notifications Discord — statut détaillé PostgreSQL, MariaDB, Duplicati

3 — Automatisation avec Crontab

Les backups sont automatisés via crontab : exécution tous les jours à 03h44.

Crontab - règle 44 3 * * *

Règle crontab — exécution quotidienne à 03h44

# minute heure jour mois jour-semaine commande
44 3 * * * /home/sia/scripts/pull_backups.sh >> /mnt/backups/logs/pull_backups.log 2>&1
Backup success Discord

Statut succès — toutes les copies réussies ✅

Backup errors et warnings Discord

Statuts erreur / warning ⚠️

Ce que j'ai appris

Virtualisation

Création et configuration d'une VM sous Proxmox, gestion des disques SCSI, commandes qm.

Stockage Linux

Partitionnement avec fdisk, formatage mkfs.ext4, montage et organisation des volumes.

Automatisation

Mise en place de tâches cron, scripts Bash robustes avec gestion des erreurs et logs.

Observabilité

Intégration d'un webhook Discord pour notifier l'équipe en temps réel du statut des sauvegardes.

Outils & technologies utilisés
Proxmox VE Ubuntu Server 24.04 Rclone GitLab CI/CD Bash / Crontab fdisk / mkfs.ext4 Discord Webhook MariaDB / PostgreSQL SSH / Twingate VPN