Silo Server en Docker - Servidor de streaming media autohospedado

Silo Server | Media Streaming | Docker | Self-Hosted | Jellyfin Compatible

Silo Server en Docker: Servidor de streaming media autohospedado con backend Go, frontend React, transcoding acelerado por hardware, compatible Jellyfin/Emby (alternativa Plex, Jellyfin) 🎬🎞️

Silo Server es un servidor de streaming media profesional autohospedado con backend Go y frontend React. Streaming de películas y series. Direct play, remuxing, transcoding con aceleración hardware. Compatible con clientes Jellyfin/Emby (VidHub, Findroid). PostgreSQL para metadata. Redis para cache. FFmpeg integrado. Multi-usuario. Admin UI completo. AGPL-3.0 open source. Production-ready Docker.

¿Qué es Silo Server en Docker?

Silo Server es un servidor de streaming media profesional autohospedado con arquitectura moderna (Go + React + PostgreSQL) que proporciona streaming directo, remuxing automático, transcoding con aceleración hardware, multi-usuario, admin UI completo, y compatibilidad con clientes Jellyfin/Emby, todo bajo tu control en Docker sin dependencias de servicios terceros. Alternativa profesional a Plex y Jellyfin.

Propuesta clave: Media streaming server enterprise-grade self-hosted. Backend Go (rápido, eficiente). Frontend React moderno (Vite, Tailwind, shadcn/ui). Soporte películas y series. Direct play (sin conversión). Remuxing (cambiar container sin re-encode). Hardware-accelerated transcoding (NVIDIA NVENC, Intel Quick Sync, AMD VCE). Compatible APIs Jellyfin/Emby (usa clientes VidHub, Findroid, etc). PostgreSQL metadata database. Redis cache/coordination. Scanner automático librerías. Metadata matching. Multi-usuario con roles. Admin UI completo. Modo integrated (todo en uno). Modos distribuidos (proxy, transcode nodes). FFmpeg bundled. Direct database access (PostgreSQL). Logging, diagnostics, performance tuning. AGPL-3.0 open source. Production-ready.

Para homelabs profesionales: Servidor streaming robusto. Transcoding rápido. Compatible clientes Jellyfin. Control total. Zero suscripción.

Características principales

Direct play + remuxing

Stream directo sin conversión. Remuxing automático (cambiar container). Máxima velocidad.

Transcoding acelerado

Hardware-accelerated: NVIDIA NVENC, Intel Quick Sync, AMD VCE. FFmpeg bundled.

Compatible Jellyfin/Emby

APIs compatibles Jellyfin. Usa clientes VidHub, Findroid, etc sin cambios.

Scanner automático

Detecta media archivos automático. Metadata matching. Artwork, descripciones.

Multi-usuario seguro

Usuarios con roles. Control acceso. Permisos granulares. JWT auth.

Admin UI completo

Gestiona librerías, usuarios, metadata, transcoding settings desde web.

Modos distribuidos

Integrated (todo), API only, Proxy node, Transcode worker. Scale horizontalmente.

PostgreSQL + Redis

Stateless app. Metadata en PostgreSQL. Cache/coordination en Redis.

Requisitos del sistema

  • Docker & Docker Compose v2+
  • 4 GB - 16 GB RAM mínimo (depende carga, transcoding)
  • 50 GB - 10+ TB espacio disco (según librería media)
  • /mnt/media directorio accesible (ruta media)
  • Puertos TCP: 8090 (web UI), 8096 (Jellyfin compatible)
  • CPU: 4+ cores (6+ si transcoding hardware sin aceleración)
  • PostgreSQL 18+ (bundled o externo)
  • Redis (bundled o externo)
  • FFmpeg (bundled en imagen)
  • Opcional: NVIDIA GPU (transcoding NVENC), Intel Quick Sync, AMD VCE
Nota statefulidad: Silo es externally stateful (PostgreSQL) pero transient en transcoding local (/tmp/silo-transcode). Para producción, usa PostgreSQL separado (VM, managed service).
Performance: Go backend es muy eficiente. PostgreSQL performance tuning recomendado (ver docs para PGTune). Hardware transcoding acelera mucho si tienes GPU.

Estructura directorios /mnt/media

Silo necesita ruta media. PostgreSQL y Redis se guardan en /opt/silo:

/mnt/media/ ├── movies/ # Películas └── tv/ # Series # Silo data (bundled defaults): /opt/silo/ ├── postgres/ # PostgreSQL data ├── redis/ # Redis data ├── transcode/ # Transcode cache └── catalog-seeds/ # Metadata cache

Instalación con Docker Compose

Paso 1: Preparar ruta media

# Crear carpeta media sudo mkdir -p /mnt/media/{movies,tv} # Permisos sudo chown -R 1000:1000 /mnt/media sudo chmod -R 755 /mnt/media

Paso 2: Obtener docker-compose.yml oficial

# Clonar repo Silo git clone https://github.com/Silo-Server/silo-server.git ~/silo cd ~/silo # Copiar env example cp .env.example .env

Paso 3: Configurar .env

# Editar .env y cambiar MEDIA_ROOT nano .env # Busca y reemplaza: MEDIA_ROOT=/mnt/media # Opcional cambiar puertos si hay conflictos # SILO_PORT=8090 # SILO_COMPAT_PORT=8096

Paso 4: Iniciar Silo con Docker Compose

# Inicio stack: PostgreSQL + Redis + Silo docker compose up -d # Espera ~20 segundos para que inicie completamente docker compose logs -f silo # Debería ver "listening on..." mensajes

