🛠 Héberger un service web léger (nginx et conteneurs)
Objetivos
Transformar la Orange Pi PC en un pequeño servidor permanente: 1 GB de RAM, cuatro Cortex-A7 y un enlace Ethernet de 100 Mbit/s bastan de sobra para nginx, un bloqueador de anuncios tipo Pi-hole o pequeños contenedores: los casos de uso que la documentación de Armbian documenta para esta placa. El verdadero asunto de un servidor sobre SBC no es el servidor, es la longevidad: microSD frágil y alimentación, de ahí log2ram y servicios sobrios.
Materiales
- Orange Pi PC bajo Armbian, fuente de alimentación de calidad 5 V / 2 A (jack DC)
- microSD Class 10 de marca, log2ram activo (verificar: systemctl status log2ram)
- Cable Ethernet, IP reservada en el router (tutorial SSH)
- Opcional: sudo apt install docker.io para los contenedores
Código completo
- nginx estático como servicio systemd:
sudo apt install -y nginx
sudo tee /etc/nginx/sites-available/projet <<'EOF'
server {
listen 80;
server_name _;
root /srv/www/projet;
location / { try_files $uri $uri/ =404; }
# Réduire les écritures disque : logs vers stderr (journald, log2ram)
access_log /dev/stderr;
error_log /dev/stderr;
}
EOF
sudo mkdir -p /srv/www/projet
echo '<h1>Orange Pi PC opérationnel</h1>' | sudo tee /srv/www/projet/index.html
sudo ln -sf /etc/nginx/sites-available/projet /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl reload nginx
- Primer contenedor (el registro ARMv7 está indicado arm32v7/armhf):
sudo systemctl enable --now docker
docker run -d --name whoami --restart unless-stopped -p 8080:80 traefik/whoami
curl -s localhost:8080 | head -3
# Limiter l'empreinte : logs JSON sur petit fichier, rotation agressive
sudo tee /etc/docker/daemon.json <<'EOF'
{ "log-driver": "json-file", "log-opts": { "max-size": "1m", "max-file": "1" } }
EOF
sudo systemctl restart docker
- Copia de seguridad: tar de las configuraciones + tarjeta clonada regularmente (dd | gzip).
Verificación esperada
curl localhost devuelve la página; desde otra máquina, http://IP-de-la-carte también. docker ps muestra el contenedor en restart unless-stopped y se reinicia solo tras reboot. La temperatura permanece en reposo por debajo de la zona de throttling (nginx solo casi no calienta).
Errores frecuentes
- Ignorar el límite de 100 Mbit/s: este servidor nunca será un servidor de medios multi-flujo; dimensiona en consecuencia.
- Dejar que los logs escriban de forma continua en la microSD: corrupción asegurada a medio plazo: de ahí log2ram y access_log hacia journald.
- Buscar imágenes Docker arm64: el H3 es ARMv7 de 32 bits (armv7l), toma las variantes arm32v7/armhf.
- Contar con el WiFi: inexistente en este modelo, el cable es obligatorio para un servidor.
- Fuente de teléfono de menos de 2 A: cortes y corrupciones bajo carga de red/disco.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash