Команда инженеров · свой ЦОД в РФ · своё железо · своя панель · CloudStack + Linstor · MCP · база знаний по self-hosted
Финансы и учет

Wallos

Учет подписок и регулярных платежей семьи на своем сервере: у каждой записи валюта, карта, «кто платит» и дата списания, а напоминание приходит в Telegram, Gotify или на почту до списания. Ниже - как устроен Wallos 5.7.1, чем он лучше таблицы и сколько ест.

Сентябрь 2026~15 минут чтенияFatmetal Team
Финансы и учет Лицензия: GPL-3.0 Статус: запущен у нас, v5.7.1

Вердикт

Подходит
  • семье с 10-30 подписками на разных картах и в разных валютах: один список, «кто платит», напоминание до списания
  • фрилансеру или студии как реестр продлений: домены, VPS, лицензии, API-ключи
  • владельцам self-host-стека: уведомления в Gotify, вход через Keycloak, Ollama для советов
Не подходит
  • тем, кто ждет автопоиска подписок по выписке: к банкам Wallos не подключается
  • для учета транзакций и счетов - это Firefly III или Sure
  • одному человеку с тремя стримингами: отдельный сервер дороже бесплатной таблицы
Мин. тариф: CPU2-RAM4-DISK50 Рекомендуем: CPU2-RAM4-DISK50 Сложность: easy Время запуска: 1,7 с до контейнеров RAM в простое: ~24 MiB на два контейнера Главный риск: первый, кто откроет регистрацию, становится владельцем Прод-готовность: с оговорками (TLS, регистрация сразу, бэкап SQLite)
Что это

Wallos: что это и какую задачу решает

Wallos - self-hosted трекер подписок и регулярных платежей: стриминги, облако, связь, домен, VPS, страховка. У каждой записи цена, валюта, периодичность, дата следующего списания, способ оплаты, категория и участник семьи. Крон ночью сдвигает даты, утром рассылает напоминания.

Это не учет личных финансов: Wallos не подключается к банкам и не читает выписки, все вносится руками. Для счетов и бюджетов есть Firefly III и Sure.

Для РФ ручной ввод скорее плюс: Rocket Money живет на доступе к банку через Plaid и с российскими картами не работает. Данные Wallos лежат в одном SQLite-файле на вашем диске.

Лицензия GPL-3.0, платных редакций нет. Автор один (ellite), с 2023 года: 8 506 звезд, 425 форков, пять релизов за десять дней в сентябре 2026.

PHP 8.3 (без фреймворка)SQLitenginx + php-fpm + crond в одном контейнереVanilla JS + PWAREST APIOIDC + TOTPFixer APICaddy 2 (TLS)Docker Compose
Сценарий

Все подписки семьи в одном месте: валюты, карты, чья подписка

Какие поля есть в Wallos именно для семьи, которая переросла таблицу.

Главный экран - список подписок: логотип, название, периодичность, дата и сумма следующего списания, способ оплаты. Способы оплаты - свой справочник: «карта Т-Банка», «карта мужа», «PayPal через посредника». Логотипы Wallos находит сам.

Список подписок в Wallos 5.7.1: iCloud+, Netflix и Spotify с датой и суммой следующего списания
Список подписок на нашем стенде, Wallos v5.7.1, тариф CPU2-RAM4-DISK50. Интерфейс на английском: аккаунт зарегистрирован скриптом до выбора языка, русский есть.

Семья устроена на двух уровнях. Первый - household: внутри одного аккаунта заводятся участники, у каждой подписки поле «кто платит», список и статистика общие, фильтр по участнику показывает, сколько уходит у каждого.

Второй - отдельные учетные записи, их создает администратор: у каждого свой список и свои уведомления. Общий бюджет - первый вариант, раздельные деньги - второй.

Настройки Wallos: месячный бюджет, бюджет на период и блок Household с участниками семьи
Настройки: бюджет и блок Household. Тот же стенд, v5.7.1.

Валюты - второе, ради чего уходят из таблицы: у каждой подписки своя, итог месяца считается в основной. Пересчет идет через внешний Fixer API (ключ бесплатного тарифа вводится в настройках); без ключа итог «в рублях» сложится только по рублевым записям.

Доступность Fixer из РФ мы не проверяли; обход - вести цену в рублях по фактическому списанию.

Аналитика

Календарь платежей, статистика и бюджет

Три экрана, которых у таблицы нет.

Календарь показывает месяц с плашками на датах списания и сумму к списанию в этом месяце. Даты сдвигаются сами после каждого цикла.