Acceder a Silo Server

🎬 Silo Web UI: http://localhost:8090
🎞️ Jellyfin Compatible API: http://localhost:8096

Setup inicial (primer acceso)

  1. Abre http://localhost:8090
  2. Setup wizard automático aparece
  3. Crea usuario admin: email y contraseña
  4. Configura librerías (agregar /mnt/media/movies, /mnt/media/tv)
  5. Inicia scan automático
  6. ¡Listo para streamear!
💡 Desde otros dispositivos: Usa la IP de tu servidor:
http://192.168.1.100:8090 (web)
http://192.168.1.100:8096 (compatible Jellyfin)
Para obtener tu IP: hostname -I

Usar con clientes Jellyfin (VidHub, Findroid, etc)

  1. Instala cliente: VidHub (Android/iOS), Findroid (Android), etc
  2. Configura servidor: http://192.168.1.100:8096
  3. Usuario/contraseña Silo admin
  4. ¡Cliente automáticamente detecta librerías!

Primeros pasos

1. Agregar librerías

  1. Admin UI → Libraries → Add Library
  2. Path: /mnt/media/movies (películas) o /mnt/media/tv (series)
  3. Type: Movies o TV Shows
  4. Save → Inicia scan automático

2. Configurar metadata providers

  1. Admin UI → Settings → Metadata Providers
  2. Conecta TMDB (gratis, recomendado)
  3. API key TMDB: https://www.themoviedb.org/settings/api
  4. Salva → Silo auto-enriquece metadata

3. Configurar transcoding

  1. Admin UI → Settings → Transcoding
  2. Habilita hardware transcoding (si tienes GPU)
  3. Opción: NVIDIA NVENC, Intel Quick Sync, AMD VCE
  4. Quality profiles: 720p, 1080p, 4K

4. Crear usuarios

  1. Admin UI → Users → Add User
  2. Email, contraseña, rol (Admin, Member)
  3. Guarda → Usuario puede loguear

5. Streamear desde web

  1. Dashboard → selecciona película/serie
  2. Click play → abre player web
  3. Automatic quality (adapts to bandwidth)
  4. Subtítulos, audio tracks disponibles

6. Usar con clientes Jellyfin

  1. Instala app (VidHub, Findroid, etc)
  2. Agrega servidor: IP:8096
  3. Credenciales admin Silo
  4. Browse librerías, stream nativo app

Casos de uso

  • Reemplazo Plex profesional: Servidor streaming robusto. Transcoding rápido. API compatible.
  • Compatible clientes Jellyfin: Usa apps VidHub, Findroid, etc ya conocidas.
  • Transcoding GPU: Hardware-accelerated NVIDIA, Intel, AMD. Máxima velocidad.
  • Homelabs profesionales: Backend Go eficiente. PostgreSQL scales bien.
  • Distributed setups: Proxy nodes, transcode workers separados. Multi-host.

Gestión y mantenimiento

Ver estado

docker compose ps

Ver logs

docker compose logs -f silo docker compose logs -f postgres

Detener Silo

docker compose down

Actualizar a versión nueva

docker compose pull docker compose up -d

PostgreSQL tuning (importante!)

# Usar PGTune para hardware específico # https://pgtune.leopard.in.ua/ # Recomendado: DB Type = Web application # RAM = tu server RAM, CPUs = tu CPU count # Applica settings, restart PostgreSQL

Backup database

docker compose exec postgres pg_dump -U silo silo > backup.sql

Restore database

docker compose exec -T postgres psql -U silo silo < backup.sql

Monitorear consumo

docker stats silo postgres redis # Típicamente: # silo: 500MB-2GB RAM (depende carga) # postgres: 500MB-4GB RAM (depende tuning) # redis: 100-500MB RAM

Arquitectura

Integrated mode (default)

Todo en un contenedor: API + frontend + scanner + transcoding. Perfecto para single-host setup.

Distributed mode (avanzado)

  • API node: Sirve web + API, sin transcoding local
  • Proxy node: Reverse proxy, stream routing
  • Transcode workers: FFmpeg, transcoding solo
Para empezar: Usa integrated mode (default). Dopo si necesitas scale, divide en modos distribuidos.

Stack técnico

  • Backend: Go (fast, efficient, single binary)
  • Frontend: React + TypeScript (Vite, HMR, Tailwind, shadcn/ui)
  • Database: PostgreSQL 18+ (metadata, users, config)
  • Cache: Redis (coordination, cache)
  • Streaming: FFmpeg (bundled, directplay, remux, transcode)
  • Protocols: HTTP/HTTPS, Jellyfin/Emby API compatible
  • Transcoding: NVIDIA NVENC, Intel Quick Sync, AMD VCE, software fallback
  • Licencia: AGPL-3.0 open source

Comparativa con alternativas

vs Plex

Silo gana: Self-hosted, open source, sin cloud, sin paywalls, compatible clientes Jellyfin. Plex gana: UI pulida, cloud sharing remoto, features premium.

vs Jellyfin

Silo gana: Backend moderno Go (más eficiente), frontend React, distributed architecture. Jellyfin gana: Más features, UI establecida, comunidad grande.

vs Emby

Silo gana: Open source, gratis, compatible APIs. Emby gana: Features premium, soporte profesional, más maduro.

Mejor para: Homelabs profesionales. Transcoding rápido. Arquitectura moderna. Compatible clientes Jellyfin. Control total.

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Cómo INSTALAR y CONFIGURAR OpenVPN en MIKROTIK. Guía completa paso a paso.