bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward

PocketBase на VPS: установка, настройка и обслуживание

calendar_month 10 июня 2026 schedule 23 мин. чтения visibility 25 просмотров
person
Valebyte Team
PocketBase на VPS: установка, настройка и обслуживание

Установка 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 имеет ряд неоспоримых преимуществ, особенно для тех, кто ищет баланс между контролем, производительностью и стоимостью:

  1. Полный контроль над окружением: В отличие от BaaS-провайдеров, которые ограничивают вас своими правилами и инструментами, на VPS вы получаете полный root-доступ. Это позволяет устанавливать любое ПО, настраивать фаервол, выбирать операционную систему и оптимизировать все параметры под свои нужды. Это критически важно для PocketBase self-hosted, где вы хотите иметь полный контроль над данными и их обработкой.
  2. Оптимизация производительности: Вы можете выбрать именно те аппаратные ресурсы (CPU, RAM, NVMe-диск), которые соответствуют требованиям вашего приложения. Для PocketBase, который очень эффективен, это означает возможность получить отличную производительность даже на скромных конфигурациях VPS.
  3. Экономическая эффективность: Для многих проектов хостинг PocketBase на VPS оказывается значительно дешевле, чем использование коммерческих BaaS-решений, особенно по мере роста проекта и увеличения объема данных или количества запросов. Вы платите только за выделенные вам ресурсы.
  4. Безопасность и приватность данных: Ваши данные хранятся на вашем сервере, под вашим контролем. Это важно для проектов с высокими требованиями к безопасности или соблюдению регуляторных норм. Вы сами настраиваете меры безопасности, бэкапы и доступ.
  5. Гибкость масштабирования: По мере роста проекта вы можете легко масштабировать ресурсы VPS, переходя на более мощные тарифные планы или даже на выделенные серверы, если нагрузка станет экстремальной.
  6. Интеграция с другими сервисами: На 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
  • Разрешить HTTP и HTTPS:
  • sudo ufw allow http
    sudo ufw allow https

    Эти порты (80 и 443) необходимы для доступа к вашему PocketBase через веб-браузер после настройки обратного прокси.

  • Разрешить порт 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
  • Добавить официальный GPG ключ Docker:
  • 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
  • Настроить репозиторий Docker:
  • 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
  • Обновить список пакетов и установить Docker Engine:
  • sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
  • Добавить пользователя в группу docker (чтобы не использовать sudo):
  • sudo usermod -aG docker $USER
    newgrp docker

    Выйдите из SSH-сессии и переподключитесь, чтобы изменения вступили в силу.

  • Проверить установку Docker:
  • 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-контейнера.

rocket_launch Быстрый выбор

Ищете сервер, который просто работает?

Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.

Смотреть тарифы VPS arrow_forward

Установка 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 на сервере.

rocket_launch Быстрый выбор

Ищете сервер, который просто работает?

Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.

Смотреть тарифы VPS arrow_forward

Какой 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 дает полный контроль, но также накладывает ответственность за безопасность и производительность. Правильные настройки и практики помогут защитить ваше приложение и обеспечить его стабильную работу.

Рекомендации по безопасности сервера

  1. SSH-ключи вместо паролей: Всегда используйте SSH-ключи для доступа к серверу и отключайте аутентификацию по паролю для root-пользователя. Это значительно повышает безопасность.
  2. Не-root пользователь: Создайте отдельного пользователя с ограниченными правами для повседневной работы и используйте sudo только при необходимости.
  3. Фаервол (UFW): Убедитесь, что фаервол настроен корректно и открыты только необходимые порты (22 для SSH, 80/443 для HTTP/HTTPS). Порт 8090 PocketBase должен быть доступен только изнутри сервера (для обратного прокси).
  4. Регулярные обновления ОС: Поддерживайте операционную систему и все установленное ПО в актуальном состоянии, регулярно выполняя sudo apt update && sudo apt upgrade.
  5. Fail2Ban: Установите и настройте Fail2Ban для защиты от атак перебора паролей на SSH и другие сервисы.
  6. Сложные пароли: Используйте сложные, уникальные пароли для всех учетных записей, особенно для администратора PocketBase.

Безопасность PocketBase-специфичные настройки

  1. Доступ к Admin UI: Убедитесь, что Admin UI PocketBase доступен только через HTTPS и, по возможности, ограничьте доступ к нему по IP-адресам, если ваша команда работает из фиксированных локаций.
  2. Правила API: В панели администратора PocketBase тщательно настраивайте правила доступа для каждой коллекции. Определите, кто может читать, писать, обновлять и удалять записи (например, только авторизованные пользователи, только администраторы, или публично). Это критически важно для предотвращения несанкционированного доступа к данным.
  3. CORS (Cross-Origin Resource Sharing): Настройте правильные заголовки CORS, чтобы разрешить доступ к вашему API только из доверенных доменов (вашего фронтенд-приложения). Это можно сделать через переменные окружения PocketBase или на уровне обратного прокси.
  4. Лимитирование запросов (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;
                        # ...
                    }
                }
            }
            
  5. Секретные ключи: Если вы используете какие-либо секретные ключи или 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-доступом.

Начать сейчас →

Поделиться записью:

support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.