Календарь платежей Wallos: подписка на дате списания и карточки итога месяца
Календарь платежей. Wallos v5.7.1, наш стенд.

Статистика: стоимость в месяц, год и день, прогноз на 12 месяцев (годовой платеж за домен виден как всплеск), разбивка по категориям и «сколько потрачено за все время».

Статистика Wallos: карточки стоимости, прогноз на 12 месяцев, разбивка по категориям
Статистика: три подписки, 28,97 евро в месяц, прогноз на год. Наш стенд, v5.7.1.

Бюджет двух видов: месячный лимит и лимит на произвольный период с опорной датой. Это один порог, а не бюджетирование по счетам, как в Firefly III.

Сравнение

Таблица подписок против Wallos и платных аналогов

Google Sheets - конкурент номер один, и на десяти рублевых подписках он выигрывает.

Таблица ломается в четырех местах: не напоминает о списании, «следующий платеж» правится руками, курс третьей валюты живет в голове, а «что записано на меня» - отдельная вкладка. Wallos закрывает ровно эти пункты; заполнение остается ручным.

ПараметрWallosGoogle SheetsTrackMySubsRocket Money
Цена0 ₽ + сервер около 500 ₽/мес на всех0 ₽10 $/мес; семья - 30 $/мес2,99-9,99 $/мес, из РФ не оплатить
Российские картыда, банк не нужендаданет, подписки ищутся через Plaid
Напоминание до списанияTelegram, Gotify, Pushover, Discord, e-mail, вебхукнетe-mailпуш
Несколько человек, «чья подписка»household и отдельные учетные записиобщий документтолько за 30 $/месаккаунт на человека
Несколько валютвалюта у записи, пересчет через Fixerформулы рукамиестьвалюта счета

Цены сняты 14 сентября 2026. Семейный TrackMySubs - около 36 000 ₽ в год по курсу ~100 ₽ за доллар, сервер с Wallos - около 6 000 ₽ на всех.

Настройка

Напоминание об оплате подписки: Telegram, Gotify, e-mail и AI-советы

Что настраивается после первого входа и от чего зависит время, когда придет «завтра спишется».

Каналов шесть: e-mail через свой SMTP, Telegram (бот и chat id), Gotify, Pushover, Discord и произвольный вебхук. У каждой подписки - переключатель уведомлений и число дней до списания. Для семьи удобнее всего бот в общий чат.

Расписание задано кроном апстрима по часовому поясу контейнера: напоминания в 09:00, сдвиг дат в 01:00, курсы валют в 02:00. В compose из README стоит America/Toronto - «утреннее» напоминание придет в Москву после обеда. Ставьте Europe/Moscow до первого запуска.

i

SSRF-allowlist. С 5.x Wallos блокирует вебхуки, SMTP и OIDC на приватные адреса, пока хост не в allowlist: Gotify на той же машине уведомление молча не получит. Лечится в Admin, Security Settings, или переменной SSRF_ALLOWLIST=gotify:80 в compose.

AI-советы по тратам генерирует крон через ChatGPT, Gemini или локальную Ollama; адрес и ключ вводятся в настройках. Из России до OpenAI и Gemini напрямую не достучаться - на VPS Fatmetal это уже решено: прокси api-proxy.fatmetal.net:8080 входит в сервер, достаточно добавить в environment контейнера HTTPS_PROXY, HTTP_PROXY и NO_PROXY. На стенде AI-советы не включали.

Под капотом

Тех-стек и архитектура

Wallos - PHP 8.3 «файл = страница» без фреймворка, фронт - ванильный JavaScript без сборки. База - один файл SQLite, миграции применяются при первом открытии после обновления. Внешних сервисов нет: ни MariaDB, ни Redis.

Образ называется bellamy/wallos - по имени автора на Docker Hub, не проекта. Внутри под dumb-init три процесса: nginx, php-fpm (потолок pm.max_children = 15) и crond. Скрипт startup.sh перемаппит www-data на PUID/PGID и делает chown томов db и logos.

Healthcheck GET /health.php использует start-interval - нужен Docker Engine 25+. Порт внутри 80, у нас опубликован только на 127.0.0.1; наружу смотрит Caddy с Let's Encrypt, одна строка reverse_proxy.

Конфигурация

Минимальная конфигурация

Апстрим числовых требований не публикует; ниже - что показал стенд.

Официальный минимумне задан
Реально в простое, весь стек24,1 MiB (wallos 14,2 + caddy 9,9)
Дискобразы 392,7 MB; данные - 212 KB
Рекомендуем тарифCPU2-RAM4-DISK50 - 2 vCPU / 4 GB RAM / 50 GB SSD
i

Почему CPU2-RAM4-DISK50. 24 MiB - на два порядка меньше 4 GB тарифа, класс Memos (~22 MiB), а не Firefly III (~211 MiB). Меньше в каталоге нет, запас уходит соседям на той же машине: Gotify, Vaultwarden, Uptime Kuma.

В маркетплейсе Fatmetal

Не хотите ставить руками?

Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете Wallos на своем домене, валидный TLS и файл с доступами.

Рекомендуемая конфигурация:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe от 450 ₽/мес

Развернуть в 1 клик →
Развертывание

Развертывание на Fatmetal

Fatmetal Cloud Server + Ubuntu 24.04 + Docker Compose: закрепленный тег, Caddy с TLS сверху, порт приложения только на loopback.

  1. Создать сервер и поставить Docker

    Тариф CPU2-RAM4-DISK50, Ubuntu 24.04 LTS. Docker Engine и compose-плагин - из официального репозитория Docker, на стенде около минуты (29.8.0); нужна версия 25+.

  2. Подготовить каталоги и compose

    PUID/PGID - uid и gid вашего пользователя; домен в Caddyfile уже должен указывать на IP сервера.

    sudo mkdir -p /opt/wallos/{db,logos,caddy_data,caddy_config}
    sudo chown -R $USER:$USER /opt/wallos && cd /opt/wallos
    
    cat > compose.yml <<'EOF'
    services:
      wallos:
        image: bellamy/wallos:5.7.1
        restart: unless-stopped
        environment:
          TZ: 'Europe/Moscow'
          PUID: '1000'
          PGID: '1000'
        ports:
          - "127.0.0.1:8282:80"
        volumes:
          - './db:/var/www/html/db'
          - './logos:/var/www/html/images/uploads/logos'
      caddy:
        image: caddy:2
        restart: unless-stopped
        ports:
          - "80:80"
          - "443:443"
        volumes:
          - ./Caddyfile:/etc/caddy/Caddyfile
          - ./caddy_data:/data
          - ./caddy_config:/config
    EOF
    
    cat > Caddyfile <<'EOF'
    wallos.example.ru {
        reverse_proxy wallos:80
    }
    EOF
  3. Поднять стек

    docker compose pull && docker compose up -d
    curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8282/health.php   # 200

    На стенде образы скачались за 9,3 с, контейнеры поднялись за 1,7 с, сертификат выдан с первой попытки.

  4. Зарегистрировать владельца - сразу

    Дефолтной учетной записи нет: первый, кто откроет /registration.php, становится администратором, после чего страница закрывается сама (302, проверено). До регистрации сервис открыт всему интернету.

i

Как это делалось у нас. Сервер создан через MCP-сервер Fatmetal, дальше по SSH: от первого входа на чистую машину до подтвержденного логина - 5 минут 9 секунд, больше минуты из них съели два таймаута Docker Hub.

Замеры

Что измерили после запуска

Стенд: Fatmetal Cloud Server CPU2-RAM4-DISK50, Ubuntu 24.04.4, Docker 29.8.0, Wallos v5.7.1 + caddy:2, 14 сентября 2026; тайминги - контролируемый цикл down, rmi, pull, up.

Скачивание образов, холодное9,3 с на оба (304 + 88,7 MB на диске)
От docker compose up до контейнеров1,7 с; healthy на первой проверке, сама проверка - 128 мс
Итого до продукта с TLS и входом5 мин 9 с от первого SSH, включая таймауты реестра
RAM в простое, весь стек24,1 MiB (wallos 14,2 / caddy 9,9)
Диск после установки2,7 GB из 50 GB; данные 212 KB
Отклик / и /health.php на loopback14,5 мс (302 на login.php) / 2,8 мс (200)
Отклик / за TLS снаружи156 мс, включая TLS-handshake
i

Главное: 24 MiB на два контейнера, само приложение - 14 MiB. Первый снимок показывал 30,6 MiB - разброс на Caddy в первые минуты после выпуска сертификата. Под нагрузкой не мерили; потолок php-fpm - 15 одновременных запросов.

Проверено на Wallos v5.7.1, сентябрь 2026. На новых версиях результаты могут отличаться.

Подводные камни

Где может сломаться

Грабли с запуска и то, чем 5.x отличается от старых инструкций.

!

Гонка за первого пользователя. Пароля администратора в переменных нет, первый посетитель registration.php становится владельцем. Регистрация - первое действие после старта; осторожный вариант - поднять стек без публикации портов Caddy, зарегистрироваться через SSH-туннель и потом открыть 80/443.

!

Права на тома. startup.sh делает chown -R каталогов db и logos под PUID/PGID. Не совпали с владельцем на хосте - бэкап через tar под своим пользователем упрется в permission denied.

failed to copy: httpReadSeeker: failed open: ... registry-1.docker.io ... net/http: timeout awaiting response headers

Причина. Транзиентный таймаут Docker Hub; на стенде оборвал две попытки docker compose up -d (39,6 и 33,4 с), каждая докачала часть слоев.

Решение. Повторить docker compose up -d: слои кешируются, третья попытка добирает остаток. Если системно - registry-mirrors в /etc/docker/daemon.json.

Безопасность

Безопасность и обновления

Обновления - GitHub Releases и теги Docker Hub, встроенная проверка показывает новую версию в интерфейсе. Обновление - правка тега в compose и повторный up; latest при таком темпе релизов не советуем.

docker compose pull && docker compose up -d   # после правки тега в compose.yml

Бэкап - каталоги db и logos; SQLite на горячую не копируйте, остановите контейнер на секунду. На стенде тома пережили удаление образов и пересоздание контейнеров.

docker compose stop wallos
tar czf ~/wallos-$(date +%F).tgz -C /opt/wallos db logos
docker compose start wallos

Что закрыть перед тем, как пускать семью:

  • TLS и порты. Приложение только на 127.0.0.1:8282, наружу - Caddy.
  • Второй фактор. TOTP встроен; владельцам Keycloak или Authentik - OIDC через переменные OIDC_*.
  • Секреты. Ключ Fixer, токен бота и SMTP-пароль лежат в SQLite и попадут в бэкап; секрет OIDC - файлом через OIDC_CLIENT_SECRET_FILE.
Рядом

Связь с другими стеками

  • Gotify и ntfy - напоминание на телефон со своего сервера. Gotify - штатный канал; для ntfy только вебхук, связку не проверяли.
  • Keycloak / Authentik - вход по OIDC, одна учетная запись семьи на все домашние сервисы.
  • Firefly III и Sure - когда нужны счета, транзакции и бюджеты; интеграции с Wallos нет.
Ограничения

Когда это НЕ ваш выбор

Вы хотите, чтобы подписки нашлись сами

Wallos не подключается к банкам и не читает выписки. Ожидание «подключил карту, увидел все списания» - класс Rocket Money, в РФ рабочего аналога нет.

Один человек, пять подписок в рублях

Отдельный сервер ради пяти строк дороже бесплатной таблицы. Wallos оправдан только соседом на машине, которая уже есть.

Нужен учет денег целиком

Счета, транзакции, бюджеты с остатками, импорт выписок - это Firefly III или Sure, а не «подписка раз в 100 лет» в Wallos.

FAQ

Частые вопросы

Хватит ли 2 GB RAM?

С запасом: весь стек в простое - 24 MiB, хост после установки занимает 539 MiB вместе с ОС и Docker.

Есть ли русский интерфейс?

Да, 30 локалей включая русскую; язык выбирается при регистрации и в настройках.

Как приходит напоминание?

Крон в 09:00 по TZ контейнера рассылает уведомления о списаниях через заданное число дней: Telegram, Gotify, Pushover, Discord, e-mail или вебхук.

Какие ограничения лицензии?

GPL-3.0: использовать и менять можно свободно, в том числе коммерчески; измененную версию распространять только с исходниками.

Итог

Wallos - трекер подписок для семьи, которая переросла таблицу: валюта и карта у каждой записи, «кто платит», календарь списаний и напоминание в Telegram или Gotify до того, как деньги ушли. Контейнер со SQLite плюс Caddy берет 24 MiB в простое - на CPU2-RAM4-DISK50 это вся семья без лимита на записи и людей, а данные остаются в одном файле на вашем диске.

Рекомендуемая конфигурация для установки:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe

Не хотите устанавливать вручную?

Запустите Wallos на этой конфигурации автоматически - от 450 ₽/мес.

Запустить Wallos →
Анонсы новых разборов в Telegram-канале Новые гайды и карточки в маркетплейсе первыми @fatmetal_channel →

Этот стек у нас запущен на конфигурации 2 vCPU / 4 GB RAM / 50 GB SSD (тариф CPU2-RAM4-DISK50). Нашли баг в гайде - напишите, поправим в течение дня.