🛠 Serveur web léger et conteneurs
Objectifs
Transformer l'ODROID-C2 en petit serveur de la maison : site web léger derrière nginx, exécution conteneurisée avec Podman (Docker fonctionne aussi sur les images ARMv8), en exploitant les deux atouts matérielles du C2 — le vrai Gigabit Ethernet et le slot eMMC — sur ses 2 Go de DDR3.
Matériel
- ODROID-C2 sous Armbian ou DietPi (ARMv8/aarch64), système sur module eMMC
- Alimentation 5 V / 2 A stable (pics USB à proscrire)
- Réseau filaire Gigabit ; la carte n'a pas de Wi-Fi embarqué
- Optionnel : dongle USB, mais les 4 ports USB2 partagent un hub GL852G
Code complet
# 1) nginx + site static
sudo apt update && sudo apt install -y nginx
echo '<html><body><h1>Serveur ODROID-C2 (S905, GbE)</h1></body></html>' \
| sudo tee /var/www/html/index.html
systemctl status nginx --no-pager
# 2) Podman (podman-docker fournit l'alias docker)
sudo apt install -y podman
podman run -d --name whoami --restart always -p 8080:80 \
--pull=always quay.io/podman-static/whoami 2>/dev/null || \
podman run -d --name test -p 8080:80 nginx:alpine
# 3) memoire : 2 Go partagés — limiter chaque conteneur
podman update --memory 256m test 2>/dev/null || true
free -h
# 4) écrire peu : logs en RAM (rclone/rsyslog vers le disque par rotation)
sudo sed -i 's#^.*"/var/log/nginx/access.log"#/var/log/nginx/access.log#' /etc/logrotate.d/nginx 2>/dev/null || true
# 5) test depuis un poste : curl http://<ip-du-c2>/ et :8080
Vérification attendue
curl http://IP/ renvoie la page nginx, le conteneur répond sur 8080. iperf3 vers la carte dépasse 600 Mbit/s : le lien GbE (RTL8211F) n'est pas le goulot, le stockage microSD le serait. free -h montre l'empreinte sous contrôle dans les 2 Go.
Erreurs fréquentes
- Booter le serveur sur une microSD bas de gamme : I/O lentes (SDR50/SDR100 en mainline) et usure — l'eMMC est la correction prévue par la DTS (HS200).
- Laisser les images vendor (noyau 3.14, Ubuntu 16.04) exposées : trop anciennes, à bannir du réseau.
- Empiler les conteneurs sans limites mémoire : l'OOM tueur frappe à 2 Go.
- Attendre du GPU Mali-450 en mainline : blobs propriétaires uniquement, inutile pour un serveur.
- >
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash