Wallos: Rastreador de Suscripciones Personal Autohospedado

Publicado por


Wallos
Gestor de Suscripciones Autohospedado

Wallos: Rastreador de Suscripciones Personal Autohospedado

Controla tus gastos recurrentes, gestiona tu presupuesto y ahorra dinero con esta aplicación open source en PHP y SQLite

Vídeo tutorial en YouTube

Mira el vídeo completo sobre cómo instalar y usar Wallos: Rastreador de Suscripciones Personal Autohospedado en el canal GENBYTE:

¿Qué es Wallos: Rastreador de Suscripciones Personal Autohospedado?

Wallos es una aplicación web potente, de código abierto y autohospedada diseñada para permitirte gestionar tus finanzas con facilidad. Olvídate de hojas de cálculo complicadas y software financiero costoso: Wallos simplifica el proceso de seguimiento de gastos y te ayuda a obtener un mejor control sobre tu vida financiera. Al ser autohospedada, garantiza que tus datos financieros permanezcan privados y seguros en tu propio servidor.

Combina gestión de suscripciones, soporte multi-moneda con conversión automática vía API Fixer, notificaciones multicanal, autenticación OIDC/OAuth, recomendaciones con IA (ChatGPT, Gemini, Ollama local) y una interfaz responsive con modo oscuro, todo en un contenedor Docker listo para producción.

Características principales

Gestión de Suscripciones

Mantén el control de tus suscripciones y pagos recurrentes, asegurándote de no perder ninguna fecha de vencimiento.

Gestión de Categorías

Organiza tus gastos en categorías personalizables para obtener información sobre tus hábitos de gasto.

Soporte Multi-moneda

Wallos admite múltiples monedas, permitiéndote gestionar tus finanzas en la moneda de tu elección.

Conversión de Moneda

Integración con la API de Fixer para obtener tipos de cambio y ver todas tus suscripciones en tu moneda principal.

Privacidad de Datos

Al ser una aplicación autohospedada, Wallos garantiza que tus datos financieros permanezcan privados y seguros en tu propio servidor.

Personalización

Adapta Wallos a tus necesidades con categorías, monedas, temas y otras opciones de visualización personalizables.

Opciones de Ordenación

Permite ver tus suscripciones desde diferentes perspectivas.

Búsqueda de Logotipos

Wallos puede buscar en la web el logotipo de tus suscripciones si no los tienes disponibles para subir.

Vista Móvil

Wallos sobre la marcha con diseño responsive.

Estadísticas

Otra perspectiva sobre tus gastos con gráficos y resúmenes.

Notificaciones

Soporta múltiples métodos de notificación (email, Discord, Pushover, Telegram, Gotify y webhooks). Recibe avisos sobre tus próximos pagos.

Soporte Multi-idioma

Interfaz disponible en varios idiomas, con sistema de traducciones colaborativo.

OIDC con OAuth

Autenticación mediante proveedores OIDC/OAuth, configurable por variables de entorno o interfaz de administración.

Recomendaciones con IA

Integración con ChatGPT, Gemini u Ollama local para generar recomendaciones de optimización de suscripciones.

Requisitos del sistema

  • Docker Engine (recomendado 25+ para healthcheck con –start-interval)
  • Para instalación baremetal: NGINX o Apache
  • PHP 8.3 con módulos: curl, dom, gd, intl, openssl, sqlite3, zip, mbstring, fpm
  • SQLite (incluido en la imagen Docker)
  • Cron (dcron incluido en la imagen Docker para tareas programadas)

Instalación con Docker Compose

Docker Compose (Recomendado)

Despliegue estándar con volúmenes persistentes para base de datos y logotipos. Ajusta la zona horaria (TZ) según tu ubicación.

services:
wallos:
container_name: wallos
image: bellamy/wallos:latest
ports:
– "8282:80/tcp"
environment:
TZ: 'America/Toronto'
volumes:
– './db:/var/www/html/db'
– './logos:/var/www/html/images/uploads/logos'
restart: unless-stopped

Docker Compose sin Healthcheck

Versión para Docker Engine anterior a 25 o para arranque más rápido desactivando el healthcheck.

services:
wallos:
container_name: wallos
image: bellamy/wallos:latest
ports:
– "8282:80/tcp"
environment:
TZ: 'America/Toronto'
volumes:
– './db:/var/www/html/db'
– './logos:/var/www/html/images/uploads/logos'
restart: unless-stopped
healthcheck:
test: ["NONE"]

Docker Run

Comando equivalente a docker run para despliegue rápido sin compose. Reemplaza las rutas de volúmenes según tu sistema.

docker run -d –name wallos \
-v /path/to/config/wallos/db:/var/www/html/db \
-v /path/to/config/wallos/logos:/var/www/html/images/uploads/logos \
-e TZ=Europe/Berlin -p 8282:80 –restart unless-stopped \
bellamy/wallos:latest

Docker Run sin Healthcheck

Variante desactivando el healthcheck para compatibilidad con Docker <25.

docker run -d –name wallos \
-v /path/to/config/wallos/db:/var/www/html/db \
-v /path/to/config/wallos/logos:/var/www/html/images/uploads/logos \
-e TZ=Europe/Berlin -p 8282:80 –restart unless-stopped \
–health-cmd=NONE \
bellamy/wallos:latest

Acceder al proyecto

Acceso Web

Abre el navegador en http://<IP_DEL_HOST>:8282 (o el puerto configurado). En la primera ejecución se requiere crear una cuenta de usuario.

Demo Oficial

Disponible en https://demo.wallosapp.com (base de datos reiniciada cada 2 horas). Credenciales: usuario 'demo', contraseña 'demo'.

Configuración Inicial

