Базовая информация

This commit is contained in:
2026-08-10 10:05:19 +06:00
parent 43b2bf539c
commit 21d5c578f6
15 changed files with 305 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

+4
View File
@@ -0,0 +1,4 @@
![HRBOX](.assets/hrbox-tiffany.png)
---
В этом репозитории представлены инструкция в pdf и шаблоны для развёртывания HRBOX On-Premise с помощью Docker.
---
+67
View File
@@ -0,0 +1,67 @@
INSTANCE_NAME=onprem
APP_INTERNAL_URL=http://web:80
APP_COOKIE_VALIDATION_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 32-symbolic key in .env.local
APP_ENCRYPTION_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 64-symbolic key .env.local
SERVICES_INTERNAL_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 64-symbolic key .env.local
CHATBOX_WRAPPING_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 32-symbolic key in .env.local
S3_ENDPOINT=http://minio:9000
S3_BUCKET=hrbox
S3_KEY=
S3_SECRET=
S3_REGION=us-east-1
S3_VERSION=latest
S3_PATH_STYLE=true
POSTGRES_VHOST=postgresql
POSTGRES_PORT=5432
POSTGRES_DB=hrbox
POSTGRES_USER=hrbox
POSTGRES_PASSWORD=
YII_ENV=dev
YII_DEBUG=1
YII_TRACE_LEVEL=0
AUTH_HOST=
LAUNCHER_CLIENT_ID=launcher
LAUNCHER_ACK=600
LAUNCHER_FILE_PROCESSES=1
LAUNCHER_TASK_PROCESSES=5
LAUNCHER_SEND_PROCESSES=10
HRBOX_SESSION_PREFIX=HRBOX-
HR_WEBSERVER=true
HR_WORKER=true
REDIS_HOST=redis
REDIS_PORT=6379
NATS_HOST=nats
NATS_PORT=4222
NATS_MONITOR_PORT=8222
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_HOST=
SMTP_PORT=
SMTP_FROM=
SMTP_FROM_HOST=
SMTP_SECURITY_TYPE=
SMTP_SSL_ALLOW_SELF_SIGNED=
SMTP_SSL_VERIFY_PEER=
SENTRY_DSN=https://54139ffa2dda46abba01afe3579346df@sentry.hrserver.ru/8
GOWORKER_SENTRY_DSN=https://67598c2823c83ec5a9a2247fe39e9b10@sentry.hrserver.ru/20
CHATBOX_SENTRY_DSN=https://aa682678dc95227e055274b35635d309@sentry.hrserver.ru/21
DOCCONV_SENTRY_DSN=https://50c2a3514745f82438dea13a35314bb7@sentry.hrserver.ru/15
LDAPTLS_REQCERT=never
#FILE_IMAGE_ALLOWED_EXTENSIONS=png,jpg,gif,webp,jpeg
#FILE_VIDEO_ALLOWED_EXTENSIONS=mov,avi,mp4,webm,wmv,m4p,m4v
#FILE_ARCHIVE_ALLOWED_EXTENSIONS=zip,rar,7z,gz
#FILE_DOCUMENT_ALLOWED_EXTENSIONS=pdf,doc,docx,xls,xlsx,xlsm,csv,ppt,pptx,epub,odt,odp,ods,rtf,djvu,txt,fb2,fb3,mobi
#FILE_OTHER_ALLOWED_EXTENSIONS=mp3,key,eps,epf,torrent,dmg,svg,ai,cdr,indd,psd,enc
#FILE_ENCRYPTED_ALLOWED_EXTENSIONS=enc
@@ -0,0 +1,68 @@
# Основные настройки приложения #
DEFAULT_TENANT_HOSTNAME= # Здесь адрес портала (например, hrbox.company.ru)
FORCE_HTTPS=true # Принудительно использовать HTTPS
APP_ENV=prod # Вариант инсталляции (dev / prod)
# Настройки внутренних сервисов #
GEONAMES_URL=http://geonames:8181 # Оставьте в соответствии с именем контейнера и порта в docker
# КЭДО
KEDOCA_URL=http://kedoca:8558 # Оставьте в соответствии с именем контейнера и порта в docker
TSP_URL=http://qs.cryptopro.ru/tsp/tsp.srf # Зачастую не изменяется
KEDO_ENGINE=gost
KEDO_ALGORITHM=gost2012_256
KEDO_PKEYOPT=paramset:A
# Новый воркер
GOWORKER_URL=http://goworker:8686 # Оставьте в соответствии с именем контейнера и порта в docker
GOWORKER_PUSH_MIN_INTERVAL=1s # Минимальный интервал обновления данных
# Хаб
HUB_URL=https://hub.hrbox.io # Предоставляется HRBOX
HUB_TOKEN= # Предоставляется HRBOX
# Ключи #
APP_ENCRYPTION_KEY= # Здесь ваш случайный ключ на 64 символа для шифрования
APP_COOKIE_VALIDATION_KEY= # Здесь ваш ключ на 32 символа (для валидации куки)
SERVICES_INTERNAL_SECRET= # Секрет на 64 символа для внутренних сервисов
CHATBOX_WRAPPING_KEY= # Здесь ваш ключ на 32 символа (для шифрования чатов)
# База данных #
POSTGRES_VHOST=10.0.0.20 # IP хоста БД
POSTGRES_PORT=5432 # Порт хоста БД
POSTGRES_DB=hrbox # Имя базы данных
POSTGRES_USER=hrbox # Имя пользователя владельца базы данных
POSTGRES_PASSWORD=password # Пароль пользователя
POSTGRES_CITUS=false # установить true ТОЛЬКО В СЛУЧАЕ использования расширения Citus
# NATS JetStream #
NATS_URL=nats://10.0.0.11:4222,nats://10.0.0.12:4222,nats://10.0.0.13:4222 # Перечисление хостов NATS кластера
# Redis или совместимая нереляционная БД #
REDIS_HOST=10.0.0.13 # IP хоста Redis
REDIS_PORT=6379 # Порт Redis
REDIS_CONNECTION=tcp://10.0.0.13:6379 # Строка подключения, параметр необходим для работы Чатбокса
# REDIS_PASSWORD=password # Пароль от Redis в случае использования парольной аутентификации
# Объектное оранилище #
S3_ENDPOINT=http://s3.company.com # Адрес объектного хранилища
S3_BUCKET=hrbox-bucket # Имя бакета
S3_KEY=accesskey # Ключ доступа
S3_SECRET=secretkey # Секрет ключа доступа
S3_PREFIX= # Префиксная идентификация, зачастую не требуется
S3_REGION=us-east-1 # Регион, для MinIO по умолчанию оставьте us-east-1
S3_VERSION=latest # Версия, зачастую по умолчанию latest
S3_PATH_STYLE=true # В большинстве случаев изменение не требуется (false необходимо при использовании AWS S3)
# Почтовый сервер # Требуется для рассылки приглашений пользователям
SMTP_USERNAME= # Имя пользователя SMTP
SMTP_PASSWORD= # Пароль пользователя SMTP
SMTP_HOST=smtp.yandex.ru # Адрес хоста SMTP для рассылок, для yandex - smtp.yandex.ru
SMTP_PORT=465 # 25, 465 или 687 в зависимости от используемых механизмов защиты. Для Yandex - 465
SMTP_FROM_HOST=hrbox.company # Установите Ваш домен
SMTP_SECURITY_TYPE=ssl # тип защиты (none, ssl, tls), для Yandex - ssl
SMTP_SSL_ALLOW_SELF_SIGNED=true # Разрешить самоподписанные сертификаты (true / false)
SMTP_SSL_VERIFY_PEER=false # Включить проверку пиров (true / false)
SENDER_ENV=PROD
# OAuth. Если не используется - не раскомментируйте строки, чтобы не было пустых значений #
# YANDEX_CLIENT_ID= # ID при использовании Yandex OAuth
# YANDEX_CLIENT_PASSWORD= # Пароль при использовании Yandex OAuth
@@ -0,0 +1,56 @@
networks:
hrbox:
x-common: &common
restart: 'always'
env_file:
- .env
- .env.local
networks:
- hrbox
services:
web:
<<: *common
image: cr.yandex/crphnph9c2s776j32sjd/hrbox:latest
ports:
- '80:80'
worker:
<<: *common
image: cr.yandex/crphnph9c2s776j32sjd/hrbox:latest
command: hrbox-worker
goworker:
<<: *common
image: cr.yandex/crphnph9c2s776j32sjd/hrbox-goworker:latest
ports:
- '8686:8686'
chatbox:
<<: *common
image: cr.yandex/crphnph9c2s776j32sjd/hrbox-chatbox:latest
ports:
- '9797:9797'
geonames:
<<: *common
image: cr.yandex/crphnph9c2s776j32sjd/hrbox-geonames:latest
ports:
- '8181:8181'
file-processor:
<<: *common
image: cr.yandex/crphnph9c2s776j32sjd/hrbox-file-processor:latest
restart: 'always'
depends_on:
- web
kedoca:
<<: *common
image: cr.yandex/crphnph9c2s776j32sjd/hrbox-kedoca:latest
volumes:
- ./dev/ca-cert:/ca-cert
ports:
- '8558:8558'
@@ -0,0 +1,6 @@
### HRBOX ###
HRBOX может быть горизонтально масштабирован на любое число Application Servers, что потребует балансировки roundrobin для запросов на домен. На каждом сервере приложения должен быть свой экземпляр NATS, настроенный по требованиям, указанным в *readme* для NATS.
Для конфигурации используются переменные окружения. Набор неизменяемых переменных представлен в *.env*. Переопределямые под конкретную инсталляцию переменные находятся в *.env.local*.
Укажите в *.env.local* все необходимые параметры в соответствии с данными в файле комментариями.
@@ -0,0 +1,20 @@
volumes:
hrbox-nats-data:
services:
nats:
restart: "on-failure"
image: nats:2.10
command:
- "-js"
- "--server_name=nats1"
- "--cluster_name=nats"
- "--cluster=nats://0.0.0.0:6222"
- "--routes=nats-route://10.0.0.12:6222,nats-route://10.0.0.30:6222"
- "--store_dir=/data"
volumes:
- hrbox-nats-data:/data
ports:
- "4222:4222"
- "8222:8222"
- "6222:6222"
@@ -0,0 +1,10 @@
### NATS JetStream ###
NATS развёртывается на всех Application Server и на Брокере.
- "--server_name=nats1" — имена должны различаться на всех экземплярах кластера NATS;
- "--cluster_name=nats" — должен совпадать на всех экземплярах;
- "--cluster=nats://0.0.0.0:6222" — оставьте в текущем виде;
- "--routes=nats-route://10.0.0.12:6222,nats-route://10.0.0.30:6222" — здесь указываются пути ко всем *остальным* хостам NATS в кластере. Укажите все, кроме текущего.
**Не забудьте указать все адреса кластера NATS в .env.local в директории с манифестом для приложения HRBOX на Application Servers и для HR-Conductor на Брокере.**
NATS_URL=nats://10.0.0.11:4222,nats://10.0.0.12:4222,nats://10.0.0.30:4222
+1
View File
@@ -0,0 +1 @@
NATS_URL=nats://10.0.0.11:4222,nats://10.0.0.12:4222,nats://10.0.0.30:4222
@@ -0,0 +1,21 @@
networks:
hrboxonprem:
x-common: &common
restart: "on-failure"
env_file:
- .env
networks:
- hrboxonprem
logging:
options:
max-size: "10m"
max-file: "3"
services:
conductor:
<<: *common
image: cr.yandex/crphnph9c2s776j32sjd/hrbox-conductor:latest
volumes:
- /var/spool/cron/crontabs
- /etc/conductor
@@ -0,0 +1,2 @@
### HR-Conductor ###
Conductor используется в для управления cron задачами. Разворачивается в единственном экземпляре и требует единственную переменную окружения — *NATS_URL*, идентичную той, что используется в HRBOX Application.
@@ -0,0 +1,11 @@
services:
dragonfly:
image: 'docker.dragonflydb.io/dragonflydb/dragonfly'
ulimits:
memlock: -1
ports:
- "6379:6379"
volumes:
- dragonflydata:/data
volumes:
dragonflydata:
@@ -0,0 +1,9 @@
### Dragonfly ###
Dragonfly - полностью совместимая с Redis РБД, и используется для хранения кэша и сессий пользователя.
! Данный сервис не обрабатывает персональные и иные чувствительные данные, и в стандартном развёртывании не использует парольную аутентификацию. При необходимости по требованиям безопасности реализации парольной аутентификации:
(*может значительно повлиять на производительность!*)
- Убедитесь, что HRBOX WebSocket использует версию 2.3 или новее;
- Измените команду запуска Redis/Dragonfly таким образом, чтобы сервис запускался с парольной защитой;
- Добавьте "REDIS_PASSWORD=пароль" во все *.env.local* приложений.
@@ -0,0 +1,20 @@
volumes:
hrbox-nats-data:
services:
nats:
restart: "on-failure"
image: nats:2.10
command:
- "-js"
- "--server_name=nats3"
- "--cluster_name=nats"
- "--cluster=nats://0.0.0.0:6222"
- "--routes=nats-route://10.0.0.11:6222,nats-route://10.0.0.12:6222"
- "--store_dir=/data"
volumes:
- hrbox-nats-data:/data
ports:
- "4222:4222"
- "8222:8222"
- "6222:6222"
+10
View File
@@ -0,0 +1,10 @@
### NATS JetStream ###
NATS развёртывается на всех Application Server и на Брокере.
- "--server_name=nats3" — имена должны различаться на всех экземплярах кластера NATS;
- "--cluster_name=nats" — должен совпадать на всех экземплярах;
- "--cluster=nats://0.0.0.0:6222" — оставьте в текущем виде;
- "--routes=nats-route://10.0.0.11:6222,nats-route://10.0.0.12:6222" — здесь указываются пути ко всем *остальным* хостам NATS в кластере. Укажите все, кроме текущего.
**Не забудьте указать все адреса кластера NATS в .env.local в директории с манифестом для приложения HRBOX на Application Servers и для HR-Conductor на Брокере.**
NATS_URL=nats://10.0.0.11:4222,nats://10.0.0.12:4222,nats://10.0.0.30:4222