Как развернуть Actual Budget на собственном сервере в 2026 году: синхронизация, HTTPS и резервное копирование финансовых данных
Разверните Actual Budget с правильным портом, постоянным хранилищем, TLS, аутентификацией и резервным копированием. Узнайте, как устранить проблему с временным sync directory в production.
Неудачное развертывание Actual Budget не всегда приводит к падению сервиса. Приложение может показывать страницу входа, даже если sync directory является временным или proxy удаляет большие sync-запросы. Вместо этого начните с проверки всего сценария от начала до конца: создайте или импортируйте бюджет, добавьте транзакции, синхронизируйте второй браузер и сформируйте export на уровне приложения.
Такая проверка соответствует заявленному назначению Actual Budget: планированию бюджета по категориям с хранением данных на вашем диске. Кроме того, она раньше, чем uptime probe, выявляет отсутствующие зависимости, неверные предположения о proxy и временное хранилище данных.
Отделите Actual Budget от его зависимостей
Начните с network namespace Actual Budget: его web listener использует порт 5006, а не host port, скопированный из tutorial для ноутбука. Локальное требование runtime — один том с постоянным хранением данных и поддерживаемый браузер для первоначальной настройки. Явно зафиксируйте lifecycle, чтобы перенос Actual Budget между хостами не менял поведение незаметно.
После выполнения требования запустите полный сценарий — создайте или импортируйте бюджет, добавьте транзакции, синхронизируйте второй браузер и сформируйте export на уровне приложения. Вместо ресурсоемких server-side вычислений записывайте логи и измерения размера файла бюджета, sync-трафика и хранилища сервера. Эти данные станут первой заведомо рабочей архитектурой и позволят проверять последующие переносы между compute в Dockup и подключенным сервером.
Запустите первый экземпляр, максимально похожий на production
Минимальная команда полезна, если она показывает, чем позднее будет управлять платформа.
docker run -d \
--name actual-budget \
--restart unless-stopped \
-p 127.0.0.1:5006:5006 \
-v actual-budget-data:/data \
-e ACTUAL_PORT=5006 \
actualbudget/actual-server:latest
Здесь порт 5006 остается доступным только с хоста, а все обязательные пути указаны явно. До публикации подтвердите локальное требование: один том с постоянным хранением данных и поддерживаемый браузер для первоначальной настройки. Проверьте запуск по логам и с помощью проверки, специфичной для приложения: создайте или импортируйте бюджет, добавьте транзакции, синхронизируйте второй браузер и сформируйте export на уровне приложения. После проверки зафиксируйте версию image, чтобы обычная замена не изменила поведение незаметно.
Сделайте публичный origin однозначным
Выберите итоговый hostname Actual Budget до того, как пользователи сохранят callbacks или настройки клиентов, а затем используйте стабильный HTTPS URL, чтобы sync-клиенты доверяли серверу. Route платформы должен завершать TLS один раз и направлять запросы на приватный порт 5006.
Выполните acceptance transaction извне. Если клиент не достигает Actual Budget, воспользуйтесь чек-листом проверки SSL для проверки DNS и сертификата. Если запрос доходит до Actual Budget, но sync directory является временным или proxy удаляет большие sync-запросы, прекратите менять redirects proxy и проверьте границу, специфичную для приложения.
Сделайте восстановление Actual Budget измеримым
Составьте recovery manifest для Actual Budget: файлы сервера и периодические budget exports на уровне приложения. Подключите /data до bootstrap, запишите безвредные тестовые данные и замените container, чтобы доказать фактическую постоянность этого пути. Проверьте права владельца и свободное место сейчас, поскольку подключенный, но недоступный для записи путь практически ничем не отличается от отсутствия persistence.
Создавайте backups в отдельном failure domain, не связанном с работающим сервером. Восстановите Actual Budget из pinned image и убедитесь, что восстановленный сервер синхронизирует те же счета и балансы, а независимый export также можно импортировать. Руководство по persistent volumes поможет превратить эту процедуру в политику snapshot и хранения резервных копий.
Защитите Actual Budget после bootstrap
Учетные данные bootstrap временные, а trust model постоянна. В случае Actual Budget следите за тем, чтобы не публиковать finance server до настройки его пароля: задайте пароль сервера до публикации и используйте HTTPS, поскольку instance содержит полную финансовую историю.
ACTUAL_PORT управляет поведением, а не конфиденциальностью; проверьте его тип и значение, а настоящие учетные данные Actual Budget храните отдельно. Запускайте image без ненужных Linux capabilities и публикуйте только публичный application route. Отслеживайте действия administrators, не записывая секретные значения.
Эксплуатируйте Actual Budget с учетом реального bottleneck
Стройте dashboards вокруг размера файла бюджета, sync-трафика и хранилища сервера, а не ресурсоемких server-side вычислений. График CPU без контекста этой нагрузки не объяснит, почему Actual Budget работает медленно. Добавьте synthetic или scheduled check, который пытается создать или импортировать бюджет, добавить транзакции, синхронизировать второй браузер и сформировать export на уровне приложения, используя безвредные тестовые данные.
Перед обновлением учтите специфическую для этого приложения опасность: data migrations Actual должны тестироваться при наличии и файлов сервера, и экспортированного бюджета для rollback. Восстановите свежий backup в изолированном deployment, выполните там migrations и сравните поведение. Если sync directory является временным или proxy удаляет большие sync-запросы, сначала проверьте соответствующую границу — public origin, storage или dependency, — и только потом изменяйте несвязанные настройки.
Какие данные собрать до запуска Actual Budget
Создайте небольшой одноразовый fixture Actual Budget и сохраняйте его для каждого release. Fixture должен проверять реальный workflow: создание или импорт бюджета, добавление транзакций, синхронизацию второго браузера и формирование export на уровне приложения. Запишите digest image, внешний hostname, адрес dependency и ожидаемый результат, чтобы следующий operator мог повторить тест, не интерпретируя это руководство.
Запустите fixture три раза. Сначала используйте свежее deployment. Затем замените container, не изменяя durable state. В третий раз восстановите backup в пустой environment. Третий запуск считается успешным только тогда, когда восстановленный сервер синхронизирует те же счета и балансы, а независимый export также можно импортировать. Во время каждого запуска собирайте данные о latency и использовании ресурсов для размера файла бюджета, sync-трафика и хранилища сервера, а не для ресурсоемких server-side вычислений; это станет baseline для alerts вместо произвольного процента CPU.
Наконец, намеренно проверьте negative path: отправьте безвредный input около resource или format limit, связанного с этой границей: sync directory является временным или proxy удаляет большие sync-запросы. Убедитесь, что Actual Budget явно сообщает об ошибке и не повреждает state, восстановите правильное условие и повторите успешную transaction. Release record с этими четырьмя результатами является более надежным доказательством, чем screenshots dashboard или однократный ответ curl.
Перенесите повторяемые infrastructure-задачи в Dockup
Dockup может взять на себя заменяемые platform components: направлять traffic на порт 5006, выпускать domain и certificate, передавать secrets, подключать persistent storage и соединять Actual Budget с managed или private attached services. Это можно делать на infrastructure Dockup или на подключенном вами сервере.
Acceptance для Actual Budget остается явной. После one-click deployment используйте стабильный HTTPS URL, чтобы sync-клиенты доверяли серверу, подтвердите локальное требование — один том с постоянным хранением данных и поддерживаемый браузер для первоначальной настройки — и запустите этот сценарий: создайте или импортируйте бюджет, добавьте транзакции, синхронизируйте второй браузер и сформируйте export на уровне приложения. Такое разделение намеренно: Dockup устраняет повторяющуюся настройку infrastructure, не создавая иллюзию, что роли приложения, credentials провайдеров или policy восстановления выбираются автоматически.
Часто задаваемые вопросы
Что нужно Actual Budget для production deployment?
Направьте container Actual Budget через порт 5006 к одному HTTPS origin. Локальное требование runtime — один том с постоянным хранением данных и поддерживаемый браузер для первоначальной настройки. Не считайте Actual Budget готовым, пока не сможете создать или импортировать бюджет, добавить транзакции, синхронизировать второй браузер и сформировать export на уровне приложения.
Какие данные Actual Budget нужно включить в backup?
Сохраняйте /data и включайте в один recovery manifest файлы сервера и периодические budget exports на уровне приложения. Чистое восстановление Actual Budget считается успешным только тогда, когда восстановленный сервер синхронизирует те же счета и балансы, а независимый export также можно импортировать.
Нужен ли Actual Budget HTTPS за reverse proxy?
Используйте HTTPS для публичного origin Actual Budget, а порт 5006 оставьте во внутреннем route. Корректно примените настройку Actual Budget: используйте стабильный HTTPS URL, чтобы sync-клиенты доверяли серверу. Для Actual Budget HTTPS защищает credentials или пользовательский контент при передаче и обеспечивает согласованное поведение клиентов, зависящее от origin.
Как тестировать обновление Actual Budget?
Восстановите текущее state Actual Budget в изолированном deployment, примените candidate version и повторите acceptance transaction. Уделите этому особое внимание, поскольку data migrations Actual должны тестироваться при наличии и файлов сервера, и экспортированного бюджета для rollback. Храните предыдущую image Actual Budget, пока не будут понятны границы data migration и rollback.
