Установка Supabase (Альтернатива Firebase) с помощью docker на Ubuntu

Supabase — это альтернатива Firebase с открытым исходным кодом, созданная на основе базы данных PostgreSQL, самой надежной реляционной базы данных в мире. Он позволяет разработчикам создавать полноценные веб-приложения, мобильные приложения и приложения искусственного интеллекта. Supabase предлагает базу данных PostgreSQL, аутентификацию, API, хранилище, подписки в реальном времени и внедренный Vector. Благодаря простой настройке и пользовательскому интерфейсу разработчики могут быстро создавать приложения на основе Supabase.

В этой статье рассмотрим, как установить Supabase на сервер Ubuntu. Вы будете запускать Supabase в качестве контейнеров Docker и защищать Supabase с помощью аутентификации по паролю и токенов JWT. А так же расмотрим, как настроить Nginx в качестве обратного прокси-сервера для Supabase.


Протестировано на:

Ubuntu: 24.04


Установка движка docker

Чтобы развернуть Supabase на вашем сервере, необходимо установить Docker Engine. Приложения Supabase будут работать как контейнеры на вашем сервере.

В этой статье я использовал официальные репозитории Docker. Если он у вас не доступен, вы можете использовать альтернативные зеркала. Поиск информации, как установить из них, думаю не составит труда.

Сначала обновим индекс пакетов и установим пакеты: ca-certificates, curl и git.

Теперь выполните следующую команду, чтобы добавить ключ GPG для репозитория Docker Engine.

Добавьте репозиторий Docker Engine для вашего сервера Ubuntu, выполнив команду ниже.

После добавления ключа Docker GPG и репозитория выполните приведенную ниже команду apt, чтобы обновить индекс пакета и установить Docker Engine. А также плагины Docker Compose и buildx.

Добавление пользователя в группу Docker

Будем запускать Supabase от имени пользователя без полномочий root, поэтому надо убедиться, что такой пользователь создан. Затем вам нужно добавить этого пользователя в группу «docker», которая позволит ему запускать контейнеры.

Создадим пользователя user, и создадим для него пароль

Добавим своего пользователя в группу «docker» с помощью команды ниже. Это позволит ему запускать контейнеры.

Переключимся на нашего пользователя помощью команды su, как показано ниже.

Наконец, выполните приведенную ниже команду docker, чтобы запустить контейнер hello-world.

Загрузка и установка Supabase

Теперь, когда вы установили Docker, следующим шагом будет загрузка Supabase и запуск его как контейнера.

Загрузите исходный код «supabase» с помощью команды «git» ниже.

Перейдите в каталог «supabase/docker» и скопируйте файл «.env.example» в «.env». Этот файл будет использоваться для настройки вашей установки Supabase.

Затем выполните команду docker compose, чтобы загрузить образы Supase из репозитория Docker. Это приведет к загрузке нескольких образов.

Ниж вы можете увидеть процесс загрузки образов Supabase Docker.

После завершения процесса загрузки выполните следующую команду, чтобы запустить контейнеры Supabase. С опцией «-d» вы запустите контейнеры в фоновом режиме, поэтому журналы контейнеров Supbase не будут отображаться.

Теперь запустим приведенную ниже команду docker compose, чтобы проверить состояние контейнеров Supbase.

Защита Supabase

После установки Supabase запущен и работает в вашей системе, но без надлежащего пароля и аутентификации. Теперь необходимо обезопасить Supabase, изменив учетные данные в файле «.env».

Прежде чем начать, давайте сгенерируем пароли для сервера PostgreSQL и панели управления Supabase, а затем сгенерируем секрет и токен JWT.

Выполните приведенную ниже команду дважды, чтобы сгенерировать безопасный пароль для панели управления Supabase и сервера PostgreSQL.

Теперь перейдите на веб-сайт Supabase, чтобы сгенерировать два токена JWT. Обязательно запишите следующее:

  • JWT Secret
  • Ключ для ANON_KEY и SERVICE_KEY.
  • Сгенерированые токены JWT для обоих

Теперь, когда вы сгенерировали пароли и токены для Supabase, давайте применим их, отредактировав файл «.env».

Откройте файл «.env» с помощью любого удобного текстового редактора.

Вставьте сгенерированный пароль OpenSSL в параметр «POSTGRES_PASSWORD».

POSTGRES_PASSWORD=39733f653df69919c2fb58335bfb12f0

Введите секретный ключ JWT в параметр «JWT_SECRET».

