Как установить Supabase (альтернативу Firebase) с помощью Docker в Ubuntu 24.04
На этой странице
- Необходимые условия
- Установка Docker Engine
- Добавление пользователя в группу Docker
- Скачивание и установка Supabase
- Обеспечение безопасности Supabase
- Защита Supabase с помощью протокола HTTPS
- Доступ к Supabase Studio
- Заключение
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.