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.
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
Добавление пользователя в группу Docker
Будем запускать Supabase от имени пользователя без полномочий root, поэтому надо убедиться, что такой пользователь создан. Затем вам нужно добавить этого пользователя в группу «docker», которая позволит ему запускать контейнеры.
Создадим пользователя user, и создадим для него пароль
adduser user
passwd user

Добавим своего пользователя в группу «docker» с помощью команды ниже. Это позволит ему запускать контейнеры.
sudo usermod -aG docker user
Переключимся на нашего пользователя помощью команды su, как показано ниже.
su - user
Наконец, выполните приведенную ниже команду docker, чтобы запустить контейнер hello-world.
docker run hello-world

Загрузка и установка Supabase
Теперь, когда вы установили Docker, следующим шагом будет загрузка 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. Это приведет к загрузке нескольких образов.
docker compose pull
Ниж вы можете увидеть процесс загрузки образов Supabase Docker.

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

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

Защита Supabase
После установки Supabase запущен и работает в вашей системе, но без надлежащего пароля и аутентификации. Теперь необходимо обезопасить Supabase, изменив учетные данные в файле «.env».
Прежде чем начать, давайте сгенерируем пароли для сервера PostgreSQL и панели управления Supabase, а затем сгенерируем секрет и токен JWT.
Выполните приведенную ниже команду дважды, чтобы сгенерировать безопасный пароль для панели управления Supabase и сервера PostgreSQL.
openssl rand -hex 16

Теперь перейдите на веб-сайт 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.
docker compose down
А затем заново создайте контейнеры для Supabase с помощью следующей команды.
docker compose up -d
Как только все заработает, проверьте запущенные службы контейнеров:
docker compose ps

Настройка Nginx в качестве обратного прокси для Supabase
Теперь, когда Supabase защищена, давайте установим веб-сервер Nginx и настроим его в качестве обратного прокси-сервера для Supabase.
Установите Nginx с помощью следующей команды
sudo apt install nginx -y
Теперь создайте новую конфигурацию сервера 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.
sudo ln -s /etc/nginx/sites-available/supabase /etc/nginx/sites-enabled/
sudo nginx -t

Перезапустите веб-сервер Nginx следующей командой. Теперь ваша установка Supabase должна работать под обратным прокси-сервером Nginx.
sudo systemctl restart nginx
Проверьте статус службы, чтобы убедиться, что все работает правильно
sudo systemctl status nginx

Доступ к студии Supabase
Чтобы получить доступ к Supabase, откройте веб-браузер и посетите
http://your-ip
Если установка прошла успешно, вам будет предложено ввести логин и пароль для аутентификации.

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

Заключение
Поздравляем! Установка Supabase на сервер Ubuntu с помощью Docker завершена. Был развернут Supabase. Так же он теперь защищен с помощью токена JWT для аутентификации по паролю. А еще установлен и настроен Nginx в качестве обратного прокси-сервера.
На этом шаге теперь можете попытаться создать новую базу данных, вставить данные в Supabase, а затем создать простые приложения с модулем Supabase для взаимодействия через REST API.
Was this helpful?
1 / 0