Wallos es una aplicación web de código abierto, que alojas tú, para llevar la cuenta de tus suscripciones: qué pagas, cuándo vence y cuánto te cuesta al año. Instalé la versión 5.8.3 con Docker el 7 de octubre de 2026, cargué 7 suscripciones realistas en euros, conecté un servidor ntfy propio para los avisos y restauré una copia de seguridad. Todo lo que ves aquí lo ejecuté yo. También tienes la versión en inglés.

Puntos clave

  • La descripción del proyecto dice: "Wallos is a powerful, open-source, and self-hostable web application designed to empower you in managing your finances with ease."
  • La imagen bellamy/wallos:5.8.3 pesa 301 MB y guarda todo en un fichero SQLite, así que con montar dos carpetas tienes los datos a salvo.
  • Mis 7 suscripciones suman 104,14 € al mes y 1.249,68 € al año, con una de ellas en dólares convertida a euros.
  • Para avisar a un ntfy en tu red interna tienes que declararlo en la variable SSRF_ALLOWLIST; sin ella Wallos lo bloquea.
  • El aviso solo salta el día exacto que configuras: con 3 días de antelación, una renovación que vence en 2 días no avisa.
  • La copia de seguridad es un zip de 37 ficheros y 313.518 bytes que se restaura desde la pantalla de administración.

Qué hace Wallos y cuándo te conviene

Wallos guarda cada suscripción con su precio, su ciclo de cobro, su categoría y su método de pago, y te dice cuánto gastas al mes, al año y por categoría. Es una alternativa a la hoja de cálculo que olvidas actualizar: te avisa antes de cada cobro. Si ya montaste ntfy o Gotify para recibir notificaciones, Wallos se conecta a cualquiera de los dos.

Lo bueno es que no necesita base de datos aparte: usa SQLite dentro de la carpeta db. Lo menos bueno es que no tiene aplicación móvil propia; se usa desde el navegador, aunque admite avisos push en el móvil a través de ntfy.

Instalar Wallos con Docker Compose

Creé un compose.yml con Wallos y un ntfy para probar los avisos. Los puertos son los de mi prueba; cámbialos a los tuyos:

services:
  wallos:
    image: bellamy/wallos:5.8.3
    container_name: wallos
    ports: ["8282:80"]
    environment:
      TZ: Europe/Madrid
      SSRF_ALLOWLIST: ntfy
    volumes:
      - ./db:/var/www/html/db
      - ./logos:/var/www/html/images/uploads/logos
  ntfy:
    image: binwiederhier/ntfy:v2.15.0
    container_name: ntfy
    command: serve
    ports: ["8283:80"]
    environment:
      TZ: Europe/Madrid

Lo levanté con docker compose up -d. Dos detalles que conviene fijar:

  1. TZ decide cuándo avisa. El cron del contenedor lanza los avisos a las 09:00 de su zona horaria.
  2. Los dos volúmenes son tu copia viva. db contiene wallos.db y logos guarda los iconos que subas.

Abre http://localhost:8282/registration.php y crea el usuario administrador. La primera cuenta que se registra es la administradora. En mi instalación, el formulario mostró un aviso de PHP por main_currency al enviarlo, pero el usuario se creó y la divisa principal quedó en euro, que es la primera de la lista.

Añadir suscripciones en euros con categorías y métodos de pago

Wallos trae 17 categorías (más "Sin categoría"), 31 métodos de pago con su logotipo y 34 divisas. Yo añadí una categoría propia, Homelab, desde Ajustes, y luego di de alta 7 suscripciones con "Nueva suscripción". Los importes son valores de ejemplo míos, no precios oficiales:

Suscripción Importe Ciclo Categoría Método de pago
Netflix 13,99 € mensual Entertainment Credit Card
Spotify 11,99 € mensual Music PayPal
Hetzner Cloud 4,49 € mensual Homelab SEPA
Dominio jacar-demo.es 12,00 € anual Technology Direct Debit
Seguro del hogar 286,50 € anual Insurance Bank Transfer
GitHub Pro 10,00 $ mensual Software Credit Card
Gimnasio 39,90 € mensual Health & Wellbeing Direct Debit

Los nombres de categorías y métodos salen en inglés porque dejé el idioma de la interfaz por defecto. En cada alta fijé la fecha de inicio y la del próximo pago, y activé los avisos en Netflix, el seguro y GitHub Pro. La pantalla de estadísticas lo normaliza todo a mes y da 104,14 € al mes y 1.249,68 € al año. El dominio cuenta como 1,00 € mensual y GitHub Pro se convierte de dólares.

Configurar la conversión de divisas

Con una suscripción en dólares, Wallos necesita tipos de cambio para sumar todo en euros. En Ajustes, en la sección de proveedor de divisas, elegí frankfurter.dev, que publica los tipos de referencia del Banco Central Europeo sin cuenta ni clave. Las otras dos opciones, fixer.io y apilayer.com, piden una clave gratuita.

