Самый быстрый способ разместить 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

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

Заполните поля безопасности в шаблоне. Не используйте стандартные секреты из примеров. Для старых шаблонов на 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. Привилегированные ключи храните в секрете.

Шаг 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

Для безопасной публикации Supabase создайте DNS-запись A для supabase.example.com, направленную на IP VPS. Основным reverse proxy используйте Nginx Proxy Manager (NPM):
- Откройте NPM → Hosts → Proxy Hosts → Add Proxy Host.
- Укажите supabase.example.com в Domain Names и выберите Scheme: http.
- В Forward Hostname / IP укажите доступное из NPM имя сервиса API Gateway Supabase. В Forward Port укажите порт шлюза из шаблона Unihost.
- На вкладке SSL выберите Request a new SSL Certificate, примите условия Let’s Encrypt и включите Force SSL.
- Сохраните 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.

Проверка
Проверьте, что 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 или сервер |
| Резервные копии | Зависят от тарифа | Настраиваете и проверяете сами |
| Контроль сервера | Инфраструктура провайдера | Полный доступ к ОС и сервисам |
Связанные статьи
- Portainer
- Traefik with Portainer
- MariaDB with Portainer
- Официальная документация Supabase Docker
- Установка Nginx Proxy Manager
Supabase на инфраструктуре Unihost
Разверните приложение через готовый шаблон Portainer или выберите VPS по требуемым ресурсам.