🛠 Serveur multimédia et Domotique avec Docker
Objetivos
Transformar el Raspberry Pi 5 en un servidor multimedia y domótico contenedorizado: instalar Docker, desplegar Jellyfin (la GPU VideoCore VII aporta un decodificador HEVC 4Kp60 y dos salidas micro-HDMI 4Kp60) y Home Assistant, con persistencia de datos en NVMe para las cargas pesadas.
Materiales
- Raspberry Pi 5 (se recomiendan 8 GB) + fuente oficial de 27 W
- SSD NVMe en el conector PCIe (recomendado para la base de datos y la mediateca)
- Active Cooler o caja ventilada (transcodificación sostenida = rango 80-85 °C)
- Red Gigabit; TV en uno de los dos puertos micro-HDMI
Código completo
# 1) Installer Docker (dépôt officiel)
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER && newgrp docker
# 2) Jellyfin avec accès au périphérique V4L2 (décodage/encodage matériel)
mkdir -p ~/jellyfin/config ~/jellyfin/media
sudo docker run -d --name jellyfin --restart unless-stopped \
-p 8096:8096 \
-v ~/jellyfin/config:/config \
-v ~/jellyfin/media:/media \
--device /dev/dri:/dev/dri \
jellyfin/jellyfin
# 3) Home Assistant OS ou conteneur supervisor
sudo docker run -d --name homeassistant --restart unless-stopped \
--privileged --network host \
-v ~/ha/config:/config \
ghcr.io/home-assistant/home-assistant:stable
# 4) Vérifier l'accès GPU côté conteneur
sudo docker exec -it jellyfin ls -l /dev/dri
Verificación esperada
docker ps lista los dos contenedores en Up. La interfaz de Jellyfin en http://IP_DU_PI:8096 detecta el dispositivo /dev/dri/renderD* y propone transcodificación por hardware; un vídeo 4K HEVC se reproduce en el cliente web sin saturar los cuatro núcleos. Home Assistant responde en el puerto 8123.
Errores frecuentes
- Olvidar
--device /dev/dri: Jellyfin transcodifica por software y los cuatro Cortex-A76 se saturan con 4K. - Permisos del grupo docker sin aplicar: reinicia la sesión tras
usermodo usanewgrp docker. - Mediateca en microSD: los I/O de la base de datos desgastan la tarjeta; prefiere NVMe (ver el tutorial de arranque NVMe).
- Puertos en conflicto con el sistema anfitrión (8096/8123 ya ocupados): verifica con
ss -tlnpantes de publicar. - Sobrecalentamiento en transcodificación continua: sin refrigeración activa, el throttling térmico de 80-85 °C degrada los caudales; monta el Active Cooler.
- Imágenes ARM de 32 bits antiguas: el Pi 5 (BCM2712) exige imágenes arm64; verifica
docker image inspectantes de desplegar.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython