Самый быстрый способ разместить Supabase на собственном VPS – использовать готовый шаблон Unihost в Portainer. Откройте Templates, выберите Application и Supabase, задайте безопасные пароли и ключи, затем разверните стек. Настройте домен и HTTPS через Nginx Proxy Manager или Traefik. Перед использованием в рабочих проектах создайте резервные копии PostgreSQL.

Совместимость: Linux с Docker Engine и Portainer; версия Supabase зависит от выбранного шаблона. Документация проверена 6 ноября 2026 года.

Требования

Потребуются VPS или выделенный сервер с Linux, Docker и Portainer, домен с доступом к DNS, а также Nginx Proxy Manager или Traefik для HTTPS. Подробнее: Что такое Portainer и VPS Unihost.

Официальные требования Supabase для основных компонентов self-hosted:

Ресурс Минимум Рекомендуется
CPU 2 cores 4+ cores
RAM 4 GB 8+ GB
SSD 40 GB 80+ GB

Шаги

Шаг 1. Выберите шаблон Supabase

Шаблон Supabase в Portainer с полями конфигурации

Откройте в Portainer Templates → Application → Supabase. Выберите готовый шаблон Unihost. Это сохраняет простой сценарий установки из исходной инструкции.

Шаг 2. Настройте пароли и API-ключи

Поля для ключей API и паролей Supabase в Portainer

Заполните поля безопасности в шаблоне. Не используйте стандартные секреты из примеров. Для старых шаблонов на JWT проверьте переменные:

POSTGRES_PASSWORD=your_secure_password
JWT_SECRET=your_secure_jwt_secret
ANON_KEY=generated_legacy_public_key
SERVICE_ROLE_KEY=generated_legacy_private_key
DASHBOARD_USERNAME=your_admin_username
DASHBOARD_PASSWORD=your_secure_dashboard_password

В новых релизах также используются SUPABASE_PUBLISHABLE_KEY и SUPABASE_SECRET_KEY, а для подписи токенов могут применяться асимметричные ключи. Используйте набор переменных именно вашего шаблона. В официальном Docker-проекте предусмотрены скрипты генерации:

sh utils/generate-keys.sh
sh utils/add-new-auth-keys.sh

Скрипты запускаются из каталога официальной Docker-конфигурации Supabase. Полученные значения перенесите в соответствующие поля шаблона Portainer. Привилегированные ключи храните в секрете.

Создание JWT API-ключей по документации Supabase

Шаг 3. Разверните и проверьте стек

Разверните шаблон. В разделах Stacks и Containers убедитесь, что сервисы Supabase запущены. Через консоль Docker-хоста проверьте контейнеры и журналы проблемного сервиса:

docker ps
docker logs --tail 100 SUPABASE_CONTAINER

Что входит в стек Supabase?

Компонент Назначение
Studio Веб-панель управления
API gateway Маршрутизация API-запросов (Envoy в новых версиях, Kong в старых шаблонах)
Auth Регистрация и вход пользователей
PostgREST REST API для PostgreSQL
Realtime События изменения данных
Storage API файлового хранилища
Postgres База данных

Шаг 4. Настройте домен и HTTPS

Настройка Proxy Host для Supabase в Nginx Proxy Manager

Для безопасной публикации Supabase создайте DNS-запись A для supabase.example.com, направленную на IP VPS. Основным reverse proxy используйте Nginx Proxy Manager (NPM):

  1. Откройте NPM → Hosts → Proxy Hosts → Add Proxy Host.
  2. Укажите supabase.example.com в Domain Names и выберите Scheme: http.
  3. В Forward Hostname / IP укажите доступное из NPM имя сервиса API Gateway Supabase. В Forward Port укажите порт шлюза из шаблона Unihost.
  4. На вкладке SSL выберите Request a new SSL Certificate, примите условия Let’s Encrypt и включите Force SSL.
  5. Сохраните Proxy Host и откройте https://supabase.example.com.

NPM должен иметь сетевой доступ к API Gateway через Docker. Защитите Studio паролем и не публикуйте порт PostgreSQL. Укажите внешние адреса Supabase с HTTPS.

Инструкция по установке и настройке Nginx Proxy Manager

Traefik через Portainer можно использовать как альтернативу.

supabase.example.com  A  192.0.2.10

SUPABASE_PUBLIC_URL=https://supabase.example.com
API_EXTERNAL_URL=https://supabase.example.com/auth/v1
SITE_URL=https://app.example.com

Укажите внешние URL с HTTPS в переменных шаблона. SITE_URL относится к клиентскому приложению, а не к панели Studio. Защитите Studio паролем и не открывайте PostgreSQL напрямую в интернет.

Шаг 5. Создайте резервную копию PostgreSQL

Логическую резервную копию базы можно создать из контейнера PostgreSQL. Замените SUPABASE_DB_CONTAINER на реальное имя контейнера из docker ps:

docker exec SUPABASE_DB_CONTAINER pg_dump -U postgres -d postgres -Fc > supabase-backup.dump

Дамп базы не включает файлы Storage, конфигурацию контейнеров и секреты. Сохраните их отдельно и проверьте восстановление.

Шаг 6. Обновите Supabase

Перед обновлением сохраните PostgreSQL, Storage и конфигурацию. Изучите официальную инструкцию и обновляйте шаблон Portainer как совместимый набор сервисов. Не меняйте теги всех образов независимо на latest. Скрипт update.sh относится к официальной структуре проекта и не обязательно совместим с шаблоном Portainer.

Панель Supabase Studio после установки

Проверка

Проверьте, что Studio открывается через HTTPS, вход работает, API отвечает, а обязательные контейнеры не завершаются с ошибками. Ответ 401 от защищённого маршрута подтверждает сетевую доступность, но не исправность всего стека.

docker ps
curl -I https://supabase.example.com/

Устранение проблем

Studio не открывается

Проверьте DNS-запись A, TLS-сертификат, адрес proxy target и состояние контейнеров. Изучите логи API Gateway и Studio.

Ошибки авторизации или API-ключей

Убедитесь, что JWT и API-ключи соответствуют версии шаблона. Проверьте DASHBOARD_USERNAME и DASHBOARD_PASSWORD. Не передавайте привилегированные ключи в браузерное приложение.

Контейнеры постоянно перезапускаются

Проверьте доступную память, место на диске, соединение с PostgreSQL и логи проблемного контейнера:

docker logs --tail 100 SUPABASE_CONTAINER
free -h
df -h

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

Бесплатен ли self-hosted Supabase?

Открытый код Supabase можно запускать на собственном сервере. Но VPS, хранилище, резервные копии и администрирование требуют затрат.

Какие ресурсы нужны для Supabase?

Для полного стека Supabase указывает минимум 2 ядра CPU, 4 ГБ RAM и 40 ГБ SSD, рекомендует 4 ядра, 8 ГБ RAM и 80 ГБ SSD.

Как обновить self-hosted Supabase?

Создайте резервные копии, изучите изменения релиза и обновите совместимый стек в Portainer.

Как создать резервную копию базы?

Используйте pg_dump для PostgreSQL. Отдельно сохраняйте Storage, конфигурацию и секреты, затем проверяйте восстановление.

Можно ли использовать собственный домен и HTTPS?

Да. Настройте DNS и HTTPS через Nginx Proxy Manager или Traefik перед API Gateway.

Supabase Cloud или self-hosted?

Параметр Supabase Cloud Self-hosted
Размещение Управляемая платформа Собственный VPS или сервер
Резервные копии Зависят от тарифа Настраиваете и проверяете сами
Контроль сервера Инфраструктура провайдера Полный доступ к ОС и сервисам

Связанные статьи

Supabase на инфраструктуре Unihost

Разверните приложение через готовый шаблон Portainer или выберите VPS по требуемым ресурсам.