🛠 Héberger des conteneurs Docker et un serveur web sur NVMe
Objetivos
Transformar la Orange Pi 3B en un pequeño servidor 24/7: instalar Docker (arm64), mover el almacenamiento de imágenes al SSD NVMe (más duradero que la microSD) y exponer un servidor web nginx en la red a través de Ethernet gigabit.
Material
- Orange Pi 3B con Armbian bookworm arm64, preferiblemente 4 u 8 GB de RAM
- SSD NVMe montado como rootfs (ver el tutorial de arranque NVMe) o partición de datos
- Red local; fuente de alimentación de 5 V / 3 A
Código completo
# 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
Verificación esperada
docker ps muestra el contenedor web «Up»; curl 3 devuelve el título de la página; desde un equipo de la red, http://IP-de-la-carte/ muestra la página. Después de sudo reboot, el contenedor se reinicia automáticamente (--restart unless-stopped`).
Errores frecuentes
- Olvidar
arch=arm64en la fuente APT: «multiple architectures» o imagen x86 no encontrada (el RK3566 es ARMv8 de 64 bits). - Dejar
data-rooten la microSD: desgaste prematuro de la tarjeta; el NVMe está ahí para eso (recordatorio: ranura limitada a PCIe 2.1 x1, ~500 MB/s). - Puerto 80 ya ocupado por un servidor systemd (
ss -tlnp | grep :80). - Firewall/router: probar localmente antes de publicar el servicio en Internet; no exponer Docker directamente.
- Confundir la imagen del fabricante (blob Mali, RKNN) con Armbian (panfrost): las imágenes NPU tipo RKNN solo funcionan en el kernel del fabricante — útil si más adelante contenedorizas edge-AI.
Otros tutoriales para esta placa
- 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
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash