SSD Nodes Learn Hosting plans →
Guías Matt ConnorPor Matt Connor · Actualizado 2026-09-06

Comparativa de apps de presupuesto autoalojadas

Compara Actual, Firefly III, Fava y Wallos: descubre cuáles sincronizan transacciones bancarias, cuáles requieren importación manual y qué agregadores externos necesitan.

La respuesta corta

Las aplicaciones de presupuesto autoalojadas se diferencian en un aspecto que determina la mayoría de las instalaciones: si el software obtiene sus transacciones o si usted las introduce manualmente. Actual Budget es la mejor opción predeterminada para el presupuesto de un hogar. Usa el método de sobres y se ejecuta como un único contenedor. También puede obtener transacciones de un proveedor de datos bancarios cuando usted se lo solicita.

Firefly III es la opción adecuada si necesita cuentas con partida doble o si quiere que las importaciones se ejecuten según una programación sin supervisión. Beancount con Fava es apropiado para quienes quieren que el libro mayor sea un archivo de texto plano bajo control de versiones. Wallos tiene una función específica: registra los costes recurrentes que salen de su cuenta cada mes.

Ninguna de estas aplicaciones se conecta al banco por sí sola. Todas las que muestran transacciones bancarias las obtienen de un agregador externo, y crear una cuenta con un agregador es el paso que detiene a muchas personas. Lea la sección de sincronización antes de instalar nada.

Qué ejecuta cada uno, lado a lado

ChartServices, storage and sync model, taken from each project's own install docs
The data behind this chart
[
  {
    "tool": "Actual Budget",
    "services": 1,
    "storage": "SQLite files",
    "bank_sync": "Aggregators, manual pull",
    "multi_user": "Needs OpenID",
    "encryption": "Optional end to end"
  },
  {
    "tool": "Firefly III",
    "services": 3,
    "storage": "MariaDB",
    "bank_sync": "Importer, cron capable",
    "multi_user": "Built in accounts",
    "encryption": "None at rest"
  },
  {
    "tool": "Beancount + Fava",
    "services": 1,
    "storage": "Text file",
    "bank_sync": "Import scripts only",
    "multi_user": "No login at all",
    "encryption": "File level, your choice"
  },
  {
    "tool": "Wallos",
    "services": 1,
    "storage": "SQLite file",
    "bank_sync": "Manual entry only",
    "multi_user": "Extra logins in settings",
    "encryption": "None at rest"
  }
]

Actual Budget ejecuta 1 servicio de larga duración. Firefly III ejecuta 3, porque su archivo compose oficial inicia la aplicación, una base de datos MariaDB y un auxiliar de cron en contenedores independientes. Esa es toda la situación de recursos de estas 4 aplicaciones: el servidor de base de datos es el único componente pesado del grupo, y el resto es un proceso pequeño que mantiene un archivo pequeño.

¿Qué aplicaciones de presupuestos autoalojadas pueden importar transacciones de su banco?

Ninguna aplicación autoalojada se conecta directamente a un banco. Los bancos exponen las transacciones mediante APIs de open banking, y se accede a esas APIs a través de un agregador: una empresa que mantiene las relaciones con los bancos y revende el acceso. Por tanto, la pregunta real tiene dos partes. ¿La aplicación es compatible con algún agregador? ¿Puede obtener una cuenta con un agregador que cubra su banco?

Actual Budget es compatible con varios. En agosto de 2026, su documentación incluye Akahu para Nueva Zelanda, Enable Banking para Europa, GoCardless Bank Account Data para Europa, SimpleFIN Bridge para Norteamérica y Pluggy.ai para Brasil. Debe registrarse directamente con el proveedor, generar las claves y los secretos, y pegarlos en su servidor. Hay dos limitaciones importantes. La documentación indica claramente que Actual no sincroniza los datos bancarios automáticamente, por lo que una persona debe pulsar el botón. La misma página también señala que GoCardless no acepta cuentas nuevas. Esto elimina la opción europea gratuita que todavía recomiendan las guías antiguas. SimpleFIN Bridge es un servicio de suscripción de pago. El proveedor le factura directamente, no Actual.

Firefly III separa la importación en un segundo contenedor: Firefly III Data Importer. Su configuración de ejemplo incluye campos para las credenciales de GoCardless (Nordigen), Enable Banking, Spectre y SimpleFIN, además de importaciones de archivos CSV y CAMT.053. Configure CAN_POST_AUTOIMPORT=true, coloque un valor aleatorio largo en AUTO_IMPORT_SECRET y un trabajo cron en el host podrá iniciar una importación sin que haya un navegador abierto. Es la única sincronización realmente desatendida de esta comparación.

Beancount no ofrece sincronización. Descarga un archivo CSV u OFX desde su banco y ejecuta un script de importación que haya escrito o tomado de otra fuente. Wallos tampoco ofrece sincronización, por diseño: introduce una suscripción una vez y esta se repite según su propia programación.

La importación manual es el método que siempre funciona y no depende de que su banco cambie de proveedor. Si la conectividad bancaria es el factor decisivo, compruebe la cobertura del agregador para su banco concreto antes de instalar nada. Esa comprobación tarda diez minutos y puede ahorrarle todo un fin de semana.

Presupuesto Actual: presupuestos por sobres en un contenedor

El método de presupuestos por sobres consiste en asignar el dinero que ya tiene a una categoría antes de gastarlo. Asigne 300 a alimentación y 80 a transporte. El total asignado nunca puede superar el dinero disponible en sus cuentas. Actual implementa este método y prioriza el uso local: el navegador o el cliente de escritorio conserva una copia completa del presupuesto y la sincroniza con el servidor. Por eso, la aplicación sigue funcionando aunque el servidor no esté disponible.

services:
  actual_server:
    image: actualbudget/actual-server:latest
    ports:
      - '5006:5006'
    volumes:
      - ./actual-data:/data
    restart: unless-stopped

Inícielo con docker compose up -d y ábralo en http://your-server:5006. El volumen de datos contiene dos directorios adicionales: server-files y user-files. Esos directorios contienen su presupuesto. Coloque un proxy inverso con TLS (seguridad de la capa de transporte) delante del servicio antes de usarlo desde fuera de su propia red. Consulte el recorrido completo en nuestra guía de instalación de Actual Budget. Los patrones de Compose usados en ese archivo están en Docker Compose en un VPS.

Varios usuarios. De forma predeterminada, el servidor tiene una sola contraseña que comparten todos los usuarios. Las cuentas independientes requieren OpenID Connect. El servidor admite proveedores como Authentik, Keycloak, Google y GitHub. La primera persona que inicia sesión mediante OpenID se convierte en propietaria del servidor. ACTUAL_USER_CREATION_MODE determina si los inicios de sesión posteriores crean sus propias cuentas. Dos personas pueden abrir el mismo archivo de presupuesto al mismo tiempo. Sin embargo, la documentación advierte que las modificaciones en conflicto no son seguras. Por tanto, dos personas que compartan un presupuesto deben evitar editar la misma pantalla a la vez.

Cifrado. Actual ofrece cifrado de extremo a extremo por archivo de presupuesto. Cuando está activado, el servidor almacena datos que no puede leer. Esto es lo que necesita en un servidor alquilado. Hay dos consecuencias. Si pierde la contraseña de cifrado, el archivo se pierde porque no existe ningún mecanismo para restablecerla. Además, los tokens de sincronización bancaria se almacenan por separado y no están cubiertos por ese cifrado. Cualquier persona con acceso a la base de datos del servidor puede leerlos.

Firefly III: partida doble y la única importación desatendida de esta guía

La partida doble significa que cada transacción tiene una cuenta de origen y una cuenta de destino. Comprar alimentos mueve dinero de la cuenta corriente a una cuenta de gastos, por lo que nada aparece de la nada. El dinero que no puede justificar aparece como una cuenta descuadrada, en lugar de ocultarse dentro del total de una categoría. Esa es la razón para elegir Firefly III: está más cerca de la contabilidad que de la elaboración de presupuestos.

Instálelo desde los archivos del propio proyecto:

mkdir -p /srv/firefly
curl -fsSL -o /srv/firefly/docker-compose.yml https://raw.githubusercontent.com/firefly-iii/docker/main/docker-compose.yml
curl -fsSL -o /srv/firefly/.env https://raw.githubusercontent.com/firefly-iii/firefly-iii/main/.env.example
curl -fsSL -o /srv/firefly/.db.env https://raw.githubusercontent.com/firefly-iii/docker/main/database.env

Edite .env antes del primer arranque. APP_KEY debe ser una cadena de exactamente 32 caracteres, y el proyecto incluye el comando para generar una:

head /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9' | head -c 32 && echo

STATIC_CRON_TOKEN requiere otra cadena de 32 caracteres. El contenedor cron de ese archivo compose llama a la aplicación una vez al día, y la llamada se rechaza sin un token válido, por lo que las transacciones periódicas y los recordatorios de facturas nunca se ejecutan. Establezca SITE_OWNER con su dirección de correo electrónico, haga que la contraseña de la base de datos de .env coincida con la de .db.env y después inícielo:

docker compose up -d
docker compose logs -f app

Un primer arranque correcto termina con la aplicación atendiendo en el puerto 80 dentro del contenedor y los registros estabilizándose. Un ciclo de errores de conexión con la base de datos significa que las contraseñas de .env y .db.env no coinciden, por lo que la aplicación no puede iniciar sesión en MariaDB.

Importación automática. Data Importer se ejecuta en su propio contenedor y se autentica en Firefly III con un token de acceso personal en FIREFLY_III_ACCESS_TOKEN. Configure una importación de forma interactiva, guarde el archivo de configuración que proporciona y después deje que cron publique en el endpoint de importación automática según una programación. Esto es lo que se quiere decir cuando se afirma que Firefly III se sincroniza: el agregador mantiene la conexión con el banco, el importador recopila los datos y el servidor hace el trabajo mientras usted duerme.

Varios usuarios. Firefly III mantiene las cuentas reales en su propia base de datos, que es lo que selecciona AUTHENTICATION_GUARD=web. Apúntelo a remote_user_guard y un proxy de autenticación como Authelia gestionará el inicio de sesión y pasará el nombre de usuario en una cabecera. LDAP ya no es compatible. En una instancia accesible desde Internet, abra la página de administración después del primer inicio de sesión y compruebe el ajuste del modo de usuario único, que controla si otras personas pueden registrarse.

Cifrado. No existe para los datos almacenados. Las transacciones se guardan en MariaDB en texto legible, por lo que cualquiera que tenga la contraseña de la base de datos o una copia del volumen dispone de su historial financiero. Termine TLS delante de la aplicación, manténgala fuera de Internet pública siempre que sea posible y cifre las copias de seguridad.

Beancount y Fava: el libro mayor es un archivo de texto

Beancount es una sintaxis de contabilidad por partida doble en texto plano. Una transacción ocupa unas pocas líneas en un archivo que usted controla:

2026-08-19 * "Supermarket" "Weekly shop"
  Expenses:Food:Groceries   42.10 EUR
  Assets:Bank:Checking

Fava es la interfaz web de ese archivo. Genera los gráficos, el balance de situación y la cuenta de resultados, y también permite editar el origen. Instálelo en un entorno virtual:

sudo apt update && sudo apt install -y python3-venv
python3 -m venv ~/.venvs/fava
~/.venvs/fava/bin/pip install fava
~/.venvs/fava/bin/fava --read-only ~/ledger/main.beancount

Un pip3 install fava simple falla en Ubuntu 24.04 con error: externally-managed-environment porque apt controla el Python del sistema. Por tanto, el entorno virtual es la solución, no un parche.

Fava escucha en el puerto localhost 5000 de forma predeterminada. -H cambia el host y -p cambia el puerto, pero piénselo antes de ampliar la exposición: Fava no tiene inicio de sesión. La línea de comandos no ofrece ninguna opción de usuario o contraseña, por lo que cualquier sistema que pueda acceder al puerto puede leer todas las transacciones que usted controla. Mantenga el host predeterminado y acceda mediante un túnel SSH, una VPN o un proxy que autentique. La opción --read-only bloquea las escrituras desde el navegador. Conviene activarla si edita el archivo en su portátil y lo confirma en git.

Varios usuarios y cifrado. No existe ningún modelo de usuarios. Una instancia sirve un libro mayor sin una identidad asociada, por lo que compartirlo implica compartir las credenciales de acceso al proxy. El cifrado depende de cómo proteja el archivo: por ejemplo, con una copia cifrada mediante age o gpg, o con un repositorio de copias de seguridad cifrado. La ventaja de un libro mayor de texto es que git proporciona historial, blame y una copia remota sin coste adicional.

Wallos: el pequeño, para los costes recurrentes

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

Wallos lo guarda todo en un único archivo SQLite en db/wallos.db. Gestiona varias divisas y realiza conversiones. También puede avisarle por correo electrónico, Discord, Telegram, Gotify, Pushover o mediante un webhook cuando se aproxima una renovación. Puede crear cuentas adicionales desde la página de configuración. Cada una tiene su propia lista.

Conviene aclarar lo que no es. Wallos no registra los gastos diarios y no tiene el concepto de presupuesto. Responde a una sola pregunta: ¿qué pago cada mes y qué se renueva la semana que viene? Muchas personas lo ejecutan junto a Actual precisamente para eso. Si los importes recurrentes que le interesan son los que factura y no los que paga, consulte software de facturación autoalojado.

¿Qué ocurre con Maybe?

Maybe Finance aparece recomendado en muchos hilos, por lo que requiere una respuesta. Su README indica que el repositorio ya no recibe mantenimiento activo y que la versión final está etiquetada como v0.6.0. El código usa la licencia AGPLv3. El software todavía funciona. Los datos presupuestarios se conservan durante una década, y el software sin mantenimiento que almacena un esquema de base de datos y credenciales bancarias no es un lugar adecuado para guardarlos. Esa era la situación en agosto de 2026, así que compruebe el repositorio por su cuenta antes de comprometerse.

¿Cuánto servidor necesitan?

Todas estas aplicaciones son pequeñas. Mídalo en lugar de confiar en una cifra de un blog. Ejecute esto en su propio servidor después de un día normal de uso:

docker stats --no-stream

Consulte la columna MEM USAGE. Actual, Wallos y Fava mantienen un archivo pequeño detrás de un proceso pequeño, por lo que funcionan sin problemas en un VPS modesto junto con otros servicios. Firefly III es diferente porque MariaDB forma parte de la pila, y un servidor de base de datos mantiene memoria ocupada aunque no se estén ejecutando consultas. Reserve margen para la base de datos, no para sus transacciones. Aun así, una aplicación de presupuestos rara vez es lo que llena un VPS: si dimensiona un servidor para toda la pila, los requisitos mínimos de memoria de PhotoPrism e Immich tienen muchas más probabilidades de determinar cuánta RAM compra.

Los datos apenas crecen. Diez años de transacciones domésticas caben en un archivo medido en megabytes, por lo que el disco no es el factor limitante. La consecuencia real de esa longevidad se explica en la sección siguiente.

La experiencia móvil y sus limitaciones

Aquí es donde las aplicaciones financieras autoalojadas pierden frente a las comerciales. Sea realista antes de migrar a ellas la gestión financiera de un hogar.

