Self-hosted приложения для бюджета: сравнение
Сравнение Actual Budget, Firefly III, Fava и Wallos для управления финансами. Узнайте, какие системы поддерживают автоматический импорт транзакций, а где требуется ввод данных.
Краткий ответ
Приложения для ведения бюджета с self-hosted установкой различаются по одному ключевому параметру, который определяет выбор большинства пользователей: загружает ли программа транзакции автоматически или вы вносите их вручную. Actual Budget — оптимальный выбор для семейного бюджета. Оно использует метод конвертов и запускается как единый контейнер. При необходимости оно может получать транзакции от провайдера банковских данных по вашему запросу.
Firefly III подходит, если вам нужна система двойной записи или автоматический импорт транзакций по расписанию без участия пользователя. Beancount вместе с Fava подойдет тем, кто предпочитает хранить бухгалтерскую книгу в виде обычного текстового файла под контролем системы версий. Wallos выполняет одну узкую задачу: отслеживает регулярные платежи, которые списываются с вашего счета каждый месяц.
Ни одно из этих приложений не взаимодействует с банком напрямую. Каждое приложение, отображающее банковские транзакции, получает их через сторонний агрегатор, и именно регистрация аккаунта у агрегатора становится этапом, на котором многие останавливаются. Прочитайте раздел о синхронизации перед тем, как что-либо устанавливать.
Что именно запускается и как они соотносятся
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 запускает 1 постоянно работающий сервис. Firefly III запускает 3, поскольку его официальный compose-файл запускает приложение, базу данных MariaDB и вспомогательный cron-контейнер как отдельные сущности. Это исчерпывающая информация о ресурсах для этих 4 приложений: единственным ресурсоемким компонентом в группе является сервер базы данных, а всё остальное — это небольшой процесс, работающий с маленьким файлом.
Какие self-hosted приложения для ведения бюджета могут загружать транзакции из банка?
Ни одно self-hosted приложение не подключается к банку напрямую. Банки предоставляют доступ к транзакциям через API открытого банкинга, а эти API доступны через агрегаторы — компании, которые поддерживают отношения с банками и перепродают доступ к ним. Поэтому реальный вопрос состоит из двух частей. Поддерживает ли приложение работу с агрегатором и можно ли получить учетную запись у агрегатора, который работает с вашим банком?
Actual Budget поддерживает несколько агрегаторов. По состоянию на август 2026 года в документации указаны Akahu для Новой Зеландии, Enable Banking для Европы, GoCardless Bank Account Data для Европы, SimpleFIN Bridge для Северной Америки и Pluggy.ai для Бразилии. Вы самостоятельно регистрируетесь у провайдера, генерируете ключи и секреты, а затем вставляете их в настройки своего сервера. Важны два ограничения. В документации прямо указано, что Actual не синхронизирует банковские данные автоматически, поэтому пользователь должен нажимать кнопку вручную. На той же странице отмечено, что GoCardless больше не принимает новые учетные записи, что закрывает бесплатный европейский путь, который до сих пор рекомендуют старые руководства. SimpleFIN Bridge — это платный сервис по подписке, счета за который выставляет провайдер, а не Actual.
Firefly III разделяет импорт на второй контейнер — Firefly III Data Importer. В примере его конфигурации предусмотрены поля для учетных данных GoCardless (Nordigen), Enable Banking, Spectre и SimpleFIN, наряду с импортом файлов CSV и CAMT.053. Установите CAN_POST_AUTOIMPORT=true, вставьте длинное случайное значение в AUTO_IMPORT_SECRET, и cron-задача на хосте сможет запускать импорт без открытого браузера. Это единственный по-настоящему автоматический процесс синхронизации в данном сравнении.
Beancount не поддерживает синхронизацию. Вы скачиваете файл CSV или OFX из банка и запускаете скрипт импорта, который написали сами или позаимствовали. Wallos также не имеет синхронизации по замыслу: вы вводите подписку один раз, и она повторяется по собственному расписанию.
Ручной импорт — это путь, который работает всегда, и он не зависит от смены провайдеров вашим банком. Если банковское подключение является для вас решающим фактором, проверьте покрытие агрегатором вашего конкретного банка перед тем, как что-либо устанавливать. Эта проверка занимает десять минут и экономит целые выходные.
Actual Budget: конвертный метод бюджетирования в одном контейнере
Конвертный метод бюджетирования подразумевает распределение имеющихся средств по категориям до того, как они будут потрачены. Например, 300 на продукты, 80 на транспорт, при этом общая сумма распределенных средств не может превышать остаток на счетах. Actual реализует этот метод, а само приложение работает по принципу local-first: браузер или десктопный клиент хранят полную копию бюджета и синхронизируются с сервером, поэтому приложение продолжает работать даже при недоступности сервера.
services:
actual_server:
image: actualbudget/actual-server:latest
ports:
- '5006:5006'
volumes:
- ./actual-data:/data
restart: unless-stoppedЗапустите его с помощью docker compose up -d и откройте http://your-server:5006. Том данных расширяется до двух директорий: server-files и user-files. Эти директории и содержат ваш бюджет. Установите обратный прокси с TLS (transport layer security) перед использованием приложения вне вашей локальной сети. Полное руководство доступно в нашем руководстве по установке Actual Budget, а шаблоны compose, на которых основан этот файл, описаны в Docker Compose на VPS.
Многопользовательский режим. По умолчанию сервер использует один общий пароль для всех пользователей. Для раздельных учетных записей требуется OpenID Connect, который сервер поддерживает при работе с такими провайдерами, как Authentik, Keycloak, Google и GitHub. Первый пользователь, вошедший через OpenID, становится владельцем сервера, а ACTUAL_USER_CREATION_MODE определяет, будут ли последующие входы создавать новые учетные записи. Два человека могут одновременно открыть один и тот же файл бюджета, однако документация предупреждает, что конфликтующие правки небезопасны, поэтому паре, использующей один бюджет, следует избегать одновременного редактирования одного и того же экрана.
Шифрование. Actual предлагает сквозное шифрование для каждого файла бюджета. При его включении сервер хранит данные, которые не может прочитать, что и требуется при размещении на арендованном сервере. Это влечет два последствия. Если вы потеряете пароль шифрования, файл будет утрачен, так как функции сброса не существует. Токены банковской синхронизации хранятся отдельно и не защищены этим шифрованием, поэтому любой, кто имеет доступ к базе данных на сервере, может их прочитать.
Firefly III: метод двойной записи и единственный вариант автоматического импорта
Метод двойной записи означает, что у каждой транзакции есть счет-источник и счет-получатель. Покупка продуктов переводит деньги с вашего расчетного счета на счет расходов, поэтому средства не возникают из ниоткуда. Деньги, которые вы не можете объяснить, отображаются как несбалансированный счет, а не скрываются внутри общей суммы категории. Именно поэтому стоит выбрать Firefly III: он ближе к бухгалтерскому учету, чем к простому планированию бюджета.
Установите приложение из файлов проекта:
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Отредактируйте .env перед первым запуском. APP_KEY должна быть строкой ровно из 32 символов; в проекте предусмотрена команда для её генерации:
head /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9' | head -c 32 && echoДля STATIC_CRON_TOKEN требуется вторая строка из 32 символов. Контейнер cron в этом файле compose вызывает приложение один раз в день, и без валидного токена запрос будет отклонен, из-за чего повторяющиеся транзакции и напоминания о счетах не сработают. Укажите свой адрес электронной почты в SITE_OWNER, убедитесь, что пароль базы данных в .env совпадает с паролем в .db.env, затем запустите проект:
docker compose up -d
docker compose logs -f appУспешный первый запуск завершается тем, что приложение начинает обслуживать запросы на 80 порту внутри контейнера, а логи стабилизируются. Цикл ошибок подключения к базе данных означает, что пароли в .env и .db.env не совпадают, поэтому приложение не может авторизоваться в MariaDB.
Автоматический импорт. Data Importer работает как отдельный контейнер и проходит аутентификацию в Firefly III с помощью персонального токена доступа в FIREFLY_III_ACCESS_TOKEN. Настройте один импорт в интерактивном режиме, сохраните полученный файл конфигурации, а затем настройте cron для отправки запросов на эндпоинт автоматического импорта по расписанию. Именно это имеют в виду, когда говорят, что Firefly III выполняет синхронизацию: агрегатор поддерживает банковское соединение, импортер собирает данные, а ваш сервер выполняет работу, пока вы спите.
Многопользовательский режим. Firefly III хранит учетные записи пользователей в собственной базе данных, что определяется параметром AUTHENTICATION_GUARD=web. Укажите вместо этого remote_user_guard, и тогда прокси-сервер с поддержкой аутентификации, например Authelia, возьмет на себя вход в систему, передавая имя пользователя в заголовке. Поддержка LDAP больше не предоставляется. Если экземпляр доступен из Интернета, откройте страницу администрирования после первого входа и проверьте настройку однопользовательского режима, которая определяет, может ли кто-либо еще зарегистрироваться.
Шифрование. Шифрование данных в покое отсутствует. Транзакции хранятся в MariaDB в читаемом виде, поэтому любой, у кого есть пароль от базы данных или копия тома, получит доступ к вашей финансовой истории. Используйте TLS termination перед приложением, по возможности не выставляйте его в открытый Интернет и шифруйте резервные копии.
Beancount и Fava: ваша бухгалтерская книга — это текстовый файл
Beancount — это синтаксис двойной записи в обычном текстовом формате. Транзакция представляет собой несколько строк в файле, который принадлежит вам:
2026-08-19 * "Supermarket" "Weekly shop"
Expenses:Food:Groceries 42.10 EUR
Assets:Bank:CheckingFava — это веб-интерфейс для этого файла. Он строит графики, балансовые отчеты и отчеты о прибылях и убытках, а также позволяет редактировать исходный код. Установите его в виртуальном окружении:
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Обычная команда pip3 install fava завершается ошибкой в Ubuntu 24.04 с сообщением error: externally-managed-environment, так как пакетный менеджер apt управляет системным Python. Поэтому использование виртуального окружения является правильным решением, а не обходным путем.
По умолчанию Fava ожидает подключения на localhost через порт 5000. Флаг -H меняет хост, а -p — порт, но подумайте, прежде чем открывать доступ извне: в Fava нет системы входа. В командной строке нет опций для указания пользователя или пароля, поэтому любой, кто получит доступ к порту, сможет прочитать все ваши транзакции. Оставьте хост по умолчанию и подключайтесь через SSH-туннель, VPN или прокси-сервер с аутентификацией. Флаг --read-only блокирует запись из браузера; его стоит использовать, если вы редактируете файл на ноутбуке и фиксируете изменения в системе контроля версий.
Многопользовательский режим и шифрование. Модель пользователей отсутствует полностью. Один экземпляр обслуживает одну бухгалтерскую книгу без привязки к личности, поэтому совместное использование означает использование общих учетных данных прокси-сервера. Шифрование осуществляется средствами, которые вы применяете к файлу, например, с помощью age или gpg, либо через зашифрованный репозиторий для резервных копий. Преимущество текстовой бухгалтерской книги в том, что git бесплатно предоставляет историю изменений, возможность отследить авторство строк (blame) и удаленную копию.
Wallos: компактное решение для регулярных платежей
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-stoppedWallos хранит все данные в одном файле SQLite по пути db/wallos.db. Приложение поддерживает работу с несколькими валютами с автоматической конвертацией и может отправлять уведомления о предстоящем продлении подписки по электронной почте, через Discord, Telegram, Gotify, Pushover или вебхуки. Дополнительные учетные записи создаются на странице настроек, каждая из них имеет собственный список подписок.
Важно понимать, для чего этот инструмент не предназначен. Wallos не отслеживает ежедневные расходы и не поддерживает функции бюджетирования. Он отвечает на один вопрос: сколько я плачу ежемесячно и что нужно продлить на следующей неделе? Многие пользователи запускают его параллельно с Actual именно для этих целей. Если вас интересуют не регулярные платежи, которые вы совершаете, а счета, которые вы выставляете другим, обратите внимание на ПО для выставления счетов с self-hosted размещением.
А как насчет Maybe?
Maybe Finance часто рекомендуют в различных обсуждениях, поэтому стоит дать ответ. В файле README указано, что репозиторий больше не поддерживается активно, финальный релиз помечен как v0.6.0, а код распространяется под лицензией AGPLv3. Программа всё ещё работает. Данные о бюджете — это информация, которую вы храните десятилетиями, и неподдерживаемое ПО, содержащее схему базы данных и банковские учетные данные, является плохим местом для их хранения. Такова была ситуация в августе 2026 года, поэтому проверьте репозиторий самостоятельно, прежде чем начинать его использовать.
Сколько ресурсов сервера требуется для этих приложений?
Все эти приложения потребляют мало ресурсов. Вместо того чтобы доверять цифрам из блогов, лучше провести собственные измерения. Выполните следующую команду на своем сервере после обычного дня использования:
docker stats --no-streamИзучите столбец MEM USAGE. Actual, Wallos и Fava используют по одному небольшому файлу на каждый процесс, поэтому они стабильно работают на скромном VPS вместе с другими сервисами. Firefly III отличается тем, что в его стеке присутствует MariaDB, а сервер баз данных удерживает память независимо от того, выполняются ли к нему запросы. Планируйте запас памяти для базы данных, а не для самих транзакций. Тем не менее, приложение для ведения бюджета редко становится причиной нехватки ресурсов на VPS: если вы подбираете конфигурацию сервера для всего стека, то минимальные требования к оперативной памяти для PhotoPrism и Immich с гораздо большей вероятностью определят объем необходимой RAM.
Объем данных практически не растёт. Десять лет домашних транзакций занимают файл размером в несколько мегабайт, поэтому дисковое пространство не является ограничивающим фактором. Реальное последствие такого длительного срока хранения данных описано в следующем разделе.
Мобильные приложения и их недостатки
Здесь self-hosted финансовые приложения проигрывают коммерческим аналогам, поэтому будьте реалистичны, прежде чем переводить на них управление семейным бюджетом.
Официальная документация прямо указывает, что мобильные приложения устарели. Вместо них предлагается веб-версия, которая в документации описывается как адаптивное прогрессивное веб-приложение (PWA). Вы устанавливаете его на главный экран и используете как нативное приложение. Оно работает хорошо. Это не приложение из App Store, хотя сообщество поддерживает неофициальные нативные клиенты.
Firefly III также не выпускает официальных приложений, но благодаря его API появились два функциональных неофициальных клиента. Waterfly III — это Android-приложение, доступное в Google Play и F-Droid. Abacus работает на iPhone, iPad и Android, использует OAuth2 для входа и хранит токены в iOS keychain. Оба варианта требуют, чтобы ваш экземпляр был доступен с телефона.
Fava и Wallos предоставляют только адаптивную веб-страницу. Читать отчеты на телефоне удобно. Вводить транзакции Beancount с экранной клавиатуры — нет.
Один момент актуален для всех: телефон в мобильной сети не находится в вашей домашней сети. Либо вы публикуете приложение на домене с TLS и строгой аутентификацией, либо подключаете телефон через VPN. Публикация финансового приложения в открытом доступе с защитой одним общим паролем — это ошибка, которой следует избегать. Если ни один из этих путей вам не подходит, размещение экземпляра за v3 onion service является третьим вариантом. Он не требует публичной DNS-записи и открытых портов во внешнюю сеть, но для доступа потребуется Tor Browser на телефоне.
Резервное копирование: самый важный раздел в этой категории
Потеря медиатеки означает лишь необходимость повторной загрузки файлов. Потеря пяти лет структурированных финансовых транзакций — это невосполнимый ущерб. Настройте резервное копирование в первый же день.
Что копировать для каждого приложения:
- Actual Budget: весь том данных, включая
server-filesиuser-files. - Firefly III: дамп базы данных, а также
.env,.db.envи том с загруженными файлами. - Beancount: файл реестра, желательно в виде git-репозитория с удаленным сервером.
- Wallos:
db/wallos.dbи каталог с загруженными логотипами.
Копирование активного файла SQLite — классический способ получить резервную копию, которую невозможно восстановить. SQLite хранит недавние записи в отдельном журнале предзаписи (write-ahead log), поэтому копия только файла .sqlite может не содержать последние транзакции или вовсе не открыться. Остановите контейнер на несколько секунд, пока идет копирование:
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 требуется дамп. Выполняйте его изнутри контейнера базы данных, чтобы пароль не попал в историю командной оболочки:
cd /srv/firefly
docker compose exec -T db sh -c 'mariadb-dump -u firefly -p"$MYSQL_PASSWORD" firefly' > /srv/backups/firefly-$(date +%F).sqlВ старых образах MariaDB этот инструмент поставляется под прежним именем — mysqldump. Храните .env и .db.env вместе с дампом, так как база данных, восстановленная в инсталляцию без исходной конфигурации, станет неразрешимой задачей в самый неподходящий момент.
Копия на том же VPS защищает от случайного удаления или ошибки редактирования. Она не защищает от потери сервера или его взлома. Отправляйте каталог с резервными копиями в объектное хранилище с помощью restic, который шифрует репозиторий до того, как данные покинут сервер:
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 --prunerestic snapshots теперь должен отображать снимок с сегодняшней датой. Планирование задач, учетные данные и таймеры systemd описаны в нашем руководстве по зашифрованному резервному копированию с помощью restic на VPS.
Резервная копия, которую вы никогда не восстанавливали, — это лишь предположение. Протестируйте её сейчас, пока всё работает исправно:
restic restore latest --target /tmp/restore-testРаспакуйте архив Actual во временный каталог, запустите второй контейнер на другом порту и откройте его. Вы должны увидеть свои счета с балансами, актуальными на момент создания копии. Для Firefly III загрузите дамп во временную базу данных и подсчитайте количество строк в таблице transactions. Совпадение количества записей с текущим экземпляром означает, что резервная копия корректна. Затем удалите временные копии, так как забытый тестовый экземпляр с реальными финансовыми данными создает дополнительные риски.
Выберите одно приложение, поработайте с ним месяц, используя реальные цифры, прежде чем переносить всю историю, и настройте резервное копирование в ту же неделю. Если вы еще решаете, какие аспекты вашей жизни стоит перенести на собственный сервер, наш обзор того, что стоит хостить самостоятельно в 2026 году, охватывает остальную часть стека.
FAQ
Какое приложение для ведения бюджета с self-hosted установкой может подключаться к моему банку?
Actual Budget и Firefly III могут это делать, но через сторонние агрегаторы, а не напрямую. Actual поддерживает такие сервисы, как SimpleFIN Bridge для Северной Америки, Enable Banking для Европы, Akahu для Новой Зеландии и Pluggy.ai для Бразилии. В документации указано, что Actual не синхронизирует данные автоматически, поэтому вам нужно нажимать кнопку вручную. Firefly III использует отдельный контейнер Data Importer, который можно запускать по cron, что позволяет автоматизировать процесс без участия пользователя. Beancount и Wallos вообще не имеют функций подключения к банкам. Перед выбором убедитесь, что агрегатор поддерживает ваш банк, так как покрытие сервисов определяет выбор чаще, чем функциональные возможности.
Могу ли я использовать эти приложения для бюджета на телефоне?
Да, хотя официальных приложений нет. В документации Actual сказано, что официальные мобильные приложения устарели, и рекомендуется использовать веб-версию — адаптивное прогрессивное веб-приложение (PWA), которое можно добавить на главный экран. Для Firefly III существуют два надежных неофициальных клиента: Waterfly III для Android и Abacus для iOS и Android. Fava и Wallos представляют собой адаптивные веб-страницы. В любом случае телефон должен иметь доступ к вашему серверу, поэтому настройте домен с TLS и надежной аутентификацией или используйте VPN.
Как создать резервную копию self-hosted приложения для бюджета, чтобы не повредить базу данных?
Никогда не копируйте активный файл SQLite отдельно. SQLite хранит недавние записи в отдельном журнале предзаписи (write ahead log), поэтому копия, сделанная в процессе записи, может содержать не все транзакции или не открыться вовсе. Остановите контейнер, скопируйте каталог с данными, а затем запустите его снова — для таких небольших приложений это занимает секунды. Для Firefly III вместо этого выполните mariadb-dump внутри контейнера базы данных и сохраните файлы окружения вместе с дампом. Отправляйте результат за пределы сервера в зашифрованный репозиторий restic и выполните восстановление хотя бы один раз, чтобы убедиться в работоспособности бэкапа.
Слишком ли тяжел Firefly III для небольшого VPS?
Это самый ресурсоемкий вариант из представленных, только потому, что его официальный compose-файл запускает сервер MariaDB вместе с контейнерами приложения и cron. Данные о личных финансах занимают мало места, поэтому память расходуется на простаивающий процесс базы данных, а не на ваши транзакции. Запустите docker stats --no-stream на своем сервере после обычного дня работы и изучите столбец MEM USAGE, вместо того чтобы доверять опубликованным цифрам. Если вам нужно минимальное потребление ресурсов, Actual Budget и Wallos запускают по одному процессу, работающему с одним файлом.