Aller au contenu

Création d'un Homelab

Homelab

A la suite de la perte du serveur sur lequel s'exécutait mon installation Home assistant, j'ai choisi d'acquérir une machine plus puissante me permettant également de créer un Homelab.

Info

Un Homelab est un environnement informatique privé et personnalisé que vous pouvez utiliser pour tester, apprendre et expérimenter.

Cette nouvelle machine a pour objectif d'héberger Home assistant en reprenant la configuration existante à partir d'une sauvegarde, mais aussi me permettre d'installer d'autres produits afin de satisfaire ma curiosité et de parfaire mon expertise technique sans risque.

Choix du matériel

Il existe de nombreuses options disponibles en fonction de votre budget et de vos besoins.

Pour un homelab simple, vous pouvez utiliser un vieux PC ou un serveur. Si vous avez un budget plus important, vous pouvez acheter des composants neufs.

Mon choix s'est porté sur les éléments suivants :

  • Achat d'un micro-PC Beelink Mini S12 Pro, dont le prix était raisonnable, avec un processeur N100, 16Go de mémoire et 500Go de SSD. Il servira de serveur de virtualisation.

  • Réutilisation d'un vieux PC HP équipé d'un core i3, de 4Go de mémoire, de deux disques de 750 Go et 2 To, qui servira de serveur de backup.

Choix de l'OS

Mon choix s'est porté sur la solution de virtualisation Proxmox qui me permet de créer et détruire des machines virtuelles au grès de mes expérimentations.

Installation

Le processus est bien documenté sur le site Proxmox. Le système est ensuite accéssible à travers son navigateur : https://youripaddress:8006/

Restauration Home assistant

Création d'une machine virtuelle

La nouvelle machine a les caractéristiques suivantes et a comme système d'exploitation Ubuntu serveur en version LTS.

vm

Installation des services requis

Ma configuration repose sur l'utilisation de docker et de portainer.

Pour faciliter la mise à jour de portainer, j'ai utilisé un fichier docker-compose.yml :

version: "3"

services:

  portainer:
    container_name: portainer
    hostname: portainer
    image: portainer/portainer-ce:latest
    restart: unless-stopped
    ports:
      - 127.0.0.1:9443:9443
      - 127.0.0.1:9000:9000
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock  # required for API access
      - /etc/localtime:/etc/localtime:ro
      - ./data:/data

La mise à jour consiste à exécuter les deux commandes suivantes :

docker pull portainer/portainer-ce:latest
docker-compose up -d

Restauration de la stack Home assistant dans portainer

Portainer permet de faire une sauvegarde de sa configuration. Cela permet de télécharger en local un fichier qui peut ensuite servir à restaurer notre configuration. C'est cette fonctionnalité que j'utilise et qui me permet de récupérer mes données.

Une fois les containers recréés, l'application Home Assistant est de nouveau disponible, mais vierge. Comme pour portainer, Home Assistant permet de faire des sauvegardes.

automation:
  - id:  backup
    alias: "sauvegarde HA"
    trigger:
    - platform: time
      at: "23:00:00"
    action:
      alias: "Création d'un backup"
      service: backup.create

Cela ajoute des sauvegardes au format tar dans le répertoire backups, tous les soir à 23h.

C'est un de ces fichiers préalablement sauvegardés sur une autre machine que j'ai récupéré et restauré dans le répertoire config (via la commande tar).

Home assistant est de nouveau fonctionnel.

Mise en place de sauvegardes

Cet incident montre l'importance d'avoir des sauvegardes. Pour cette nouvelle installation, elles seront de deux types :

  • sauvegarde de machines virtuelles avec Proxmox et Proxmox Backup Server,
  • sauvegarde vers dropbox des backups réalisés par Home Assistant.

Proxmox Backup Server

Proxmox Backup Server est un système d'exploitation et un outil de sauvegarde pour Proxmox. Je l'ai installé sur un vieux PC de bureau (cpu peu puissant et 4Go de mémoire vive) auquel j'ai ajouté un disque de 2To récupéré de mon ancien serveur. Je l'allume une fois par semaine et il s'éteint tout seul en fin de journée. Cela est suffisant pour avoir des sauvegardes régulières pour mon usage personnel.

J'ai créé une tache de sauvegarde, sur mon serveur proxmox, qui fait un backup d'une liste de VM toutes les 2 heures. Quand le serveur de sauvegarde est éteint, la tache est en erreur.

Tâche de sauvegarde

En cas de perte du serveur proxmox, chaque VM aura des sauvegardes sur le serveur Proxmox Backup Server.

Dropbox

En plus de la sauvegarde complète de la VM Home Assisant, je souhaitais avoir des sauvegardes de la base de donnée Home assistant sur une machine distante, ici Dropbox.

Ces sauvegardes sont réalisées avec un outil gratuit, Duplicaty, installé sous forme de container docker. Cet outil permet nativement la sauvegarde vers Dropbox.

Installation de duplicaty

---
version: "2.1"
services:
  duplicati:
    image: lscr.io/linuxserver/duplicati:latest
    container_name: duplicati
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
      - CLI_ARGS= #optional
    volumes:
      - /home/vieuxcodeur/docker/duplicati/config:/config
      - /home/vieuxcodeur/docker/duplicati/backups:/backups
      - /home/vieuxcodeur/docker:/source
    ports:
      - 127.0.0.1:8200:8200
    restart: unless-stopped

Le dernier volume, source, correspond au répertoire contenant les fichiers de l'application Home Assistant sur mon serveur, dont les fichiers de sauvegarde fait par l'application.

L'application web duplicaty est alors exposée sur le port 8200. Il ne reste qu'a créer un tache récurrente pour sauvegarder le répertoire backup de Home Assistant vers Dropbox.

Ajout d'une tache de sauvegarde planifiée

duplicaty paramétrage écran 1

duplicaty paramétrage écran 2

duplicaty paramétrage écran 3

duplicaty paramétrage écran 4

duplicaty paramétrage écran 4

Les données essentielles sont maintenant sauvegardées.