Guía de despliegue

Alojar Actual Budget en un VPS: la alternativa privada a YNAB

Desplegar en un VPS Cloud →

Tutorial

Alojar Actual Budget en un VPS: la alternativa privada a YNAB

Autoalojamiento12 min de lectura11 pasos

YNAB demostró que el presupuesto de base cero (método de los sobres) funciona, pero su suscripción de 99 $ al año y su modelo 100 % en la nube no le convienen a todo el mundo. Actual Budget (MIT, ~26 k estrellas en GitHub) lleva la misma metodología —dé un destino a cada suma antes de gastarla— a un servidor Node.js autoalojado que se ejecuta en un único contenedor Docker. Sus datos permanecen en un archivo SQLite en su propio VPS; cada dispositivo se sincroniza, con cifrado de extremo a extremo opcional. Así se despliega en unos minutos.

Contenido· Por qué autoalojar su presupuesto en lugar de usar YNAB1/13
  1. 01Por qué autoalojar su presupuesto en lugar de usar YNAB
  2. 02Desplegar Actual Budget con Docker en dos minutos
  3. 03Lo que obtiene de entrada
  4. 04Requisitos cuantificados para Actual Budget
  5. 05Añadir HTTPS para sincronizar desde cualquier lugar
  6. 06Instalación en seis pasos
  7. 07Sincronización bancaria: Enable Banking, una función experimental
  8. 08Configurar Enable Banking en Actual en cinco pasos
  9. 09Cómo respaldar su presupuesto
  10. 10Cifrado de extremo a extremo: qué cubre y qué no cubre
  11. 11Actualizar Actual sin perder sus datos
  12. 12Resolución de problemas: mensajes reales y causas conocidas
  13. 13No publique nunca los registros «sensitive» tal cual

Por qué autoalojar su presupuesto en lugar de usar YNAB

El método de los sobres es simple: asigne cada suma que entra a una categoría con nombre (alquiler, alimentación, ahorro, fondo de emergencia) antes de gastarla. Cuando una categoría se agota, o deja de gastar, o transfiere conscientemente dinero desde otro sobre. YNAB popularizó este enfoque en una aplicación cuidada, pero cuesta 99 $ al año, almacena sus datos financieros en sus servidores y no puede auditarse. Actual Budget reproduce el método (incluida la famosa flexibilidad «roll with the punches», que permite adaptarse a los imprevistos) con todo el código fuente en GitHub bajo licencia MIT. Autoalojarlo en un VPS significa que sus transacciones, sus saldos y el historial de su presupuesto nunca salen de su infraestructura, y que el coste anual se reduce al de un VPS pequeño.

Desplegar Actual Budget con Docker en dos minutos

Actual se presenta como una única imagen Docker: sin servidor de base de datos, sin message broker, sin archivos de configuración. Un contenedor, un volumen, un puerto. En su VPS con Ubuntu 22.04, ejecute: docker run -d --restart=always -p 5006:5006 -v actual-budget:/data --name actual-budget actualbudget/actual-server. El servidor está listo en menos de dos segundos, en el puerto 5006. Abra http://<ip-de-su-vps>:5006 en un navegador, haga clic en «Crear un nuevo presupuesto» y ya puede gestionar su presupuesto. Toda la base de datos SQLite se almacena en el volumen Docker actual-budget: respáldela con un solo comando docker run --rm -v actual-budget:/data alpine tar -czf - /data. La carpeta montada en /data contiene dos subcarpetas, server-files y user-files: ahí vive todo el estado del servidor. Para un despliegue duradero, prefiera un archivo docker-compose.yml (la documentación oficial remite al del repositorio, packages/sync-server/docker-compose.yml) e inícielo con docker compose up --detach.

Lo que obtiene de entrada

  • Presupuesto de base cero por sobres: asigne cada suma a una categoría antes de gastarla; Actual señala los excesos en tiempo real.
  • Sincronización multidispositivo: teléfono, tableta y ordenador comparten el mismo presupuesto en directo a través del servidor cifrado.
  • Cifrado de extremo a extremo opcional: una vez activado en los ajustes, el servidor solo almacena texto cifrado; sus transacciones solo son legibles en sus dispositivos.
  • Sincronización bancaria opcional: Enable Banking (bancos europeos, función experimental), SimpleFIN Bridge (América del Norte), Akahu (Nueva Zelanda) o Pluggy.ai (Brasil); según la documentación, GoCardless ya no acepta cuentas nuevas. La importación manual de archivos OFX/QFX/CSV sigue disponible.
  • Informes: curva de patrimonio neto, flujo de caja, gastos por categoría e informes totalmente personalizados.
  • Importación de YNAB 4 y nYNAB: migre todo su historial en unos cinco minutos.

Requisitos cuantificados para Actual Budget

Actual es uno de los servicios más ligeros de alojar. En cuanto a la máquina: un VPS de 1 GB de RAM con Ubuntu 22.04 es más que suficiente, ya que la aplicación consume del orden de 80 MB en reposo (compruébelo en su instancia con docker stats). En cuanto a la red: un nombre de dominio, un registro DNS que apunte al VPS y los puertos 80 y 443 abiertos para el proxy inverso; el puerto 5006 puede quedar cerrado al público una vez instalado Caddy. En cuanto a las cifras del propio servidor: el puerto por defecto es el 5006, la carpeta de datos es /data (variable ACTUAL_DATA_DIR) y los envíos de archivos están limitados por defecto a 20 MB para la sincronización y a 50 MB para la sincronización cifrada. Un presupuesto muy antiguo o voluminoso puede superar esos umbrales; el restablecimiento de la sincronización comprime entonces el historial. Para la sincronización bancaria, añada una cuenta en el proveedor elegido, sus claves de API y, para Enable Banking, una aplicación de tipo Production cuya URL de redirección use HTTPS.

Añadir HTTPS para sincronizar desde cualquier lugar

Para acceder a su presupuesto desde fuera del VPS —en el móvil o desde otro país— necesita HTTPS. La vía más sencilla es Caddy. Instálelo en el mismo VPS y añada un Caddyfile de una sola línea: budget.su-dominio.com { reverse_proxy localhost:5006 }. Caddy gestiona automáticamente el certificado Let’s Encrypt. Una vez que el dominio resuelva, abra https://budget.su-dominio.com en su teléfono, pulse el botón «Añadir a la pantalla de inicio» del navegador y Actual se convierte en un verdadero icono PWA en su pantalla de inicio. Todo el tráfico de sincronización entre sus dispositivos y el servidor pasa por ese canal TLS. No es solo una comodidad. Actual necesita un contexto seguro para activar SharedArrayBuffer, que utiliza su motor SQLite: sin HTTPS, la aplicación se niega a arrancar en el navegador. La documentación oficial cita tres causas de este bloqueo: la ausencia de HTTPS, cabeceras Cross-Origin-Embedder-Policy y Cross-Origin-Opener-Policy mal definidas, o un navegador demasiado antiguo. Con el servidor por defecto actual-server, esas dos cabeceras ya se envían; si pasa por Nginx, no las duplique (véase la resolución de problemas más abajo). La sincronización bancaria añade un segundo motivo: la URL de redirección registrada en el proveedor debe usar https.

Instalación en seis pasos

  1. Crear un VPS (1 GB de RAM, Ubuntu 22.04)

    Actual consume menos de 80 MB de RAM en reposo. Incluso el plan VPS más pequeño le deja un amplio margen.

  2. Desplegar el contenedor

    docker run -d --restart=always -p 5006:5006 -v actual-budget:/data --name actual-budget actualbudget/actual-server

  3. Crear su presupuesto

    Abra el puerto 5006 en un navegador, haga clic en «Crear un nuevo presupuesto» y añada sus cuentas bancarias con sus saldos de apertura.

  4. Configurar las categorías de sobres

    Cree categorías (Vivienda, Alimentación, Transporte, Ahorro…) y reparta entre ellas sus ingresos mensuales previstos.

  5. Asegurar con HTTPS

    Instale Caddy, añada budget.su-dominio.com { reverse_proxy localhost:5006 } a su Caddyfile y luego recargue.

  6. Instalar en el móvil

    Abra la URL HTTPS en su teléfono y use «Añadir a la pantalla de inicio»: Actual Budget se convierte en un icono PWA.

Sincronización bancaria: Enable Banking, una función experimental

La documentación oficial de Actual enumera Enable Banking entre sus proveedores de sincronización, para bancos europeos, y la califica de función experimental: puede tener errores, carencias, documentación incompleta y ser retirada en una versión futura. También puede no figurar en la última versión estable; la página aconseja activar las funciones experimentales y usar las imágenes nightly para la implementación más reciente. Los comentarios de los usuarios se centralizan en la incidencia n.º 7799 de GitHub (abierta en mayo de 2026, etiquetada «experimental feature», todavía abierta cuando la revisamos). No contiene ninguna lista de bancos garantizados: le corresponde comprobar, en el asistente de Actual, que su país y su banco aparecen, y probar con una sola cuenta antes de fiarse. Recuerde también que las claves del proveedor viven en su servidor: un VPS bien reforzado y copias de seguridad protegidas forman parte del dispositivo.

Configurar Enable Banking en Actual en cinco pasos

  1. Crear la aplicación en Enable Banking

    Inicie sesión en su cuenta de Enable Banking, cree una nueva aplicación y elija el tipo Production.

  2. Declarar la URL de redirección en HTTPS

    Use su dominio seguido de /enablebanking/auth_callback, por ejemplo https://budget.example.com/enablebanking/auth_callback, y pulse Register. El esquema debe ser https.

  3. Vincular sus cuentas en Enable Banking

    Vincule primero las cuentas deseadas en la interfaz de Enable Banking; de lo contrario, advierte la documentación, no verá ni la lista de bancos ni la de cuentas en Actual.

  4. Introducir el identificador de aplicación y la clave

    Copie el Application ID (con el formato 12345678-1234-1234-1234-123456789012) sin espacios antes ni después. En Actual: More → Bank Sync → Set up Enable Banking, pegue el identificador y aporte el archivo de clave privada .pem.

  5. Vincular una cuenta de Actual a su banco

    En una cuenta de Actual, elija Link account → Enable Banking, seleccione su país y su banco y siga la autorización en el banco. Compruebe las primeras transacciones importadas antes de pasar a otra cuenta.

Cómo respaldar su presupuesto

Todos los datos residen en el volumen Docker actual-budget. Una copia de seguridad cron diaria cabe en un solo comando: docker run --rm -v actual-budget:/data -v /backups:/out alpine tar czf /out/actual-budget-$(date +%Y%m%d).tar.gz /data. Para restaurar, descomprima el archivo tar en un volumen nuevo antes de arrancar el contenedor. Actual dispone además de una exportación integrada: desde Ajustes, en la sección Datos, pulse «Export data». Eso crea un ZIP portable de todo su presupuesto, que puede importar en cualquier otra instancia de Actual. Dos precisiones. Primero, ese volumen contiene también las credenciales de sincronización bancaria: la documentación indica que se almacenan en el servidor, fuera del cifrado de extremo a extremo, de modo que cualquiera con acceso a la base de datos puede leerlas. Trate el archivo como un secreto: permisos restringidos y una copia cifrada fuera del VPS. Segundo, tras una restauración, la documentación recomienda un restablecimiento de la sincronización (Ajustes → Avanzado → Reset Sync), hecho desde el dispositivo con los cambios más recientes, para que la copia no se resincronice hacia su estado anterior. Pruebe una restauración completa en una instancia desechable al menos una vez: una copia que nunca se ha restaurado sigue siendo una hipótesis.

Cifrado de extremo a extremo: qué cubre y qué no cubre

El cifrado de extremo a extremo de Actual es opcional. Para activarlo, abra el presupuesto, vaya a los ajustes, sección Cifrado, pulse «enable encryption» y elija una contraseña: una clave derivada de ella cifra sus datos antes de que salgan del dispositivo. Algunos puntos que conviene conocer antes de pulsar. Es irreversible: no se puede desactivar, y volver a un archivo sin cifrar pasa por una copia de seguridad y una restauración. Si pierde la contraseña, la documentación es clara: sus datos cifrados son irrecuperables, salvo que conserve una copia local, con la que puede restablecer la clave. Cada dispositivo nuevo debe introducir esa contraseña una vez, y debe ser distinta de la contraseña del servidor. La activación exige un restablecimiento de la sincronización, y el cifrado supone una ligera ralentización al sincronizar. Por último, solo cubre los datos del presupuesto: las claves de sincronización bancaria permanecen en el servidor y los datos locales del dispositivo no están cifrados, de ahí el interés de cifrar el disco.

