🛠 Héberger des conteneurs Docker et un serveur web sur NVMe
Objectifs
Transformer l'Orange Pi 3B en petit serveur 24/7 : installer Docker (arm64), déplacer le stockage des images sur le SSD NVMe (plus endurant que la microSD), et exposer un serveur web nginx sur le réseau via l'Ethernet gigabit.
Matériel
- Orange Pi 3B sous Armbian bookworm arm64, 4 ou 8 GB de RAM de préférence
- SSD NVMe monté comme rootfs (voir le tuto boot NVMe) ou partition de données
- Réseau local ; alimentation 5 V / 3 A
Code complet
# 1. Docker officiel (arm64) — script get.docker.com ou paquets Debian
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=arm64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io
# 2. Stockage Docker sur le SSD (si / n'y est pas déjà)
sudo mkdir -p /srv/docker && sudo tee /etc/docker/daemon.json <<'EOF'
{ "data-root": "/srv/docker" }
EOF
sudo systemctl restart docker
# 3. Serveur web + redémarrage automatique
docker run -d --name web --restart unless-stopped -p 80:80 \
-v /srv/www:/usr/share/nginx/html:ro nginx:alpine
echo '<h1>Orange Pi 3B — RK3566</h1>' | sudo tee /srv/www/index.html
# 4. Vérification
sudo docker ps && curl -s http://localhost/ && ip -br addr
Vérification attendue
docker ps montre le conteneur web « Up » ; curl 3 renvoie le titre de la page ; depuis un poste du réseau, http://IP-de-la-carte/ affiche la page. Après sudo reboot, le conteneur redémarre tout seul (--restart unless-stopped`).
Erreurs fréquentes
- Oublier
arch=arm64dans la source APT : « multiple architectures » ou image x86 introuvable (le RK3566 est ARMv8 64 bits). - Laisser
data-rootsur la microSD : usure prématurée de la carte ; le NVMe est là pour ça (rappel : slot bridé PCIe 2.1 x1, ~500 MB/s). - Port 80 déjà pris par un serveur systemd (
ss -tlnp | grep :80). - Pare-feu/box : tester en local avant de publier le service sur Internet ; ne pas exposer Docker directement.
- Confondre l'image constructeur (blob Mali, RKNN) et Armbian (panfrost) : les images NPU type RKNN ne tournent que sur le noyau constructeur — utile si vous conteneurisez de l'edge-AI plus tard.
Autres tutoriels pour cette carte
- Faire clignoter une LED via le GPIO avec libgpiod
- Lire un bouton poussoir et afficher l'état dans la console
- Premier script Python : bouton + LED avec python3-libgpiod
- Variation d'intensité d'une LED avec un signal PWM
- Interroger un capteur I2C sur les broches 3/5 du connecteur
- Configurer Ethernet gigabit et Wi-Fi puis se connecter en SSH
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash