Команда инженеров · свой ЦОД в РФ · своё железо · своя панель · CloudStack + Linstor · MCP · база знаний по self-hosted
Проверено
5 августа 2026 г.
Репозиторий
GitHub →
Бэкенд и BaaS

Supabase

Весь бэкенд на вашем сервере: Postgres, авто-REST и GraphQL API поверх таблиц, аутентификация, realtime, хранилище файлов и веб-админка Studio. Self-host замена Firebase - без чужого облака Google, без вендор-лока и оплаты за чтения. Подняли официальный docker-стек в боевом режиме, замерили RAM по контейнерам и проверили вживую: таблица мгновенно стала REST API.

Август 2026 ~11 минут чтения Fatmetal Team
Бэкенд / BaaS Лицензия: Apache-2.0 Статус: запущен у нас, стек из ~11 сервисов

Вердикт

Подходит
  • нужен полноценный бэкенд (БД, auth, API, realtime, хранилище) на своем сервере, а не в облаке Google
  • уходите с Firebase из-за вендор-лока и оплаты за каждое чтение
  • любите Postgres и хотите авто-REST и GraphQL поверх своих таблиц без ручного бэкенда
Не подходит
  • нужен легкий бэкенд под MVP на одном бинаре - это к PocketBase, а не к стеку из 11 контейнеров
  • сервер меньше CPU4-RAM8: стек тяжелый, в простое ест ~2.2 ГБ RAM
  • критично нужны Edge Functions прямо из РФ - дефолтная функция тянет пакет из реестра Deno и падает по гео-блоку
Мин. тариф: CPU4-RAM8-DISK100 Рекомендуем: CPU4-RAM8-DISK100 Сложность: high Время запуска: тяжелый старт, ждать health по частям Главный риск: неверно подписанные API-ключи -> Kong 401 Прод-готовность: из коробки (TLS + Studio за basic-auth + ключи сгенерены)
Что это

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

Supabase - open-source платформа-бэкенд (BaaS, backend-as-a-service), self-host замена Firebase. Из коробки дает то, ради чего обычно берут облако Google: базу данных, аутентификацию, автоматический API поверх таблиц, подписки на изменения в реальном времени, хранилище файлов и админку. Разница в одном - все это работает НА ВАШЕМ сервере, данные лежат у вас, а не в чужом облаке.

Боль, от которой уходят: Firebase - это SaaS Google с вендор-локом и оплатой за чтения, где счет растет вместе с трафиком, а данные вы не контролируете. Облачный Supabase - тоже SaaS. Self-host Supabase снимает и то и другое: весь бэкенд у вас, лимитов и счетчика чтений нет, лицензия Apache-2.0 разрешает коммерческое использование и хостинг.

В основе - обычный Postgres. Это ключевая идея: вы создаете таблицу в базе, и она мгновенно становится REST API. Не нужно писать роуты, контроллеры и ORM - PostgREST генерирует API прямо из схемы, а GoTrue закрывает его аутентификацией и построчными политиками доступа (RLS) самого Postgres.

PostgreSQL 17PostgREST (авто-API)GoTrue (auth)RealtimeStorageKong gatewayDocker
Сравнение

Чем отличается от Firebase и PocketBase

Триада выбора: Firebase - облако Google; PocketBase - легкий self-host под MVP; Supabase - мощный self-host на Postgres.

ПараметрFirebase (облако)PocketBase (легкий)Supabase (мощный)
Где данныев облаке Googleна вашем серверена вашем сервере
МодельSaaS, вендор-локopen-sourceopen-source (Apache-2.0)
Оплата за чтенияда, счет растет с трафикомнетнет
База данныхFirestore (NoSQL)SQLite (1 файл)PostgreSQL 17
Развес стека-1 бинарь, ~30 МБ~11 контейнеров, ~2 ГБ RAM
Под чтобыстрый старт в облакеMVP и небольшие проектысерьезный прод
i

Как выбрать: нужен свой бэкенд без облака и проект небольшой - берите PocketBase (легкий, SQLite). Нужен мощный бэкенд на Postgres с готовыми auth, realtime и Studio под серьезный прод - Supabase. Firebase здесь - точка отсчета, от которой оба уводят на ваш сервер.

Под капотом

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

Supabase self-host - это не один продукт с единой версией, а композиция сервисов вокруг Postgres. Единого номера версии у него нет, поэтому в бейдже стоит только лицензия Apache-2.0, а версии компонентов - в таблице ниже. Все внешние запросы идут через один вход - API-gateway Kong, который маршрутизирует их по сервисам и закрывает Studio basic-авторизацией.

Ядро - Postgres 17. Поверх него PostgREST отдает автоматический REST API прямо из схемы таблиц, GoTrue выдает и проверяет JWT для аутентификации, Realtime транслирует изменения БД по WebSocket, Storage хранит файлы (с imgproxy для превью), postgres-meta и Studio дают веб-админку, supavisor пулит соединения к базе, а Edge Functions выполняют серверный код на Deno.

Supabase Studio
Supabase Studio: дашборд проекта, слева - табличный/SQL-редактор, Auth, Storage, Realtime, Edge Functions.
СервисРольВерсия
Postgresбаза данных, ядро всего17.6
KongAPI-gateway, единый вход, basic-auth для Studio3.9.3
GoTrue (auth)аутентификация, выдача JWTv2.189.0
PostgREST (rest)авто-REST API поверх таблицv14.12
Realtimeподписки на изменения БД по WebSocketv2.102.3
Storage + imgproxyхранилище файлов и превьюv1.60.4 / v3.30.1
postgres-metaуправление схемой для Studiov0.96.6
Studioвеб-админка (таблицы, SQL, auth, storage)2026.08.03
Edge Functionsсерверный код на Deno (опционально)v1.74.0
supavisorпулер соединений к Postgres-
Конфигурация

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

Стек тяжелый - реальные требования против того, что кажется на глаз.

Минимум для тестаCPU4-RAM8-DISK100
Контейнеров в стеке~11 за Kong
RAM в простое (весь стек)~2.2 GB (2172 MiB)
Образы на диске~9.1 GB
Рекомендуем тарифCPU4-RAM8-DISK100
i

Важно: это не легкий бэкенд. Даже в простое, без единого запроса, стек занимает ~2.2 ГБ RAM - больше всех ест Kong (450 МиБ), затем Studio (214), pooler (208) и realtime (188). Плюс ~9 ГБ образов на диске. Тариф ниже CPU4-RAM8 брать не стоит: под нагрузкой Postgres и сервисам станет тесно.

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

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

Этот стек есть в маркетплейсе Fatmetal - можно не собирать 11 контейнеров, секреты и подписанные JWT-ключи вручную. Заказываете сервер, за пару минут получаете рабочий домен, валидный TLS, Studio за basic-auth и уже сгенерированные API-ключи - вход паролем сервера.

Рекомендуемая конфигурация: CPU4-RAM8-DISK100

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

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

Базовый путь - Cloud Server CPU4-RAM8 + Ubuntu 24.04 + официальный docker-стек за Caddy.

  1. Создать VM

    Ubuntu 24.04 с Docker, тариф CPU4-RAM8-DISK100. Стек тяжелый: ~11 контейнеров и ~9 ГБ образов, меньше 8 ГБ RAM не берите.

  2. Взять официальный docker-стек

    git clone --depth 1 github.com/supabase/supabase
    cp docker/.env.example docker/.env

    В .env прописать домен, секреты и вход в Studio.

  3. Сгенерировать секреты и ключи

    POSTGRES_PASSWORD=...
    JWT_SECRET=... (>=32 символов)
    ANON_KEY=... (JWT, подписан на JWT_SECRET)
    SERVICE_ROLE_KEY=... (JWT, подписан на JWT_SECRET)
    DASHBOARD_USERNAME=admin
    DASHBOARD_PASSWORD=пароль-сервера

    ANON_KEY и SERVICE_ROLE_KEY - это HS256-JWT, подписанные на вашем JWT_SECRET. Демо-ключи из примера не годятся - Kong отдаст 401. В карте маркетплейса они генерятся автоматически.

  4. Поднять стек

    docker compose pull
    docker compose up -d

    Старт тяжелый: Postgres 17, миграции всех сервисов, тянутся ~9 ГБ образов. Health поднимается по частям - подождите.

  5. Закрыть TLS

    Caddy обратным прокси на Kong localhost:8000 - автоматический сертификат Let's Encrypt на magic-DNS домен.

Замеры

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

Цифры со свежей установки, весь стек без нагрузки.

Контейнеров~11 за Kong
RAM в простое (весь стек)~2.2 GB (2172 MiB)
Топ по RAMKong 450, Studio 214, pooler 208, realtime 188, storage 160 MiB
Легкие сервисыimgproxy 104, db 102, meta 92, rest 46, auth 8 MiB
Образы на диске~9.1 GB
Внешний откликhttps 200, валидный Let's Encrypt (YE1)

Что проверено заказ-тестом

  • стек встал за Caddy на magic-DNS домене с валидным TLS Let's Encrypt
  • Studio за Kong basic-auth (admin / пароль сервера) открывается - редирект 307; без auth возвращает 401
  • Auth: /auth/v1/health с anon-ключом = 200 (GoTrue отвечает)
  • REST с service-ключом = 200 (PostgREST отвечает)
  • Доказан авто-API: создали таблицу public.pings в Postgres, и сразу GET /rest/v1/pings с anon-ключом вернул строку. Это ядро Supabase - таблица мгновенно становится REST API, без единой строки серверного кода.

Проверено на стеке от 2026.08.03, август 2026 (Postgres 17.6, Kong 3.9.3, GoTrue v2.189, PostgREST v14.12). На новых версиях компонентов результаты могут отличаться.

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

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

Реальные грабли Supabase self-host - ключи, Caddyfile и гео-блок.

Kong отдает 401 на все API-запросы, даже с ключом

Причина. ANON_KEY и SERVICE_ROLE_KEY - это HS256-JWT с payload (role, iss=supabase, iat, exp), подписанные на JWT_SECRET. Если ключи сгенерированы неправильно или на другом секрете, подпись не сходится и Kong режет все запросы.

Решение. Сгенерируйте оба ключа именно на своем JWT_SECRET. В карте маркетплейса они генерятся автоматически и уже согласованы.

фронт не стартует, Caddy падает на конфиге

Причина. В Caddyfile блок header { ...; ... } записан в одну строку через точку с запятой - Caddy такой синтаксис не парсит.

Решение. Директивы внутри блока пишите с новой строки, каждую отдельно.

Edge Functions не поднимаются из РФ

Дефолтная edge-функция тянет JSR-пакет @panva/jose из реестра Deno, который недоступен и таймаутит из РФ - контейнер уходит в unhealthy. Это опциональный сервис: ядро BaaS (БД, auth, REST, realtime, storage, Studio) работает без него. Если Edge Functions не нужны критично - ограничение не мешает.

!

Тяжелый старт. Postgres 17, миграции всех сервисов и ~9 ГБ образов - первый запуск идет заметно дольше легких стеков. Смотрите health по частям, не пугайтесь, что не все контейнеры готовы сразу.

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

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

Studio закрыт basic-авторизацией на Kong: логин admin, пароль - пароль сервера. Наружу торчит только Kong через Caddy с TLS; сам Kong слушает localhost:8000 и напрямую не публикуется. API-ключи разделены по ролям: anon - публичный (для клиента, ограничен построчными политиками RLS), service_role - секретный, обходит RLS, его нельзя отдавать в браузер. Оба лежат в файле кредов на сервере.

Обновление - смена тегов образов в compose:

docker compose pull && docker compose up -d

Бэкап - дамп Postgres (в нем и данные, и вся конфигурация auth/storage):

docker exec supabase-db pg_dumpall -U postgres > supabase-db.sql
i

Перед продом закройте: смену пароля Studio, TLS на прокси, порт Kong не публиковать наружу напрямую, service_role-ключ держать только на бэкенде, включить RLS на таблицах и настроить регулярный дамп Postgres.

Рядом

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

  • PocketBase - легкий self-host бэкенд на SQLite (1 бинарь, ~30 МБ) для MVP, когда весь стек Supabase избыточен.
  • Обратный прокси - Caddy или Nginx Proxy Manager для TLS и единого домена перед Kong.
  • Почта - внешний SMTP для писем аутентификации (подтверждение, сброс пароля через GoTrue).
  • Мониторинг - Prometheus и Grafana или Beszel по метрикам контейнеров и Postgres.
Когда не ваш выбор

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

Нужен легкий бэкенд под MVP

Если проект небольшой и не хочется держать 11 контейнеров и ~2 ГБ RAM, берите PocketBase - один бинарь на SQLite. Supabase здесь избыточен.

Сервер слабее CPU4-RAM8

Стек тяжелый: ~2.2 ГБ RAM в простое и ~9 ГБ образов. На меньшем тарифе Postgres и сервисам будет тесно уже без нагрузки.

Критичны Edge Functions из РФ

Дефолтная функция падает по гео-блоку реестра Deno. Ядро работает без них, но если серверный код на Deno - ключевая часть проекта, заложите обход заранее.

FAQ

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

Чем это лучше Firebase?

Данные и весь бэкенд у вас на сервере, а не в облаке Google. Нет вендор-лока и оплаты за чтения, лицензия Apache-2.0. Набор возможностей тот же: БД, auth, API, realtime, хранилище.

А чем отличается от PocketBase?

PocketBase - легкий (1 бинарь на SQLite, ~30 МБ) под MVP. Supabase - мощный стек на Postgres из ~11 сервисов (~2 ГБ RAM) под серьезный прод. Firebase - облако Google, от которого оба уводят на ваш сервер.

Правда, что таблица сразу становится API?

Да, это ядро Supabase. Мы создали таблицу в Postgres, и запрос `GET /rest/v1/<таблица>` с anon-ключом сразу вернул строку - без единой строки серверного кода. API генерирует PostgREST прямо из схемы.

Какая версия у Supabase?

Единой версии нет - это композиция сервисов. У каждого компонента своя версия (Postgres 17.6, Kong 3.9.3, GoTrue v2.189 и так далее). Общий ярлык - лицензия Apache-2.0.

Хватит ли 4 ГБ RAM?

Нет. Только в простое стек ест ~2.2 ГБ, а под нагрузкой Postgres нужен запас. Берите CPU4-RAM8, это минимум.

Как входить в админку?

Studio закрыт basic-auth на Kong: логин admin, пароль - пароль сервера. Наружу торчит только Kong через прокси с TLS.

Почему не работают Edge Functions?

Из РФ дефолтная функция тянет пакет из реестра Deno, который недоступен, и контейнер падает. Это опциональный сервис - ядро (БД, auth, REST, realtime, storage) работает без него.

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

Лицензия Apache-2.0 - свободное использование, включая коммерческое и хостинг. Ограничений на self-host нет.

Итог

Supabase self-host - это весь бэкенд на вашем сервере: Postgres, авто-REST и GraphQL API, аутентификация, realtime, хранилище и админка Studio. Замена Firebase без чужого облака, вендор-лока и оплаты за чтения. Мы подняли официальный docker-стек в боевом режиме, замерили RAM по контейнерам (~2.2 ГБ в простое) и доказали ядро вживую: таблица в Postgres мгновенно стала REST API. Стек тяжелый - берите CPU4-RAM8, - но взамен получаете полноценный BaaS на open-source лицензии Apache-2.0. Легкая альтернатива под MVP - PocketBase.

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

Этот стек у нас запущен на тарифе CPU4-RAM8. Полный разбор в Базе знаний: fatmetal.ru/knowledge-base/supabase. Нашли баг в гайде - напишите, поправим в течение дня.

Спросить инженера в TelegramМы на связи