Серверное Приложение YouGile выполняет функции, которые необходимы для использования в компании системы управления проектами YouGile. Для полного развёртывания YouGile на своём сервере, необходимо самостоятельно настроить следущее:
Эти пункты настраиваются по-разному, в зависимости от стека технологий и внутренних политик компании. Ниже в документе приводятся примеры наиболее частых вариантов настройки.
Внутри рабочей директории приложения yougile находятся:
Необходима машина с 64-битной операционной системой Windows или Linux. На сайте https://dist.yougile.com предложены сборки для наиболее распространённых версий linux и windows. В случае необходимости, отправив запрос в поддержку (support@yougile.com), можно получить сборку для более старых версий.
Минимальные требования по оперативной памяти: 500Мб плюс ещё по 500Мб на каждые 100 пользователей. То есть, например, если пользователей 500, то получается 500 + 500 * 5 = 3Гб оперативной памяти.
По процессору и IOPS жёсткого диска узкого места не возникает вплоть до 1000 пользователей.
Необходимое свободное место на диске зависит от того, какие файлы и как часто будут загружаться пользователями в системе. Для начала работы стоит выделить свободного места из расчёта 1Гб на каждые 10 пользователей, с возможностью дальнейшего увеличения этого лимита.
USERS | 1,000 | 1,500 | 2,000 |
---|---|---|---|
RAM | 16 GB | Minimum 16 GB Reccomend 32 GB |
32 GB |
STORAGE | Minimum 512MB Recommend 1TB |
1TB | |
IOPS | Нет высоких требований по iops, подойдёт HDD SATA в raid1 | ||
CPU | Желательно современный процессор с характеристиками тех.процесса минимум 14Нм Например, Intel® Xeon® Processor E 3-1270 v5 |
||
CPU CORES | 16 | 24 | 32 |
NETWORK | 100Mbit |
Необходимо скачать дистрибутив с сайта https://dist.yougile.com Для скачивания последней версии используйте следующие ссылки:
Распакуйте архив в удобное место на сервере — YouGile обращается в файловой системе только к содержимому этой директории.
Чтобы проверить работу приложения, запустите файл server (server.exe для Win) и зайдите в браузере по адресу http://localhost:8001 внутри машины (либо http://<ip машины>:8001 на компьютере из локальной сети).
YouGile можно запустить, выполнив из рабочей директории yougile
файл server
например, если yougile
был установлен в /opt
:
cd /opt/yougile
./server # запуск
^C # остановка
Но для нормальной работы рекомендуется настроить сервис.
Для этого создайте файл yougile.service
со следующим содержимым:
[Unit]
Description=YouGile
[Service]
WorkingDirectory=/opt/yougile
ExecStart=/opt/yougile/server
[Install]
WantedBy=multi-user.target
(в примере yougile установлен в /opt
, замените на своё местоположение).
Скопируйте этот файл в директорию /etc/systemd/system/
, затем выполните
systemctl daemon-reload
systemctl enable yougile.service
systemctl start yougile.service
После этого можно запускать yougile командой service yougile start
и останавливать service yougile stop
. Просматривать вывод yougile можно
при помощи стандартного инструмента journalctl
.
Запустить сервер YouGile можно, нажав на файл server.exe. Но при таком способе
запуска, Windows иногда замораживает выполнение приложения. Поэтому
предпочтительнее запускать приложение через cmd
. Откройте терминал Windows
cmd
, перейдите в директорию yougile
и выполните server.exe
. Наиболее
удобный способ запуска и остановки YouGile — создание сервиса.
Для настройки сервиса необходимо сделать следующее:
<service>
<id>yougile</id>
<name>YouGile</name>
<description>YouGile App</description>
<executable>%BASE%\server.exe</executable>
</service>
cd path-to-your-directory
yougile.exe install
Теперь YouGile будет запускаться автоматически при запуске сервера.
Для коробочной версии предоставляется бесплатный 7-дневный период тестирования.
Если у серверного приложения YouGile есть доступ в интернет, то при запуске
YouGile можно в интерфейсе нажать на кнопку, которая установит Демо-лицензию
YouGile, которая будет активна 7 дней. Также, демо-лицензию можно получить по
запросу в поддержку, для этого необходимо прислать файл machine.key
(он
появляется после первого запуска).
Лицензия хранится в файле license.key
и привязана к параметрам машины
(модель процессора, кол-во ядер, к-во памяти и т.д.). Если вы приобрели лицензию
и необходимо изменить параметры виртуальной машины, на которой работает YouGile
(или перенести YouGile на другой сервер), то лицензию тоже надо перегенерировать.
Это можно сделать, обратившись в поддержку и предоставив новый файл machine.key
Для организации отказоустойчивости или для создания архивной копии YouGile может потребоваться установить одну и ту же базу данных YouGile на несколько машин. Если у вас есть приобретённая лицензия YouGile, вы можете связаться с вашим персональным менеджером (или службой поддержки) по вопросу предоставления лицензии с поддержкой нескольких машин. Такая лицензия предоставляется бесплатно для команд с большим количеством сотрудников.
В директории yougile
находится файл conf.json
— в нём находятся все настройки
серверного приложения в формате JSON.
Для правильной работы системы необходимо указать значение
параметра mainPageUrl
. mainPageUrl
— это адрес, по которому YouGile
будет доступен для пользователей, например "https://yougile.example.com"
После редактирования conf.json
, чтобы изменения применились, необходимо
перезапустить сервис YouGile.
При редактировании файла conf.json
, важно не нарушить формат
JSON, иначе, приложение YouGile
выдаст ошибку при запуске и не запустится. Редактируйте поля
по аналогии с тем, что уже есть в файле и обращайте внимание
на запятые и кавычки (можно где-то забыть поставить или, наоборот,
поставить лишнюю).
Весь список настроек, доступных в conf.json
, большинство из них необязательны:
Имя | Пример значения | Описание |
---|---|---|
mainPageUrl |
"https://yougile.my.com" |
Обязательный параметр. Адрес, по которому YouGile доступен для пользователей. Используется для формирования ссылок на страницы системы, например, ссылка на регистрацию, которая отправляется на почту пользователя при его приглашении, или ссылка для восстановления пароля. |
port |
8001 |
Порт, по которому YouGile принимает запросы HTTP (некоторые значения портов могут требовать определённых прав при запуске YouGile в некоторых ОС) |
smtp |
(см. ниже) | Настройка подключения к почтовому серверу, см. ниже |
emailFrom |
"\"Yougile\" <info@my.com>" |
Почтовый адрес, от лица которого будут приходить письма пользователей. Если адрес не соответствует аккаунту в настройках поля smtp , то многие почтовые серверы могут запретить отправку письма |
dataUrl |
"https://yougile-data.my.com" |
Адрес, с которого нужно загружать файлы пользователей (которые хранятся в директории user-data/ ), если он совпадает с mainPageUrl , то его не нужно указывать |
uploadFileLimit |
50 | Максимальный размер загружаемого пользователем файла в мегабайтах (по умолчанию 50 ) |
disableInviteUsers |
true |
Если указано значение true , то пользователи не смогут приглашать новых пользователей в систему (нужно, например, при интеграции с ActiveDirectory) |
disableEmailRecovery |
true |
Если true , то пользователи не смогут восстанавливать пароли |
lang |
"ru" |
Язык системы по умолчанию. Если не указан, то язык определяется для каждого пользователя автоматически |
multiCompany |
false |
Разрешает работу системы в режиме поддержки нескольких компаний (если false , то доступна только 1 основная компания) |
allowAddCompanies |
true |
По умолчанию, все пользователи могут создавать новые компании. Если указано false , то пользователи не смогут создавать новые компании. Можно также вместо true или false , указать массив email-ов пользователей, которые смогут создавать компании, пример: ["user1@my.com", "user2@my.com"] |
allowEnterWithoutCompany |
false |
Если пользователь удалён из всех компаний, то если этот параметр false , то пользователь не может войти в систему, если true , то пользователь может войти и при этом создаётся новая пустая компания для этого пользователя. |
allowExtensions |
true |
Разрешить системе подключаться к серверу расширений YouGile. Для работы расширений необходимо, чтобы этот параметр был true , чтобы на сервере был доступ по https к адресу plugin.yougile.com и чтобы коробочная версия была доступна по определённому адресу из интернета. При этом будет возможна передача данных между коробочной версией и YouGile |
allowMobileClients |
true |
Разрешить вход в систему с мобильного приложения. Можно указать true , false или массив email-ов пользователей, которым можно заходить через мобильное приложение. |
rateLimiterOptions |
{ "enabled": true, "countMultiplier": 1, "timeMultiplier": 1, "restApiCount": 30, "restApiInterval": 60000} | Настройка ограничения количества запросов. Критичные http эндпоинты имеют ограничение на количество запросов к ним (например, вход в систему, регистрация и т.д.), базовое ограничение по запросам для одного ip – это 5 запросов в минуту, с помощью этой настройки можно изменить или отключить это поведение. Ограничения запросов к REST API настраиваются отдельно, параметрами restApiCount (количество разрешённых запросов) и restApiInterval – интервал времени в миллисекундах |
init |
(см. ниже) | Настройка запуска серверных скриптов для интеграции (например, для ActiveDirectory). Примеры см. ниже |
logStreams |
[{"level": "info", "stream": "stdout"}] |
Настройка вывода логов сервера. Пример: [{"level": "info", "stream": "stdout"}, {"level": "error", "path": "/var/tmp/yougile-error.log"}] . Подробнее см. настройки bunyan |
keyExpirationTimeout |
259200000 | Время в миллисекундах в течение которого действует ключ сессии пользователя |
keyExpireOnLogout |
false |
Если это значение установлено в true , то при выходе из аккаунта пользователя, ключ сессии инвалидируется |
eventLogPath |
"./event.log" | Путь к файлу, в который пишется лог событий безопасности. Если параметр не указан, то лог не пишется |
eventLogDailyRotationLimit |
30 | Если этот параметр указан, то лог событий безопасности ротируется раз в день и число в этом параметре определяет количество файлов дней лога, которые хранятся |
restrictUserDataAccess |
false |
Если указано значение true , то неавторизованный пользователь не сможет получить файл по ссылке. При значении false (значение по умолчанию) любой пользователь может получить файл имея ссылку на него |
Настройки сервера хранятся в файле conf.json. Все настройки по умолчанию уже
прописаны в этом файле после установки, чтобы поменять настройки –
отредактируйте этот файл и перезапустите сервер.
Для того, чтобы сервер мог посылать email-ы
(например, при добавлении новых пользователей) необходимо прописать smtp
настройки в файле conf.json
.
Пример настройки:
"smtp": {
"host": "smtp.example.com",
"secure": true,
"port": 465,
"auth": {
"user": "me@some.com",
"pass": "******"
}
Следует обратить внимание на то, чтобы в поле mainPageUrl
был корректно указан
адрес сервера и в поле emailFrom
был правильный адрес отправителя.
Пример настройки почты для Exchange
:
{
"host": "exchange.mycompany.com",
"secureConnection": false,
"port": 587,
"tls": {
"cipher": "SSLv3",
"rejectUnauthorized": false
},
"auth": {
"user": "ourdomain\\someuser",
"pass": "******"
}
}
Двухфакторная аутентификация (2FA) добавляет дополнительный уровень безопасности в процессе входа пользователей в систему. В коробочной версии YouGile 2FA активируется и настраивается через конфигурационные файлы. Следуйте этой инструкции для настройки и управления двухфакторной аутентификацией в вашей компании. Включение двухфакторной аутентификации не приведет к автоматическому разлогированию пользователей. При использовании встроенного SMS-сервиса YouGile для прохождения авторизации пользователи смогут вводить только российские и белорусские номера телефонов. Для отправки сообщений на номера других стран необходимо самостоятельно настроить связь с оператором, который подходит вам лучше всего.
Для включения двухфакторной аутентификации администратор должен настроить соответствующие параметры в conf.json
.
В конфигурационном файле необходимо указать:
twoFactorAuth
twoFactorCodeSendCommand
, ниже представлено подробное описание того, как именно это можно сделать.twoFactorCodeLifetime
(по умолчанию - 5 минут), указывается в mls.keyExpirationTimeout
и составляет 300 дней.Пример конфигурации:
{
"twoFactorAuth": true
}
При включенной двухфакторной аутентификации система будет автоматически запрашивать у пользователей номер телефона (если он не указан) и отправлять им код доступа по SMS при входе. Код будет действителен в течение времени, указанного в конфигурации (twoFactorCodeLifetime).
В мобильном приложении YouGile подключение второго фактора невозможно. После включения двухфакторной аутентификации пользователям будет необходимо зайти в веб-версию и указать номер телефона при входе. При наличии указанного номера телефона в мобильной версии появится механика указания кода, отправленного по SMS.
Вы можете управлять номерами телефонов пользователей.
Для добавления номера телефона пользователю используйте команду:
/.server task change-user-auth-phone 'dev@YouGile.com' '+71111111111'
для Windows:
server.exe task change-user-auth-phone 'dev@YouGile.com' '+71111111111'
Для изменения номера телефона пользователя используйте команду:
/.server task change-user-auth-phone 'dev@YouGile.com' '+72222222222'
для Windows:
server.exe task change-user-auth-phone 'dev@YouGile.com' '+72222222222'
Удалить номер телефона можно использовав эту же команду, передав пустым второй параметр. В случае отсутствия номера телефона, пользователю необходимо будет самостоятельно указать его при входе в веб-версию.
Система учитывает лимиты отправки SMS в зависимости от количества пользователей в лицензии:
Помимо непосредственной пользы от HTTPS, есть ещё ряд ограничений, с которыми можно столкнуться если не настроить HTTPS и предлагать пользователям подключаться через HTTP без шифрования:
Чтобы включить https, необходимо поставить между YouGile и клиентами промежуточный http-сервер (nginx, IIS, Apache, …) и настроить в нём подключение через https.
nginx
(nginx.conf):http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 120;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
gzip on;
server {
listen 80;
server_name <YOUR_SERVER_NAME>;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
http2 on;
server_name <YOUR_SERVER_NAME>;
ssl_protocols TLSv1.2;
ssl_certificate <PATH_TO_CERT>;
ssl_certificate_key <PATH_TO_KEY>;
ssl_dhparam <PATH_TO_DHPARAM>;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
client_max_body_size 50M;
client_body_buffer_size 50M;
gzip on;
gzip_http_version 1.1;
gzip_comp_level 5;
gzip_min_length 4096;
gzip_proxied any;
gzip_types text/plain text/xml text/css application/x-javascript application/javascript application/json application/x-font-ttf;
gzip_vary on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options nosniff;
location /user-data/ {
add_header X-YouGile-Served data;
add_header 'Content-Disposition' 'attachment';
location ~* \.(jpe?g|png|pdf|gif|mp4|m4p|mp3|avi|wmv)$ {
add_header 'Content-Disposition' '';
root /opt/yougile;
try_files $uri @local-data;
}
root /opt/yougile;
try_files $uri @local-data;
}
location ~ /\. {
deny all;
}
location / {
proxy_pass http://localhost:8001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_read_timeout 1h;
proxy_connect_timeout 1h;
proxy_send_timeout 1h;
proxy_pass_header Server;
proxy_max_temp_file_size 0;
}
}
}
Чтобы импортировать ваш SSL-сертификат в IIS на Windows Server, выполните следующие шаги:
openssl pkcs12 -export -out your-cert.pfx -inkey your-cert.key -in your-cert.crt
Вам нужно будет задать пароль для файла PFX, который потребуется при импорте в IIS.
Включение параметра "Проксирование запросов":
Настройка правил для проксирования:
Дополнительная настройка (если требуется):
Иногда бывает так, что сертификат для HTTPS настроен неправильно, из-за чего некоторые пользователи не могут войти в мобильное приложение YouGile. При этом, в браузере HTTPS работает нормально. Это происходит из-за того, что сервер присылает неполный сертификат. Проверить это можно, выполнив в командной строке:
openssl s_client -connect <домен>:<порт>
здесь домен — это домен, с которого доступен YouGile
(напр. yougile.mycompany.com
), порт, как правило, это 443
.
Если есть какие-то ошибки с сертификатом, то они будут написаны в выводе этой команды, например, может присутствовать такая строка:
Verify return code: 21 (unable to verify the first certificate)
Если коробка YouGile доступна в интернете, то можно также воспользоваться сервисами по проверке правильности настройки https, вот пример таких сервисов:
Обычно, при покупке сертификата, вы получаете несколько файлов: сертификат для вашего домена и один или несколько промежуточных сертификатов вплоть до корневого. Их необходимо объединить в один файл и поставить его в качестве сертификата на ваш сервер. Если вы поставите только сертификат для вашего домена, некоторые клиенты не смогут проверить его подлинность, нужно именно объединить эти сертификаты. Чтобы объединить сертификаты, достаточно скопировать текст, который в них содержится в один файл. Посмотрите на сайте издателя вашего сертификата, скорее всего, там есть подробные инструкции.
Обновления выходят приблизительно раз в месяц. Чтобы проверить наличие обновлений, выполните в директории yougile:
./server task show-updates
Для windows:
server.exe task show-updates
Чтобы установить обновление необходимо сделать следующее:
./server task update latest
(на Windows: server.exe task update latest
)Эту процедуру можно выполнять автоматически раз в некоторое время.
Проверить наличие обновлений можно на сайте https://dist.yougile.com.
Чтобы установить обновление, скачайте архив для нужной
операционной системы, затем внутри директории yougile
создайте директорию tmp
(если она уже есть, то очистите её содержимое). Распакуйте архив в директорию tmp
,
у вас должно получиться, что в директории yougile
содержится директория tmp
, в которой
содержится директория yougile
(из архива) и в ней уже разные файлы. Скорируйте
файл tmp/yougile/tasks/lib/install.js
в директорию tasks/
внутри основной
директории yougile
(не той, что из архива, а той, где установлена система).
И затем, внутри директории, где установлена система выполните команду:
./server task install
для Windows:
server.exe task install
Вот полный пример действий по обновлению для Linux:
cd /opt/yougile
rm -r tmp
mkdir tmp
cd tmp/
# скачать нужный файл yougile.tar.gz из dist.yougile.com и поместить в tmp/
# поскольку нет доступа в интернет, это делается вручную
tar -xf yougile.tar.gz
rm yougile.tar.gz
cd ..
cp tmp/yougile/tasks/lib/install.js tasks/
./server task install
здесь предполагается, что YouGile установлен в /opt/yougile
.
Резервное копирование (бэкап) в коробочной версии осуществляется методами,
принятыми в компании (например, с помощью инструментов rsync
, bacula
и т.д.).
Необходимо копировать директорию с приложением yougile (ту директорию, которая
разархивировывается при установке коробки).
В директории yougile
ценными являются:
database
– там хранится база системыuser-data
– хранятся загруженные файлы пользователейlicense.key
– файл лицензииconf.json
– настройкиМожно бэкапить отдельно эти файлы и директории, либо всю директорию yougile целиком.
Как часто создавать резервную копию и сколько хранить по времени — вы сами решаете для себя. Резервная копия даёт возможность в случае необходимости откатиться назад на состояние, где всё было нормально, и в этом случае вы потеряете только ту часть работы, которая была произведена после создания резервной копии.
Мы рекомендуем делать бэкап несколько раз в течение рабочего дня, например, в 8, 10, 12, 14, 16, 18, 21 часы. Это гарантирует, что вы не потеряете более 2 часов работы в случае экстренной ситуации.
Можно организовать высокий уровень отказоустойчивости коробочной версии YouGile. Для этого необходимо выполнить следующий набор рекомендаций.
По умолчанию сервис YouGile использует только ограниченных объём доступной памяти на машине
(приблизительно 1Гб). Чтобы YouGile использовал бОльшее количество памяти, доступное
на машине, необходимо запускать приложение с переменной окружения NODE_OPTIONS=--max-old-space-size=<память в Мб>
(при использовании systemd, поменять поле Environment в файл сервиса systemd),
либо задать эту переменную в переменных окружения пользователя,
под которым запускается YouGile.
Количество памяти должно вычисляться из расчёта: вся память доступная на машине минус 300Мб.
Пример файла yougile.service
для systemd
:
[Unit]
Description=yougile
[Service]
WorkingDirectory=/opt/yougile
ExecStart=/opt/yougile/server
Environment="NODE_OPTIONS=--max-old-space-size=5000"
LimitNOFILE=500000
LimitNPROC=500000
[Install]
WantedBy=multi-user.target
Необходимо убедиться, что резервное копирование удовлетворяет требованиям по отказоустойчивости:
user-data/
и database/
с регулярностью 10 мин (или лучше 5 мин если время инкрементального копирования меньше 1 минуты)Для возможности быстрого восстановления работы YouGile при сбое, необходимо настроить резервную машину с YouGile:
При переключении в аварийный режим (если основная машина с YouGile доступна, необходимо остановить сервис, после этого выполнить обновление бэкапа). Последний бэкап развернуть на резервной машине и запустить сервис. Публичный ip основной машины должен быть передан резервной машине (использовать DNS для переключения нельзя).
Для переключения в аварийный режим можно настроить автоматику, но переключать обратно в штатный режим нужно только вручную (решение о переключении обратно в штатный режим может принять ответственный сотрудник после анализа ситуации и проверки работоспособности основной машины).
Чтобы можно было следить за доступностью YouGile для пользователей и реагировать
на сбои (переключать на резервную машину), необходимо реализовать событийный мониторинг по доступности YouGile — http запрос к адресу /data/check
должен выдавать status 200. По этому алерту можно судить о доступности системы. Нужно сделать, чтобы по срабатыванию этого алерта происходило аварийное реагирование (ответственные сотрудники должны получать уведомление, например sms, звонок или сообщение в telegram).
Необходимо также сделать событийное алертирование по использованию памяти – оно должно срабатывать, если на машине осталось менее 1 Гб памяти. Это событие указывает на необходимость увеличения количества памяти на машине, даже если затем ситуация исправляется и потребление памяти приходит в норму. Для увеличения памяти создаётся новая машина, для которой отдельно запрашивается лицензионный ключ в поддержке (или используется специальный ключ с поддержкой нескольких машин) и после проверки работоспособности машины, производится переключение и удаление старой машины.
Настроить систему логирования для исследования возможных проблем. Необходимо убедиться, что системные логи и логи YouGile сохраняются после перезагрузки машины. Настроить политику ротации этих логов (например, оставлять логи только за последние 30 дней – в зависимости от количества доступного места на диске).
Убедиться, что есть количественный мониторинг на основной и резервной машине YouGile и на соответствующих хост-машинах. Раз в неделю необходимо проверять потребление ресурсов системой (процессор, память, диск, сеть) и, при необходимости, планировать увеличение ресурсов, либо обращаться за консультацией в поддержку YouGile.
/etc/fstab
( /opt/yougile/user-data
при необходимости изменить на свой путь)# /etc/fstab
<имя_бакета> /opt/yougile/user-data fuse.geesefs _netdev,allow_other,--file-mode=0666,--dir-mode=0777 0 0
[default]
aws_access_key_id=<идентификатор_ключа>
aws_secret_access_key=<секретный_ключ>
geesefs \
--shared-config <путь_к_файлу_с_ключом> \
<имя_бакета> <точка_монтирования>
export AWS_ACCESS_KEY_ID=<идентификатор_ключа>
export AWS_SECRET_ACCESS_KEY=<секретный_ключ>
Скорость работы YouGile сильнее всего зависит от количества задач и объёма данных
в текущей открытой компании. Эту информацию по компаниям можно посмотреть с помощью
команды db-stats
(см. раздел Специальные команды YouGile).
YouGile работает быстро, если в каждой из компаний количество задач не превышает 30 тыс. и объём данных не превышает 80Мб (в объём данных не входят заугружаемые файлы, только сами данные задач). В промежутке от 30 тыс. до 50 тыс. задач (и от 80Мб до 120Мб данных) система может начать работать медленнее, а при бОльшем к-ве данных скорость работы может уже быть недопустимой для работы пользователей в системе.
Есть 2 способа контроля производительности в больших командах:
В коробочной версии YouGile можно создавать неограниченное количество “компаний”. Каждый пользователь может быть добавлен в несколько компаний одновременно. Если в команде пользуются YouGile более 1000 человек, разбиение на “компании” обязательно для обеспечения долговременного контроля производительности.
Чтобы можно было создавать новые компании необходимо установить поля multiCompany
и
allowAddCompanies
в файле conf.json
(см. раздел Настройка параметров YouGile, файл conf.json)
Чтобы контролировать количество данных в компании, можно периодически удалять старые данные.
Если удалить задачу в системе через интерфейс, она не будет полностью удалена
(это сделано для возможности восстановления удалённых задач). Удалённая задача
влияет на производительность системы (хотя и меньше), поэтому удалённые задачи
необходимо чистить при помощи команды clean-database
(см. раздел Специальные команды YouGile).
Чтобы массово удалить ненужные задачи, можно воспользоваться функционалом сводок. Для этого
необходимо в интерфейсе системы создать сводку, в которой будут по критериям выфильтрованы
те задачи, которые необходимо удалить. Затем в окне настройки сводки нужно зажать клавиши
Alt
и Shift
на клавиатуре и, не отпуская этих клавиш, кликнуть на Удалить сводку
–
появится предупреждение об удалении всех задач в сводке и можно будет согласиться и массово удалить
все ненужные задачи. Эта функция доступна, начиная с версии коробки 1.56
.
Если хочется иметь доступ к старым задачам, можно организовать архивную инсталляцию YouGile, где по отдельному адресу будет доступна система со старой версией данных. Для организации такого архива, можно бесплатно получить ключ лицензии в поддержке YouGile (или лицензию с поддержкой нескольких машин).
Таким образом, регулярная процедура очистки старых данных может выглядеть так:
db-stats
clean-database
В некоторых случаях техподдержка YouGile может запросить профиль нагрузки процессора. Это помогает найти причину проблем с производительностью в конкретном случае и предложить решение проблемы. Для того, чтобы собрать профиль нагрузки (cpuprofile), необходимо:
conf.json
добавить поле manageKey и поместить туда секретный пароль, который будет использоваться для запроса на сбор профайла, пример:...
"manageKey": "some password",
...
После этого нужно перезапустить сервер, чтобы настройка применилась.
Собирать профайл нужно в момент, когда наблюдаются проблемы с работой системы. Нужно дождаться, когда проблема начнёт проявляться
После этого необходимо выполнить curl запрос на машине, где работает yougile:
manageKey="some password"
curl -X POST http://localhost:8001/data/profiler/run -H "Content-Type: application/json" -d "{\"key\": \"$manageKey\", \"seconds\": 100}"
profiler-...cpuprofile
В некоторых случаях может потребоваться запустить сервис YouGile в режиме кластера из нескольких процессов на одной машине. Поддержка YouGile может рекомендовать этот вариант если нагрузка на сервис потребует распределения по ядрам. В обычном режиме YouGile использует только одно ядро процессора. Здесь далее будет разобрана настройка варианта разделения на 3 процесса на одной машине. Также возможно разделение на несколько машин и на большее количество процессов, эти варианты может предложить поддержка YouGile при необходимости.
В файл conf.json
необходимо добавить следующий блок:
"cluster": {
"bootstrapUrl": "http://localhost:8001",
"cookie": "<secret cookie>",
"nodes": {
"http://localhost:8001": "account-main",
"http://localhost:8002": "company-1/1",
"http://localhost:8003": "user-events"
}
}
Затем добавить в директорию yougile/
дополнительные конфигурационные файлы:
conf-account.json
:
{
"include": "./conf.json",
"clusterNodeUrl": "http://localhost:8001",
"port": 8001
}
conf-company.json
:
{
"include": "./conf.json",
"clusterNodeUrl": "http://localhost:8002",
"port": 8002
}
conf-user-events.json
:
{
"include": "./conf.json",
"clusterNodeUrl": "http://localhost:8003",
"port": 8003
}
Здесь <secret cookie>
– это сгенерированная случайная строка,
которая работает как пароль для опознавания нод кластера друг другом.
Эта строка должна быть одна и та же во всех конфигурационных файлах.
Далее необходимо создать 3 процесса: yougile-account
, yougile-company
и yougile-user-events
, каждый из которых запускает сервис с соответствующим
конфигурационным файлом. Пример для systemd
:
yougile-account.service
[Unit]
Description=yougile-account
[Service]
WorkingDirectory=/opt/yougile
ExecStart=/opt/yougile/server --conf conf-account.json
Environment="NODE_ENV=production"
Environment="NODE_OPTIONS=--max-old-space-size=10000"
Environment="HOME=/root"
LimitNOFILE=500000
LimitNPROC=500000
[Install]
WantedBy=multi-user.target
yougile-company.service
[Unit]
Description=yougile-company
[Service]
WorkingDirectory=/opt/yougile
ExecStart=/opt/yougile/server --conf conf-company.json
Environment="NODE_ENV=production"
Environment="NODE_OPTIONS=--max-old-space-size=10000"
Environment="HOME=/root"
LimitNOFILE=500000
LimitNPROC=500000
[Install]
WantedBy=multi-user.target
yougile-user-events.service
[Unit]
Description=yougile-user-events
[Service]
WorkingDirectory=/opt/yougile
ExecStart=/opt/yougile/server --conf conf-user-events.json
Environment="NODE_ENV=production"
Environment="NODE_OPTIONS=--max-old-space-size=10000"
Environment="HOME=/root"
LimitNOFILE=500000
LimitNPROC=500000
[Install]
WantedBy=multi-user.target
В этом примере каждому процессу выделяется по 10Гб оперативной
памяти (max-old-space-size
) и указывается домашняя директория /root
.
Замените эти параметры, при необходимости. См. также Запуск, остановка. Настройка сервиса
Необходимо убедиться, что обычный процесс YouGile, который не был настроен на кластеризацию, остановлен. После этого запустить эти 3 процесса и проверить, что система работает в браузере или в десктоп-приложении.
В YouGile можно управлять доступом пользователей в систему через ActiveDirectory.
В AD нужно создать группу, которая будет отвечать за наличие доступа пользователя в YouGile. Все пользователи, которые будут добавлены в эту группу, должны иметь уникальное поле mail в AD — это поле будет служить логином в YouGile, а пароль в AD будет служить паролем в Yougile.
В файл conf.json необходимо добавить настройки по следующему примеру:
...
"init": {
"scripts": ["auth/auth-sync-ldap.js", "auth/check-sync.js"],
"auth": "auth/auth-ldap.js"
},
"activeDirectory": {
"url": "ldaps://mycompany.com",
"baseDN": "dc=mycompany,dc=com",
"username": "yougile_ad",
"password": "***"
},
"activeDirectoryOpts": {
"includeDeleted": false,
"filter": "&(objectClass=user)(mail=*)(memberOf=CN=yougile_user,OU=app,DC=mycompany,DC=com)"
},
...
После перезапуска сервиса yougile, в систему смогут входить только те
пользователи, которые подходят под условие, указанное в поле filter
(в данном примере это пользователи из группы yougile_user).
Если в ActiveDirectory часть пользователей убрать из группы, которая указана в поле filter
,
то они удалятся из YouGile, но если таких пользователей будет больше 10,
то удаление не произойдёт. Это сделано для защиты от сбоев в работе ActiveDirectory.
Чтобы увеличить это ограничение, можно установить в conf.json
парамерт
activeDirectoryMaxDelete
, пример:
...
"activeDirectoryMaxDelete": 20,
...
Также можно подлключить одновременно несколько серверов ActiveDirectory,
в этом случае, в YouGile будут добавляться все пользователи, которые
есть во всех указанных серверах. Для этого в полях activeDirectory
и
activeDirectoryOpts
необходимо указать массив настроек. Пример:
...
"init": {
"scripts": ["auth/auth-sync-ldap.js", "auth/check-sync.js"],
"auth": "auth/auth-ldap.js"
},
"activeDirectory": [
{
"url": "ldaps://domain1.com",
"baseDN": "dc=domain1,dc=com",
"username": "yougile_ad1",
"password": "***"
},
{
"url": "ldaps://domain2.com",
"baseDN": "dc=domain2,dc=com",
"username": "yougile_ad2",
"password": "***"
}
],
"activeDirectoryOpts": [
{
"includeDeleted": false,
"filter": "&(objectClass=user)(mail=*)(memberOf=CN=yougile_user,OU=app,DC=domain1,DC=com)"
},
{
"includeDeleted": false,
"filter": "&(objectClass=user)(mail=*)(memberOf=CN=yougile,OU=app,DC=domain2,DC=com)"
}
],
...
При этом команда check-ldap
не будет работать, чтобы проверять настройки, нужно оставить в conf.json
только одно подключение к ActiveDirectory (без массива) и его проверять через check-ldap
.
provider
tokenUrl
и userInfoUrl
вы можете найти в документации вашего SSO провайдера "init": {
"scripts": [
"auth/auth-sync-oidc.js",
"auth/check-sync-oidc.js"
],
"auth": "auth/auth-oidc.js"
},
"provider": "sso-provider-name",
"sso-provider-name": {
"serverUrl": "sso-server-url",
"realm": "your-realm",
"clientId": "your-client-id",
"credentials": {
"secret": "your-secret"
,
"tokenUrl": "sso-server-get-token-url",
"userInfoUrl": "sso-server-get-user-info-url",
"publicKey": "your-public-key"
},
Client authentication
и Service accounts roles
publicKey
можно найти в разделе "Realm settings" => "Keys". Необходимо взять ключ, имеющий тип RS256secret
можно найти в настройках клиента в разделе "Clients" => "Client_name" => "Credentials" => поле "Client Secret"По умолчанию, добавление пользователей происходит через интерфейс (приглашение пользователя по почте). Но можно настроить, чтобы можно было управлять списком пользователей через файл.
Для этого добавьте в файл conf.json
следующее:
"init": {
"scripts": ["auth/auth-sync.js", "auth/check-sync.js"],
"auth": "auth/auth.js"
}
Создайте в директории database
файл users.csv
, где каждая строка – это email,
имя и пароль пользователя через запятую. Пример содержимого users.csv:
admin@mycompany.com,Admin,pass1
some-user@mycompany.com,Some user,pass2
Перезапустите YouGile, после этого вы можете редактировать файл users.csv
и изменения будут автоматически применяться без необходимости перезапуска
YouGile.
В YouGile есть набор команд, которые помогают выполнять часто встречающиеся
задачи администрирования. Чтобы посмотреть список команд, в терминале, в
директории yougile
наберите:
./server task
для Windows:
server.exe task
Чтобы выполнить команду, необходимо в терминале перейти в директорию
yougile
и выполнить:
./server task <название команды> [параметры]
для Windows:
server.exe task <название команды> [параметры]
Доступные команды:
show-updates
— показывает список доступных обновлений (если есть доступ в интернет — обращается к dist.yougile.com)update
— обновляет YouGile (если есть доступ к dist.yougile.com)list-companies
— показывает список всех компанийlist-users
— показывает список пользователей YouGileset-password
— позволяет установить пароль для пользователя (если нет интеграции с AD или управления через файл)remove-user
— удаляет пользователя (если нет интеграции с AD или управления через файл)change-user
— позволяет сделать пользователя админом или наоборот, убрать из админовcheck-ldap
— проверяет настройки интеграции с ActiveDirectory, т.е. по полям activeDirectory
и activeDirectory
в файле conf.json
показывает спикок email-ов, которые подходят под критерии по ADadd-admin-to-company
— добавляет пользователя администратором в указанную компаниюchange-email
— изменяет email пользователяset-user-name
– позволяет изменить отображаемое имя пользователяcheck-data
— проверяет корректность файлов данных YouGilecheck-ldap
— позволяет проверить правильность ldap-запроса при интеграции с ActiveDirectorycleanup-database
— чистит базу данных от удалённых задачdb-stats
— показывает информацию по размеру данных компанииshow-license
— показывает информацию о лицензииcheck-json
— проверяет все файлы JSON в текущей директории