Serveurs domestiques en grappe alimentés par cable réseau

(Octobre 2026)


Jusqu'à quel point les progrès dans le matériel nous permettent-ils d'implémenter des solutions d'auto-hébergement compactes et sobres ? C'est le sujet abordé dans cet article.


Le matériel

L'objectif de ce projet est l'auto-hébergement applicatif en grappe sur la solution la plus compacte possible, pour ce faire je me suis naturellement orienté vers une solution à base de SBC (Single Board Computer), qui présente l'intéret d'un encombrement réduit, et plus particulièrement du Radxa Zero 3E qui peut également être alimenté directement par son port réseau RJ45.

Radxa Zero 3E
Radxa Zero 3E
Radxa Zero 3E avec extension PoE
Radxa Zero 3E avec extension PoE

Afin de faire communiquer les différents éléments de la grappe, et de les alimenter, j'ai utilisé un switch PoE (Power over Ethernet) 8 ports. L'ensemble est refroidi par des ventilateurs 12v directement branchés sur chaque SBC.

Radxa Zero 3E Switch PoE
Radxa Zero 3E Switch PoE

Démonstration du démarrage de la grappe via alimentation du switch PoE.

Le logiciel

Pour exploiter ce matériel, je me suis tourné vers la distribution linux "armbian" et son installeur "armbian-imager" qui permet facilement d'installer le système d'exploitation sur carte SD. Enfin pour s'occuper de la gestion de la grappe logicielle, j'ai décidé de m'appuyer sur une solution "docker swarm" qui m'a semblée la plus adaptée aux limitations du matériel.

Armbian-imager permet d'installer armbian pour divers SBC.
Armbian-imager permet d'installer armbian pour divers SBC.

Armbian

Chaque SBC reçoit donc une carte SD de 64Gb sur lequel on vient installer armbian. Au démarrage il est nécessaire de définir différents mots de passe, utilisateurs et la zone temporelle. Ensuite on vient fixer l'adresse IP de la machine via la commande "armbian-config" puis mettre à jour l'OS avec "armbian-update"

Configuration réseau via armbian-config
Configuration réseau via armbian-config

Docker swarm

Une fois le système d'exploitation installé et configuré, on doit installer docker et configurer la grappe.

Sur chaque noeud de la grappe :

curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh

Ajout de l'utilisateur docker et du groupe avec les bons droits :

sudo usermod -aG docker $USER
newgrp docker

Ensuite on initialise la grappe sur le noeud "manager"

docker swarm init --advertise-addr IP_DU_MANAGER

et pour terminer on tape sur chaque noeud de travail (worker) la commande générée par le manager permettant de rejoindre la grappe

docker swarm join --token SWMTKN-1-xxx IP_DU_MANAGER:2377

Il est ensuite possible d'administrer la grappe via Portainer par exemple et d'y ajouter des conteneurs, des stacks etc..

Administration de la grappe dans Portainer
Administration de la grappe dans Portainer

Exemple de noeuds NATS avec 3 répliques sur les noeuds de la grappe :

version: '3.8'

services:
  nats:
    image: nats:2.10-alpine
    environment:
      - NATS_SERVER_NAME={{.Task.Name}}
    command:
      - "/bin/sh"
      - "-c"
      - "nats-server --server_name $${NATS_SERVER_NAME} --jetstream --store_dir /data/jetstream -m 8222 --cluster_name GAME_NATS --cluster nats://0.0.0.0:6222 --routes nats-route://tasks.nats:6222"
    volumes:
      - nats_data:/data/jetstream
    ports:
      - target: 4222
        published: 4222
        protocol: tcp
        mode: host
      - target: 8222
        published: 8222
        protocol: tcp
        mode: host
    networks:
      - game_network
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure
      resources:
        limits:
          cpus: '0.30'
          memory: 96M
        reservations:
          cpus: '0.05'
          memory: 20M
      placement:
        constraints:
          - node.role == worker

volumes:
  nats_data:

networks:
  game_network:
    external: true
Services NATS dans la grappe (3 instances)
Services NATS dans la grappe (3 instances)

Coûts

Voici le détail des coûts de ce projet:


Le matériel

Avec les difficultés d'approvisionnement en ram, il est plus difficile et plus couteux ces temps-ci d'obtenir des SBC fortement dotés en ram, compter cependant ~75€ pour un SBC équipé de 1Go de ram (voir 2Go selon la disponibilité) et 30€ pour le switch, 10€ par carte sd, coût total de la grappe en l'état à ce jour : 370€.


L'Electricité

La grappe complète consomme 16w au repos et compter 25w lors de fortes sollicitations, si on prend 20w de moyenne, annuellement cette grappe coutera 30€.


Conclusion

On a vu dans cet article comment assembler, paramétrer et exploiter une grappe de serveurs compacte consitutée de SBC basse consommation alimentés par un switch PoE. Cette solution est particulièrement adaptée si vous souhaitez maitriser vos coûts de consommation d'électricité et l'encombrement de votre grappe ou répartir votre grappe dans des endroits sans alimentation électrique. Elle reste cependant économiquement moins intéressante qu'une grappe de serveurs plus encombrants type x86 qui en outre offriront de meilleures performance.