PocketBase
Свой бэкенд на сервере в одном файле: база SQLite, REST API, аутентификация, realtime, хранилище файлов и админка - один Go-бинарь ~30 МБ RAM. Легкая self-hosted альтернатива Firebase, которая ставится за минуту. Подняли актуальную версию в боевом режиме, замерили и проверили вживую: HTTPS, health, админка и авто-REST отвечают.
Вердикт
- нужен бэкенд для pet-проекта, MVP или edge - без чужого облака и лимитов чтений
- хотите один процесс вместо десятка контейнеров: база, API, auth и файлы в одном бинаре
- цените минимальный расход - весь бэкенд ест ~30 МБ RAM и ставится за минуту
- нужен тяжелый прод с Postgres, репликацией и горизонтальным кластером - это к Supabase
- требуется несколько инстансов за балансировщиком: PocketBase масштабируется вертикально
- команда уже завязана на экосистему Postgres-расширений и SQL-функций
Что это и какую задачу решает
PocketBase - open-source бэкенд «в одном файле»: один Go-бинарь со встроенным SQLite, который сразу дает базу с табличным редактором, авто REST-like API, аутентификацию (email/пароль плюс OAuth), realtime через SSE-подписки, файловое хранилище и веб-админку. По сути это self-hosted альтернатива Firebase и другим BaaS: весь бэкенд для приложения вы держите на своем сервере, а не в чужом облаке с лимитами чтений и вендор-локом.
Задача, которую он закрывает, - «мне нужен бэкенд, а не инфраструктура». Скачали бинарь, запустили, получили API и админку. Ставится за минуту, в простое ест десятки МБ памяти - удобно для pet-проектов, MVP и edge-сценариев, где полноценный Supabase из десятка контейнеров избыточен. Автор проекта - Gani Georgiev, репозиторий собрал около 40k звезд.
Вход и админка
Первое, что видит владелец, - страница входа в админку по адресу /_/. Тут вся суть PocketBase: за входом стоит один суперюзер и встроенный SQLite, без внешней базы данных и отдельного сервиса аутентификации. Регистрации через веб нет - суперюзер создается заранее, через CLI, о чем ниже.
Чем отличается от Supabase
Оба закрывают одну нишу self-host backend, но с разных концов: PocketBase - простота, Supabase - мощь.
| Параметр | PocketBase | Supabase |
|---|---|---|
| Что разворачивается | 1 Go-бинарь + SQLite | ~11 контейнеров + Postgres |
| Расход в простое | десятки МБ RAM | несколько ГБ RAM |
| Установка | скачал бинарь, запустил (минута) | docker compose, тяжелый стек |
| Под что заточен | pet / MVP / edge | тяжелый прод |
| Масштабирование | вертикальное (один процесс) | горизонтальное, Postgres |
| Итого | проще | мощнее |
Как выбирать. Нужен бэкенд «здесь и сейчас» под небольшой проект - PocketBase. Нужен тяжелый прод с Postgres, расширениями и кластером - Supabase. Это не конкуренты за одно место, а два инструмента разного веса в одной нише.
Тех-стек и архитектура
PocketBase - это единственный исполняемый файл на Go. Внутри него: встроенный SQLite (база и файловые метаданные), HTTP-сервер с REST API на /api/, веб-админка на /_/, аутентификация и realtime через Server-Sent Events. Внешних зависимостей нет - ни отдельной СУБД, ни брокера, ни рантайма. Наружу приложение слушает порт 8090 на localhost, публичный доступ закрывает Caddy обратным прокси с авто-TLS от Let's Encrypt.
Все состояние живет в одном каталоге pb_data: файл SQLite, загруженные файлы и настройки. Это и есть сила, и слабое место - о бэкапе всего каталога скажем в разделе про грабли. В админке коллекции описываются типовой схемой (текст, число, связь, файл), и по каждой коллекции сразу доступен REST API - без написания эндпоинтов вручную.
Минимальная конфигурация
Реальные требования против того, что заявлено.
| Минимум для теста | CPU2-RAM4-DISK50 |
| Реально в простое | ~30 МБ RAM (pocketbase 29.7 MiB) |
| Бинарь на диске | 31 МБ |
| Каталог pb_data | 1.2 МБ на старте |
| Рекомендуем тариф | CPU2-RAM4-DISK50 |
Важно: тарифа CPU2-RAM4 хватает с огромным запасом. Весь бэкенд - один процесс на ~30 МБ RAM, база и файлы лежат в каталоге pb_data. Для сравнения: тяжелый Supabase на таком тарифе не поместится.
В маркетплейсе Fatmetal
Не хотите ставить руками?
Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий домен, валидный TLS и уже созданного суперюзера - вход паролем сервера.
Рекомендуемая конфигурация: CPU2-RAM4-DISK50
Развертывание на Fatmetal
Базовый путь - Cloud Server + Ubuntu 24.04 + бинарь за Caddy.
Создать VM
Ubuntu 24.04, тариф CPU2-RAM4 - PocketBase ест десятки МБ, запаса хватает с избытком.
Скачать бинарь и завести сервис
pocketbase serve --http=127.0.0.1:8090Кладем бинарь в
/opt/pocketbaseи оборачиваем в systemd-юнит. Приложение слушает только localhost.Создать суперюзера
pocketbase superuser upsert admin@ваш-домен парольКоманда идемпотентна. Веб-регистрации суперюзера нет - он заводится через CLI. Пароль от 8 символов, спецсимвол не требуется.
Закрыть TLS
Caddy обратным прокси на :8090 - автоматический сертификат Let's Encrypt на ваш домен. Админка откроется на
/_/, API - на/api/.
Что измерили после запуска
Цифры со свежей установки, весь стек без нагрузки.
| Процессов | 1 (pocketbase) + Caddy впереди |
| RAM в простое | ~29.7 MiB (pocketbase) |
| Бинарь / pb_data | 31 МБ / 1.2 МБ |
| TTFB на /api/health | 0.0007 с, код 200 |
| Health-check | /api/health 200; /_/ 200; авто-REST 200 |
| Внешний отклик | https 200, валидный Let's Encrypt |
Заказ-тест прошли предметно: инстанс встал из cloud-init, HTTPS поднялся на magic-DNS домене с валидным TLS, /api/health вернул 200, админка /_/ открылась. Вход суперюзером admin@домен паролем сервера пустил в Dashboard, а авто-REST /api/collections/users/records вернул 200 - то есть API работает из коробки, а не только отдает страницу входа.
Проверено на версии 0.39.10, август 2026. На новых версиях результаты могут отличаться.
Где может сломаться
Особенности «одного файла», о которых лучше знать заранее.
Причина. Суперюзер PocketBase создается не через веб-форму, а из CLI. Свежий инстанс без этого шага не пустит в админку.
Решение. Прогоните pocketbase superuser upsert admin@домен пароль - команда идемпотентна. В карте маркетплейса суперюзер создается автоматически паролем сервера.
Весь стейт - в pb_data. База SQLite и загруженные файлы лежат в одном каталоге. Бэкапить нужно его целиком - потеряли каталог, потеряли бэкенд.
Один процесс, вертикальное масштабирование. PocketBase - не кластер. Растете - берете тариф мощнее, а не поднимаете несколько инстансов за балансировщиком.
Безопасность и обновления
Сразу смените пароль суперюзера (в карте он равен паролю сервера) в админке. Порт 8090 наружу не публикуйте - только через прокси с TLS. Настройте правила доступа (API rules) для каждой коллекции, иначе данные могут читаться публично. Для приложения заводите обычных пользователей и OAuth, а суперюзера держите только для администрирования.
Обновление - подмена бинаря на новую версию релиза и перезапуск сервиса. Бэкап - весь каталог pb_data:
systemctl stop pocketbase && tar czf pb_data.tgz pb_data
Перед продом закройте: смену пароля суперюзера, TLS на прокси, правила доступа коллекций (API rules), регулярный бэкап каталога pb_data и обновление бинаря на актуальный релиз.
Связь с другими стеками
- Supabase - старший брат в той же нише: Postgres и десяток сервисов, когда PocketBase перерос проект.
- Обратный прокси - Caddy или Nginx Proxy Manager для TLS и единого домена перед :8090.
- Почта - внешний SMTP для писем подтверждения и сброса пароля пользователей.
- Мониторинг - Uptime Kuma по /api/health и Grafana по метрикам сервера.
Когда это НЕ ваш выбор
Нужен тяжелый прод на Postgres
Если проекту нужны Postgres-расширения, репликация, сложные SQL-функции и горизонтальный кластер - берите Supabase, а не PocketBase. Это разный вес.
Требуется несколько инстансов за балансировщиком
PocketBase - один процесс на одном сервере. Сценарий «десять реплик за балансировщиком» - не про него; масштабируется вертикально.
Команда завязана на экосистему SQL
Если у вас уже пул Postgres-специалистов, миграции и хранимые процедуры - переезд на SQLite-модель PocketBase может стоить дороже, чем экономит.
Частые вопросы
Чем PocketBase отличается от Supabase?
PocketBase - один Go-бинарь и SQLite на десятки МБ RAM, для pet-проектов, MVP и edge. Supabase - около 11 контейнеров и Postgres на несколько ГБ, для тяжелого прода. PocketBase проще, Supabase мощнее.
Нужна ли отдельная база данных?
Нет. SQLite встроен в бинарь, внешней СУБД не требуется. Вся база и файлы лежат в каталоге pb_data.
Как создать суперюзера?
Через CLI: pocketbase superuser upsert admin@домен пароль. Веб-регистрации суперюзера нет. В карте маркетплейса он создается автоматически.
Хватит ли тарифа CPU2-RAM4-DISK50?
С огромным запасом. В простое PocketBase ест ~30 МБ RAM, а бинарь весит 31 МБ. Тарифа CPU2-RAM4 более чем достаточно.
Как делать бэкап?
Сохранять каталог pb_data целиком - в нем SQLite и загруженные файлы. Останавливаете сервис и архивируете каталог.
Можно ли масштабировать горизонтально?
Нет, PocketBase - один процесс, масштабирование вертикальное. Нужен кластер - это к Supabase на Postgres.
Какие ограничения лицензии?
Лицензия MIT - свободное использование, в том числе коммерческое. Ограничений на хостинг нет.
Итог
PocketBase - самый легкий способ поднять свой бэкенд на сервере: база SQLite, REST API, аутентификация, realtime и админка в одном Go-бинаре под лицензией MIT. В простое весь стек ест ~30 МБ RAM, бинарь весит 31 МБ, а health отвечает за 0.0007 с - вход суперюзером и авто-REST проверили вживую. Это self-hosted альтернатива Firebase без чужого облака и лимитов чтений. Плата за простоту - один процесс и весь стейт в каталоге pb_data: нужен тяжелый прод на Postgres и кластер - берите Supabase.
Этот стек у нас запущен на тарифе CPU2-RAM4. Нашли баг в гайде - напишите, поправим в течение дня.