Установка PocketBase на VPS — это эффективный способ развернуть мощную, легковесную и многофункциональную бэкенд-платформу, предлагающую базу данных SQLite, API, аутентификацию и панель администратора в одном компактном бинарном файле, что позволяет полностью контролировать инфраструктуру и оптимизировать расходы.
В мире разработки веб-приложений и мобильных сервисов скорость выхода на рынок и гибкость инфраструктуры играют ключевую роль. Разработчики постоянно ищут решения, которые позволяют быстро создавать прототипы, MVP (Minimum Viable Products) и даже полноценные продукты без необходимости глубоко погружаться в настройку сложной серверной части. Именно здесь на сцену выходит PocketBase – уникальный проект, который меняет представление о том, каким может быть бэкенд.
PocketBase – это не просто база данных или фреймворк; это полноценный бэкенд-сервер с открытым исходным кодом, написанный на Go, который включает в себя встраиваемую базу данных SQLite, RESTful API, систему аутентификации пользователей и даже удобную административную панель. Всё это упаковано в один-единственный бинарный файл, что делает его невероятно простым в развертывании и управлении. Для проектов, которым нужна быстрая разработка, низкие операционные издержки и полный контроль над данными, установка PocketBase на свой собственный VPS становится идеальным решением.
В этой статье мы подробно рассмотрим, как развернуть PocketBase на виртуальном частном сервере (VPS), используя Docker и Docker Compose для максимальной гибкости и простоты. Мы пройдемся по системным требованиям, пошаговой установке, настройке обратного прокси с HTTPS, стратегиям резервного копирования и обновления, а также дадим рекомендации по выбору оптимальной конфигурации VPS для различных сценариев нагрузки. Если вы ищете способ получить мощный и управляемый бэкенд без лишних сложностей, эта статья — ваш путеводитель.
Что такое PocketBase и почему его стоит развернуть на VPS?
PocketBase представляет собой уникальное бэкенд-решение, которое объединяет в себе несколько критически важных компонентов для разработки современных приложений. Это не просто база данных или API-сервер; это целостная платформа, разработанная для максимальной простоты и производительности.
Ключевые особенности PocketBase
PocketBase выделяется на фоне других BaaS (Backend as a Service) решений благодаря своему минималистичному, но мощному подходу:
- Встраиваемая база данных SQLite: Основой PocketBase является SQLite, что делает его невероятно легким и не требует отдельного развертывания сложной СУБД. Это идеально для проектов, где не нужна масштабируемость уровня PostgreSQL или MySQL на несколько десятков тысяч запросов в секунду, но важна простота и скорость.
- RESTful API и GraphQL API: Автоматически генерируемые API для всех ваших коллекций данных. Вы можете сразу же начинать взаимодействовать с бэкендом из своего фронтенда, используя стандартные HTTP-методы. Поддержка GraphQL также доступна через плагины или кастомную логику.
- Система аутентификации: Встроенная поддержка аутентификации пользователей по email/паролю, OAuth2 провайдерам (Google, GitHub и т.д.) и анонимным пользователям. Управление правами доступа к данным осуществляется через гибкие правила.
- Панель администратора: Удобный и интуитивно понятный веб-интерфейс для управления коллекциями данных, пользователями, файлами и настройками. Это позволяет быстро создавать и модифицировать структуру данных без написания кода.
- Файловое хранилище: Встроенная возможность загрузки и хранения файлов, с поддержкой как локального диска, так и интеграции с S3-совместимыми хранилищами.
- Realtime-подписки: Поддержка WebSocket для получения обновлений данных в реальном времени, что идеально подходит для чатов, уведомлений или динамических пользовательских интерфейсов.
- Один бинарный файл: Весь PocketBase скомпилирован в один исполняемый файл, что упрощает развертывание и управление зависимостями.
- Расширяемость на Go: Для более сложных сценариев можно писать кастомную логику на Go, расширяя функциональность PocketBase.
Сценарии использования PocketBase
Благодаря своим особенностям, PocketBase идеально подходит для широкого круга задач:
- Прототипы и MVP: Быстрое создание бэкенда для тестирования идей, когда нет времени на сложную инфраструктуру.
- Небольшие и средние веб-приложения: Идеально подходит для блогов, интернет-магазинов с небольшим ассортиментом, корпоративных порталов, лендингов с формами обратной связи.
- Административные панели и внутренние инструменты: Быстрое создание внутренних инструментов для управления контентом, данными или пользователями.
- Бэкенд для статических сайтов: Добавление динамического контента, форм и пользовательских данных к сайтам, построенным на генераторах статики (Next.js, Astro, Jekyll и т.д.).
- Мобильные приложения: Предоставление готового API и системы аутентификации для iOS и Android приложений.
- Персональные проекты: Отличный выбор для хобби-проектов, которые требуют надежного, но простого бэкенда.
Почему VPS — лучший выбор для PocketBase?
Выбор VPS (Virtual Private Server) для развертывания PocketBase имеет ряд неоспоримых преимуществ, особенно для тех, кто ищет баланс между контролем, производительностью и стоимостью:
- Полный контроль над окружением: В отличие от BaaS-провайдеров, которые ограничивают вас своими правилами и инструментами, на VPS вы получаете полный root-доступ. Это позволяет устанавливать любое ПО, настраивать фаервол, выбирать операционную систему и оптимизировать все параметры под свои нужды. Это критически важно для PocketBase self-hosted, где вы хотите иметь полный контроль над данными и их обработкой.
- Оптимизация производительности: Вы можете выбрать именно те аппаратные ресурсы (CPU, RAM, NVMe-диск), которые соответствуют требованиям вашего приложения. Для PocketBase, который очень эффективен, это означает возможность получить отличную производительность даже на скромных конфигурациях VPS.
- Экономическая эффективность: Для многих проектов хостинг PocketBase на VPS оказывается значительно дешевле, чем использование коммерческих BaaS-решений, особенно по мере роста проекта и увеличения объема данных или количества запросов. Вы платите только за выделенные вам ресурсы.
- Безопасность и приватность данных: Ваши данные хранятся на вашем сервере, под вашим контролем. Это важно для проектов с высокими требованиями к безопасности или соблюдению регуляторных норм. Вы сами настраиваете меры безопасности, бэкапы и доступ.
- Гибкость масштабирования: По мере роста проекта вы можете легко масштабировать ресурсы VPS, переходя на более мощные тарифные планы или даже на выделенные серверы, если нагрузка станет экстремальной.
- Интеграция с другими сервисами: На VPS вы можете легко установить и настроить другие сервисы рядом с PocketBase, например, Redis для кэширования, MinIO для S3-совместимого хранилища, или другие инструменты мониторинга и логирования.
Развертывание PocketBase на сервере, в частности на VPS, дает разработчикам свободу, контроль и экономию, которые необходимы для успешного запуска и развития проектов.
Системные требования для PocketBase на сервере
PocketBase разработан с учетом минимального потребления ресурсов, что делает его идеальным кандидатом для развертывания даже на самых скромных VPS. Однако, как и любое приложение, он имеет определенные системные требования, которые зависят от ожидаемой нагрузки.
Минимальные требования (для разработки, прототипов и очень малых проектов)
- Процессор (CPU): 1 vCore. PocketBase очень эффективен, и для большинства задач одного ядра будет достаточно.
- Оперативная память (RAM): 512 MB - 1 GB. Самому PocketBase нужно немного памяти, но ОС, Docker и другие фоновые процессы также потребляют RAM.
- Дисковое пространство (Storage): 10 GB (NVMe SSD). NVMe-диски значительно ускоряют операции чтения/записи, что критически важно для базы данных SQLite. 10 GB будет достаточно для ОС, Docker и начального объема данных.
- Операционная система: Любой современный дистрибутив Linux (Ubuntu 20.04+, Debian 11+).
- Пропускная способность сети: 100 Mbps.
Такой конфигурации будет достаточно для тестирования, личных проектов или приложений с очень низкой посещаемостью (до 5-10 одновременных пользователей).
Рекомендуемые требования (для небольших и средних продакшн-проектов)
- Процессор (CPU): 2 vCores. Дополнительное ядро обеспечит лучшую производительность при обработке нескольких запросов одновременно и при выполнении фоновых задач.
- Оперативная память (RAM): 2 GB - 4 GB. Для продакшн-среды, где могут быть десятки или сотни одновременных запросов, больше RAM поможет кэшировать данные SQLite и обеспечит стабильную работу.
- Дисковое пространство (Storage): 50 GB - 100 GB (NVMe SSD). Увеличенный объем диска даст запас для роста данных и хранения файлов, а NVMe останется ключевым для производительности.
- Операционная система: Ubuntu 22.04 LTS или Debian 12. Эти дистрибутивы предлагают актуальные версии ПО и длительную поддержку.
- Пропускная способность сети: 200 Mbps - 1 Gbps. Для активного API и realtime-обновлений, а также для передачи файлов, хорошая пропускная способность необходима.
Эта конфигурация подойдет для большинства стартапов, внутренних инструментов и веб-приложений с умеренной нагрузкой (до 100-200 одновременных пользователей).
Зависимости
- Docker: Рекомендуемый способ развертывания PocketBase, так как он обеспечивает изоляцию, простоту управления и переносимость.
- Docker Compose: Для оркестрации контейнеров, упрощает запуск и управление PocketBase с дополнительными сервисами (например, обратным прокси).
- Reverse Proxy: Nginx или Caddy для обработки HTTPS-сертификатов, доменных имен и балансировки нагрузки. Это критически важно для продакшн-среды.
Выбирая VPS, всегда стоит ориентироваться на предполагаемую пиковую нагрузку. Лучше взять тариф с небольшим запасом, чем столкнуться с проблемами производительности на старте.
Ищете надёжный сервер для ваших проектов?
VPS от $10/мес и выделенные серверы от $9/мес с NVMe, DDoS-защитой и поддержкой 24/7.
Смотреть предложения →Подготовка VPS к установке PocketBase
Прежде чем приступить к установке PocketBase, необходимо выполнить ряд подготовительных шагов на вашем VPS. Эти шаги обеспечат безопасность, стабильность и правильную работу вашей будущей платформы.
1. Подключение к VPS по SSH
Первым делом вам нужно получить доступ к серверу. Используйте SSH-клиент (PuTTY для Windows, терминал для Linux/macOS) для подключения к вашему VPS. Вам понадобится IP-адрес сервера, имя пользователя (обычно root или пользователь, созданный провайдером) и пароль/SSH-ключ.
ssh user@your_vps_ip_address
Если вы используете root-пользователя, рекомендуется создать нового пользователя с ограниченными правами для повседневной работы и настроить SSH-ключи для безопасного входа. Дополнительную информацию о работе с серверами можно найти в статье Что такое сервер и дедик: Полное руководство для начинающих.
2. Обновление системы
Всегда начинайте с обновления пакетного менеджера и установленных пакетов, чтобы убедиться в наличии последних версий и исправлений безопасности.
sudo apt update
sudo apt upgrade -y
3. Настройка фаервола (UFW)
UFW (Uncomplicated Firewall) — это простой в использовании фаервол для Linux. Его настройка критически важна для защиты вашего сервера от несанкционированного доступа.
- Разрешить SSH:
sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
Эти порты (80 и 443) необходимы для доступа к вашему PocketBase через веб-браузер после настройки обратного прокси.
sudo ufw allow 8090/tcp
Порт 8090 — это порт по умолчанию, на котором PocketBase слушает входящие соединения. В продакшн-среде доступ к этому порту должен быть закрыт извне и доступен только для обратного прокси.
sudo ufw enable
Подтвердите действие, нажав y. Убедитесь, что вы не заблокировали SSH-доступ.
sudo ufw status
4. Установка Docker
Docker — это основа для нашего развертывания. Установим его, следуя официальной документации.
- Удалить старые версии Docker (если есть):
for pkg in docker.io docker-doc docker-compose docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; do sudo apt remove $pkg; done
sudo apt install ca-certificates curl gnupg lsb-release -y
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
sudo usermod -aG docker $USER
newgrp docker
Выйдите из SSH-сессии и переподключитесь, чтобы изменения вступили в силу.
docker run hello-world
Вы должны увидеть сообщение "Hello from Docker!".
5. Установка Docker Compose
Docker Compose обычно устанавливается вместе с Docker Engine через плагин. Если по какой-то причине его нет, или вы используете старую версию Docker, его можно установить отдельно.
sudo apt install docker-compose-plugin -y
Проверить версию Docker Compose:
docker compose version
Теперь ваш VPS полностью готов к развертыванию PocketBase Docker-контейнера.
Ищете сервер, который просто работает?
Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.
Установка PocketBase на VPS с помощью Docker Compose
Использование Docker Compose для установки PocketBase — это наиболее удобный и рекомендуемый способ, так как он позволяет легко управлять конфигурацией, зависимостями и обеспечивает переносимость. Мы будем использовать официальный образ PocketBase.
1. Создание рабочей директории
Создайте директорию для вашего проекта PocketBase. В ней будут храниться файлы конфигурации Docker Compose и данные PocketBase.
mkdir -p ~/pocketbase_app
cd ~/pocketbase_app
2. Создание файла docker-compose.yml
Внутри этой директории создайте файл с именем docker-compose.yml. Этот файл будет описывать, как Docker должен запускать PocketBase.
nano docker-compose.yml
Вставьте следующее содержимое:
version: '3.8'
services:
pocketbase:
image: ghcr.io/pocketbase/pocketbase:latest
container_name: pocketbase
restart: unless-stopped
ports:
- "8090:8090" # PocketBase по умолчанию слушает на порту 8090
volumes:
- ./pb_data:/pb_data # Сохранение данных PocketBase
- ./pb_public:/pb_public # Для статических файлов, если нужно
- ./pb_migrations:/pb_migrations # Для миграций, если нужно
environment:
# Опционально: можно настроить переменные окружения для PocketBase
# Например, для настройки SMTP для отправки писем
# POCKETBASE_SMTP_HOST: smtp.example.com
# POCKETBASE_SMTP_PORT: 587
# POCKETBASE_SMTP_USERNAME: [email protected]
# POCKETBASE_SMTP_PASSWORD: your_password
# POCKETBASE_ADMIN_EMAIL: [email protected]
# POCKETBASE_ADMIN_PASSWORD: your_strong_password
# POCKETBASE_URL: https://yourdomain.com
command: ["./pocketbase", "serve", "--http=0.0.0.0:8090"]
# Опционально: Если вы планируете использовать Nginx или Caddy
# в качестве обратного прокси в отдельном контейнере,
# то его можно добавить сюда. Но чаще его запускают
# на хосте или в отдельном docker-compose файле.
# Пример для Nginx (закомментировано):
# nginx:
# image: nginx:latest
# container_name: nginx_proxy
# restart: unless-stopped
# ports:
# - "80:80"
# - "443:443"
# volumes:
# - ./nginx/conf.d:/etc/nginx/conf.d
# - ./nginx/certbot/conf:/etc/letsencrypt
# - ./nginx/certbot/www:/var/www/certbot
# depends_on:
# - pocketbase
Разберем основные части этого файла:
version: '3.8': Указывает версию синтаксиса Docker Compose.services:: Определяет сервисы (контейнеры), которые будут запущены.pocketbase:: Название нашего сервиса.image: ghcr.io/pocketbase/pocketbase:latest: Указывает использовать официальный Docker-образ PocketBase.:latestозначает последнюю стабильную версию.container_name: pocketbase: Присваивает контейнеру читаемое имя.restart: unless-stopped: Контейнер будет автоматически перезапускаться, если он остановился (например, из-за ошибки) или при перезагрузке сервера, если только вы не остановили его вручную.ports: - "8090:8090": Пробрасывает порт 8090 контейнера на порт 8090 хост-машины. Это позволит вам получить доступ к PocketBase извне. В продакшн-среде этот порт будет доступен только для обратного прокси.volumes:: Определяет, какие директории с хост-машины будут смонтированы внутрь контейнера../pb_data:/pb_data: Это критически важно. Здесь будут храниться все данные PocketBase (база SQLite, файлы загрузок). Если вы не используете volume, данные будут потеряны при удалении контейнера../pb_public:/pb_public: Для статических файлов, если вы хотите, чтобы PocketBase их обслуживал../pb_migrations:/pb_migrations: Для хранения миграций базы данных.
environment:: Позволяет передавать переменные окружения в контейнер PocketBase. Это полезно для настройки SMTP, URL-адреса приложения и других параметров.command: ["./pocketbase", "serve", "--http=0.0.0.0:8090"]: Указывает команду, которую PocketBase должен выполнить при запуске.0.0.0.0означает, что PocketBase будет слушать на всех доступных сетевых интерфейсах.
3. Запуск PocketBase
Сохраните файл docker-compose.yml (Ctrl+X, Y, Enter). Теперь вы можете запустить PocketBase.
docker compose up -d
up: Запускает сервисы, определенные вdocker-compose.yml.-d: Запускает сервисы в фоновом режиме (detached mode).
Docker загрузит образ PocketBase (если его нет локально), создаст и запустит контейнер. Вы можете проверить статус запущенных контейнеров:
docker ps
Вы должны увидеть контейнер с именем pocketbase и статусом Up.
4. Первоначальная настройка PocketBase
После запуска контейнера PocketBase будет доступен по адресу http://your_vps_ip_address:8090/_/ (обратите внимание на /_/ в конце). Откройте этот URL в браузере. Вам будет предложено создать первого администратора. Введите email и надежный пароль. Это создаст учетную запись администратора и инициализирует базу данных.
Теперь ваш PocketBase на VPS запущен и готов к работе. Следующим шагом будет настройка обратного прокси и HTTPS для безопасного и удобного доступа.
Настройка Reverse Proxy и HTTPS для PocketBase
В продакшн-среде крайне не рекомендуется предоставлять прямой доступ к PocketBase по порту 8090. Вместо этого следует использовать обратный прокси-сервер (Reverse Proxy), который будет принимать все входящие запросы на стандартные порты (80 для HTTP и 443 для HTTPS), перенаправлять их на PocketBase и управлять HTTPS-сертификатами. Это повышает безопасность, позволяет использовать доменные имена и упрощает масштабирование. В этом разделе мы рассмотрим настройку Nginx и Caddy.
Почему нужен Reverse Proxy?
- HTTPS/SSL: Обратный прокси легко интегрируется с Let's Encrypt для автоматического получения и обновления бесплатных SSL-сертификатов, обеспечивая безопасное шифрованное соединение.
- Доменные имена: Позволяет привязать ваш PocketBase к красивому доменному имени (например,
api.yourdomain.com) вместо IP-адреса и порта. - Безопасность: Скрывает реальный порт, на котором работает PocketBase, и может служить первой линией защиты, отфильтровывая вредоносные запросы.
- Балансировка нагрузки: В более сложных сценариях обратный прокси может распределять запросы между несколькими инстансами PocketBase.
- Кэширование: Некоторые прокси могут кэшировать статический контент, снижая нагрузку на бэкенд.
Перед началом убедитесь, что ваш домен или поддомен (например, pocketbase.yourdomain.com) указывает на IP-адрес вашего VPS.
Настройка Nginx в качестве Reverse Proxy
Nginx — это один из самых популярных и производительных веб-серверов и обратных прокси. Мы будем использовать его для перенаправления трафика на PocketBase и управления HTTPS.
1. Установка Nginx
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx
Проверьте статус Nginx:
sudo systemctl status nginx
2. Настройка Nginx для PocketBase
Создайте новый файл конфигурации Nginx для вашего домена. Замените pocketbase.yourdomain.com на ваш реальный домен.
sudo nano /etc/nginx/sites-available/pocketbase.conf
Вставьте следующее содержимое:
server {
listen 80;
server_name pocketbase.yourdomain.com; # Замените на ваш домен
location / {
proxy_pass http://localhost:8090; # PocketBase работает на порту 8090
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Для поддержки WebSocket (Realtime API)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Сохраните файл.
3. Активация конфигурации Nginx
Создайте символическую ссылку на файл конфигурации из sites-available в sites-enabled и удалите дефолтную конфигурацию Nginx.
sudo ln -s /etc/nginx/sites-available/pocketbase.conf /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
Проверьте синтаксис конфигурации Nginx:
sudo nginx -t
Если ошибок нет, перезапустите Nginx:
sudo systemctl restart nginx
Теперь ваш PocketBase должен быть доступен по HTTP через ваш домен (http://pocketbase.yourdomain.com). Следующий шаг — добавить HTTPS.
4. Настройка HTTPS с Certbot (Let's Encrypt)
Certbot автоматизирует процесс получения и установки бесплатных SSL-сертификатов от Let's Encrypt.
- Установка Certbot:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d pocketbase.yourdomain.com
Следуйте инструкциям на экране. Certbot автоматически настроит Nginx для использования HTTPS и добавит правило для автоматического продления сертификата.
sudo systemctl status certbot.timer
Теперь ваш PocketBase должен быть доступен по HTTPS: https://pocketbase.yourdomain.com.
Настройка Caddy в качестве Reverse Proxy
Caddy — это современный веб-сервер, который славится своей простотой настройки и автоматической поддержкой HTTPS с Let's Encrypt. Для многих он является более простым решением, чем Nginx.
1. Установка Caddy
Следуйте инструкциям с официального сайта Caddy для установки. Для Debian/Ubuntu:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy -y
Запустите Caddy:
sudo systemctl enable caddy
sudo systemctl start caddy
2. Настройка Caddyfile для PocketBase
Caddy использует файл Caddyfile для конфигурации. Откройте его для редактирования:
sudo nano /etc/caddy/Caddyfile
Удалите существующее содержимое и вставьте следующее, заменив pocketbase.yourdomain.com на ваш домен:
pocketbase.yourdomain.com {
reverse_proxy localhost:8090 {
# Для поддержки WebSocket (Realtime API)
header_up Upgrade {http.request.header.Upgrade}
header_up Connection {http.request.header.Connection}
}
# Опционально: Увеличьте лимиты на загрузку файлов, если нужно
# client_max_body_size 250M
}
Сохраните файл.
3. Проверка и перезагрузка Caddy
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy
Caddy автоматически получит и установит SSL-сертификат для вашего домена. Теперь ваш PocketBase должен быть доступен по HTTPS: https://pocketbase.yourdomain.com.
Вы успешно настроили обратный прокси и HTTPS для вашей установки PocketBase. Это значительно повышает безопасность и удобство использования вашего приложения.
Бэкапы и обновления PocketBase: стратегии и автоматизация
Резервное копирование (бэкапы) и регулярное обновление — это краеугольные камни любой продакшн-системы. PocketBase, хоть и прост, не является исключением. Потеря данных может быть катастрофической, а устаревшее ПО может содержать уязвимости. Рассмотрим эффективные стратегии для обеспечения безопасности и актуальности вашей PocketBase self-hosted установки.
Стратегии резервного копирования
Основными компонентами данных PocketBase являются файл базы данных SQLite (обычно pb_data/data.db) и директория с загруженными файлами (pb_data/storage). Весь каталог pb_data является критически важным для бэкапа.
1. Ручной бэкап (для небольших проектов или перед важными изменениями)
Перед ручным бэкапом рекомендуется остановить PocketBase, чтобы гарантировать целостность данных.
cd ~/pocketbase_app
docker compose stop pocketbase
Затем просто скопируйте директорию pb_data:
cp -R pb_data pb_data_backup_$(date +%Y%m%d%H%M%S)
После копирования можно запустить PocketBase обратно:
docker compose start pocketbase
Этот метод прост, но не подходит для регулярных автоматических бэкапов.
2. Автоматический бэкап с помощью Cron и Docker Volume
Лучший подход — автоматизировать процесс. Мы можем использовать docker cp или просто копировать данные из смонтированного тома.
Создание скрипта для бэкапа
Создайте скрипт бэкапа (например, ~/pocketbase_app/backup.sh):
nano ~/pocketbase_app/backup.sh
Вставьте следующее содержимое:
#!/bin/bash
# Путь к директории PocketBase на хосте
PB_APP_DIR="/root/pocketbase_app" # Укажите ваш путь
PB_DATA_DIR="${PB_APP_DIR}/pb_data"
BACKUP_DIR="${PB_APP_DIR}/backups"
TIMESTAMP=$(date +%Y%m%d%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/pocketbase_backup_${TIMESTAMP}.tar.gz"
LOG_FILE="${BACKUP_DIR}/backup.log"
# Создаем директорию для бэкапов, если ее нет
mkdir -p "$BACKUP_DIR"
echo "[$TIMESTAMP] Starting PocketBase backup..." | tee -a "$LOG_FILE"
# Опционально: Остановить PocketBase для обеспечения консистентности (рекомендуется)
# Если вы не хотите останавливать, убедитесь, что PocketBase корректно обрабатывает чтение SQLite
# во время записи (WAL mode включен по умолчанию).
# docker compose -f "${PB_APP_DIR}/docker-compose.yml" stop pocketbase
# echo "[$TIMESTAMP] PocketBase container stopped." | tee -a "$LOG_FILE"
# Создаем архив директории pb_data
if tar -czf "$BACKUP_FILE" -C "$PB_DATA_DIR" .; then
echo "[$TIMESTAMP] Backup created: $BACKUP_FILE" | tee -a "$LOG_FILE"
else
echo "[$TIMESTAMP] ERROR: Failed to create backup." | tee -a "$LOG_FILE"
exit 1
fi
# Опционально: Запустить PocketBase обратно
# docker compose -f "${PB_APP_DIR}/docker-compose.yml" start pocketbase
# echo "[$TIMESTAMP] PocketBase container started." | tee -a "$LOG_FILE"
# Удаление старых бэкапов (например, старше 7 дней)
find "$BACKUP_DIR" -name "pocketbase_backup_*.tar.gz" -mtime +7 -delete
echo "[$TIMESTAMP] Old backups deleted." | tee -a "$LOG_FILE"
echo "[$TIMESTAMP] PocketBase backup finished." | tee -a "$LOG_FILE"
Сделайте скрипт исполняемым:
chmod +x ~/pocketbase_app/backup.sh
Настройка Cron для автоматического запуска
Добавьте задачу в Cron для ежедневного запуска скрипта (например, в 3 часа ночи).
crontab -e
Добавьте следующую строку в конец файла:
0 3 * * * /root/pocketbase_app/backup.sh >> /root/pocketbase_app/backups/cron.log 2>&1
Это будет запускать скрипт каждый день в 03:00. Логи выполнения будут записываться в cron.log.
3. Удаленное хранение бэкапов
Хранить бэкапы на том же сервере, что и исходные данные, рискованно. При потере сервера вы потеряете и данные, и бэкапы. Рекомендуется отправлять бэкапы на удаленное хранилище:
- S3-совместимое хранилище: Используйте
aws s3 cpилиrcloneдля отправки архивов в облачное хранилище (например, AWS S3, DigitalOcean Spaces, Backblaze B2). - SCP/SFTP: Копирование бэкапов на другой сервер или NAS по защищенному протоколу.
Интегрируйте эти команды в ваш скрипт backup.sh после создания архива.
Процесс обновления PocketBase
Обновление PocketBase через Docker Compose — это простой процесс, но всегда начинайте его с бэкапа!
1. Сделайте бэкап
Перед любым обновлением всегда делайте полный бэкап данных. Это ваша страховка.
cd ~/pocketbase_app
./backup.sh # Если у вас есть скрипт, или вручную
2. Обновление Docker-образа
Остановите текущий контейнер PocketBase, загрузите новый образ и запустите его снова.
cd ~/pocketbase_app
docker compose stop pocketbase
docker compose pull pocketbase # Загружает последнюю версию образа
docker compose up -d pocketbase
Команда docker compose pull pocketbase загрузит последнюю версию образа PocketBase. Затем docker compose up -d pocketbase запустит контейнер с новым образом, сохраняя все ваши данные (благодаря смонтированному тому pb_data). PocketBase автоматически выполнит необходимые миграции базы данных при первом запуске новой версии.
3. Проверка обновления
После запуска убедитесь, что PocketBase работает корректно, и проверьте версию в панели администратора.
Регулярные бэкапы и своевременные обновления — залог стабильности и безопасности вашего PocketBase на сервере.
Ищете сервер, который просто работает?
Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.
Какой VPS выбрать для PocketBase: конфигурации под реальную нагрузку
Выбор подходящего VPS для PocketBase зависит от множества факторов, включая количество одновременных пользователей, объем данных, интенсивность операций чтения/записи, использование realtime-функций и наличие дополнительных сервисов. Поскольку PocketBase очень эффективен, часто можно обойтись более скромными ресурсами, чем для традиционных бэкендов.
Факторы, влияющие на выбор VPS
- Количество одновременных пользователей: Чем больше пользователей активно взаимодействуют с вашим приложением, тем больше CPU и RAM потребуется для обработки запросов.
- Объем и сложность данных: Большие объемы данных в SQLite и сложные запросы могут потребовать больше RAM для кэширования и более производительный диск.
- Использование файлового хранилища: Если ваше приложение активно загружает и отдает файлы, это увеличит нагрузку на диск и сетевой канал.
- Интенсивность Realtime-подписок: Большое количество активных WebSocket-соединений может потреблять больше RAM и CPU.
- Количество API-запросов: Высокая частота запросов требует больше процессорного времени.
- Местоположение сервера: Выбирайте VPS, расположенный географически близко к вашей основной аудитории, чтобы минимизировать задержки (latency).
Таблица рекомендованных конфигураций VPS
Ниже представлена таблица с примерными конфигурациями VPS для различных сценариев нагрузки. Цены являются ориентировочными и могут сильно варьироваться в зависимости от провайдера и региона. Valebyte.com предлагает различные тарифные планы, которые могут подойти под эти требования.
| Нагрузка | CPU (vCores) | RAM (GB) | Диск (NVMe GB) | Пропускная способность | Примерная цена ($/мес) |
|---|---|---|---|---|---|
| Разработка/Прототип (1-5 пользователей) | 1 | 1 | 25 | 100 Mbps | 5-10 |
| Небольшой проект (10-50 активных пользователей) | 2 | 2 | 50 | 200 Mbps | 10-25 |
| Средний проект (50-200 активных пользователей) | 2-4 | 4-8 | 100-200 | 500 Mbps - 1 Gbps | 25-60 |
| Высоконагруженный (200+ активных пользователей) | 4-8+ | 8-16+ | 200-500+ | 1 Gbps+ | 60+ |
Дополнительные рекомендации по выбору VPS
- Тип диска: Всегда выбирайте VPS с NVMe SSD. Скорость чтения/записи критически важна для SQLite, особенно при активной работе с базой данных и файлами. Разница в производительности с обычными SSD или HDD огромна.
- KVM виртуализация: Предпочтительно выбирать VPS с KVM виртуализацией, так как она обеспечивает лучшую изоляцию и производительность по сравнению с OpenVZ. Подробнее об этом можно узнать в статье KVM VPS vs OpenVZ VPS в 2026: всё ещё актуально.
- Self-managed VPS: Поскольку PocketBase — это self-hosted решение, вы, скорее всего, будете управлять сервером самостоятельно. Выбор self-managed VPS позволит сэкономить, но потребует базовых навыков администрирования Linux. Для тех, кто сомневается, стоит ознакомиться с различиями: Self-managed vs Managed VPS в 2026: что брать.
- Мониторинг: После развертывания настройте мониторинг вашего VPS (CPU, RAM, диск, сеть) и самого PocketBase. Это поможет выявить узкие места и своевременно масштабировать ресурсы.
- Масштабирование: Если ваш проект вырастет до очень высоких нагрузок, возможно, стоит рассмотреть переход на выделенный сервер для максимальной производительности и контроля.
Начиная с минимальных конфигураций, вы можете постепенно увеличивать ресурсы по мере роста проекта, оптимизируя свои затраты на хостинг. Гибкость VPS позволяет это делать безболезненно.
Вопросы безопасности и оптимизации для PocketBase self-hosted
Развертывание PocketBase self-hosted на VPS дает полный контроль, но также накладывает ответственность за безопасность и производительность. Правильные настройки и практики помогут защитить ваше приложение и обеспечить его стабильную работу.
Рекомендации по безопасности сервера
- SSH-ключи вместо паролей: Всегда используйте SSH-ключи для доступа к серверу и отключайте аутентификацию по паролю для root-пользователя. Это значительно повышает безопасность.
- Не-root пользователь: Создайте отдельного пользователя с ограниченными правами для повседневной работы и используйте
sudoтолько при необходимости. - Фаервол (UFW): Убедитесь, что фаервол настроен корректно и открыты только необходимые порты (22 для SSH, 80/443 для HTTP/HTTPS). Порт 8090 PocketBase должен быть доступен только изнутри сервера (для обратного прокси).
- Регулярные обновления ОС: Поддерживайте операционную систему и все установленное ПО в актуальном состоянии, регулярно выполняя
sudo apt update && sudo apt upgrade. - Fail2Ban: Установите и настройте Fail2Ban для защиты от атак перебора паролей на SSH и другие сервисы.
- Сложные пароли: Используйте сложные, уникальные пароли для всех учетных записей, особенно для администратора PocketBase.
Безопасность PocketBase-специфичные настройки
- Доступ к Admin UI: Убедитесь, что Admin UI PocketBase доступен только через HTTPS и, по возможности, ограничьте доступ к нему по IP-адресам, если ваша команда работает из фиксированных локаций.
- Правила API: В панели администратора PocketBase тщательно настраивайте правила доступа для каждой коллекции. Определите, кто может читать, писать, обновлять и удалять записи (например, только авторизованные пользователи, только администраторы, или публично). Это критически важно для предотвращения несанкционированного доступа к данным.
- CORS (Cross-Origin Resource Sharing): Настройте правильные заголовки CORS, чтобы разрешить доступ к вашему API только из доверенных доменов (вашего фронтенд-приложения). Это можно сделать через переменные окружения PocketBase или на уровне обратного прокси.
- Лимитирование запросов (Rate Limiting): Используйте возможности вашего обратного прокси (Nginx или Caddy) для лимитирования количества запросов с одного IP-адреса за единицу времени. Это поможет защититься от DDoS-атак и атак перебора.
Пример для Nginx:
http { limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; # 10 запросов в секунду server { # ... location /api/ { limit_req zone=one burst=20 nodelay; # ... } } } - Секретные ключи: Если вы используете какие-либо секретные ключи или API-токены в переменных окружения PocketBase, убедитесь, что они надежно хранятся и не попадают в публичный доступ.
Оптимизация производительности PocketBase
- SQLite PRAGMAs: PocketBase по умолчанию использует режим WAL (Write-Ahead Logging) для SQLite, что значительно повышает производительность при одновременных операциях чтения/записи. Дополнительные оптимизации могут быть выполнены с помощью
PRAGMAкоманд, но обычно это не требуется. - Индексы базы данных: Убедитесь, что для часто используемых полей в ваших коллекциях созданы индексы. Это значительно ускорит запросы к базе данных. PocketBase позволяет управлять индексами через Admin UI.
- Эффективные API-запросы: Оптимизируйте запросы вашего фронтенда к API PocketBase. Используйте фильтрацию, сортировку и пагинацию на стороне сервера, чтобы минимизировать объем передаваемых данных.
- Кэширование: Для высоконагруженных API-эндпоинтов, которые возвращают редко изменяющиеся данные, рассмотрите кэширование на стороне клиента или с использованием обратного прокси. PocketBase сам по себе очень быстр, поэтому кэширование может быть излишним для большинства случаев.
- Оптимизация изображений и файлов: Если ваше приложение активно работает с изображениями, используйте сервисы для их оптимизации и сжатия перед загрузкой, чтобы уменьшить объем данных и ускорить загрузку.
Придерживаясь этих рекомендаций, вы обеспечите не только безопасность, но и высокую производительность вашего PocketBase на сервере, позволяя ему эффективно обслуживать ваше приложение.
Выводы
PocketBase представляет собой выдающееся решение для разработчиков, которым нужна скорость, простота и полный контроль над своим бэкендом. Развернутый на VPS, он становится мощным, экономичным и гибким инструментом для создания широкого спектра приложений, от прототипов до полноценных продакшн-сервисов. Следуя пошаговым инструкциям по установке PocketBase через Docker Compose, настройке безопасного доступа с помощью обратного прокси и HTTPS, а также внедряя стратегии бэкапов и обновлений, вы получаете надежную и легко управляемую платформу.
Для оптимальной работы PocketBase рекомендуется выбирать VPS с NVMe-дисками и достаточным объемом RAM, исходя из ожидаемой нагрузки. Провайдеры, такие как Valebyte.com, предлагают широкий выбор конфигураций VPS, которые идеально подходят для развертывания PocketBase, обеспечивая производительность и надежность, необходимые для вашего проекта.
Готовы выбрать сервер?
VPS и выделенные серверы в 72+ странах с мгновенной активацией и полным root-доступом.
Начать сейчас →