Найшвидший спосіб розмістити 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 за потрібними ресурсами.