JWT_SECRET=hRw9LGWbtZmSXHWyrjHv8IlcfwmbkIqh3qczpRtb

Замените значение «ANON_KEY» на сгенерированный токен JWT для пользователя «anon».

ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogImFub24iLAogICJpc3MiOiAic3VwYWJhc2UiLAogICJpYXQiOiAxNzM3NDkzMjAwLAogICJleHAiOiAxODk1MjU5NjAwCn0.aXrz1gKeeME2qP3XEXy1IxA3eyrWYGMS2NC5Ly7gB-U

Замените значение SERVICE_ROLE_KEY на сгенерированный токен JWT для пользователя service_role.

SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogInNlcnZpY2Vfcm9sZSIsCiAgImlzcyI6ICJzdXBhYmFzZSIsCiAgImlhdCI6IDE3Mzc0OTMyMDAsCiAgImV4cCI6IDE4OTUyNTk2MDAKfQ.8d2v2RGhrvoMtwS5nb4ak4J05gwM9AI2TOXdodvqGFo

Если вы выполняете развертывание на общедоступном сервере, введите данные своего SMTP-сервера.

## Email auth
ENABLE_EMAIL_SIGNUP=true
ENABLE_EMAIL_AUTOCONFIRM=false
SMTP_ADMIN_EMAIL=admin@example.com
SMTP_HOST=supabase-mail
SMTP_PORT=2500
SMTP_USER=fake_mail_user
SMTP_PASS=fake_mail_password
SMTP_SENDER_NAME=fake_sender
ENABLE_ANONYMOUS_USERS=false

Введите свое имя пользователя и пароль в опции «DASHBOARD_USERNAME» и «DASHBOARD_PASSWORD». Этот пользователь будет использоваться для входа в Supabase.

DASHBOARD_USERNAME=supabase
DASHBOARD_PASSWORD=2b3bfa3437ab8927b2c88b6e03f41564

Сохраните файл и выйдите из редактора, когда закончите.

Теперь запустите команду docker ниже, чтобы остановить и удалить контейнеры Supabase.

А затем заново создайте контейнеры для Supabase с помощью следующей команды.

Как только все заработает, проверьте запущенные службы контейнеров:

Настройка Nginx в качестве обратного прокси для Supabase

Теперь, когда Supabase защищена, давайте установим веб-сервер Nginx и настроим его в качестве обратного прокси-сервера для Supabase.

Установите Nginx с помощью следующей команды

Теперь создайте новую конфигурацию сервера Nginx /etc/nginx/sites-available/supabase. Вставьте следующую конфигурацию и не забудьте изменить свой ip в опции server_name.

map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

upstream kong {
server localhost:8000;
}

server {
listen 80;
server_name localhost 127.0.0.1 your_ip;

# REST
location ~ ^/rest/v1/(.*)$ {
proxy_set_header Host $host;
proxy_pass http://kong;
proxy_redirect off;
}

# AUTH
location ~ ^/auth/v1/(.*)$ {
proxy_set_header Host $host;
proxy_pass http://kong;
proxy_redirect off;
}

# REALTIME
location ~ ^/realtime/v1/(.*)$ {
proxy_redirect off;
proxy_pass http://kong;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
}

# STUDIO
location / {
proxy_set_header Host $host;
proxy_pass http://kong;
proxy_redirect off;
proxy_set_header Upgrade $http_upgrade;
}
}

Сохраните файл и выйдите из редактора, когда закончите.

Затем выполните команду ниже, чтобы активировать блок сервера Supabase и проверить синтаксис Nginx.

Перезапустите веб-сервер Nginx следующей командой. Теперь ваша установка Supabase должна работать под обратным прокси-сервером Nginx.

Проверьте статус службы, чтобы убедиться, что все работает правильно

Доступ к студии Supabase

Чтобы получить доступ к Supabase, откройте веб-браузер и посетите

http://your-ip

Если установка прошла успешно, вам будет предложено ввести логин и пароль для аутентификации.

В случае успеха вы увидите следующую панель управления Supabase.

Заключение

Поздравляем! Установка Supabase на сервер Ubuntu с помощью Docker завершена. Был развернут Supabase. Так же он теперь защищен с помощью токена JWT для аутентификации по паролю. А еще установлен и настроен Nginx в качестве обратного прокси-сервера.

На этом шаге теперь можете попытаться создать новую базу данных, вставить данные в Supabase, а затем создать простые приложения с модулем Supabase для взаимодействия через REST API.

Was this helpful?

1 / 0

Добавить комментарий 0