Si tienes una biblioteca de audiolibros sin DRM de Libro.fm, LibriVox, la herramienta de exportación de Audible o la app Libby de tu biblioteca local, no necesitas un servicio de suscripción para escucharlos en todos tus dispositivos. Lo que necesitas es Audiobookshelf — un servidor autoalojado que registra tu progreso, obtiene metadatos y sincroniza la posición de reproducción en iOS, Android y la web. En esta guía veremos la instalación completa en un contenedor LXC de Proxmox: crear el contenedor, instalar ABS mediante el PPA oficial de Ubuntu, montar el almacenamiento de audiolibros, habilitar HTTPS con un proxy inverso y conectar las apps móviles.
Todo el comportamiento de los paquetes, los puertos predeterminados y las rutas de configuración mencionados en esta guía provienen de la documentación oficial de Audiobookshelf.
¿Qué es Audiobookshelf?
Audiobookshelf (ABS) es un servidor de audiolibros y podcasts de código abierto y autoalojado, desarrollado por advplyr. Según la documentación oficial, admite varios tipos de bibliotecas (audiolibros, podcasts y libros electrónicos en la misma interfaz), navegación por capítulos, marcadores y temporizadores de sueño. La obtención automática de metadatos descarga portadas, datos de capítulos y descripciones de Audible, OpenLibrary y Google Books. El progreso se sincroniza en tiempo real entre dispositivos mediante apps nativas para iOS y Android, y el soporte multiusuario permite que cada persona del hogar tenga un seguimiento de reproducción separado en la misma biblioteca.
La huella del servidor es mínima. A diferencia de Jellyfin o Plex, que necesitan ciclos de CPU para transcodificar video, ABS transmite los archivos de audio en su formato nativo — M4B, MP3, OPUS, FLAC y otros se sirven tal cual. Según la documentación de ABS, la transcodificación del lado del servidor no ocurre a menos que se solicite específicamente una conversión de formato para un cliente que no puede reproducir el códec original. En la práctica, el uso de CPU durante la reproducción es casi nulo, lo que lo convierte en una opción natural para un contenedor LXC ligero en un mini PC.
La principal consideración de hardware para ABS es el almacenamiento. Un audiolibro puede ocupar desde unos 150 MB para una novela corta hasta más de 2 GB para una saga larga de varios volúmenes. Si planeas hacer crecer una biblioteca seria, un disco de tipo NAS como el Seagate IronWolf 4TB (~$90) — diseñado para funcionar de forma continua — es una mejor elección a largo plazo que un disco de escritorio. Para el host de Proxmox en sí, un mini PC económico como el GMKtec G3 PRO mini PC (~$199) maneja ABS junto con varios otros servicios autoalojados sin ningún esfuerzo.
Requisitos previos
Antes de empezar, necesitas un host de Proxmox VE con una plantilla LXC de Ubuntu 22.04 descargada (Debian 12 también funciona). Si eres nuevo en los contenedores LXC de Proxmox, la guía completa de self-hosting con Proxmox LXC cubre toda la base. También necesitarás almacenamiento para tus archivos de audiolibros — funcionan un directorio local en el host de Proxmox, un recurso compartido NFS desde un NAS o un disco USB montado en el contenedor.
Para acceso remoto con HTTPS necesitarás un proxy inverso. Voy a mostrar la configuración tanto para Traefik v3 como para Nginx Proxy Manager (en inglés) — elige el que ya tengas funcionando. Un nombre de dominio y DNS de Cloudflare son opcionales, pero hacen el acceso móvil remoto mucho más fluido que lidiar con direcciones IP directas y certificados autofirmados.
Vale la pena mencionar de antemano: Audiobookshelf usa WebSockets para la sincronización del progreso en tiempo real. Tu proxy inverso debe estar configurado para dejar pasar las conexiones WebSocket. No hacerlo correctamente es la causa más común de que la app móvil parezca funcionar pero no guarde tu posición de reproducción.
Paso 1: Crear el contenedor LXC en Proxmox
En la interfaz web de Proxmox, haz clic en Create CT. ABS es ligero, así que no necesitas aprovisionar en exceso. Esta es una configuración de inicio razonable:
| Configuración | Valor |
|---|---|
| Plantilla | Ubuntu 22.04 (ubuntu-22.04-standard) |
| CPU | 1 núcleo (2 núcleos para mayor comodidad) |
| RAM | 512 MB mínimo; 1 GB recomendado para bibliotecas grandes |
| Disco | 8 GB para OS y configuración de ABS — los audiolibros van en un bind mount |
| Sin privilegios | Sí |
| Nesting | Desactivado — no es necesario para la instalación nativa |
| Red | IP estática (p. ej. 192.168.1.52) |
Inicia el contenedor y abre una consola. Ejecuta primero la actualización base habitual:
apt update && apt upgrade -y
apt install -y curl gnupg2
Eso es todo lo que se necesita para configurar el contenedor. Como usamos el PPA oficial en lugar de Docker, no es necesario habilitar el modo nesting o privilegiado — el servicio de ABS se ejecuta como su propio usuario del sistema dentro del contenedor sin privilegios estándar.
Paso 2: Instalar Audiobookshelf mediante el PPA oficial
Audiobookshelf publica un PPA oficial para Debian/Ubuntu que gestiona la instalación y las actualizaciones futuras a través de apt. Según la documentación oficial de instalación en Linux, esta es la secuencia completa:
# Agregar la clave GPG
curl -fsSL https://advplyr.github.io/audiobookshelf-ppa/KEY.gpg \
| gpg --dearmor \
| tee /usr/share/keyrings/audiobookshelf.gpg > /dev/null
# Agregar el repositorio
echo "deb [signed-by=/usr/share/keyrings/audiobookshelf.gpg] https://advplyr.github.io/audiobookshelf-ppa ./" \
| tee /etc/apt/sources.list.d/audiobookshelf.list
# Instalar
apt update && apt install audiobookshelf -y
El instalador crea un usuario del sistema audiobookshelf, registra un servicio systemd y escribe un archivo de configuración predeterminado en /etc/default/audiobookshelf. Según la documentación oficial, el puerto de escucha predeterminado es el 3000. Inicia y habilita el servicio:
systemctl enable --now audiobookshelf
systemctl status audiobookshelf
Deberías ver active (running) en verde. Abre un navegador y ve a http://<ip-del-contenedor>:3000. En la primera carga, ABS muestra un asistente de configuración — crea tu cuenta de administrador aquí. Guarda estas credenciales en un lugar seguro; son la única forma de acceder al panel de administración del servidor.
Paso 3: Montar el almacenamiento de audiolibros con bind mount
ABS lee los archivos en su ubicación — no los copia ni los mueve. La mejor disposición en Proxmox es un bind mount que mapea un directorio del host de Proxmox directamente en el contenedor. Tus archivos viven fuera del contenedor y sobreviven a cualquier reconstrucción o reinstalación.
Primero, crea y asigna permisos al directorio en el host de Proxmox (no dentro del contenedor):
# Ejecutar en el HOST de Proxmox
mkdir -p /mnt/storage/audiobooks
chown -R 1000:1000 /mnt/storage/audiobooks
El UID 1000 corresponde al usuario predeterminado sin privilegios dentro del LXC. Ahora agrega el bind mount. Puedes hacerlo en la interfaz web de Proxmox (Contenedor → Recursos → Agregar → Mount Point) o directamente en el archivo de configuración del contenedor:
# En el HOST de Proxmox — reemplaza 100 con tu CTID real
nano /etc/pve/lxc/100.conf
# Agrega esta línea al final:
mp0: /mnt/storage/audiobooks,mp=/audiobooks
Reinicia el contenedor (pct restart 100). El directorio /audiobooks ahora es visible dentro del contenedor. Para confirmarlo, ejecuta ls /audiobooks desde dentro del contenedor — deberías ver tus archivos de audiolibros existentes si ya tienes alguno en su lugar.
De vuelta en la interfaz web de ABS, ve a Settings → Libraries → + Add Library. Nómbrala "Audiolibros", establece el tipo como Audiobooks y agrega /audiobooks como ruta de carpeta. Guarda — ABS comenzará a escanear inmediatamente. Para bibliotecas grandes esto tarda unos minutos; puedes ver el progreso en la barra lateral.
Paso 4: Ajustar el puerto predeterminado (opcional)
Si el puerto 3000 entra en conflicto con otro servicio en tu red, el archivo /etc/default/audiobookshelf es donde puedes cambiarlo. Según la documentación oficial, el archivo tiene este aspecto tras una instalación limpia por PPA:
PORT=3000
CONFIG_PATH=/home/audiobookshelf/.audiobookshelf
METADATA_PATH=/home/audiobookshelf/.audiobookshelf/metadata
SOURCE=apt
Cambia PORT=3000 por cualquier puerto disponible. Tras editar, reinicia el servicio:
systemctl restart audiobookshelf
Los valores de CONFIG_PATH y METADATA_PATH también pueden moverse a una ubicación con bind mount si quieres que la configuración sobreviva a los reinicios del contenedor — simplemente crea el directorio en el host primero, monta el bind en el contenedor y apunta estas variables a la ruta montada.
Paso 5: Configurar HTTPS con un proxy inverso
El HTTP plano en tu red local está bien para pruebas iniciales, pero para el acceso móvil desde fuera de tu casa — y para que la app de iOS/Android confíe en la conexión — necesitas un certificado TLS válido. Tanto Traefik como Nginx Proxy Manager funcionan bien aquí.
Para Nginx Proxy Manager, agrega un nuevo Proxy Host con estos ajustes:
- Dominio:
abs.tudominio.com - Esquema:
http| Forward Hostname:192.168.1.52| Puerto:3000 - Activa Websockets Support — ABS usa WebSockets para la sincronización de progreso en tiempo real, y sin esto la app móvil parecerá sincronizarse pero los datos de posición pueden no guardarse correctamente
- En la pestaña SSL, solicita un certificado de Let's Encrypt y habilita Force SSL
Para Traefik v3, agrega estas etiquetas a una definición de servicio Docker o a una configuración dinámica de file provider (ajusta la IP del servicio según sea necesario):
http:
routers:
audiobookshelf:
rule: "Host(`abs.tudominio.com`)"
entryPoints:
- websecure
service: audiobookshelf
tls:
certResolver: letsencrypt
services:
audiobookshelf:
loadBalancer:
servers:
- url: "http://192.168.1.52:3000"
Traefik pasa los WebSockets automáticamente — no se necesita configuración adicional. Una vez que el proxy esté activo, prueba HTTPS en tu navegador antes de pasar a las apps móviles.
Paso 6: Conectar las apps móviles
Audiobookshelf tiene apps gratuitas y de código abierto para iOS y Android. Después de instalarlas desde la App Store o Google Play, el proceso de conexión es el mismo en ambas plataformas:
- Toca el ícono del servidor en la pantalla de inicio de sesión
- Ingresa la URL del servidor:
https://abs.tudominio.com - Inicia sesión con las credenciales de administrador del asistente de configuración
La app sincroniza la posición de reproducción en tiempo real cuando estás en la misma red, y se pone al día al reconectarse cuando estás en remoto. Según la documentación de ABS, cada cuenta de usuario registra el progreso individual — si otra persona del hogar comparte el servidor, su posición en cualquier libro no sobreescribirá la tuya.
Para acceso remoto sin un dominio público, Tailscale es una opción limpia. Si ya ejecutas Headscale en Proxmox como tu plano de control de VPN, accede al contenedor de ABS directamente mediante su IP de Tailscale y usa http://<ip-tailscale>:3000 — no es necesario un certificado HTTPS porque la red de Tailscale ya está cifrada.
Organización de la biblioteca y metadatos
ABS espera una estructura de carpetas específica, documentada en el sitio oficial. El diseño recomendado para audiolibros es una carpeta por autor, una subcarpeta por libro y todos los archivos de audio dentro de la carpeta del libro:
/audiobooks/
Brandon Sanderson/
The Way of Kings/
The Way of Kings.m4b
cover.jpg # opcional — ABS obtiene portadas automáticamente
Terry Pratchett/
Good Omens/
Good Omens Part 1.mp3
Good Omens Part 2.mp3
cover.jpg
Según la documentación de ABS, cada carpeta dentro de la carpeta de un autor se trata como un libro separado, y cada archivo de audio dentro de la carpeta de un libro se trata como un capítulo o parte. Los libros extraídos de varios CDs o descargados como archivos divididos funcionan perfectamente — pon todas las partes en la misma carpeta del libro y ABS se encarga del orden por nombre de archivo.
La obtención de metadatos se ejecuta automáticamente durante el escaneo de la biblioteca. ABS consulta Audible y OpenLibrary por título y autor. Para los audiolibros publicados comercialmente, la tasa de coincidencia es alta. Para grabaciones de LibriVox, títulos de dominio público o cualquier cosa con un formato de nombre inusual, usa la coincidencia manual en la interfaz web: abre el libro, haz clic en el ícono de editar y usa la función Match para buscar por ASIN, ISBN o título. Esto también te permite anclar a una edición específica de Audible si la coincidencia automática tomó la incorrecta.
Copias de seguridad y actualizaciones
Tus archivos de audiolibros están en el bind mount y ya están a salvo de la pérdida del contenedor. Lo que necesita copia de seguridad es el directorio de configuración de ABS — por defecto /home/audiobookshelf/.audiobookshelf — que contiene la base de datos SQLite, las cuentas de usuario, el progreso de reproducción y las portadas en caché. Un enfoque sencillo desde el host de Proxmox:
# Reemplaza 100 con el ID de tu contenedor
pct exec 100 -- tar czf /tmp/abs-backup.tar.gz /home/audiobookshelf/.audiobookshelf
pct pull 100 /tmp/abs-backup.tar.gz /mnt/storage/backups/abs-$(date +%Y%m%d).tar.gz
Agrega eso a un cron job o a un flujo de trabajo de n8n y tendrás snapshots diarios de configuración sin ningún esfuerzo manual.
Para las actualizaciones, el PPA gestiona todo a través del apt estándar:
apt update && apt upgrade audiobookshelf -y
systemctl restart audiobookshelf
ABS publica actualizaciones con frecuencia — el changelog está en GitHub. El PPA suele estar al día con las versiones en uno o dos días tras cada etiqueta upstream.
Consideraciones de hardware
Como ABS no realiza transcodificación, apenas registra uso en la gráfica de CPU incluso con varios usuarios transmitiendo simultáneamente. Si tu homelab ejecuta otros servicios junto a ABS — Jellyfin, Nextcloud, un LLM local — el cuello de botella será la RAM en lugar de la CPU. El Beelink SER5 mini PC (~$299) con su Ryzen 5 5500U y 16 GB de RAM gestiona bien un stack completo de homelab. Si quieres más margen, un upgrade de Crucial 32GB DDR4 SODIMM (~$59) da a todos tus contenedores LXC espacio suficiente para funcionar sin necesidad de una nueva máquina.
El throughput de red tampoco es un problema. Según la documentación de ABS, los archivos de audio se transmiten a su tasa de bits nativa — un audiolibro M4B típico va a 128 kbps, lo que es insignificante en una LAN doméstica o incluso en una conexión a internet modesta. Múltiples usuarios simultáneos necesitarían números extremos para que el ancho de banda de red se convirtiera en un cuello de botella.
Donde el hardware sí importa es en el E/S de disco, específicamente cuando ABS escanea una biblioteca grande por primera vez. Una biblioteca de varios miles de archivos en un disco giratorio lento puede tardar varios minutos en indexarse. Un disco NVMe para el sistema operativo del host de Proxmox acelera considerablemente las operaciones de metadatos del contenedor, incluso cuando los archivos de audiolibros en sí viven en un HDD separado.
Solución de problemas comunes
Los archivos no aparecen después del escaneo: Desde dentro del contenedor, ejecuta ls /audiobooks. Si el directorio está vacío o no se encuentra, el bind mount no está conectado — verifica que el directorio del host de Proxmox exista y que hayas reiniciado el contenedor después de editar el archivo de configuración. También confirma que la ruta en ABS Settings → Libraries coincida exactamente con el punto de montaje.
Errores de permisos en el escaneo: El usuario del sistema audiobookshelf necesita acceso de lectura a los archivos montados. En el host de Proxmox, ejecuta chmod -R 755 /mnt/storage/audiobooks. Si tus archivos pertenecen a un usuario diferente, chown -R 1000:1000 /mnt/storage/audiobooks alinea la propiedad con el mapeo de usuario predeterminado del LXC sin privilegios.
La app móvil no sincroniza la posición: La causa más común es la falta de configuración de WebSocket en el proxy inverso. Para Nginx Proxy Manager, activa "Websockets Support" en la pestaña Advanced del proxy host. Para Traefik, no se necesita configuración adicional — los WebSockets pasan por defecto.
Alta memoria después del escaneo de la biblioteca: Según la documentación de ABS, el servidor almacena en caché los metadatos y las imágenes de portada en memoria durante un escaneo. La memoria vuelve a la línea base una vez que el escaneo se completa. En una biblioteca de varios cientos de libros, espera que el proceso tarde de 5 a 10 minutos antes de que el uso de recursos se normalice.
Conclusión
Audiobookshelf es una de esas apps autoalojadas que se siente genuinamente pulida — los clientes móviles son fluidos, la coincidencia de metadatos es confiable y el servidor necesita casi ningún mantenimiento una vez que está en funcionamiento. La instalación por PPA en Proxmox LXC mantiene la configuración limpia: sin capa de Docker, sin archivos compose que mantener y apt upgrade gestiona cada actualización futura en segundos.
El caso de uso que hace a ABS especialmente atractivo para setups de homelab es la propiedad de biblioteca en múltiples formatos. Puedes apuntarlo a una mezcla de compras M4B, rips MP3, descargas OPUS de youtube-dl y grabaciones FLAC — todo en la misma biblioteca, navegado a través de la misma interfaz. ABS los lee todos nativamente y los presenta de forma uniforme a la app móvil.
Si quieres ejecutar ABS junto a otros servicios multimedia, la guía completa de self-hosting con Proxmox LXC cubre la arquitectura de múltiples servicios. ABS encaja perfectamente junto a Jellyfin, Navidrome o Immich — cada uno en su propio contenedor, cada uno actualizado de forma independiente, compartiendo el mismo host de Proxmox subyacente. Todo el stack de audio y video puede ejecutarse en un solo mini PC con margen de sobra.
¿Quieres algo así para tu negocio?
Instalo infraestructura privada y autoalojada en Proxmox: IA, automatización y herramientas internas en hardware que es tuyo, documentado y entregado. Ver el stack de IA privada →
¿No sabes qué necesitas? Agenda una llamada gratis.