Audiobookshelf: Servidor autohospedado de audiolibros y podcasts
Plataforma de código abierto para gestionar y reproducir tu biblioteca de audiolibros y podcasts con control total sobre tus datos
Vídeo tutorial en YouTube
Mira el vídeo completo sobre cómo instalar y usar Audiobookshelf: Servidor autohospedado de audiolibros y podcasts en el canal GENBYTE:
¿Qué es Audiobookshelf: Servidor autohospedado de audiolibros y podcasts?
Audiobookshelf es un servidor autohospedado diseñado para gestionar colecciones de audiolibros y podcasts. Desarrollado en JavaScript y distribuido bajo licencia GPL-3.0, permite organizar metadatos, reproducir contenido en streaming y sincronizar el progreso de reproducción entre dispositivos. El proyecto cuenta con más de 14.000 estrellas en GitHub y una comunidad activa que contribuye a su desarrollo continuo.
Características principales
Gestión unificada de audiolibros y podcasts
Permite organizar ambas tipologías de contenido en una única biblioteca, con metadatos enriquecidos, carátulas, capítulos y marcadores de posición.
Reproducción en streaming y descarga
Ofrece reproducción directa desde el navegador o aplicaciones compatibles, con control de velocidad, ecualizador y opción de descarga para escucha sin conexión.
Sincronización multiplataforma
Mantiene el progreso de reproducción, favoritos y listas de reproducción sincronizados entre la interfaz web, apps móviles oficiales y clientes de terceros.
Gestión de usuarios y permisos
Soporta múltiples usuarios con roles diferenciados, control de acceso a bibliotecas específicas y autenticación mediante OAuth/OpenID Connect.
Extracción automática de metadatos
Lee etiquetas ID3, archivos OPF y estructuras de carpetas para poblar automáticamente título, autor, narrador, serie, género y portada.
Integración con proveedores externos
Compatible con proveedores de metadatos personalizados y fuentes como Audible, LibriVox, iTunes y RSS para podcasts.
API REST y WebSocket documentada
Expone endpoints para gestión de biblioteca, reproducción, usuarios y estadísticas, facilitando el desarrollo de clientes alternativos.
Despliegue mediante Docker
Imagen oficial multi-arquitectura (amd64/arm64) publicada en GHCR, con Docker Compose de ejemplo que define volúmenes persistentes y red interna.
Requisitos del sistema
- Docker Engine 20.10+ y Docker Compose v2
- Arquitectura compatible: linux/amd64 o linux/arm64
- Mínimo 512 MB RAM disponibles para el contenedor
- Espacio en disco según tamaño de la biblioteca (metadatos ~50-200 MB base)
- Puertos 13378 (HTTP) y 443 (HTTPS opcional) accesibles
- Sistema de archivos con soporte para mapeo de UID/GID si se usa directiva user
Instalación con Docker Compose
Crear directorios de datos persistentes
Estructura recomendada para separar contenido multimedia, metadatos y configuración.
Descargar docker-compose.yml oficial
Utilizar el archivo de ejemplo del repositorio como base y ajustar rutas locales según necesidad.
Ajustar mapeo de puertos y volúmenes
El puerto interno es fijo (80). Cambiar solo el puerto externo si 13378 está ocupado. Verificar que las rutas locales existan y tengan permisos de lectura/escritura para el usuario del contenedor.
# ports:
# – 13378:80 # cambiar 13378 si es necesario
# volumes:
# – /ruta/local/audiobooks:/audiobooks
# – /ruta/local/podcasts:/podcasts
# – /ruta/local/metadata:/metadata
# – /ruta/local/config:/config
Iniciar el contenedor
Levantar el servicio en segundo plano con política de reinicio unless-stopped.
Verificar logs de arranque
Confirmar que el servidor inicia correctamente y expone la API en el puerto configurado.
Acceder al proyecto
Interfaz web
Acceder mediante navegador a http://<IP_HOST>:13378 (o puerto externo configurado). Al primer acceso se ejecuta el asistente de configuración inicial: creación de usuario administrador, selección de carpetas de biblioteca y ajustes básicos.
Aplicaciones móviles oficiales
Disponibles para iOS y Android. Configurar la URL del servidor (http://<IP>:13378) y credenciales de usuario. Soportan sincronización en segundo plano y descarga selectiva.
Clientes de terceros
Compatible con clientes que implementen la API de Audiobookshelf (ej. Prologue, AudiobookPlayer). Requiere token de acceso personal generado en la interfaz web > Configuración > Cuenta > Tokens de API.
Casos de uso
- Biblioteca personal de audiolibros con metadatos completos y reproducción continua entre dispositivos
- Servidor de podcasts privado con suscripción automática a feeds RSS y gestión de episodios descargados
- Compartir colecciones familiares mediante cuentas de usuario con permisos granulares por biblioteca
- Integración en entornos de homelab junto a *arr, Jellyfin, Plex u otros servicios de medios
- Acceso remoto seguro mediante reverse proxy (Traefik, Nginx Proxy Manager) con TLS y autenticación adicional
Configuración avanzada
Ejecutar contenedor con UID/GID específico
Evita problemas de permisos en volúmenes montados desde el host. Descomentar y ajustar la directiva user en docker-compose.yml.
# user: 1000:1000 # reemplazar con UID:GID del usuario host
Variables de entorno adicionales
El Dockerfile define variables por defecto. Pueden sobrescribirse en docker-compose.yml bajo environment: para personalizar rutas, puerto interno o comportamiento.
– PORT=80
– NODE_ENV=production
– CONFIG_PATH=/config
– METADATA_PATH=/metadata
– SOURCE=docker
– TZ=Europe/Madrid
Configurar reverse proxy con HTTPS
Ejemplo genérico para Traefik v2/v3 usando labels en docker-compose.yml. Requiere red externa traefik-public y certificados gestionados por Let's Encrypt.
audiobookshelf:
# … configuración base …
networks:
– traefik-public
labels:
– traefik.enable=true
– traefik.http.routers.abs.rule=Host(`abs.tudominio.com`)
– traefik.http.routers.abs.entrypoints=websecure
– traefik.http.routers.abs.tls.certresolver=letsencrypt
– traefik.http.services.abs.loadbalancer.server.port=80
networks:
traefik-public:
external: true
Actualización de imagen
Obtener la última versión desde GHCR y recrear el contenedor manteniendo volúmenes.
docker compose up -d
Gestión y mantenimiento
Backup de configuración y metadatos
Los directorios /config y /metadata contienen base de datos SQLite, ajustes de usuario, tokens API y caché de metadatos. Realizar copias periódicas.
Limpieza de imágenes Docker antiguas
Eliminar capas intermedias y versiones previas de la imagen para liberar espacio.
docker builder prune -f
Reconstrucción de índice de biblioteca
Desde la interfaz web: Configuración > Bibliotecas > [Biblioteca] > Escanear. O vía API POST /api/libraries/{id}/scan con token de administrador.
-H "Authorization: Bearer <API_TOKEN>"
Migración de datos entre hosts
Copiar directorios ./config, ./metadata, ./audiobooks, ./podcasts al nuevo host manteniendo estructura. Ajustar docker-compose.yml y levantar contenedor.
Stack técnico
- Node.js 24 (runtime Alpine Linux)
- Express.js (servidor HTTP)
- SQLite3 con extensiones nunicode (base de datos embebida)
- Sequelize ORM (modelado y migraciones)
- Socket.io (WebSockets para tiempo real)
- FFmpeg (transcodificación y análisis de audio)
- TypeScript (código servidor)
- Tailwind CSS + Vite (frontend)
- Docker multi-stage build (imagen final ~150 MB)
- GitHub Actions (CI/CD multi-arquitectura)
Referencias oficiales
- Repositorio oficial en GitHub: https://github.com/advplyr/audiobookshelf
- Sitio web y documentación: https://audiobookshelf.org
- Imagen Docker en GHCR: https://github.com/advplyr/audiobookshelf/pkgs/container/audiobookshelf
- Licencia GPL-3.0: https://www.gnu.org/licenses/gpl-3.0.html
- Changelog y releases: https://github.com/advplyr/audiobookshelf/releases
Apoya el canal GENBYTE
¿Te ha sido útil este contenido?
Suscríbete a YouTube
Newsletter GENBYTE
Ko-fi
Contacto: [email protected]
