Skip to content

Требования к серверу

Минимальные требования (self-hosted)

КомпонентМинимумРекомендуется
CPU2 vCPU4 vCPU
RAM4 GB8 GB
Диск20 GB SSD50 GB SSD
ОСUbuntu 22.04 / Debian 12Ubuntu 24.04 LTS

Программные зависимости

КомпонентВерсияНазначение
PHP8.4Backend API
PostgreSQL16Основная база данных
Redis7Кэш, сессии, очереди
Meilisearch1.xПолнотекстовый поиск
Node.js18+Сборка frontend
Nginx1.24+Веб-сервер

При использовании Docker всё включено в docker-compose-prod.yml.

Queue Worker — обязательный компонент

Queue Worker (php artisan queue:work) не опционален для production: уведомления (Telegram, email, push) и индексация Meilisearch выполняются асинхронно через Redis-очередь. Без запущенного воркера:

  • Telegram-уведомления при смене статуса не доставляются
  • Полнотекстовый индекс не обновляется после создания/редактирования записей

В Docker-конфигурации воркер запускается автоматически как отдельный контейнер. При ручной установке добавьте в systemd или supervisor:

ini
[program:orbita-queue]
command=php /var/www/html/artisan queue:work --tries=3 --timeout=90 --sleep=1
numprocs=2
autostart=true
autorestart=true

Минимум 2 процесса воркера на любом production-сервере.

Настройка Apache / PHP-FPM

Количество PHP-воркеров определяет параллельную пропускную способность. Рекомендуемые значения MaxRequestWorkers (Apache mpm_prefork) или pm.max_children (PHP-FPM dynamic):

Ожидаемых одновременных пользователейВоркеровRAM на воркерRAM итого
до 2015–20~80 MB~1.6 GB
до 5025–35~80 MB~2.8 GB
до 10050–60~80 MB~4.8 GB
до 20080–100~80 MB~8 GB

При нагрузочном тестировании на одном сервере (4 vCPU, 8 GB RAM): 20 одновременных пользователей → p95 = 262 ms при 5 воркерах (дефолт) система упиралась уже при 10 пользователях.

Для Docker-установки значение задаётся переменной окружения или через apache2.conf / www.conf внутри образа.

PHP-расширения

pdo_pgsql
redis
gd (или imagick)
mbstring
openssl
tokenizer
xml
ctype
json
bcmath
intl
zip
pcntl

Сеть и домены

  • Открытые порты: 80 (HTTP), 443 (HTTPS)
  • SSL-сертификат: автоматически через Let's Encrypt (Traefik)
  • Требуется DNS A-запись на IP сервера

Минимальный набор доменов:

ДоменНазначение
app.orbita.exampleОсновное приложение
docs.orbita.exampleДокументация (опционально)

SaaS-режим дополнительно:

ДоменНазначение
*.orbita.exampleWildcard для поддоменов тенантов
auth.orbita.exampleAuthentik SSO

Хранилище файлов

По умолчанию используется встроенный SeaweedFS (S3-совместимый).

Можно заменить на внешние S3-хранилища:

  • AWS S3
  • MinIO
  • Yandex Object Storage
  • VK Cloud Storage

Настройка: переменные AWS_* в prod.env.

Документация Orbita ITSM