Al guardar el proveedor, Wallos descargó los tipos al momento: el dólar quedó en 1,1242 por euro, y los 10 $ de GitHub Pro pasaron a contar como unos 8,90 € en el total. Después los refresca solo cada noche a las 02:00. El servicio de Frankfurter[1] es gratuito, pero depende de que tu servidor llegue a internet.

Configurar los avisos con ntfy

En Ajustes, bajo Notificaciones, abrí Ntfy y rellené el servidor http://ntfy, el tema wallos y una cabecera personalizada en JSON, {"Title": "Wallos", "Tags": "moneybag"}. Al pulsar "Probar" falló con este mensaje:

Security Block: The target IP/Port is private and not present in the Webhook Allowlist.

Wallos resuelve el nombre del servidor y bloquea las direcciones privadas para evitar ataques SSRF. En ellos, alguien usa la aplicación para llegar a tu red interna. Un ntfy en otro contenedor o en tu LAN es una dirección privada.

La solución es la variable SSRF_ALLOWLIST con el nombre o la IP del servidor, que ya incluye el compose.yml de arriba. Tras recrear el contenedor, "Probar" respondió "Notification sent successfully" y el mensaje apareció en el tema wallos de ntfy. El bloqueo solo aplica a destinos privados: con un ntfy público o detrás de HTTPS en un dominio, no hace falta tocar nada.

Después ajusté "Avisar con 3 días de antelación" y probé el aviso real ejecutando el trabajo programado a mano:

docker exec wallos php /var/www/html/endpoints/cronjobs/sendnotifications.php

En ntfy llegó un único mensaje:

GitHub Pro for $10.00 (In 3 days)

Netflix (en 2 días) y el seguro (en 1 día) no avisaron. Revisé el código: Wallos compara la diferencia de días con el valor configurado y avisa solo si es idéntico. Cada día que pasa el cron comprueba otra vez, así que Netflix avisará mañana por la mañana, pero si prefieres otro margen, elígelo por suscripción en "Avisarme" o cámbialo en Ajustes.

Si usas correo, Wallos también permite SMTP, y Gotify o Telegram están en la misma lista. La documentación de ntfy[2] explica las cabeceras que puedes añadir, como prioridad o etiquetas.

Copias de seguridad y restauración

En la pantalla de administración hay un botón "Backup" que descarga un zip. El mío, Wallos-Backup-20261007-0859.zip, contenía 37 ficheros y 313.518 bytes sin comprimir: wallos.db, el token de configuración, los iconos de los métodos de pago y la carpeta de logos.

Para comprobar que sirve borré 4 suscripciones directamente de la base de datos (quedaron 3) y subí el zip con el botón "Restaurar". Volvieron las 7. Dos precauciones:

  1. El zip lleva tus credenciales. wallos.db guarda en claro la contraseña SMTP y los datos de los canales de aviso; guarda la copia en un sitio privado.
  2. Haz también copia de las dos carpetas. Con db y logos en un volumen o ruta que ya respaldas, tienes lo mismo sin pasar por el botón.

Preguntas frecuentes

¿Wallos funciona sin conexión a internet?

Sí para todo lo básico. Necesita internet para actualizar los tipos de cambio, buscar logotipos y comprobar versiones nuevas.

¿Puedo cambiar el idioma de las categorías?

La interfaz se puede traducir desde el perfil, pero las categorías y métodos de pago que ya existen no cambian de nombre; edítalos a mano en Ajustes.

¿Cómo actualizo Wallos?

Cambia la etiqueta de la imagen, por ejemplo de 5.8.3 a la siguiente versión, y ejecuta docker compose up -d. Los datos viven en db, así que sobreviven al cambio; haz una copia antes.

Conclusión

Wallos hace bien una sola cosa: te enseña cuánto pagas y te avisa antes de cobrar. En mi prueba, 7 suscripciones sumaron 104,14 € al mes, y la instalación cabe en un compose.yml de 20 líneas. Lo único que no es obvio es el bloqueo de red interna y el aviso por día exacto, y los dos se resuelven con una variable y un ajuste.

Si ya tienes ntfy, el siguiente paso es apuntar Wallos a él y mover tu lista de suscripciones fuera de la hoja de cálculo.

Fuentes: [1] Repositorio de Wallos en GitHub[3], [2] Imagen bellamy/wallos en Docker Hub[4], [3] Frankfurter, tipos de cambio del BCE[1], [4] Publicar mensajes en ntfy[2].

Fuentes

  1. servicio de Frankfurter
  2. documentación de ntfy
  3. Repositorio de Wallos en GitHub
  4. Imagen bellamy/wallos en Docker Hub