🛠 Serveur web léger et conteneurs
Objectifs
Transformer l'ODROID-C4 en petit serveur web maison : servir un site statique avec nginx derrière systemd, puis isoler des applications dans des conteneurs Podman. Atouts de la carte pour ce rôle : 4 cœurs Cortex-A55 avec extensions crypto Armv8 (SHA accéléré pour le TLS), Ethernet Gigabit, eMMC pour l'I/O, et ≈ 1,8 W au repos seulement.
Matériel
- ODROID-C4 2 ou 4 GB sous Armbian current, boot sur eMMC de préférence (meilleure endurance que la microSD)
- Câble Ethernet, IP fixe locale (voir le tuto SSH)
- Aucune exposition Internet directe sans reverse-proxy/pare-feu côté routeur
sudo apt install -y nginx podman
Code complet
#!/usr/bin/env bash
# 1) Site statique nginx
sudo mkdir -p /srv/www && echo '<h1>ODROID-C4 opérationnel</h1>' | sudo tee /srv/www/index.html
sudo tee /etc/nginx/sites-available/c4 >/dev/null <<'EOF'
server { listen 80; root /srv/www; index index.html;
location /health { return 200 "ok\n"; }
}
EOF
sudo ln -sf /etc/nginx/sites-available/c4 /etc/nginx/sites-enabled/c4
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl enable --now nginx && sudo systemctl reload nginx
# 2) Conteneur Podman (rootless) avec démarrage au boot
podman run -d --name wiki -p 8080:80 --restart=always nginx:alpine
sudo loginctl enable-linger $USER # garder les conteneurs au démarrage
# 3) Vérification
systemctl is-active nginx
Vérification attendue
Depuis un poste du réseau : curl -i 0 renvoie HTTP/1.1 200 OK suivi de ok, et la page d'accueil s'affiche dans le navigateur. curl http://<IP>:8080 répond depuis le conteneur. podman ps liste le conteneur en état Up ; après sudo reboot, les deux services reviennent sans intervention grâce à enable et --restart=always`.
Erreurs fréquentes
nginx -ten erreur « address already in use » : un serveur Python ou un second listener occupe le port 80 ; vérifier avecss -tlnp.- Oublier de supprimer le site
defaultde nginx : c'est lui qui répond à la place de votre vhost. - Docker sur noyau vendor 4.9 : préférez Podman rootless sur Armbian mainline 6.6, moins de surprises de dépendances.
- Site lent en écriture : la microSD sature vite — déplacer /srv et les bases sur le module eMMC.
- Exposer le port 80/443 sur WAN sans TLS ni reverse-proxy : rester en local ou tunneler ; la carte n'a pas de pare-feu actif par défaut.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash