Wallos
Учет подписок и регулярных платежей семьи на своем сервере: у каждой записи валюта, карта, «кто платит» и дата списания, а напоминание приходит в Telegram, Gotify или на почту до списания. Ниже - как устроен Wallos 5.7.1, чем он лучше таблицы и сколько ест.
Вердикт
- семье с 10-30 подписками на разных картах и в разных валютах: один список, «кто платит», напоминание до списания
- фрилансеру или студии как реестр продлений: домены, VPS, лицензии, API-ключи
- владельцам self-host-стека: уведомления в Gotify, вход через Keycloak, Ollama для советов
- тем, кто ждет автопоиска подписок по выписке: к банкам Wallos не подключается
- для учета транзакций и счетов - это Firefly III или Sure
- одному человеку с тремя стримингами: отдельный сервер дороже бесплатной таблицы
Wallos: что это и какую задачу решает
Wallos - self-hosted трекер подписок и регулярных платежей: стриминги, облако, связь, домен, VPS, страховка. У каждой записи цена, валюта, периодичность, дата следующего списания, способ оплаты, категория и участник семьи. Крон ночью сдвигает даты, утром рассылает напоминания.
Это не учет личных финансов: Wallos не подключается к банкам и не читает выписки, все вносится руками. Для счетов и бюджетов есть Firefly III и Sure.
Для РФ ручной ввод скорее плюс: Rocket Money живет на доступе к банку через Plaid и с российскими картами не работает. Данные Wallos лежат в одном SQLite-файле на вашем диске.
Лицензия GPL-3.0, платных редакций нет. Автор один (ellite), с 2023 года: 8 506 звезд, 425 форков, пять релизов за десять дней в сентябре 2026.
Все подписки семьи в одном месте: валюты, карты, чья подписка
Какие поля есть в Wallos именно для семьи, которая переросла таблицу.
Главный экран - список подписок: логотип, название, периодичность, дата и сумма следующего списания, способ оплаты. Способы оплаты - свой справочник: «карта Т-Банка», «карта мужа», «PayPal через посредника». Логотипы Wallos находит сам.
Семья устроена на двух уровнях. Первый - household: внутри одного аккаунта заводятся участники, у каждой подписки поле «кто платит», список и статистика общие, фильтр по участнику показывает, сколько уходит у каждого.
Второй - отдельные учетные записи, их создает администратор: у каждого свой список и свои уведомления. Общий бюджет - первый вариант, раздельные деньги - второй.
Валюты - второе, ради чего уходят из таблицы: у каждой подписки своя, итог месяца считается в основной. Пересчет идет через внешний Fixer API (ключ бесплатного тарифа вводится в настройках); без ключа итог «в рублях» сложится только по рублевым записям.
Доступность Fixer из РФ мы не проверяли; обход - вести цену в рублях по фактическому списанию.
Календарь платежей, статистика и бюджет
Три экрана, которых у таблицы нет.
Календарь показывает месяц с плашками на датах списания и сумму к списанию в этом месяце. Даты сдвигаются сами после каждого цикла.
Статистика: стоимость в месяц, год и день, прогноз на 12 месяцев (годовой платеж за домен виден как всплеск), разбивка по категориям и «сколько потрачено за все время».
Бюджет двух видов: месячный лимит и лимит на произвольный период с опорной датой. Это один порог, а не бюджетирование по счетам, как в Firefly III.
Таблица подписок против Wallos и платных аналогов
Google Sheets - конкурент номер один, и на десяти рублевых подписках он выигрывает.
Таблица ломается в четырех местах: не напоминает о списании, «следующий платеж» правится руками, курс третьей валюты живет в голове, а «что записано на меня» - отдельная вкладка. Wallos закрывает ровно эти пункты; заполнение остается ручным.
| Параметр | Wallos | Google Sheets | TrackMySubs | Rocket Money |
|---|---|---|---|---|
| Цена | 0 ₽ + сервер около 500 ₽/мес на всех | 0 ₽ | 10 $/мес; семья - 30 $/мес | 2,99-9,99 $/мес, из РФ не оплатить |
| Российские карты | да, банк не нужен | да | да | нет, подписки ищутся через Plaid |
| Напоминание до списания | Telegram, Gotify, Pushover, Discord, 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 до первого запуска.
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 |
Почему 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 ₽/мес
Развертывание на Fatmetal
Fatmetal Cloud Server + Ubuntu 24.04 + Docker Compose: закрепленный тег, Caddy с TLS сверху, порт приложения только на loopback.
Создать сервер и поставить Docker
Тариф CPU2-RAM4-DISK50, Ubuntu 24.04 LTS. Docker Engine и compose-плагин - из официального репозитория Docker, на стенде около минуты (29.8.0); нужна версия 25+.
Подготовить каталоги и 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Поднять стек
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 с, сертификат выдан с первой попытки.
Зарегистрировать владельца - сразу
Дефолтной учетной записи нет: первый, кто откроет /registration.php, становится администратором, после чего страница закрывается сама (302, проверено). До регистрации сервис открыт всему интернету.
Как это делалось у нас. Сервер создан через 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 на loopback | 14,5 мс (302 на login.php) / 2,8 мс (200) |
| Отклик / за TLS снаружи | 156 мс, включая TLS-handshake |
Главное: 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.
Причина. Транзиентный таймаут 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
Что закрыть перед тем, как пускать семью:
Связь с другими стеками
- Gotify и ntfy - напоминание на телефон со своего сервера. Gotify - штатный канал; для ntfy только вебхук, связку не проверяли.
- Keycloak / Authentik - вход по OIDC, одна учетная запись семьи на все домашние сервисы.
- Firefly III и Sure - когда нужны счета, транзакции и бюджеты; интеграции с Wallos нет.
Когда это НЕ ваш выбор
Вы хотите, чтобы подписки нашлись сами
Wallos не подключается к банкам и не читает выписки. Ожидание «подключил карту, увидел все списания» - класс Rocket Money, в РФ рабочего аналога нет.
Один человек, пять подписок в рублях
Отдельный сервер ради пяти строк дороже бесплатной таблицы. Wallos оправдан только соседом на машине, которая уже есть.
Нужен учет денег целиком
Счета, транзакции, бюджеты с остатками, импорт выписок - это Firefly III или Sure, а не «подписка раз в 100 лет» в Wallos.
Частые вопросы
Хватит ли 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 ₽/мес.
Этот стек у нас запущен на конфигурации 2 vCPU / 4 GB RAM / 50 GB SSD (тариф CPU2-RAM4-DISK50). Нашли баг в гайде - напишите, поправим в течение дня.