INTERCEPT

PocketBase как CMS для блога — быстрый бэкенд на Go

PocketBase — бэкенд на Go + SQLite в одном бинарнике. Пошаговый туториал: установка, API, интеграция с Astro, деплой на продакшен.

PocketBase как CMS для блога — быстрый бэкенд на Go
12.07.2026|00:00:00
PocketBaseCMSBackendSQLiteREST API

🎯 Почему PocketBase идеален для блога: быстрый старт за 5 минут

PocketBase — это opensource-бэкенд на Go, который работает как единый бинарный файл. 🗄️ SQLite, 🔌 REST API, 🔐 авторизация и 🖥️ административная панель — всё в одном файле размером 10 МБ. Для блога это означает: ⚡ нулевая конфигурация, 🚀 мгновенный запуск и забыть про серверные проблемы.

В этом руководстве вы узнаете: как установить PocketBase, создать коллекцию posts, настроить API и подключить к Astro для SSR-рендеринга. 📝 Пошаговый туториал с примерами кода.

⚙️ Архитектура PocketBase: Go, SQLite и REST API в одном бинарнике

PocketBase сочетает в себе компоненты, которые обычно требуют отдельной настройки:

КомпонентТехнологияЗачем нужен
🖥️ СерверGoВысокая производительность, компиляция в один бинарник
🗄️ База данныхSQLiteФайл pb_data/ без отдельного сервера
🔌 APIRESTАвтоматическая генерация CRUD-эндпоинтов
⚙️ АдминкаВстроеннаяВеб-интерфейс для управления данными
🔐 АвторизацияВстроеннаяEmail/password, OAuth2, MFA
⚠️ Важно!!!
PocketBase — это аналог Firebase, но полностью self-hosted. 🚫 Никаких внешних зависимостей, никаких платных тарифов за $5 в месяц — просто запускайте и используйте.

🔧 Установка PocketBase на Linux, macOS и Windows за 2 минуты

Установка PocketBase занимает 2 команды:

# 🐧 Linux/macOS
wget https://github.com/pocketbase/pocketbase/releases/latest/download/pocketbase_linux_amd64.zip
unzip pocketbase_linux_amd64.zip
./pocketbase serve

# 🪟 Windows
# Скачайте .exe с GitHub и запустите
pocketbase.exe serve

💻 Административная панель доступна на http://localhost:8090/_/ — это встроенный UI для управления коллекциями. Первый запуск предложит создать суперадмина.

📁 Создание коллекции posts: структура данных для блога

В админке PocketBase:

  1. ⚙️ Нажмите New collection
  2. 📝 Введите имя posts
  3. 🔧 Добавьте поля:
ПолеТипОписание
titleText📝 Заголовок поста (обязательное)
slugText🔗 URL-идентификатор (уникальный)
descriptionText📋 Краткое описание (до 160 символов)
contentEditor📄 HTML/Markdown содержимое
imageFile🖼️ Обложка поста (аватар)
tagsJSON🏷️ Массив тегов
categorySelectINTERCEPT или DECRYPT
statusSelectpublished / draft
pubDateDate📅 Дата публикации

🔌 REST API: автоматическая генерация эндпоинтов для блога

PocketBase автоматически создаёт полный CRUD API для каждой коллекции:

# 📥 Получение списка постов
GET /api/collections/posts/records

# 📄 Получение одного поста
GET /api/collections/posts/records/{id}

# ➕ Создание поста
POST /api/collections/posts/records

# ✏️ Обновление поста
PATCH /api/collections/posts/records/{id}

# 🗑️ Удаление поста
DELETE /api/collections/posts/records/{id}

🔍 Фильтрация, сортировка и пагинация работают через query-параметры:

GET /api/collections/posts/records?
  page=1&perPage=10&
  filter=status="published"&
  sort=-pubDate

🔒 Права доступа: настройка безопасности данных блога

PocketBase использует систему прав на уровне записей. Для блога рекомендуется:

  • listRule: "" — публичный доступ для чтения
  • viewRule: "" — публичный доступ для чтения
  • 🔒 createRule: "@request.auth.id != ''" — только авторизованные пользователи
  • 🔒 updateRule: "@request.auth.id != ''" — только авторизованные пользователи
  • 🔒 deleteRule: "@request.auth.id != ''" — только авторизованные пользователи
⚠️ Важно!!!
🔐 Всегда настраивайте правила доступа перед запуском на продакшен. По умолчанию PocketBase разрешает полный доступ всем пользователям — это критическая уязвимость!

💾 Хранение файлов: изображения постов в PocketBase

PocketBase автоматически обрабатывает загрузку файлов. 📁 Изображения хранятся в pb_data/storage/ с уникальными именами. Доступ по URL:

/api/files/{collectionId}/{recordId}/{filename}

🖼️ Поддерживаются миниатюры: ?thumb=100x100, ?thumb=300x300, ?thumb=600x400.

🚀 Запуск на продакшен: VPS и реверс-прокси

Для запуска PocketBase на VPS:

# 1️⃣ Скопируйте бинарник на сервер
scp pocketbase user@server:/opt/pocketbase/

# 2️⃣ Создайте systemd-сервис
sudo systemctl enable pocketbase
sudo systemctl start pocketbase

# 3️⃣ Реверс-прокси через nginx
server {
    listen 443 ssl;
    server_name api.redib.ru;

    location / {
        proxy_pass http://127.0.0.1:8090;
    }
}
⚠️ Важно!!!
💰 На $5 VPS (1 CPU, 1GB RAM) PocketBase обрабатывает ~50k запросов в секунду без каких-либо проблем. SQLite-база данных автоматически бэкапится в pb_data/backup/.

🏆 Вывод

  • ✅ Установка за 2 минуты
  • ✅ Нулевая конфигурация
  • ✅ Встроенный REST API
  • ✅ Авторизация и административная панель
  • 💰 Экономит часы настройки сервера

🔗 Ссылки:

RELATED_SIGNALS

Похожие статьи