Con Wallabag Docker Compose montas tu propio «leer más tarde»: guardas cualquier artículo con un clic, el servidor lo descarga, le quita anuncios, banners y ventanas de cookies, y te lo deja en texto limpio para leerlo cuando quieras, incluso sin conexión.
Es la alternativa libre a Pocket e Instapaper, con una diferencia que importa: tu biblioteca no desaparece el día que la empresa cierre el servicio o cambie de precio. Y ya hemos visto unos cuantos casos.
Al terminar este artículo tendrás
- El servicio funcionando con PostgreSQL y datos persistentes.
- Acceso por HTTPS y la extensión del navegador conectada.
- Aplicaciones móviles sincronizando tu biblioteca.
- Exportación a EPUB para leer en el lector de libros electrónicos.
Qué resuelve Wallabag Docker Compose
La idea de Wallabag Docker Compose es sencilla y por eso funciona tan bien. Cuando guardas una dirección, el servidor no se limita a apuntarla: descarga el contenido, lo procesa y almacena una copia del texto en su base de datos. Eso tiene tres consecuencias muy prácticas.
- Sobrevive al enlace roto. Si mañana el medio borra el artículo o mete un muro de pago, tu copia sigue ahí.
- Se lee sin conexión. En el metro, en el avión o donde no llegue la cobertura.
- Sin distracciones. Ni publicidad, ni vídeos que se reproducen solos, ni ventanas de suscripción.
Conviene distinguirlo de otras piezas parecidas. Un lector de RSS como FreshRSS te trae novedades de las fuentes que sigues; esto guarda cosas concretas que te encuentras por ahí para leerlas con calma. Se complementan bien: descubres en uno, archivas en el otro.
Requisitos previos de Wallabag Docker Compose
| Recurso | Mínimo | Recomendado |
|---|---|---|
| RAM | 512 MB | 1 GB |
| CPU | 1 núcleo | 2 núcleos |
| Disco | 2 GB | 10 GB |
| Docker Engine | 24.x | Última estable |
Es de los servicios más ligeros que puedes autoalojar, así que Wallabag Docker Compose corre sin problema en una Raspberry Pi o en el VPS más barato. El disco crece despacio: los artículos son texto, y solo las imágenes ocupan algo.
Instalar Wallabag Docker Compose paso a paso
Paso 1: preparar el entorno
Como en todo Wallabag Docker Compose, las credenciales van fuera del fichero principal. El valor de SECRET lo usa la aplicación para firmar sesiones, así que genera uno aleatorio de verdad.
mkdir -p ~/wallabag && cd ~/wallabag
mkdir -p ./imagenes ./postgres
cat > .env <<EOF
POSTGRES_USER=wallabag
POSTGRES_PASSWORD=$(openssl rand -hex 24)
POSTGRES_DB=wallabag
WALLABAG_SECRET=$(openssl rand -hex 32)
WALLABAG_DOMAIN=https://leer.midominio.es
EOF
chmod 600 .env
Revisa el fichero generado antes de continuar. Si openssl no estuviera disponible, pon cadenas largas escritas a mano, pero no dejes valores de ejemplo.
Paso 2: escribir el docker-compose.yml
La configuración oficial de Wallabag Docker Compose usa MariaDB, pero aquí vamos con PostgreSQL, que rinde mejor con bibliotecas grandes y es el motor que más recomienda la comunidad para este servicio.
services:
wallabag:
image: wallabag/wallabag:latest
container_name: wallabag
restart: unless-stopped
depends_on:
db:
condition: service_healthy
environment:
- SYMFONY__ENV__DATABASE_DRIVER=pdo_pgsql
- SYMFONY__ENV__DATABASE_HOST=db
- SYMFONY__ENV__DATABASE_PORT=5432
- SYMFONY__ENV__DATABASE_NAME=${POSTGRES_DB}
- SYMFONY__ENV__DATABASE_USER=${POSTGRES_USER}
- SYMFONY__ENV__DATABASE_PASSWORD=${POSTGRES_PASSWORD}
- SYMFONY__ENV__SECRET=${WALLABAG_SECRET}
- SYMFONY__ENV__DOMAIN_NAME=${WALLABAG_DOMAIN}
- SYMFONY__ENV__SERVER_NAME=Mi biblioteca
- SYMFONY__ENV__LOCALE=es
- SYMFONY__ENV__FROM_EMAIL=wallabag@midominio.es
- POPULATE_DATABASE=true
ports:
- "8088:80"
volumes:
- ./imagenes:/var/www/wallabag/web/assets/images
db:
image: postgres:16-alpine
container_name: wallabag-db
restart: unless-stopped
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
volumes:
- ./postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
interval: 10s
timeout: 5s
retries: 5
Presta atención a POPULATE_DATABASE: crea el esquema en el primer arranque. Déjalo en true ahora y ponlo en false después, para que un reinicio accidental no intente reinicializar nada.
Paso 3: levantar y entrar
docker compose up -d
docker compose logs -f wallabag
El primer arranque de Wallabag Docker Compose tarda algo más porque crea las tablas. Cuando termine, entra en http://tu-servidor:8088.
Advertencia: cambia las credenciales por defecto
La instalación crea el usuario wallabag con contraseña wallabag, y no hay forma de fijarla por variable de entorno. Cámbiala en la configuración de usuario antes de publicar el servicio en Internet, y desactiva el registro público de cuentas si va a ser solo para ti.
Paso 4: publicar con HTTPS
Las extensiones de navegador y las aplicaciones móviles necesitan una URL estable con certificado. Con Traefik y certificados automáticos se resuelve en cinco etiquetas.
labels:
- "traefik.enable=true"
- "traefik.http.routers.wallabag.rule=Host(`leer.midominio.es`)"
- "traefik.http.routers.wallabag.entrypoints=websecure"
- "traefik.http.routers.wallabag.tls.certresolver=letsencrypt"
- "traefik.http.services.wallabag.loadbalancer.server.port=80"
El valor de DOMAIN_NAME tiene que coincidir exactamente con la URL pública, incluido el https://. Si no cuadra, los enlaces internos y la exportación de artículos saldrán rotos: es el fallo más habitual de Wallabag Docker Compose tras poner un proxy delante.
Guardar artículos en Wallabag Docker Compose desde cualquier sitio
Aquí es donde Wallabag Docker Compose deja de ser un servidor y pasa a ser útil de verdad. Hay cuatro vías de entrada y conviene configurarlas todas.
| Vía | Para qué |
|---|---|
| Extensión de navegador | Firefox y Chrome, con un botón en la barra. |
| Aplicaciones móviles | Android e iOS, con sincronización y lectura sin conexión. |
| Bookmarklet | Un enlace en marcadores, útil en navegadores sin extensión. |
| API REST | Para automatizar desde scripts o desde tu gestor de flujos. |
Las aplicaciones y la extensión te pedirán la URL del servidor y tus credenciales; para la API necesitarás crear un cliente desde la interfaz, que te dará un identificador y un secreto.
Merece la pena detenerse en las aplicaciones móviles, porque son las que más uso acaban teniendo. Se integran en el menú de compartir del sistema, así que guardar algo desde el navegador del teléfono, desde una red social o desde un mensaje es cuestión de dos toques. Además descargan los artículos al dispositivo, de modo que la lectura sin conexión funciona de verdad y no solo sobre el papel.
Un detalle a tener en cuenta si publicas el servicio solo dentro de tu red o detrás de una VPN: la sincronización fallará cuando estés fuera de casa. O aceptas exponerlo a Internet con HTTPS y contraseñas sólidas, o asumes que la sincronización ocurre al volver a tu red. Ambas opciones son razonables; lo que no funciona es esperar sincronización permanente con el servicio cerrado al exterior.
curl -X POST https://leer.midominio.es/oauth/v2/token \
-d grant_type=password \
-d client_id=TU_CLIENT_ID \
-d client_secret=TU_CLIENT_SECRET \
-d username=tuusuario \
-d password=tucontrasena
Con el token que devuelve puedes añadir artículos desde cualquier automatismo, que es como mucha gente conecta su lector de RSS con su archivo de lectura.
Etiquetas y exportación en Wallabag Docker Compose
Dos funciones de Wallabag Docker Compose que se descubren tarde y que cambian bastante la experiencia diaria.
La primera son las reglas de etiquetado automático. Se definen con expresiones sencillas y ahorran el trabajo manual de clasificar.
domainName = "tutorialesdevops.es"
readingTime <= 5
title matches "kubernetes"
language = "es"
Cada regla aplica una etiqueta a los artículos que la cumplen en el momento de guardarlos. Con tres o cuatro bien pensadas, la biblioteca se organiza sola.
La segunda es la exportación. Cualquier artículo, o una etiqueta entera, se descarga en EPUB, MOBI, PDF o texto plano. Eso convierte tu archivo en material de lectura para el libro electrónico: seleccionas la etiqueta «pendiente», exportas a EPUB y te llevas veinte artículos al Kindle o al Kobo.
Cómo extrae el contenido y por qué a veces falla
Entender esta parte ahorra bastantes frustraciones. Cuando guardas una dirección, Wallabag Docker Compose descarga el HTML y aplica un motor de extracción que identifica cuál de todos esos bloques es el artículo y cuáles son menú, pie, publicidad o «también te puede interesar».
Ese motor combina heurísticas generales con un catálogo de reglas específicas por sitio que mantiene la comunidad. Para los medios grandes casi siempre acierta; para blogs pequeños con maquetación rara, a veces recorta de más o de menos.
- Contenido tras muro de pago. Si no puedes leerlo en el navegador sin suscripción, el servidor tampoco. No es un fallo, es lo esperable.
- Páginas construidas con JavaScript. El servidor ve el HTML inicial, que en muchas aplicaciones modernas viene prácticamente vacío.
- Sitios que bloquean peticiones automatizadas. Algunos devuelven una página de verificación en lugar del artículo.
La salida práctica en los tres casos es la misma: la interfaz permite editar el contenido de un artículo a mano, así que puedes pegar el texto y quedarte con tu copia. Menos elegante, pero resuelve.
Mantenimiento de Wallabag Docker Compose
En Wallabag Docker Compose hay dos cosas que respaldar: la base de datos, donde vive absolutamente todo el texto, y el directorio de imágenes.
docker compose exec -T db pg_dump -U wallabag wallabag \
| gzip > wallabag-$(date +%F).sql.gz
tar czf wallabag-imagenes-$(date +%F).tar.gz ./imagenes
Programa el volcado a diario y llévatelo fuera del servidor, por ejemplo con Duplicati y copias cifradas. Si vienes de otro servicio, la importación admite ficheros de Pocket, Instapaper y del propio formato de la aplicación, así que no empiezas de cero. Y para afinar el motor de base de datos, sirve lo visto en el tutorial de PostgreSQL con Docker Compose.
Una rutina que funciona
Después de un tiempo usándolo, el patrón que mejor resultado da es este. Durante la semana guardas sin pensar: cualquier cosa que te llame la atención va al archivo con un clic, sin abrir veinte pestañas ni prometerte leerla «ahora mismo». El sábado abres la biblioteca y decides qué merece la pena de verdad, que suele ser bastante menos de lo que guardaste.
Lo que queda se etiqueta como pendiente y se exporta a EPUB de una tacada. Media hora de lectura en el lector de libros electrónicos, sin pantalla retroiluminada ni notificaciones, rinde muchísimo más que la misma media hora saltando entre pestañas del navegador.
Y hay un efecto secundario interesante: ver la lista crecer sin control es un aviso bastante honesto de cuánto estabas guardando por inercia y no por interés real. Al mes o dos, uno empieza a guardar bastante menos y mejor.
Problemas frecuentes con Wallabag Docker Compose
| Síntoma | Causa | Solución |
|---|---|---|
| Error 500 al instalar | Base de datos aún no lista | Usar el healthcheck del ejemplo |
| Enlaces con la IP interna | DOMAIN_NAME mal puesto | Poner la URL pública completa |
| Artículo guardado sin texto | Web con mucho JavaScript | Editar el contenido a mano |
| La extensión no conecta | Certificado o URL | Comprobar HTTPS válido |
| Sin correo de recuperación | Falta configurar SMTP | Definir MAILER_DSN |
El tercero merece explicación porque no tiene arreglo perfecto en Wallabag Docker Compose. Las páginas que construyen todo el contenido con JavaScript en el navegador no se pueden extraer bien desde el servidor, que solo ve el HTML inicial. La comunidad mantiene reglas específicas para muchos sitios conocidos, pero siempre habrá alguno que se resista.
Conclusión sobre Wallabag Docker Compose
Wallabag Docker Compose es de esos servicios pequeños que acabas usando a diario sin darte cuenta. Consume poquísimo, no requiere mantenimiento más allá de las copias, y resuelve un problema real: la lista de cosas que quieres leer y nunca lees porque están repartidas entre veinte pestañas abiertas.
Instálalo, pon la extensión en el navegador y dale dos semanas. Cuando veas la biblioteca crecer con lo que antes se perdía, entenderás por qué la gente que lo prueba ya no lo quita. Tienes el despliegue oficial en el repositorio de Docker del proyecto, la documentación completa en su manual, el código en GitHub, las imágenes publicadas en Docker Hub, información del proyecto en su web oficial y más ideas en los tutoriales de Docker Compose.
Preguntas frecuentes sobre Wallabag Docker Compose
¿Puedo importar mi cuenta de Pocket?
Sí, desde el menú de importación. Trae los artículos guardados con sus etiquetas y su estado de lectura. Según el tamaño de la biblioteca puede tardar un rato, porque descarga el contenido de cada uno.
¿Sirve para varias personas?
Sí, admite varios usuarios con bibliotecas independientes en la misma instancia. Puedes dejar el registro abierto o crear tú las cuentas desde la administración, que es lo aconsejable si está publicado en Internet.
¿Guarda también las imágenes del artículo?
Puede hacerlo, y por eso el ejemplo monta un directorio para ellas. Es lo que permite leer con las ilustraciones sin conexión, a costa de algo más de disco.
¿En qué se diferencia de un gestor de marcadores?
Un gestor de marcadores guarda la dirección; esto guarda el contenido. Si la página cambia o desaparece, el marcador se queda en nada y aquí conservas el texto tal como estaba cuando lo archivaste.
¿Cómo actualizo a una versión nueva?
Descargando la imagen nueva y recreando el contenedor. Haz copia de la base de datos antes: las actualizaciones ejecutan migraciones de esquema y volver atrás sin respaldo no es sencillo.
