Введение: преимущества самостоятельного хостинга Strapi
В мире современной веб-разработки головные CMS (Content Management Systems) стали стандартом для компаний, стремящихся к гибкости в управлении контентом. Strapi 5, одна из лидирующих open-source headless CMS, предлагает разработчикам мощные инструменты для создания масштабируемых веб-приложений при сохранении полного контроля над инфраструктурой.
Хотя облачные решения кажутся привлекательными своей простотой, развертывание Strapi на собственном виртуальном приватном сервере (VPS) дает существенные преимущества для растущего бизнеса в Казахстане:
- Полный контроль над данными – особенно важно для компаний, работающих с конфиденциальной информацией
- Значительная экономия средств – до 60-70% по сравнению с облачными решениями при долгосрочном использовании
- Гибкая настройка производительности – оптимизация под конкретные нужды вашего проекта
- Независимость от внешних сервисов – работа без привязки к стабильности зарубежных платформ
В этом руководстве мы подробно рассмотрим процесс установки и настройки Strapi 5 на VPS, чтобы вы могли запустить надежное и безопасное решение менее чем за час.
Ключевая выгода: При правильной настройке собственного VPS с Strapi вы получаете превосходную производительность и безопасность при снижении ежемесячных затрат на хостинг до 50-70% по сравнению с управляемыми облачными решениями.
Подготовка: необходимые компоненты и предварительные требования
Перед началом установки убедитесь, что у вас есть:
-
VPS с минимальными характеристиками:
- 2 ГБ оперативной памяти (рекомендуется 4 ГБ для комфортной работы)
- 1 виртуальный процессор (vCPU)
- 20 ГБ SSD-хранилища
- Ubuntu 22.04 LTS или более новая версия
-
Доменное имя с доступом к управлению DNS-записями
-
SSH-доступ к вашему серверу (терминал для Mac/Linux или PuTTY для Windows)
-
Базовые знания командной строки и опыт работы с Node.js
-
Существующий проект Strapi или план по созданию нового
Профессиональный совет: Если вы планируете работать с большим количеством типов контента или API-интеграций, настоятельно рекомендуем выбрать VPS с 4 ГБ оперативной памяти для обеспечения оптимальной производительности при сборке проекта.
Шаг 1: Начальная настройка и защита сервера
Безопасность вашего сервера — основа успешного проекта. Начнем с базовой конфигурации и защиты VPS.
1.1 Подключение к серверу через SSH
Подключитесь к вашему VPS с помощью команды:
ssh имя_пользователя@IP_ВАШЕГО_СЕРВЕРА
Если возникают проблемы с подключением из-за ошибок known_hosts
, примените следующие права доступа:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/known_hosts
1.2 Настройка имени хоста и конфигурация DNS
Установите корректное имя хоста для системной идентификации:
sudo hostnamectl set-hostname content.вашдомен.kz
Обновите файл hosts, чтобы отразить эту конфигурацию:
sudo nano /etc/hosts
Добавьте следующую строку:
1IP_ВАШЕГО_СЕРВЕРА content.вашдомен.kz
В настройках DNS вашего регистратора доменов создайте A-запись, которая указывает content.вашдомен.kz
на IP-адрес вашего сервера. Обычно эти изменения распространяются в течение 30 минут – 24 часов, в зависимости от вашего DNS-провайдера.
1.3 Обновление системы и установка базовых пакетов
Обновите системные пакеты для устранения потенциальных уязвимостей:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git unzip ufw
Шаг 2: Настройка базы данных PostgreSQL
Strapi 5 поддерживает несколько систем управления базами данных, но PostgreSQL обеспечивает лучшее сочетание производительности, надежности и функциональности для рабочей среды.
2.1 Установка PostgreSQL
Установите сервер PostgreSQL и клиентские инструменты:
sudo apt install -y postgresql postgresql-contrib
2.2 Создание базы данных и пользователя
Создайте специальную базу данных и пользователя для вашего приложения Strapi:
sudo -i -u postgres
psql
В консоли PostgreSQL выполните:
1CREATE DATABASE strapidb;
2CREATE USER strapiuser WITH ENCRYPTED PASSWORD 'ВАШ_НАДЕЖНЫЙ_ПАРОЛЬ';
3GRANT ALL PRIVILEGES ON DATABASE strapidb TO strapiuser;
4\q
5exit
Примечание по безопасности: Используйте сложный уникальный пароль для пользователя базы данных. Рекомендуем использовать команду
openssl rand -hex 16
для создания криптографически стойкой случайной строки.
Шаг 3: Настройка окружения Node.js
Strapi 5 требует Node.js версии 18 или выше. Установим LTS-версию для оптимальной стабильности.
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
Проверьте установку:
node -v # Должно показывать v18.x.x или выше
npm -v # Должно показывать 8.x.x или выше
Шаг 4: Развертывание приложения Strapi 5
Теперь, когда окружение подготовлено, можно развернуть само приложение Strapi.
4.1 Клонирование репозитория
Если ваш проект Strapi размещен в Git-репозитории (рекомендуется для командной работы):
cd ~
git clone https://github.com/ВАШ_ПОЛЬЗОВАТЕЛЬ/ВАШ_РЕПОЗИТОРИЙ.git strapi-production
cd strapi-production
Альтернативно, вы можете передать локальный проект через SCP или SFTP.
4.2 Установка зависимостей
Установите необходимые пакеты и зависимости для производственной среды:
npm install
npm install pg dotenv --save
4.3 Конфигурация окружения для рабочей среды
Создайте специальную конфигурацию для рабочей среды:
mkdir -p config/env/production
touch config/env/production/.env
Отредактируйте этот файл в любом текстовом редакторе и добавьте:
1HOST=0.0.0.0
2PORT=1337
3APP_KEYS=ключ1,ключ2,ключ3,ключ4
4API_TOKEN_SALT=ВАШ_TOKEN_SALT
5ADMIN_JWT_SECRET=ВАШ_ADMIN_JWT
6JWT_SECRET=ВАШ_JWT_SECRET
7TRANSFER_TOKEN_SALT=ВАШ_TRANSFER_SALT
8
9# База данных
10DATABASE_CLIENT=postgres
11DATABASE_HOST=localhost
12DATABASE_PORT=5432
13DATABASE_NAME=strapidb
14DATABASE_USERNAME=strapiuser
15DATABASE_PASSWORD=ВАШ_НАДЕЖНЫЙ_ПАРОЛЬ
16DATABASE_SSL=false
Для генерации различных секретных ключей используйте:
openssl rand -hex 32 # Запустите эту команду несколько раз для каждого ключа
4.4 Конфигурация подключения к базе данных
Создайте файл конфигурации базы данных специально для рабочей среды:
nano config/env/production/database.ts
Добавьте следующую конфигурацию:
1export default ({ env }) => ({
2 connection: {
3 client: env('DATABASE_CLIENT', 'postgres'),
4 connection: {
5 host: env('DATABASE_HOST', 'localhost'),
6 port: env.int('DATABASE_PORT', 5432),
7 database: env('DATABASE_NAME', 'strapidb'),
8 user: env('DATABASE_USERNAME', 'strapiuser'),
9 password: env('DATABASE_PASSWORD'),
10 ssl: env.bool('DATABASE_SSL', false),
11 },
12 debug: false,
13 },
14});
4.5 Сборка для рабочей среды
Соберите ваше приложение Strapi для рабочей среды:
NODE_OPTIONS="--max_old_space_size=4096" NODE_ENV=production npm run build
Этот процесс может занять несколько минут, особенно на VPS с ограниченными ресурсами.
Шаг 5: Управление процессами с PM2
Для обеспечения непрерывной работы вашего приложения Strapi и автоматического перезапуска после перезагрузки сервера используем менеджер процессов PM2.
5.1 Установка PM2
npm install -g pm2
5.2 Запуск Strapi с PM2
pm2 start npm --name "strapi-production" -- run start
5.3 Настройка автозапуска PM2
pm2 save
pm2 startup systemd
Следуйте инструкциям, предоставленным командой pm2 startup
, чтобы включить автоматический запуск.
Шаг 6: Настройка обратного прокси с Nginx и SSL
Для безопасного доступа к вашему экземпляру Strapi из интернета используем Nginx в качестве обратного прокси с SSL-шифрованием.
6.1 Установка Nginx
sudo apt install -y nginx
6.2 Конфигурация Nginx
Создайте новый конфигурационный файл Nginx:
sudo nano /etc/nginx/sites-available/strapi
Добавьте следующую конфигурацию:
1server {
2 server_name content.вашдомен.kz;
3
4 location / {
5 proxy_pass http://localhost:1337;
6 proxy_http_version 1.1;
7 proxy_set_header X-Forwarded-Host $host;
8 proxy_set_header X-Forwarded-Server $host;
9 proxy_set_header X-Real-IP $remote_addr;
10 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
11 proxy_set_header X-Forwarded-Proto $scheme;
12 proxy_set_header Host $http_host;
13 proxy_set_header Upgrade $http_upgrade;
14 proxy_set_header Connection "Upgrade";
15 proxy_pass_request_headers on;
16 }
17}
Активируйте эту конфигурацию:
sudo ln -s /etc/nginx/sites-available/strapi /etc/nginx/sites-enabled/
sudo nginx -t # Проверка конфигурации
sudo systemctl restart nginx
6.3 SSL-сертификат с Let's Encrypt
Защитите ваше приложение бесплатным SSL-сертификатом:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d content.вашдомен.kz
Следуйте инструкциям для завершения настройки SSL.
Шаг 7: Настройка файрвола
Настройте базовый файрвол для защиты вашего сервера:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
Проверьте статус файрвола:
sudo ufw status
Шаг 8: Миграция данных (для существующих проектов)
Если вы переносите проект с другого хостинга, необходимо перенести данные.
8.1 Использование инструмента переноса Strapi
Для автоматической миграции с другого экземпляра Strapi:
npx strapi transfer --from=remote --url=https://ВАШ_СУЩЕСТВУЮЩИЙ_STRAPI/admin --token=ВАШ_TRANSFER_TOKEN
8.2 Ручная миграция базы данных
Если автоматический перенос недоступен:
-
Экспорт из источника:
bashpg_dump -h ИСХОДНЫЙ_ХОСТ -U ИСХОДНЫЙ_ПОЛЬЗОВАТЕЛЬ -d ИСХОДНАЯ_БД -F c -f backup.dump
-
Передача на ваш VPS:
bashscp backup.dump имя_пользователя@IP_ВАШЕГО_СЕРВЕРА:/home/имя_пользователя/
-
Восстановление на вашем VPS:
bashpg_restore -U strapiuser -d strapidb -F c backup.dump
8.3 Перенос медиафайлов
Для переноса загрузок и медиафайлов:
rsync -avz -e ssh /путь/к/локальным/uploads/ имя_пользователя@IP_ВАШЕГО_СЕРВЕРА:/home/имя_пользователя/strapi-production/public/uploads/
Шаг 9: Оптимизация производительности
Настройте ваше развертывание Strapi для оптимальной производительности:
9.1 Распределение памяти Node.js
Отредактируйте конфигурацию PM2:
pm2 stop strapi-production
pm2 start npm --name "strapi-production" --node-args="--max_old_space_size=2048" -- run start
pm2 save
9.2 Кэширование статических ресурсов в Nginx
Улучшите конфигурацию Nginx для кэширования статических ресурсов:
sudo nano /etc/nginx/sites-available/strapi
Добавьте внутри блока server:
1location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
2 proxy_pass http://localhost:1337;
3 expires 30d;
4 add_header Cache-Control "public, no-transform";
5}
Перезапустите Nginx:
sudo systemctl restart nginx
Шаг 10: Регулярное обслуживание и стратегия обновлений
Для долгосрочной стабильности важно установить процедуры регулярного обслуживания вашего сервера и приложения.
10.1 Автоматическое резервное копирование
Настройте ежедневное автоматическое резервное копирование базы данных:
mkdir -p ~/backups
crontab -e
Добавьте следующую строку:
10 0 * * * pg_dump -U strapiuser -d strapidb -F c -f ~/backups/strapi-backup-$(date +\%Y\%m\%d).dump
Это создаст ежедневную резервную копию в полночь, назначая файлам имена в формате даты.
Важно: Периодически проверяйте работоспособность ваших резервных копий, пытаясь восстановить тестовую базу данных. Резервная копия, которую нельзя восстановить, бесполезна!
10.2 Процедура обновления Strapi
Для безопасного обновления вашего приложения Strapi следуйте этому алгоритму:
-
Создайте резервную копию перед обновлением:
bashpg_dump -U strapiuser -d strapidb -F c -f ~/backups/strapi-pre-update.dump
-
Получите последние изменения из репозитория:
bashcd ~/strapi-production git pull origin main
-
Установите зависимости:
bashnpm install
-
Перестройте приложение и перезапустите:
bashNODE_ENV=production npm run build pm2 restart strapi-production
Рекомендуется сначала протестировать процесс обновления в тестовой среде, прежде чем применять его к рабочему серверу.
10.3 Мониторинг и управление логами
Настройте базовый мониторинг с помощью PM2:
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
Это обеспечит автоматическое управление файлами журналов, предотвращая заполнение диска.
10.4 Контрольный список регулярного обслуживания
Для поддержания оптимальной производительности и безопасности сервера рекомендуется регулярно выполнять следующие задачи:
Ежедневно:
- Мониторинг состояния сервера (CPU, RAM, диск)
- Проверка журналов на наличие ошибок
Еженедельно:
- Обновление системных пакетов
- Проверка резервных копий
- Анализ журналов доступа Nginx
Ежемесячно:
- Очистка старых журналов и временных файлов
- Проверка и обновление SSL-сертификатов
- Проверка целостности данных
Ежеквартально:
- Смена паролей доступа
- Проверка и обновление правил файрвола
- Тестирование процедуры восстановления из резервных копий
Шаг 11: Масштабирование и оптимизация для высоких нагрузок
По мере роста вашего проекта может потребоваться дополнительная оптимизация для обработки увеличивающейся нагрузки.
11.1 Вертикальное масштабирование
Наиболее простой способ повысить производительность — увеличить ресурсы вашего VPS:
- Увеличьте RAM до 8 ГБ для улучшения обработки запросов
- Добавьте дополнительные vCPU для параллельной обработки
- Расширьте дисковое пространство для размещения большего объема медиафайлов
11.2 Кэширование запросов к API
Настройте кэширование часто запрашиваемых данных с помощью Redis:
sudo apt install redis-server
npm install @strapi/plugin-redis --save
Затем добавьте следующую конфигурацию в config/env/production/plugins.ts
:
1export default {
2 redis: {
3 config: {
4 connections: {
5 default: {
6 host: '127.0.0.1',
7 port: 6379,
8 db: 0,
9 },
10 },
11 },
12 },
13};
11.3 Оптимизация загрузки медиафайлов
Для проектов с большим количеством изображений и медиафайлов рекомендуется настроить CDN или объектное хранилище:
- Создайте учетную запись в облачном провайдере с поддержкой S3 (например, DigitalOcean Spaces)
- Установите плагин для Strapi:
bash
npm install @strapi/provider-upload-aws-s3 --save
- Настройте провайдера в
config/env/production/plugins.ts
Заключение: ваше развертывание Strapi готово к работе
Следуя этому руководству, вы успешно развернули рабочий экземпляр Strapi 5 на вашем VPS со следующими преимуществами:
- Интеграция с PostgreSQL для надежного хранения данных
- Управление процессами с помощью PM2 для непрерывной работы
- Безопасный HTTPS-доступ через Nginx
- Автоматическое резервное копирование
- Оптимизация производительности
- Стратегия обслуживания и обновления
Теперь ваша система Strapi CMS готова обеспечивать контентом ваши цифровые проекты с максимальной гибкостью и контролем, при этом стоимость владения значительно ниже облачных альтернатив.
Интересный факт: Самостоятельное размещение Strapi может снизить общую стоимость владения до 65% по сравнению с эквивалентными управляемыми SaaS-альтернативами в течение двухлетнего периода, при этом обеспечивая больший контроль и возможность тонкой настройки.
Нужна профессиональная поддержка разработки?
В Ideaflow Studio мы специализируемся на создании исключительных цифровых проектов на основе современных архитектур headless CMS. Наша команда сертифицированных экспертов по Strapi готова помочь вам:
- Разработать и внедрить пользовательские модели контента, оптимизированные для ваших бизнес-потребностей
- Создать функциональные фронтенд-приложения с использованием Next.js, Nuxt или React
- Оптимизировать ваше существующее развертывание Strapi для максимальной производительности и безопасности
- Перейти с устаревших CMS платформ на современную headless архитектуру
Свяжитесь с нами сегодня по адресу hello@ideaflow.studio, чтобы обсудить, как мы можем помочь ускорить вашу цифровую трансформацию с помощью Strapi.
*[VPS]: Виртуальный приватный сервер *[CMS]: Система управления контентом