🛠 Un serveur maison qui consomme 2,5 W : Docker léger sur la PINE A64
Objectifs
Transformer la PINE A64 en petit serveur permanent : la carte a été revendue dès 2016 comme « la plateforme ARM 64 bits la moins chère pour faire tourner Docker » (HypriotOS à l'époque), sa consommation mesurée officiellement est d'environ 2,5 W, et le noyau mainline fait tourner Docker sans exotisme. Le vrai sujet d'ingénieur ici n'est pas Docker mais les contraintes matérielles : 512 MB à 2 GB de RAM, pas de flash embarquée (tout vit sur la microSD), et un réseau 10/100 sur la version de base. Tu vas dimensionner, installer, et sécuriser un service sobre : un broker MQTT + un cron de sauvegarde.
Matériel
- 1 × PINE A64/A64+ (2 GB recommandés pour Docker ; le modèle 512 MB se limite de fait à Arch/Debian et à très peu de conteneurs)
- 1 × microSD de qualité vérifiée (h2testw/f3) — le wiki officiel lui-même lie ces outils de détection de contrefaçon
- Alimentation barrel 5 V 2 A (jamais le micro-USB pour un serveur : chutes de tension = pannes SD/USB aléatoires)
- Ethernet (gigabit seulement sur A64+)
Code complet
# Armbian : installer Docker (dépôt officiel docker.com, arm64)
curl -fsSL https://get.docker.com | sudo sh
# Broker MQTT Mosquitto en conteneur (service sobre, adapté à la carte)
sudo docker run -d --name mosquitto --restart unless-stopped \
-p 1883:1883 eclipse-mosquitto:2
# Sauvegarde quotidienne de l'état des conteneurs sur le PC du réseau :
crontab -e
# 0 3 * * * tar czf /root/etc-backup.tgz /etc && scp /root/etc-backup.tgz pc:/backups/pine64/
# Sur un modèle 512 MB, ajouter du swap pour survivre aux pointes :
sudo fallocate -l 1G /swapfile && sudo chmod 600 /swapfile
sudo mkswap /swapfile && sudo swapon /swapfile
# Vérifier la RAM disponible avant d'empiler les conteneurs :
free -h && docker stats --no-stream
Vérification attendue
docker ps montre Mosquitto Up, joignable depuis le LAN (mosquitto_sub -h <ip> -t test sur le PC). La carte consomme ~2,5 W au repos — soit quelques euros par an d'électricité en service permanent. free -h dimensionne la suite : avec 2 GB on peut empiler quelques conteneurs sobres ; avec 512 MB, un seul service et du swap. Sur la carte de base, rappeler que le réseau plafonne à ~94 Mbit/s (tuto iperf3) avant d'en faire un serveur de fichiers.
Erreurs fréquentes
- Bâtir un serveur sur une microSD contrefaite : la panne de carte SD est le mode de défaillance n°1 de cette classe de cartes (Armbian en fait son premier sujet de support) — carte de marque, testée, et sauvegardes régulières de /etc.
- Saturer un modèle 512 MB : la fiche Wikipedia est claire, ce modèle « ne fonctionne qu'avec Arch Linux et les distributions Debian » ; les charges type Android/Ubuntu Touch exigent 1 GB+ — et Docker y meurt d'abord d'OOM.
- Alimenter par micro-USB « puisque ça marche » : pour un service 24/7, la chute de tension du câble finit en corruption de SD ; le barrel 5 V 2 A est là pour ça.
- Exposer le broker sur Internet sans TLS : MQTT 1883 en clair = identifiants lisibles ; rester sur le LAN ou tunnel chiffré.
- Oublier la carte en 10/100 (version de base) et la plaindre en usage NAS : le plafond est physique (PHY RTL8201), pas logiciel.
- Laisser le rootfs remplir la microSD : le redimensionnement du premier boot Armbian est acquis, mais les logs Docker, eux, tournent — configurer
--log-opt max-size.
Autres tutoriels pour cette carte
- Premier boot d'Armbian sur la PINE A64 (microSD, console série, rootfs)
- PINE A64 ou PINE A64+ ? Le pièg du réseau gigabit dès le premier regard
- Faire clignoter une LED avec libgpiod (numérotation GPIO du A64 : PB0 = 32)
- Benchmark Ethernet iperf3 : mesurer le piège 10/100 vs gigabit
- Lire un capteur I²C (BME280) sur le bus i2c-1 du connecteur Pi-2
- Construire sa propre image Armbian pour la PINE A64 (armbian/build)
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash