Как использовать PocketBase в своём проекте
PocketBase — готовый бэкэнд-сервер на базе SQLite, особенностью которого является отсутствует необходимости в CRUD-прослойке между клиентом и БД. Имеет встроенный функционал для работы с пользователями и их авторизацией, поддержку загрузки файлов, а также удобный API.

Что такое PocketBase?
Основная идея PocketBase заключается в том, что часто используемые в проектах функции (CRUD, аутентификация, загрузка файлов, хранение данных) реализованы "из коробки". Это позволяет при разработке проекта сосредоточиться на пользовательском интерфейсе, а функционал работы с пользователями, данными и файлами переложить на сторонний сервис и реализовать с помощью удобного REST API или SDK.
Ещё одна особенность PocketBase состоит в том, что весь продукт представляет собой один небольшой бинарный файл, благодаря чему бэкэнд легко развернуть практически на любом устройстве. А для интеграции с ваши проектом есть REST API, а также доступны SDK для Flutter и JavaScript.
PocketBase имеет нативную интеграцию с SMTP, возможность подключения OIDC-провайдеров для функции авторизации, а также интеграцию с S3 для работы с файлами.
Для чего подходит PocketBase?
PocketBase стоит рассмотреть при разработке небольших SaaS проектов, серверной части каких-либо приложений. Это надёжное решение для большинства задач, но продукт не подойдёт для высоконагруженных приложений где требуется функционал реляционных баз данных.
Согласно данным разработчика, PocketBase поддерживает до 10000 запросов (конечно, это во многом зависит и от мощности сервера).
Как использовать PocketBase?
Установить PocketBase довольно просто, нужно лишь скачать дистрибутив, состоящий из 1 файла, а затем запустить его.
Дистрибутив можно найти на GitHub проекта здесь.
Предположим, что мы хотим установить версию 0.34.0, которая на момент написания этого материала является последней. Для установки выполним следующие команды:
mkdir /opt/pocketbase
cd /opt/pocketbase
mkdir pb_data pb_migrations pb_hooks pb_logs
wget https://github.com/pocketbase/pocketbase/releases/download/v0.34.0/pocketbase_0.34.0_linux_amd64.zip
unzip pocketbase_0.34.0_linux_amd64.zip
./pocketbase serve --http 127.0.0.1:8090В результате на порту 8090 локального IP-адреса будет запущен экземпляр сервера PocketBase.
Для создания суперпользователя PocketBase выполним ещё одну команду:
./pocketbase superuser create <EMAIL> <PASSWORD>Для удобства можно создать системный сервис:
cat <<EOF > /lib/systemd/system/pocketbase.service
[Unit]
Description = PocketBase Service
[Service]
Type = simple
User = root
Group = root
LimitNOFILE = 4096
Restart = always
RestartSec = 5s
StandardOutput = append:/opt/pocketbase/pb_logs/output.log
StandardError = append:/opt/pocketbase/pb_logs/error.log
WorkingDirectory = /opt/pocketbase
ExecStart = /opt/pocketbase/pocketbase serve --http 127.0.0.1:8090
[Install]
WantedBy = multi-user.target
EOF
systemctl enable pocketbase.service
systemctl start pocketbaseКак интегрировать PocketBase в свой проект?
Для интеграции PocketBase в свой проект вы можете использовать REST API, который доступен по URL http://127.0.0.1:8090/api/, либо SDK для Dart или JavaScript (подробнее в документации продукта здесь).
Пример запроса к REST API для просмотра списка суперпользователей:
curl -H "Authorization: <TOKEN>" \
http://127.0.0.1:8090/api/collections/_superusers/recordsПример запроса через JavaScript SDK для просмотра списка суперпользователей:
import PocketBase from 'pocketbase';
const pb = new PocketBase('http://127.0.0.1:8090');
await pb.collection("_superusers").authWithPassword('<USERNAME>', '<PASSWORD>');
const collections = await pb.collections.getFullList({ sort: '-created' });