Tras el primer acceso, ve a Ajustes para personalizar avatar, añadir miembros del hogar, gestionar categorías y monedas. Obtén una API Key gratuita en Fixer (https://fixer.io/#pricing_plan) y añádela en los ajustes para activar la conversión de moneda.

Casos de uso

  • Control de suscripciones personales y familiares (streaming, software, gimnasio, etc.)
  • Seguimiento de gastos recurrentes en múltiples monedas con conversión automática
  • Presupuesto doméstico con categorización y estadísticas visuales
  • Notificaciones automáticas de pagos próximos por email, Discord, Telegram, Gotify, Pushover o webhooks
  • Autenticación centralizada mediante proveedores OIDC/OAuth (Keycloak, Authentik, Google, Microsoft, etc.)
  • Análisis de optimización de suscripciones con recomendaciones generadas por IA (OpenAI, Gemini, Ollama local)
  • Auditoría de gastos anuales con tareas programadas de almacenamiento de costes totales

Configuración avanzada

Configuración OIDC/OAuth por Variables de Entorno

Wallos permite configurar OIDC declarativamente mediante variables de entorno que sobrescriben la base de datos en tiempo de ejecución. Si se define OIDC_ISSUER, se usa discovery automático de endpoints.

environment:
OIDC_ENABLED: 'true'
OIDC_PROVIDER_NAME: 'Mi Proveedor'
OIDC_CLIENT_ID: 'client-id'
OIDC_CLIENT_SECRET: 'client-secret'
# OIDC_CLIENT_SECRET_FILE: '/run/secrets/oidc_secret'
OIDC_ISSUER: 'https://auth.example.com'
OIDC_REDIRECT_URL: 'https://wallos.example.com/oidc/callback'
OIDC_SCOPES: 'openid email profile'
OIDC_AUTO_CREATE_USER: 'true'
OIDC_DISABLE_PASSWORD_LOGIN: 'false'
OIDC_REQUIRE_EMAIL_VERIFIED: 'true'

Lista de Permitidos SSRF (SSRF_ALLOWLIST)

Permite conexiones a endpoints privados (webhooks, SMTP, OIDC) sin pasar por la UI de administración. Acepta lista separada por comas de hosts/IPs con puerto opcional.

environment:
SSRF_ALLOWLIST: 'auth.example.com,192.168.1.100:8123,webhook.internal'

Tareas Programadas (Cron) Incluidas

La imagen Docker incluye dcron con los siguientes jobs: actualización de próximo pago (01:00), tipos de cambio (02:00), notificaciones de cancelación (08:00), notificaciones generales (09:00), emails de verificación (cada 2 min), emails de reset password (cada 2 min), comprobación de actualizaciones (cada 6h), coste anual total (lunes 01:30), recomendaciones IA semanales (lunes 03:30) y mensuales (día 1 a las 04:00). Los logs se guardan en /var/log/cron/.

# Los jobs están preconfigurados en /etc/cron.d/cronjobs dentro del contenedor.
# Para ver logs:
docker exec wallos tail -f /var/log/cron/updatenextpayment.log

API REST

Wallos expone una API documentada para interacción programática. Documentación en https://api.wallosapp.com/. Requiere autenticación (token o sesión).

# Ejemplo de uso con curl (requiere token de API)
curl -H "Authorization: Bearer TU_TOKEN" https://tu-wallos.example.com/api/v1/subscriptions

Recomendaciones con IA

Configura proveedor de IA en Ajustes > IA: OpenAI (ChatGPT), Google Gemini u Ollama local. Las recomendaciones se generan vía cron (semanal/mensual) o manualmente desde la interfaz.

# Variables de entorno para proveedores IA (opcional, también configurable en UI)
# OPENAI_API_KEY=sk-…
# GEMINI_API_KEY=…
# OLLAMA_URL=http://ollama:11434

Gestión y mantenimiento

Actualización de Imagen Docker

Descarga la nueva imagen y recrea el contenedor manteniendo los volúmenes. Los datos persisten en ./db y ./logos.

docker pull bellamy/wallos:latest
cd /ruta/a/docker-compose
docker compose up -d –force-recreate

Actualización Baremetal

Vuelve a descargar el repositorio o ejecuta git pull. Verifica requisitos PHP. Ejecuta migraciones accediendo a /endpoints/db/migrate.php o por CLI: php /var/www/html/endpoints/db/migrate.php

cd /var/www/html
git pull
php endpoints/db/migrate.php

Copias de Seguridad

Respalda el directorio ./db (contiene wallos.db SQLite) y ./logos. Para backup en caliente de SQLite, usa la herramienta sqlite3 con .backup o copia el archivo tras detener el contenedor.

# Backup en frío (contenedor detenido)
docker stop wallos
cp -r ./db ./db_backup_$(date +%F)
cp -r ./logos ./logos_backup_$(date +%F)
docker start wallos

Healthcheck y Logs

Healthcheck integrado en /health.php (intervalo 2m, timeout 2s). Logs de PHP-FPM y Nginx en stdout/stderr del contenedor. Logs de cron en /var/log/cron/ dentro del contenedor.

docker logs wallos –tail 100 -f
# Logs de cron
docker exec wallos ls -la /var/log/cron/

Migración de Base de Datos

Las migraciones se ejecutan automáticamente al registrar el primer usuario o al acceder a /endpoints/db/migrate.php. En actualizaciones, ejecuta la migración manualmente si no se lanza automáticamente.

docker exec wallos php /var/www/html/endpoints/db/migrate.php

Stack técnico

  • PHP 8.3 (FPM)
  • SQLite 3 (base de datos embebida)
  • Nginx (servidor web y proxy reverso interno)
  • Docker / Docker Compose
  • dcron (tareas programadas)
  • Fixer API (conversión de moneda)
  • OIDC/OAuth 2.0 (autenticación federada)
  • OpenAI API / Google Gemini API / Ollama (IA local)
  • JavaScript vanilla (frontend)
  • CSS con soporte modo oscuro/claro
  • GPL-3.0 (licencia)

Referencias oficiales

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *