Por qué alojar tus finanzas en tu propio servidor
Confiar los datos financieros a un tercero implica aceptar sus condiciones de almacenamiento, sus prácticas de uso de datos y su continuidad comercial. Varios servicios populares aumentaron sus precios entre un 30 y un 60 por ciento entre 2023 y 2025, o simplemente cerraron. El alojamiento propio responde a una preocupación legítima: «mis datos financieros son demasiado sensibles para un servidor que gestiono yo mismo». En la práctica, un VPS correctamente configurado ofrece cifrado en tránsito (TLS), cifrado del volumen PostgreSQL a nivel de disco, copias de seguridad automatizadas y acceso restringido a tu dirección IP o red privada. Eso representa una superficie de ataque mucho menor que un SaaS que agrega datos de decenas de miles de usuarios.
Qué ofrece Maybe
Maybe combina gestión presupuestaria, seguimiento de inversiones y cálculo del patrimonio neto en una sola interfaz autoalojable.
- Panel de patrimonio neto (activos, pasivos y evolución en el tiempo)
- Seguimiento de transacciones con categorización automática y reglas personalizables
- Vinculación de cuentas bancarias vía Plaid (EE.UU. y Canadá) o introducción manual
- Seguimiento de inversiones y carteras con precios en tiempo real vía Synth Finance
- Presupuestos y metas de ahorro por categoría
- Informes mensuales y anuales exportables
- Asistente IA opcional (requiere clave OpenAI) para análisis de gastos
- Interfaz multicuenta: pareja, miembros del hogar o clientes
Requisitos del sistema
Maybe es una aplicación Ruby on Rails que funciona con cuatro servicios Docker: el servidor web, un worker Sidekiq para tareas asíncronas, PostgreSQL 16 y Redis. Para uso personal o un equipo pequeño, un VPS con 2 vCPU y 2 GB de RAM es suficiente. Para uso profesional con varios usuarios y sincronización bancaria activa, se recomiendan 4 GB de RAM. El puerto 3000 debe ser accesible (o redirigido desde el puerto 443 mediante un proxy inverso). Reserva 5 GB de almacenamiento para los datos de la aplicación y la base de datos, más el espacio para copias de seguridad.
Instalar Maybe en un VPS con Docker Compose
La instalación se basa en Docker Compose y un archivo .env. Los pasos parten de un VPS Debian 12 limpio.
Instalar Docker Engine
En Debian/Ubuntu:
curl -fsSL https://get.docker.com | sh. Verifica la instalación condocker run hello-world. Docker Compose v2 está incluido desde Docker Engine 23.Crear el directorio de trabajo
Ejecuta
mkdir -p /opt/maybe && cd /opt/maybe. Este directorio contendrá el archivocompose.ymly el archivo.env.Descargar el archivo Compose oficial
Descarga el ejemplo del proyecto:
curl -o compose.yml https://raw.githubusercontent.com/maybe-finance/maybe/main/compose.example.yml. Este archivo define los cuatro servicios (web, worker, db, redis) y los volúmenes con nombre.Crear el archivo .env
Crea
/opt/maybe/.envcon el siguiente contenido:SECRET_KEY_BASE=$(openssl rand -hex 64),POSTGRES_PASSWORD=una_contraseña_fuerte,SELF_HOSTED=true,APP_DOMAIN=finanzas.tu-dominio.com. Genera una clave secreta robusta conopenssl rand -hex 64.Iniciar los servicios
Desde
/opt/maybe, ejecutadocker compose up -d. Docker descargará las imágenesghcr.io/maybe-finance/maybe:stable, PostgreSQL 16 y Redis, y luego arrancará los contenedores. La inicialización de la base de datos tarda entre uno y dos minutos.Configurar un proxy inverso
Coloca Nginx o Caddy frente al puerto 3000 para servir Maybe por HTTPS. Con Caddy: añade
finanzas.tu-dominio.com { reverse_proxy localhost:3000 }en tuCaddyfile. Caddy gestiona automáticamente el certificado Let's Encrypt.Crear la primera cuenta
Accede a
https://finanzas.tu-dominio.com. Maybe muestra un formulario de registro en el primer arranque. En modoSELF_HOSTED=true, la primera cuenta creada se convierte en administrador. Desactiva los registros públicos en la configuración si la instancia es personal.
Vincular cuentas bancarias
Maybe admite dos métodos para vincular cuentas. La conexión automática vía Plaid cubre bancos de EE.UU. y Canadá: añade las credenciales de Plaid API (PLAID_CLIENT_ID y PLAID_SECRET) en .env, y luego vincula las cuentas desde la interfaz. Para bancos europeos o latinoamericanos, la introducción manual de transacciones sigue siendo el método principal. Maybe acepta la importación de archivos CSV en formato estándar, lo que permite migrar desde una hoja de cálculo o un exportado del banco. El seguimiento de inversiones se apoya en la API de Synth Finance para cotizaciones: añade SYNTH_API_KEY para activar la valoración automática de carteras.
Copia de seguridad de PostgreSQL y cifrado
La base de datos PostgreSQL se almacena en el volumen Docker maybe_postgres-data. Para hacer copias de seguridad periódicas: crea un script que ejecute docker exec maybe-db-1 pg_dump -U maybe_user maybe_production | gzip > /backups/maybe-$(date +%Y%m%d).sql.gz, y luego prográmalo con un temporizador systemd o cron. Para una estrategia 3-2-1 completa, envía estos volcados cifrados a un almacenamiento de objetos compatible con S3 usando Restic o rclone. Maybe también admite almacenar los archivos de la aplicación en Amazon S3 o Cloudflare R2 mediante las variables ACTIVE_STORAGE_SERVICE, S3_ACCESS_KEY_ID y las claves relacionadas. El cifrado de datos sensibles en la base de datos (claves API, tokens) se basa en las claves ACTIVE_RECORD_ENCRYPTION_* — si no las defines explícitamente, se derivan de tu SECRET_KEY_BASE.
Restringe el acceso a tu instancia Maybe colocándola detrás de una VPN (Tailscale, Headscale) o filtrando el acceso por IP en Nginx con allow 203.0.113.10; deny all;. Una instancia financiera personal no necesita estar expuesta públicamente: el acceso privado reduce drásticamente la superficie de ataque sin comprometer la usabilidad.
Resolución de problemas: errores frecuentes
Los errores más comunes tras instalar Maybe en un VPS, y sus soluciones.
web exited with code 1al arrancar: la base de datos aún no estaba lista. Comprueba condocker compose logs dbque PostgreSQL ha iniciado, y luego ejecutadocker compose restart web worker.- Página en blanco o error 500 después del registro: verifica que
SECRET_KEY_BASEestá definido y no está vacío en.env. Una clave ausente impide que Rails descifre la sesión. PG::ConnectionBaden los logs web: la variableDB_HOSTdebe valerdb(el nombre del servicio Docker), nolocalhost. Revisa tu.env.- Las tareas asíncronas (sincronización bancaria, informes) no se ejecutan: el servicio
workerno está en marcha. Comprueba condocker compose psque los cuatro servicios están en estadorunning. - Regresión después de actualizar: tras
docker compose pull, ejecutadocker compose up --no-deps -d web workeren lugar dedocker compose up -dpara evitar recrear innecesariamente los contenedores de base de datos.
Comparativa: Maybe auto-alojado, YNAB y Monarch Money
Esta tabla compara Maybe autoalojado con las principales aplicaciones SaaS de finanzas personales.
Desplace la tabla
| Criterio | Maybe (auto-alojado) | YNAB | Monarch Money |
|---|---|---|---|
| Coste anual | Coste VPS (~5-10 €/mes) | 109 $/año | 99,99 $/año |
| Control de datos | Total — datos en tu servidor | Ninguno — datos en YNAB | Ninguno — datos en Monarch |
| Conexión bancaria | Plaid (EE.UU./Canadá) o manual | Plaid (EE.UU./Canadá/UE parcial) | Plaid (EE.UU./Canadá) |
| Seguimiento de inversiones | Sí (vía Synth Finance) | No nativo | Sí |
| Panel de patrimonio neto | Sí | No | Sí |
| Asistente IA | Opcional (requiere clave OpenAI) | No | Sí (incluido) |
| Mantenimiento requerido | Sí — actualizaciones manuales | No | No |
| Licencia | AGPLv3 (código abierto) | Propietaria | Propietaria |
Para profundizar
El artículo sobre alojar PostgreSQL en un VPS detalla la configuración fina del motor de base de datos para cargas de trabajo de producción. La estrategia de copia de seguridad 3-2-1 con Restic y S3 explica cómo configurar una retención cifrada y versionada. Para proteger el acceso a tu instancia Maybe sin una VPN completa, el artículo sobre Nextcloud ofrece un ejemplo de configuración Nginx con autenticación básica.