Поиск по сайту:

Как установить Supabase (альтернативу Firebase) с помощью Docker в Ubuntu 24.04


На этой странице

  1. Необходимые условия
  2. Установка Docker Engine
  3. Добавление пользователя в группу Docker
  4. Скачивание и установка Supabase
  5. Обеспечение безопасности Supabase
  6. Защита Supabase с помощью протокола HTTPS
  7. Доступ к Supabase Studio
  8. Заключение

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

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

Необходимые условия

Для начала работы с этим руководством убедитесь, что у вас есть следующее:

  • Сервер Ubuntu 24.04
  • Пользователь без привилегий root с правами администратора
  • Доменное имя, указывающее на IP-адрес сервера

Установка Docker Engine

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

В этом разделе вы установите Docker Engine через официальный репозиторий Docker.

Сначала выполните приведенную ниже команду, чтобы обновить индекс пакета Ubuntu и установить такие пакеты, как 'ca-certificates', 'curl' и 'git'.

sudo apt update
sudo apt install -y ca-certificates curl git

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

sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

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

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Добавив ключ Docker GPG и репозиторий, выполните команду «apt» ниже, чтобы обновить индекс пакета и установить Docker Engine. С его помощью вы также установите плагины Docker Compose и buildx.

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Введите «Y», чтобы подтвердить установку.

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

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

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

sudo usermod -aG sudo username

Войдите в свою учетную запись с помощью команды 'su' ниже.

su - username

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

docker run hello-world

Если все прошло успешно, вы увидите сообщение «Hello World» от Docker.

Скачивание и установка Supabase

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

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

git clone --depth 1 https://github.com/supabase/supabase

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

cd supbase/docker
cp .env.example .env

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

docker compose pull

Процесс загрузки образов Supabase Docker приведен ниже.

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

docker compose up -d

Наконец, выполните команду «docker compose» ниже, чтобы проверить статус контейнеров Supbase.

docker compose ps

На выводе ниже вы можете видеть, что контейнеры Supbase, такие как 'supabase-auth', 'supabase-kong', 'supabase-rest' и 'supabase-studio', работают.

Обеспечение безопасности Supabase

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

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

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

openssl rand -hex 16

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

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

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

Откройте файл '.env' с помощью редактора 'vim'.

vim .env

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

POSTGRES_PASSWORD=f489d6f61514eb90fbf57fb574c3d367

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

JWT_SECRET=PUaiJLm1PKAebJJRIdXylVJrfgGbRWdWvzN0EUgh

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

ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogImFub24iLAogICJpc3MiOiAic3VwYWJhc2UiLAogICJpYXQiOiAxNzM2MzU1NjAwLAogICJleHAiOiAxODk0MTIyMDAwCn0.f8_wST3WX1bmvsHttRokJPCz7-rpyjU8HMNnYH7kSd4

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

SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogInNlcnZpY2Vfcm9sZSIsCiAgImlzcyI6ICJzdXBhYmFzZSIsCiAgImlhdCI6IDE3MzYzNTU2MDAsCiAgImV4cCI6IDE4OTQxMjIwMDAKfQ.DOo1lqH76AR_jCx0N9QDZBEdrQ8T_JBQqc7CagD1mWM

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

Email auth
ENABLE_EMAIL_SIGNUP=true
ENABLE_EMAIL_AUTOCONFIRM=false
[email 
SMTP_HOST=smtp.server.address
SMTP_PORT=2500
SMTP_USER=username
SMTP_PASS=password
SMTP_SENDER_NAME=sender_name
ENABLE_ANONYMOUS_USERS=false

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

DASHBOARD_USERNAME=supabase
DASHBOARD_PASSWORD=91521851a4e1375145959eecddfaff45

Введите свое доменное имя в поля "SITE_URL", "API_EXTERNAL_URL" и "SUPABASE_PUBLIC_URL". В этом примере мы будем использовать домен 'https://supabase.howtoforge.local'.

SITE_URL=https://supabase.howtoforge.local
API_EXTERNAL_URL=https://supabase.howtoforge.local
SUPABASE_PUBLIC_URL=https://supabase.howtoforge.local

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

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

docker compose down

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

docker compose up -d

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

docker compose ps

Ниже вы можете видеть, что каждый контейнер для Supabase запущен.

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

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

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

sudo apt install nginx -y

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

sudo vim /etc/nginx/sites-available/supabase

Вставьте следующую конфигурацию и обязательно измените доменное имя в опции «server_name».

map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream kong {
server localhost:8000;
}
server {
listen 80;
server_name supabase.howtoforge.local;
# 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. Если ошибки нет, вы получите вывод 'синтаксис в порядке - тест успешен'.

sudo ln -s /etc/nginx/sites-available/supabase /etc/nginx/sites-enabled/
sudo nginx -t

Теперь выполните команду 'systemctl' ниже, чтобы перезапустить веб-сервер Nginx и применить изменения. Таким образом, ваша установка Supabase должна работать под обратным прокси-сервером Nginx.

sudo systemctl restart nginx

Наконец, выполните команду 'systemctl' ниже, чтобы проверить сервис Nginx и убедиться, что сервис работает.

sudo systemctl status nginx

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

Защита Supabase с помощью протокола HTTPS

После того как Nginx будет запущен в качестве обратного прокси-сервера, давайте сгенерируем SSL-сертификаты и включим HTTPS для безопасной установки Supabase.

Если вы находитесь в режиме разработки, вы можете пропустить эту часть и оставить Supabase с HTTPS. Для рабочей среды необходимо реализовать протокол HTTPS для защиты сервера Supabase.

Установите Certbot и плагин Nginx Certbot с помощью команды 'apt' ниже. Введите «Y», чтобы подтвердить установку.

sudo apt install certbot python3-certbot-nginx

После завершения установки выполните команду 'certbot' ниже, чтобы сгенерировать SSL-сертификаты для вашего доменного имени. Обязательно измените доменное имя и адрес электронной почты в команде.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email  -d supabase.howtoforge.local

После завершения ваши SSL-сертификаты будут доступны в каталоге '/etc/letsencrypt/live/domain.com', а Supabase будет автоматически защищен HTTPS с помощью плагина Nginx Certbot.

Доступ к Supabase Studio

Чтобы получить доступ к Supabase, откройте веб-браузер и перейдите на страницу https://supabase.howtoforge.local. Если установка прошла успешно, вам будет предложено ввести базовую аутентификацию по паролю.

Введите имя пользователя и пароль в полях «DASHBOARD_USERNAME» и «DASHBOARD_PASSWORD» и нажмите «Войти».

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

Заключение

Поздравляю! Вы завершили установку Supabase на сервер Ubuntu 24.04 через Docker. Вы развернули и защитили Supabase с помощью маркера проверки подлинности по паролю JWT, а затем установили и настроили Nginx в качестве обратного прокси-сервера. Наконец, вы также защитили Supabase с помощью HTTPS через Certbot и Letsencrypt. Теперь вы можете попытаться создать новую базу данных, вставить данные в Supabase, а затем создать простые приложения с помощью модуля Supabase для взаимодействия через REST API.

Статьи по данной тематике: