Пакет Supabase — это бесплатный аналог облачных сервисов Google Firebase (БД, аутентификация, хранение файлов, realtime обмен данными, framework для популярных языков). Перечисленные инструменты позволяют разработчикам быстро создавать как простые мобильные приложения и сайты, так и сложные корпоративные системы. Кроме того, при использовании Supabase вам не нужно уметь управлять сервером, пользователями и обслуживать базу данных — для этого в пакете присутствует готовая административная панель.
❯ Основное плюсы Supabase
Бесплатно (устанавливается на ваш VDS/VPS или облачный сервер).
Минимальные требования к железу (1 CPU, 1GB RAM) — с затратами около 300 руб./мес. с публичным IP.
Собственная админка для настройки БД, авторизации пользователей и многого другого.
Готовая база данных «из коробки» с полной настройкой из админки.
Аутентификация пользователей «из коробки».
Очень быстрый API (REST и GraphQL).
Хранение и раздача файлов (подойдет даже для собственного хостинга сайтов).
Запуск из Docker за пять минут.
❯ Сравнительная таблица
Функция |
Supabase |
Firebase |
---|---|---|
Тип лицензии |
Открытый исходный код |
Проприетарный (закрытый) |
Стоимость |
Бесплатно |
Бесплатно первые 7 таблиц |
Минимальные требования к железу Подойдет VDS от Timeweb Cloud за 300 руб./мес. с публичным IP. |
(1 CPU, 1GB RAM) |
–- |
База данных |
PostgreSQL |
Firestore (NoSQL) Нужна иностранная банковская карта |
Аутентификация |
Есть, хранение на вашем сервере |
Есть, хранение в Google облаке |
Realtime (обмен через Socket) |
Есть |
Есть |
WebSockets: Самый популярный метод, который обеспечивает двустороннее соединение между клиентом и сервером, позволяет серверу отправлять данные клиенту в любой момент, а не только в ответ на запросы. Идеально подходит для приложений, требующих высокой отзывчивости, таких как чаты, игры или системы управления проектами. Long Polling: В этом методе клиент регулярно отправляет запросы на сервер, который задерживает ответ до тех пор, пока не произойдут какие-либо изменения в данных. Как только данные изменяются, сервер отвечает, и клиент тут же отправляет новый запрос. Разработчики могут подписываться на изменения в определенных таблицах или даже на конкретные строки и столбцы в PostgreSQL базе данных. Это означает, что любые изменения, такие как добавление, удаление или обновление записей, могут быть немедленно отслежены клиентом. | ||
Загрузка, хранение и отдача файлов |
Есть, в том числе подключение вашего S3-совместимого бакета |
Есть |
Пуш-уведомления |
Нет (можно интегрировать сторонними решениями через Firebase, и любыми другими сервисами push) |
Есть |
Serverless-функции |
Есть. На базе Node: JavaScript и Typescript |
Есть (Cloud Functions). Нужна иностранная банковская карта |
Инструменты разработчика и доступ к данным и операциям |
Панель управления (простая админка), REST и GraphQL API |
Панель управления (сложная админка), REST и Firestore API |
Сообщество и поддержка |
Активное сообщество (более 70000 звезд на Github, 1200 чел. разработчиков), хорошая документация |
Огромное сообщество, отличная документация |
Масштабируемость |
Высокая, облачная инфраструктура на базе простых VPS |
Высокая, поддерживается Google |
Простота использования |
Простая настройка таблиц, полей и т.д. |
Простая настройка таблиц, полей и т.д. |
Поддержка языков (готовые фреймворки для доступа к данным, пушам, сокетам, пользователям и т.д.) |
JavaScript, TypeScript, Python, Dart, .NET, Ruby |
JavaScript, TypeScript, Python, Java, C++, C#, Go |
Как видно из таблицы, Supabase даст вам 95% функционала, который вы получали от Google Firebase. Вы получите готовый настроенный backend для создания сайтов, мобильных приложений, внутренних корпоративных площадок, утилит и много другого.
Процесс настройки и запуска проекта на Supabase достаточно прост. Разработчики могут начать работу, создав учетную запись на официальном сайте, после чего доступ к базовым функциям становится практически мгновенным. Однако бесплатно вы получите только 500 Мб места для баз данных, 500 Мб оперативной памяти и сильно ограниченный ресурс CPU (не более 5%).
Поэтому мы рекомендуем развернуть свое неограниченное облако, стоимость которого в базовой комплектации будет составлять 300 руб./мес.
Далее мы рассмотрим покупку минимального сервера на базе Ubuntu и установку на него пакета Supabase. Инструкция рассчитана на новичков, поэтому она будет сопровождаться подробными скриншотами. Если вы продвинутый пользователь, можете просто пропускать некоторые пункты или выбирать свои инструменты для установки Docker-контейнеров.
❯ Подготовка сервера
Начнем с создания нового сервера.
Установка облачного сервера Timeweb Cloud
Зарегистрируйте аккаунт на timeweb.cloud.
Перейдите в раздел «Облачный сервер».
Выберите вкладку «Маркетплейс».
Здесь выберите Portainer (визуальная оболочка для управления контейнерами Docker) и перейдите к оплате.
Подождите пару минут, пока идет создание вашего нового сервера. После создания сервера вам на email придет письмо с инструкцией по подключению к серверу, в том числе IP-адрес, логин и пароль.
Настройка Portainer для управления контейнерами
Перейдите в браузер на страницу
http://ВАШ-IP-АДРЕС:9001
. Далее вы попадете в удобную панель Portainer — админку для управления контейнерами Docker. Укажите логинadmin
и пароль, который получили по email.
Затем выберите пункт «Get started» и перейдите в раздел «Containers».
Выберите пункт «Container».
Вы перешли в раздел мониторинга работы контейнеров, где можно посмотреть логи, настройки, нагрузку и потребляемые ресурсы каждого контейнера.
Здесь вы сможете следить за своими запущенными контейнерами, смотреть log, перезапускать, устанавливать новые приложения.
На скриншоте видно, что мы установили на чистую систему Ubuntu только контейнер с Portainer. В нашем случае контейнер называется dockerui
.
Генерация ключей
Далее очень важный момент: необходимо создать три ключа: JWT_SECRET
, ANON_KEY
и SERVICE_ROLE_KEY
, которые будут использованы для установки вашей копии Supabase.
ANON_KEY
— это основной ключ для использования в клиентских приложениях.SERVICE_ROLE_KEY
— это ключ для администратора.
Перейдите в терминал и введите команду, чтобы сгенерировать новый JWT_SECRET
:
openssl rand -hex 32
В нашем случае команда вывела:
c2f86d5e0ecc289629bbadd7f3d449ee75eaa776c5b6a6b0eea3fdc96711626a
Сохраните это значение в блокнот.
Далее переходим на сайт jwt.io, где генерируем два других ключа.
Сначала указываем роль anon
и добавляем в нижнее правое окно свой JWT_SECRET
.
Далее аналогично генерируем ключ для роли service_role
:
Следующим шагом установим непосредственно сам пакет Supabase.
❯ Установка Supabase
Переходим к установке Supabase на сервер.
Вход на сервер
Запустите терминал (для windows: PowerShell, Windows terminal или Putty. Подробнее читайте статью) и подключитесь к вашему новому серверу через SSH. Для этого вам нужно ввести команду:
ssh root@IP-ВАШЕГО-СЕРВЕРА
Далее сервер попросит сохранить fingerprint (введите yes) и ввести пароль. В результате вы увидите приблизительно следующее сообщение:
sergey@MacBook ~ % ssh root@111.111.111.119
The authenticity of host '111.111.111.119 (111.111.111.119)' can't be established.
ED25519 key fingerprint is …
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '111.111.111.119' (ED25519) to the list of known hosts.
root@111.111.111.119's password:
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-112-generic x86_64)
root@3300495-lv84950:~#
Как видите, мы удачно авторизовались. Теперь мы на сервере и можем отдавать ему команды.
Создание директорий
Первое, что необходимо сделать — создать каталог /docker_data/supabase
, куда затем будет установлен наш пакет. Делается это просто, всего лишь введите команду и нажмите клавишу Enter (команда вводится в одну строку):
mkdir docker_data && mkdir docker_data/supabase && cd docker_data/supabase
Получение дистрибутива с Github
Точка после адреса github обязательна. Установится дистрибутив около 400 Мб.
git clone https://github.com/supabase/supabase.git .
cd docker
Создание Docker файлов и переменных окружения
Затем создадим два файла docker-compose.yml
и .env
для автоматической установки нашей системы Supabase в контейнерах Docker. Первый файл отвечает за установку, второй файл содержит наши настройки (например настройки почтового сервера, порты и т.д.). Эти файлы уже присутствуют в скаченном дистрибутиве, но мы перепишем их с нашими настройками.
Создание файла docker-compose.yml и .env
Для получения файла настроек введите следующие команды в терминале.
Скачиваем файл docker-compose.yml
и .env
:
wget -O ./docker/docker-compose.yml https://raw.githubusercontent.com/tecspda/timeweb/main/supabase/docker-compose.yml
wget -O ./docker/.env https://raw.githubusercontent.com/tecspda/timeweb/main/supabase/.env
Далее изменим значения переменных окружения. Установим пароль Postgres:
sed -i '' 's/POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=новое_значение/' ./docker/.env
Скопируйте секретные ключи из блокнота:
sed -i '' 's/ANON_KEY=.*/ANON_KEY=новое_значение/' ./docker/.env
sed -i '' 's/JWT_SECRET=.*/JWT_SECRET=новое_значение/' ./docker/.env
sed -i '' 's/SERVICE_ROLE_KEY=.*/SERVICE_ROLE_KEY=новое_значение/' ./docker/.env
sed -i ''
Установите переменные доступа (сохраните их в блокнот):
's/DASHBOARD_PASSWORD=.*/DASHBOARD_PASSWORD=ВАШ_ПАРОЛЬ_ДЛЯ_АДМИНКИ/' ./docker/.env
's/API_EXTERNAL_URL=.*/API_EXTERNAL_URL=IP.АДРЕС.ВАШЕГО.VPS:8090/' ./docker/.env
's/SUPABASE_PUBLIC_URL=.*/SUPABASE_PUBLIC_URL=IP.АДРЕС.ВАШЕГО.VPS:8090/' ./docker/.env
Другие параметры (например, настройки SMTP) вы можете отредактировать по своему усмотрению. Это необязательный шаг настройки, его можно пропустить:
sudo nano ./docker/.env
Запуск создания docker-контейнеров
Далее запускаем установку в Docker:
docker compose up -d
Время установки составит около 5 минут, не переживайте и просто дождитесь окончания процесса. Картина установки выглядит примерно так:
Поскольку пакет очень объемный, при первом запуске будет происходить инициализация базы данных, подождите еще 1-2 минуты после установки и переходите в Portainer (в раздел Containers) для визуального наблюдения. После полной установки вы увидите такую картину:
Поздравляем! Вы успешно установили замену Google Firebase на свой собственный сервер.
Теперь вы можете перейти в браузер и авторизоваться в админ-панели Supabase по адресу: http://IP_ВАШЕГО_VPS:8090
.
При входе введите логин и пароль, которые вы указали в файле .env
:
USERNAME: supabase
PASSWORD: ВАШ_ПАРОЛЬ_ДЛЯ_АДМИНКИ
❯ Заключение
Итак, мы рассказали вам как установить Supabase на собственный сервер и избавиться от зависимости от Google Firebase.
В следующих гайдах мы расскажем о кейсах использования Supabase, покажем конкретные примеры реализации элементов сайта в связке HTML+JavaScript, а также разберем примеры написания мобильных приложений, демонстрирующих использование Supabase для remoteControl, отправки сообщений пользователям, создания чатов техподдержки и много другого, а также попробуем создать полезные сервисные функции отслеживания состояния здоровья вашего сервера без использования решений типа Grafana+Prometheus. Задавайте вопросы в комментариях на тему, какие кейсы вам интересны и как их реализовать.
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩
? Читайте также:
Комментарии (2)
mgis
15.10.2024 16:06Эх.. Надеялся хоть тут найди годный туториал по разворачиванию Supabase в self-hosted варианте.
Но в статье по сути расказано про банальное docker compose up и ни слова о том как поднять сервис на своем домене за прокси-сервером.
Я сколько ни пытался не смог осилить.
chuikoffru
1Gb, 1 CPU? Я помню локально поднимал у себя на машине, все сервисы у меня вышли в 12Gb Ram. Это было год назад. Что-то изменилось?