La documentación actual indica que las aplicaciones móviles oficiales están obsoletas. En su lugar se utiliza la versión web, descrita en su propia documentación como una progressive web app adaptable que se instala en la pantalla de inicio y se usa como una aplicación nativa. Funciona bien. Sin embargo, no es una aplicación de una tienda. La comunidad mantiene clientes nativos no oficiales.

Firefly III tampoco publica una aplicación oficial, pero su API ha permitido crear dos aplicaciones no oficiales capaces. Waterfly III es una aplicación para Android, publicada en Google Play y F-Droid. Abacus funciona en iPhone, iPad y Android, inicia sesión mediante OAuth2 y almacena sus tokens en el llavero de iOS. Ambas necesitan que la instancia sea accesible desde el teléfono.

Fava y Wallos sólo ofrecen una página web adaptable. Leer un libro mayor en un teléfono funciona bien. Introducir una transacción de Beancount con el teclado del teléfono no.

Hay un aspecto común a todas ellas: un teléfono conectado mediante datos móviles no está en la red doméstica. Publique la aplicación en un dominio con TLS y autenticación sólida, o conecte el teléfono a una VPN. Publicar una aplicación financiera en Internet abierta protegida por una única contraseña compartida es el error que debe evitar. Si ninguna de las dos opciones resulta adecuada, poner la instancia detrás de un servicio onion v3 ofrece una tercera vía de acceso. No requiere un registro DNS público ni ningún puerto abierto a Internet, pero obliga a acceder mediante Tor Browser desde el teléfono.

Copias de seguridad: la sección más importante de esta categoría

Perder una biblioteca multimedia cuesta una descarga. Perder cinco años de transacciones categorizadas cuesta algo que no se puede volver a descargar. Configure esto el primer día.

Qué copiar por aplicación:

  • Actual Budget: todo el volumen de datos, tanto server-files como user-files.
  • Firefly III: un volcado de la base de datos, además de .env, .db.env y el volumen de cargas.
  • Beancount: el archivo del libro contable, preferiblemente como un repositorio de git con un remoto.
  • Wallos: db/wallos.db y el directorio de logotipos cargados.

Copiar un archivo SQLite activo es la forma clásica de crear una copia de seguridad que no se puede restaurar. SQLite mantiene las escrituras recientes en un archivo de registro de escritura anticipada independiente, por lo que una copia del archivo .sqlite por sí sola puede no incluir las transacciones más recientes o no abrirse en absoluto. Detenga el contenedor durante los pocos segundos que tarda la copia:

cd /srv/actual
docker compose stop actual_server
tar czf /srv/backups/actual-$(date +%F).tgz -C /srv/actual actual-data
docker compose start actual_server

Firefly III necesita un volcado. Créelo desde dentro del contenedor de la base de datos para que la contraseña nunca llegue al historial de su shell:

cd /srv/firefly
docker compose exec -T db sh -c 'mariadb-dump -u firefly -p"$MYSQL_PASSWORD" firefly' > /srv/backups/firefly-$(date +%F).sql

Las imágenes antiguas de MariaDB incluyen la misma herramienta con su nombre anterior, mysqldump. Conserve .env y .db.env junto al volcado, porque restaurar una base de datos en una instalación cuya configuración ya no tiene es un problema que tendrá que resolver el peor día posible.

Una copia en el mismo VPS le protege frente a una edición incorrecta. No le protege frente a la pérdida o la intrusión en el servidor. Envíe el directorio de copias de seguridad a un almacenamiento de objetos con restic. restic cifra el repositorio antes de que los datos salgan del servidor:

export RESTIC_REPOSITORY=s3:s3.example.com/money-backups
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init
restic backup /srv/backups
restic forget --keep-daily 7 --keep-weekly 8 --keep-monthly 12 --prune

restic snapshots debería mostrar ahora una instantánea con la fecha de hoy. La programación, las credenciales y el temporizador de systemd se explican en nuestra guía de copias de seguridad cifradas con restic en un VPS.

Una copia de seguridad que nunca se ha restaurado es sólo una suposición. Pruébela ahora, mientras todo funciona:

restic restore latest --target /tmp/restore-test

Descomprima el archivo de Actual en un directorio temporal, inicie un segundo contenedor que lo use en otro puerto y ábralo. Debería ver sus cuentas con los saldos que tenían cuando se ejecutó la copia de seguridad. Para Firefly III, cargue el volcado en una base de datos temporal y cuente las filas de la tabla transactions. Si las cifras coinciden con la instancia activa, la copia de seguridad es válida. Después elimine las copias temporales, porque una instancia de prueba olvidada con datos financieros reales constituye otro problema.

Elija una aplicación, úsela durante un mes con cifras reales antes de migrar cualquier histórico y configure la copia de seguridad durante esa misma semana. Si todavía está decidiendo qué partes de su vida quiere alojar en su propio servidor, nuestro resumen de lo que merece la pena alojar por cuenta propia en 2026 cubre el resto de la pila.

FAQ

¿Qué aplicación de presupuestos autoalojada puede conectarse a mi banco?

Actual Budget y Firefly III pueden hacerlo mediante un agregador externo, no mediante una conexión bancaria directa. Actual admite proveedores como SimpleFIN Bridge para Norteamérica, Enable Banking para Europa, Akahu para Nueva Zelanda y Pluggy.ai para Brasil. Su documentación indica que Actual no sincroniza los datos bancarios automáticamente, por lo que debe pulsar el botón. Firefly III utiliza un contenedor independiente de Data Importer que se puede ejecutar mediante cron, por lo que es la opción que realmente funciona sin intervención. Beancount y Wallos no tienen ninguna conexión bancaria. Compruebe que el agregador sea compatible con su banco concreto antes de elegir una aplicación, porque la cobertura suele ser más determinante que las funciones disponibles.

¿Puedo usar estas aplicaciones de presupuestos en el teléfono?

Sí, aunque no mediante una aplicación oficial. La documentación de Actual indica que las aplicaciones móviles oficiales están obsoletas y recomienda usar la versión web, una aplicación web progresiva adaptable que puede instalar en la pantalla de inicio. Firefly III tiene dos clientes no oficiales sólidos: Waterfly III en Android y Abacus en iOS y Android. Fava y Wallos son páginas web adaptables y no ofrecen nada más. En todos los casos, el teléfono debe poder acceder al servidor. Configure un dominio con TLS y autenticación sólida, o conecte el teléfono mediante una VPN.

¿Cómo hago una copia de seguridad de una aplicación de presupuestos autoalojada sin corromper la base de datos?

No copie nunca un archivo SQLite activo por separado. SQLite guarda las escrituras recientes en un write ahead log independiente, por lo que una copia realizada durante una escritura puede no incluir algunas transacciones o no poder abrirse. Detenga el contenedor, copie el directorio de datos y vuelva a iniciarlo. En aplicaciones de este tamaño, el proceso tarda unos segundos. Para Firefly III, ejecute mariadb-dump dentro del contenedor de la base de datos y conserve también los archivos de entorno junto con el volcado. Envíe el resultado fuera del servidor a un repositorio de restic cifrado y restáurelo una vez para comprobar que funciona.

¿Firefly III consume demasiados recursos en un VPS pequeño?

Es la opción que más recursos consume de las mencionadas, únicamente porque su archivo compose oficial ejecuta un servidor MariaDB junto a los contenedores de la aplicación y de cron. Los datos de finanzas personales ocupan muy poco, por lo que la memoria la consume el proceso de la base de datos mientras permanece inactivo, no las transacciones. Ejecute docker stats --no-stream en su propio servidor después de un día normal y consulte la columna MEM USAGE en lugar de confiar en una cifra publicada. Si quiere el menor consumo posible, Actual Budget y Wallos ejecutan un proceso contra un solo archivo.

#budgeting#personal-finance#self-hosting#docker#privacy