Actualizar Actual sin perder sus datos

Actualizar consiste en sustituir la imagen, no los datos. Con Docker Compose: docker compose pull && docker compose up -d. Con el comando docker run de esta guía, la documentación describe tres gestos: docker stop, luego docker container rm sobre el contenedor y, por último, el mismo docker run relanzado con --pull=always. Mientras se conserve el volumen actual-budget, el presupuesto sobrevive a la sustitución del contenedor. Antes de cada actualización, haga la copia de seguridad de la sección anterior; es especialmente cierto si usa una imagen nightly para probar la sincronización bancaria, pues la documentación recomienda copiar antes de probar esa rama. Una trampa conocida: al volver de una imagen nightly a una etiqueta estable puede aparecer «This budget cannot be loaded with this version of the app»; la página de restauración remite entonces a una migración manual de SQLite, que conviene no improvisar sobre la única copia de sus datos. Tras actualizar, abra la aplicación y compruebe la última transacción sincronizada y el saldo de una cuenta.

Resolución de problemas: mensajes reales y causas conocidas

  • SharedArrayBufferMissing (error fatal al cargar): sin HTTPS, cabeceras COOP/COEP ausentes o duplicadas, o navegador demasiado antiguo. Con Nginx, oculte las cabeceras de origen (proxy_hide_header Cross-Origin-Embedder-Policy; y proxy_hide_header Cross-Origin-Opener-Policy;) y defínalas una sola vez: require-corp y same-origin.
  • Enable Banking API error: status=403 body={"code":403,"message":"Application is not active"}: la aplicación de Enable Banking aún no está activada; la lista de cuentas queda vacía sin error en la interfaz (comunicado en la incidencia n.º 7799).
  • Aplicación no encontrada aunque el identificador sea correcto: un espacio al principio del Application ID basta para que falle la conexión; elimínelo (un usuario pidió en la incidencia que se ignore el espacio y se aclare el mensaje).
  • URL "app://actual/enablebanking/auth_callback" uses unsupported scheme: el soporte de Enable Banking solo admite redirecciones https; sugirió una redirección HTTPS que luego reenvíe al esquema de la aplicación.
  • Could not validate the credentials. Please check your Application ID and secret key.: comunicado solo en Firefox con valores que funcionaban en Chromium; no consta ninguna solución, pruebe otro navegador para la configuración inicial.
  • Beneficiarios vacíos o idénticos a las notas, saldo de tarjeta erróneo: estos comportamientos constan en la incidencia n.º 7799 (por ejemplo, el primer saldo devuelto, a veces el crédito disponible, se muestra en lugar de la deuda contabilizada). Son límites de la implementación experimental, no un error de su instalación: compare con el extracto del banco.
  • PostError: network-failure, Wrong transactions period requested, varias aplicaciones de Enable Banking: comunicados en la misma incidencia sin solución registrada. Si creó una segunda aplicación, desvincule las cuentas y agrúpelas todas bajo una sola: la sincronización de las vinculadas mediante la primera falló tras añadir la segunda.
  • Registros detallados: añada DEBUG=actual-sensitive:enable-banking,actual-sensitive:bank-sync al entorno del contenedor, reinicie, reproduzca el error y luego retire la variable.

No publique nunca los registros «sensitive» tal cual

La documentación advierte de que estos registros pueden contener credenciales, información bancaria u otros datos privados: no los pegue en una incidencia pública ni en Discord. Evite también DEBUG=* o DEBUG=actual*, que activan igualmente la salida sensible; para una depuración ordinaria basta DEBUG=actual:*. Revise y tache el extracto antes de enviarlo al mantenedor que le ayuda y restablezca el valor anterior de DEBUG cuando termine el diagnóstico.

Despliegue Actual Budget en su VPS con un clic

Recupere el control de su presupuesto, lejos de las aplicaciones por suscripción. ServOrbit aprovisiona una instancia Actual Budget lista para usar —presupuesto de base cero, sincronización multidispositivo y cifrado de extremo a extremo— en un VPS de su región, a un coste mensual fijo, con sus datos financieros en una infraestructura que usted controla.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva