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