Это старая версия документа!
РАСПРЕДЕЛЕННАЯ УСТАНОВКА TERMIDESK
Ссылка на документацию с wiki https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-ustanovka-programmnogo-kompleksa/raspredelennaya-ustanovka-termidesk
vdi-disp1
устанавливаем утилиту lsb_release
которая потребуется при добавлении репозитория
sudo apt install lsb-release -y
подключаем репозиторий, добавляем ключ и обновляем сведения о пакетах если данная операция не была выполнен ранее
echo "" | sudo tee -a /etc/apt/sources.list echo "deb http://10.2.0.11:8080/td/5.1.0.24335/repos/astra $(lsb_release -cs) non-free" | sudo tee -a /etc/apt/sources.list wget -O - http://10.2.0.11:8080/td/5.1.0.24335/repos/astra/GPG-KEY-PUBLIC | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/termidesk.gpg sudo apt update
Установить клиентскую часть postgresql
Необходимо для возможности прохождения теста соединения с БД во время установки
sudo apt install postgresql-client -y
Выполняем установку
Если установка Termidesk версии 5.1 на ОС Astra Linux Special Edition версии 1.7.4 (и выше) завершается ошибкой:
/usr/sbin/apache2: error while loading shared libraries: libastraevents.so.0: cannot open shared object file: No such file or directory
То нужно обновить пакет libastraevents
https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-ustanovka-programmnogo-kompleksa/podgotovka-sredy-funktsionirovaniya-pered-ustanovkoj/podgotovka-os-astra-linux-special-edition
После этого выполнить переустановку Termidesk
sudo apt install termidesk-vdi -y
В диалоговых окнах указываем следующую информацию
Текст лицензионного соглашения - ознакамливаемся с лицензионным соглашением и жмем «Далее»
Согласие с условиями - жмем «Да»
Способ хранения паролей RabbitMQ - Конфигфайл
Защищенное подключение к СУБД - Disable (Открытый, без защиты)
Ввод данных (Адрес СУБД) - vdi-db.td.loc
Ввод данных (Порт СУБД) - 5432
Ввод данных (Имя базы данных) - termidesk
Ввод данных (Имя пользователя) - termidesk
Ввод данных (Пароль) - ksedimret
Защищенное подключение к RabbitMQ - Disable (Открытый, без защиты)
Настройка подключений к RabbitMQ - выбираем 1-й слот «Empty»
Новое подключение (Адрес сервера) - vdi-db.td.loc
Новое подключение (Порт сервера) - 5672
Новое подключение (Виртуальный хост) - termidesk
Новое подключение (Имя пользователя) - termidesk
Новое подключение (Пароль) - ksedimret
Настройка подключений к RabbitMQ - переходим к пункту «Далее» и жмем «Enter»
Роли, выполняемые этим узлом - Портал администратора, Портал пользователя
выставляем параметр AstraMode
в значение off
sudo nano /etc/apache2/apache2.conf
... # Astra security mode # AstraMode off ...
перезагружаем веб-сервер
sudo systemctl restart apache2
убедиться, что локальный пользователь под которым будем входить в интерфейс Termidesk, состоит в группе «astra-admin»
sudo usermod -aG astra-admin astra
копируем конфигурацию на оставшиеся узлы
второй диспетчер
sudo scp -r /etc/opt/termidesk-vdi astra@10.2.0.12:/tmp
шлюзы, если в будущем планируем добавить роли диcпетчер или менеджер
sudo scp -r /etc/opt/termidesk-vdi astra@10.2.0.13:/tmp sudo scp -r /etc/opt/termidesk-vdi astra@10.2.0.14:/tmp
менеджеры ВРМ
sudo scp -r /etc/opt/termidesk-vdi astra@10.2.0.15:/tmp sudo scp -r /etc/opt/termidesk-vdi astra@10.2.0.16:/tmp
vdi-disp2
# устанавливаем утилиту lsb_release # которая потребуется при добавлении репозитория sudo apt install lsb-release -y
# подключаем репозиторий, добавляем ключ и обновляем сведения о пакетах # если данная операция не была выполнен ранее echo «» | sudo tee -a /etc/apt/sources.list echo «deb http://10.2.0.11:8080/td/5.1.0.24335/repos/astra $(lsb_release -cs) non-free» | sudo tee -a /etc/apt/sources.list wget -O - http://10.2.0.11:8080/td/5.1.0.24335/repos/astra/GPG-KEY-PUBLIC | sudo gpg –dearmour -o /etc/apt/trusted.gpg.d/termidesk.gpg sudo apt update
# копируем конфигурацию переданную с первого диспетчера в папку назначения sudo mkdir -p /etc/opt sudo mv /tmp/termidesk-vdi /etc/opt/
# Выполняем установку # В ходе установки никаких диалоговых окон отобразиться не должно, будет использована та конфигурация, которая скопирована с первого диспетчера.
# Если установка Termidesk версии 5.1 на ОС Astra Linux Special Edition версии 1.7.4 (и выше) завершается ошибкой: # … # /usr/sbin/apache2: error while loading shared libraries: libastraevents.so.0: cannot open shared object file: No such file or directory # … # То нужно обновить пакет libastraevents # https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-ustanovka-programmnogo-kompleksa/podgotovka-sredy-funktsionirovaniya-pered-ustanovkoj/podgotovka-os-astra-linux-special-edition # После этого выполнить переустановку Termidesk
sudo apt install termidesk-vdi -y
# выставляем параметр AstraMode в значение off sudo nano /etc/apache2/apache2.conf «comment … # Astra security mode # AstraMode off … comment
# перезагружаем веб-сервер sudo systemctl restart apache2
# убедиться, что локальный пользователь под которым будем входить в интерфейс Termidesk, состоит в группе «astra-admin» sudo usermod -aG astra-admin astra
##############
### vdi-gw1 ### ### vdi-gw2 ###
# устанавливаем утилиту lsb_release # которая потребуется при добавлении репозитория sudo apt install lsb-release -y
# подключаем репозиторий, добавляем ключ и обновляем сведения о пакетах # если данная операция не была выполнен ранее echo «» | sudo tee -a /etc/apt/sources.list echo «deb http://10.2.0.11:8080/td/5.1.0.24335/repos/astra $(lsb_release -cs) non-free» | sudo tee -a /etc/apt/sources.list wget -O - http://10.2.0.11:8080/td/5.1.0.24335/repos/astra/GPG-KEY-PUBLIC | sudo gpg –dearmour -o /etc/apt/trusted.gpg.d/termidesk.gpg sudo apt update
# переносим конфигурацию переданную с первого диспетчера в папку назначения, если ранее её копировали с узла первого диспетчера # sudo mkdir -p /etc/opt # sudo mv /tmp/termidesk-vdi /etc/opt/
# устанавливаем шлюз termidesk-gateway sudo apt install termidesk-gateway -y
## Генерация сертификатов # https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-nastrojka-programmnogo-kompleksa/nastrojki-posle-raspredelennoj-ustanovki-fermy-termidesk/nastrojka-balansirovshchika-dlya-raboty-s-samopodpisannymi-sertifikatami/sozdanie-samopodpisannogo-ssl-sertifikata sudo openssl req -new -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/termidesk/gw.key -out /etc/termidesk/gw.crt
sudo chown termidesk-gateway:termidesk-gateway /etc/termidesk/gw.*
## Настройка шлюза # https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/shlyuz/shlyuz-parametry-konfigurirovaniya
# Делаем бекап конфигурации по-умолчанию sudo cp /etc/termidesk/gateway.yaml /etc/termidesk/gateway.yaml.default
# Смотрим значение параметра HEALTH_CHECK_ACCESS_KEY # Это значение потребуется для настройки параметра mgtserver.token # Если ранее было выполнено копироыание каталога с конфигурацией с первого диспетчера, то команду можно выполнить прямо на текущем узле. # Иначе, команду следует выпонить на первом диспетчере или любом узле на котором есть копия каталога конфигурации с первого диспетчера. # sudo grep HEALTH_CHECK_ACCESS_KEY /etc/opt/termidesk-vdi/termidesk.conf
# Открываем файл настроек шлюза на редактирование # Значение токена должно совпадать со значением параметра HEALTH_CHECK_ACCESS_KEY из файла /etc/opt/termidesk-vdi/termidesk.conf sudo nano /etc/termidesk/gateway.yaml # Приводим файл настроек шлюза к виду «comment # # The default configuration file for Termidesk Gateway, please do not change it. # _val0: &sslprof0 # key: ${sslKey} # cert: ${sslCert}
key: /etc/termidesk/gw.key cert: /etc/termidesk/gw.crt
ca: ${sslCa} passphrase: ${sslPassPhrase} dhparams: ${sslDhParams} ciphers: ${sslCiphers}
gwservers: - listen: ${wsServerIP:0.0.0.0}:${wsServerPort:5099}
websocket: pingtimeout: ${wsIdleTimeout:30} checktoken:
# url: ${urlCheckToken:https://127.0.0.1/api/wsproxy/v1/verify}
url: https://vdi-lb.td.loc/api/wsproxy/v5.1/verify tcp_downstream: reconnect: ${gwTCPReconnect:0}
# wss server - listen: 0.0.0.0:5199
ssl: *sslprof0 websocket: pingtimeout: 30 checktoken: url: https://vdi-lb.td.loc/api/wsproxy/v5.1/verify tcp_downstream: reconnect: 0
mgtserver: # listen: ${mgtServerIP:127.0.0.1}:${mgtServerPort:8102}
listen: ${mgtServerIP:0.0.0.0}:${mgtServerPort:8102} path: ${healthCheckURL:/api/health}
# token: ${healthCheckAccessKey}
token: HEALTH_CHECK_ACCESS_KEY ssl: *sslprof0 metrics: path: ${metricsCheckURL:/api/health/metrics} token: ${metricsAccessKey}
rabbitmq: # url: ${coordinatorUrl} # user: ${coordinatorUser} # pass: ${coordinatorPass}
url: "amqp://vdi-db.td.loc:5672/termidesk" user: termidesk pass: ksedimret timeout: ${coordinatorTimeout} refreshtime: ${coordinatorRefreshTime:60} single: ${coordinatorSingle:true} exchange: ${coordinatorExchange} routingkey: ${coordinatorRoutingKey}
loglevel:
info: ${logInfo:true} debug: ${logDebug:false}
comment
# Выполняем перезапуск сервиса sudo systemctl restart termidesk-gateway
# Проверяем, что при перезагрузке не было ошибок sudo journalctl -u termidesk-gateway -n 100 –no-pager
# Проверяем, что шлюз слушает на всех нужных портах sudo netstat -tupln
##############
### vdi-tsk1 ### ### Способ 1 ###
# устанавливаем утилиту lsb_release # которая потребуется при добавлении репозитория sudo apt install lsb-release -y
# подключаем репозиторий, добавляем ключ и обновляем сведения о пакетах # если данная операция не была выполнен ранее echo «» | sudo tee -a /etc/apt/sources.list echo «deb http://10.2.0.11:8080/td/5.1.0.24335/repos/astra $(lsb_release -cs) non-free» | sudo tee -a /etc/apt/sources.list wget -O - http://10.2.0.11:8080/td/5.1.0.24335/repos/astra/GPG-KEY-PUBLIC | sudo gpg –dearmour -o /etc/apt/trusted.gpg.d/termidesk.gpg sudo apt update
# копируем конфигурацию переданную с первого диспетчера в папку назначения sudo mkdir -p /etc/opt sudo mv /tmp/termidesk-vdi /etc/opt/
# меняем роль узла в файле конфигурации sudo nano /etc/opt/termidesk-vdi/termidesk.conf «comment … NODE_ROLES=«TASKMAN,CELERYMAN» … comment
# Выполняем установку # В ходе установки никаких диалоговых окон отобразиться не должно, будет использована та конфигурация, которая скопирована с первого диспетчера. # Единственное отличие в параметре NODE_ROLES, который мы вручную изменили.
# Если установка Termidesk версии 5.1 на ОС Astra Linux Special Edition версии 1.7.4 (и выше) завершается ошибкой: # … # /usr/sbin/apache2: error while loading shared libraries: libastraevents.so.0: cannot open shared object file: No such file or directory # … # То нужно обновить пакет libastraevents # https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-ustanovka-programmnogo-kompleksa/podgotovka-sredy-funktsionirovaniya-pered-ustanovkoj/podgotovka-os-astra-linux-special-edition # После этого выполнить переустановку Termidesk
sudo apt install termidesk-vdi -y
# После установки нужно остановить и исключить службу termidesk-taskman из автоматического запуска # Исключение службы из автоматического запуска необходимо, поскольку управление ее состоянием производится скриптами режима высокой доступности sudo systemctl disable termidesk-taskman –now
##############
### vdi-tsk2 ### ### Способ 2 ###
# устанавливаем утилиту lsb_release # которая потребуется при добавлении репозитория sudo apt install lsb-release -y
# подключаем репозиторий, добавляем ключ и обновляем сведения о пакетах # если данная операция не была выполнен ранее echo «» | sudo tee -a /etc/apt/sources.list echo «deb http://10.2.0.11:8080/td/5.1.0.24335/repos/astra $(lsb_release -cs) non-free» | sudo tee -a /etc/apt/sources.list wget -O - http://10.2.0.11:8080/td/5.1.0.24335/repos/astra/GPG-KEY-PUBLIC | sudo gpg –dearmour -o /etc/apt/trusted.gpg.d/termidesk.gpg sudo apt update
# копируем конфигурацию переданную с первого диспетчера в папку назначения sudo mkdir -p /etc/opt sudo mv /tmp/termidesk-vdi /etc/opt/
# Выполняем установку # В ходе установки никаких диалоговых окон отобразиться не должно, будет использована та конфигурация, которая скопирована с первого диспетчера.
# Если установка Termidesk версии 5.1 на ОС Astra Linux Special Edition версии 1.7.4 (и выше) завершается ошибкой: # … # /usr/sbin/apache2: error while loading shared libraries: libastraevents.so.0: cannot open shared object file: No such file or directory # … # То нужно обновить пакет libastraevents # https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-ustanovka-programmnogo-kompleksa/podgotovka-sredy-funktsionirovaniya-pered-ustanovkoj/podgotovka-os-astra-linux-special-edition # После этого выполнить переустановку Termidesk
sudo apt install termidesk-vdi -y
# Пользуемся утилитой termidesk-configure # Получаем текущие роли sudo /opt/termidesk/sbin/termidesk-config get NODE_ROLES
# Устанавливаем новые роли sudo /opt/termidesk/sbin/termidesk-config set NODE_ROLES TASKMAN,CELERYMAN
# Применяем новую конфигурацию sudo /opt/termidesk/sbin/termidesk-config setup sudo /opt/termidesk/sbin/termidesk-config daemons_restart
# После установки нужно остановить и исключить службу termidesk-taskman из автоматического запуска # Исключение службы из автоматического запуска необходимо, поскольку управление ее состоянием производится скриптами режима высокой доступности sudo systemctl disable termidesk-taskman –now
###############
### vdi-tsk1 ###
# Ссылка на документацию в wiki # https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-nastrojka-programmnogo-kompleksa/nastrojki-posle-raspredelennoj-ustanovki-fermy-termidesk/nastrojka-menedyoera-rabochego-mesta-v-reyoime-vysokoj-dostupnosti
# Запускаем службу, не добавляя ее в раздел автоматической загрузки # (необязательный шаг) # sudo systemctl start termidesk-taskman
# Устанавливаем пакеты программ для организации высокой доступности sudo apt install keepalived ipset -y
# Создаем файл настроек keepalived.conf sudo nano /etc/keepalived/keepalived.conf «comment global_defs {
router_id taskman script_user root enable_script_security
}
vrrp_script check_httpd {
script "/usr/bin/pgrep apache" interval 1 timeout 3 rise 1 fall 2 init_fail
}
vrrp_instance termidesk-taskman {
notify /etc/keepalived/notify.sh state MASTER interface eth0 virtual_router_id 20 priority 128 preempt_delay 5 advert_int 1
unicast_src_ip 10.2.0.15
authentication { auth_type PASS auth_pass ksedimret }
virtual_ipaddress { 10.2.0.20/24 dev eth0 label eth0:20 }
track_script { check_httpd }
}
comment
# Создаем файл настроек notify.sh sudo nano /etc/keepalived/notify.sh «comment #!/bin/sh -e SELF_BIN=$(realpath ${0}) SELF_DIR=$(dirname ${SELF_BIN}) TYPE=${1} NAME=${2} STATE=${3} PRIORITY=${4} TASKMAN_SYSTEMCTL_NAME=«termidesk-taskman» TASKMAN_SYSTEMCTL_DESCRIPTION=«Termidesk-VDI Taskman daemon» TASKMAN_SYSTEMCTL_PIDFILE=«/run/termidesk-taskman/pid»
msg2log () {
logger -i "Termidesk: ${1}"
}
taskman_stop () {
msg2log "Stopping ${TASKMAN_SYSTEMCTL_NAME} service" systemctl is-active -q ${TASKMAN_SYSTEMCTL_NAME} && systemctl stop -q ${TASKMAN_SYSTEMCTL_NAME}
}
taskman_start () {
msg2log "Starting ${TASKMAN_SYSTEMCTL_NAME} service" systemctl is-active -q ${TASKMAN_SYSTEMCTL_NAME} || systemctl start -q ${TASKMAN_SYSTEMCTL_NAME}
} # VRRP event type: INSTANCE, name: lsb_40, state: BACKUP, priority: 64 msg2log «VRRP event type: ${TYPE}, name: ${NAME}, state: ${STATE}, priority: ${PRIORITY}» case ${STATE} in
BACKUP) [ "${NAME}" = "${TASKMAN_SYSTEMCTL_NAME}" ] && taskman_stop ;; FAULT) [ "${NAME}" = "${TASKMAN_SYSTEMCTL_NAME}" ] && taskman_stop ;; MASTER) [ "${NAME}" = "${TASKMAN_SYSTEMCTL_NAME}" ] && taskman_start ;; *) msg2log "Error: unknown state ${STATE}" exit 1 ;;
esac exit 0
comment
# Необходимо сделать файл notify.sh исполняемым sudo chmod +x /etc/keepalived/notify.sh
# Затем нужно добавить в автоматическую загрузку и запустить сервис keeaplived sudo systemctl enable keepalived –now
# Проверяем состояние сервиса sudo systemctl status keepalived # Также можно воспользоваться командой # sudo journalctl -u keepalived -n 100 –no-pager
############
### vdi-tsk2 ###
# Ссылка на документацию в wiki # https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-nastrojka-programmnogo-kompleksa/nastrojki-posle-raspredelennoj-ustanovki-fermy-termidesk/nastrojka-menedyoera-rabochego-mesta-v-reyoime-vysokoj-dostupnosti
# Устанавливаем пакеты программ для организации высокой доступности sudo apt install keepalived ipset -y
# Создаем файл настроек keepalived.conf sudo nano /etc/keepalived/keepalived.conf «comment global_defs {
router_id taskman script_user root enable_script_security
}
vrrp_script check_httpd {
script "/usr/bin/pgrep apache" interval 1 timeout 3 rise 1 fall 2 init_fail
}
vrrp_instance termidesk-taskman {
notify /etc/keepalived/notify.sh state BACKUP interface eth0 virtual_router_id 20 priority 128 preempt_delay 5 advert_int 1
unicast_src_ip 10.2.0.16
authentication { auth_type PASS auth_pass ksedimret }
virtual_ipaddress { 10.2.0.20/24 dev eth0 label eth0:20 }
track_script { check_httpd }
}
comment
# Создаем файл настроек notify.sh sudo nano /etc/keepalived/notify.sh «comment #!/bin/sh -e SELF_BIN=$(realpath ${0}) SELF_DIR=$(dirname ${SELF_BIN}) TYPE=${1} NAME=${2} STATE=${3} PRIORITY=${4} TASKMAN_SYSTEMCTL_NAME=«termidesk-taskman» TASKMAN_SYSTEMCTL_DESCRIPTION=«Termidesk-VDI Taskman daemon» TASKMAN_SYSTEMCTL_PIDFILE=«/run/termidesk-taskman/pid»
msg2log () {
logger -i "Termidesk: ${1}"
}
taskman_stop () {
msg2log "Stopping ${TASKMAN_SYSTEMCTL_NAME} service" systemctl is-active -q ${TASKMAN_SYSTEMCTL_NAME} && systemctl stop -q ${TASKMAN_SYSTEMCTL_NAME}
}
taskman_start () {
msg2log "Starting ${TASKMAN_SYSTEMCTL_NAME} service" systemctl is-active -q ${TASKMAN_SYSTEMCTL_NAME} || systemctl start -q ${TASKMAN_SYSTEMCTL_NAME}
} # VRRP event type: INSTANCE, name: lsb_40, state: BACKUP, priority: 64 msg2log «VRRP event type: ${TYPE}, name: ${NAME}, state: ${STATE}, priority: ${PRIORITY}» case ${STATE} in
BACKUP) [ "${NAME}" = "${TASKMAN_SYSTEMCTL_NAME}" ] && taskman_stop ;; FAULT) [ "${NAME}" = "${TASKMAN_SYSTEMCTL_NAME}" ] && taskman_stop ;; MASTER) [ "${NAME}" = "${TASKMAN_SYSTEMCTL_NAME}" ] && taskman_start ;; *) msg2log "Error: unknown state ${STATE}" exit 1 ;;
esac exit 0
comment
# Необходимо сделать файл notify.sh исполняемым sudo chmod +x /etc/keepalived/notify.sh
# Затем нужно добавить в автоматическую загрузку и запустить сервис keeaplived sudo systemctl enable keepalived –now
# Проверяем состояние сервиса sudo systemctl status keepalived # Также можно воспользоваться командой # sudo journalctl -u keepalived -n 100 –no-pager
##############
### vdi-lb ###
# Ссылка на документацию в wiki # https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-nastrojka-programmnogo-kompleksa/nastrojki-posle-raspredelennoj-ustanovki-fermy-termidesk/nastrojka-balansirovshchika-dlya-raboty-s-samopodpisannymi-sertifikatami
# Устанавливаем Nginx, если ранее он не был установлен на хосте. sudo apt install nginx -y
# Создаем самоподписанный сертификат # https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-nastrojka-programmnogo-kompleksa/nastrojki-posle-raspredelennoj-ustanovki-fermy-termidesk/nastrojka-balansirovshchika-dlya-raboty-s-samopodpisannymi-sertifikatami/sozdanie-samopodpisannogo-ssl-sertifikata # После исполнения команды надо последовательно ввести ряд параметров, запросы на которые отобразятся в командной строке # Наиболее важным параметром является Common Name (необходимо ввести FQDN-имя балансировщика). Как правило, в эту строку вносят доменное имя, с которым нужно связать сервер. В случае если доменного имени нет, нужно внести в эту строку IP-адрес сервера sudo openssl req -new -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
# Необходимо последовательно ввести ряд параметров, запросы на которые отобразятся в командной строке: # # Country Name (2 letter code) [AU]; # State or Province Name (full name) [Some-State]; # Locality Name (eg, city) []; # Organization Name (eg, company) [Internet Widgits Pty Ltd]; # Organizational Unit Name (eg, section) []; # Common Name (e.g. server FQDN or YOUR name) []; # Email Address []. # # Наиболее важным параметром является Common Name (необходимо ввести FQDN-имя балансировщика). # Как правило, в эту строку вносят доменное имя, с которым нужно связать сервер.
# При использовании OpenSSL необходимо также создать ключи Диффи-Хеллмана. # Ключи Диффи-Хеллмана используются для безопасного обмена криптографическими ключами по незащищенному каналу связи. # Этот метод позволяет двум сторонам согласовать общий секретный ключ, # который затем может быть использован для шифрования дальнейшего обмена данными, # не передавая сам ключ напрямую. # Процесс создания занимает около 15 минут. sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096
# Выполняем настройки Nginx для поддержки SSL # создаем и заполняем необходимые сниппеты # https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-nastrojka-programmnogo-kompleksa/nastrojki-posle-raspredelennoj-ustanovki-fermy-termidesk/nastrojka-balansirovshchika-dlya-raboty-s-samopodpisannymi-sertifikatami/nastrojka-nginx-dlya-podderyoki-ssl sudo nano /etc/nginx/snippets/self-signed.conf «comment ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
comment
sudo nano /etc/nginx/snippets/ssl-params.conf «comment ssl_protocols TLSv1.3; ssl_prefer_server_ciphers on; ssl_dhparam /etc/nginx/dhparam.pem; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384; ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0 ssl_session_timeout 10m; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; # Requires nginx >= 1.5.9 ssl_stapling on; # Requires nginx >= 1.3.7 ssl_stapling_verify on; # Requires nginx ⇒ 1.3.7 resolver 77.88.8.8 77.88.8.1 valid=300s; resolver_timeout 5s; # Disable strict transport security for now. You can uncomment the following # line if you understand the implications. # add_header Strict-Transport-Security «max-age=63072000; includeSubDomains; preload»; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection «1; mode=block»;
comment
# Создаем нужную конфигурацию для веб-сервера # https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-nastrojka-programmnogo-kompleksa/nastrojki-posle-raspredelennoj-ustanovki-fermy-termidesk/nastrojka-balansirovshchika-dlya-raboty-s-samopodpisannymi-sertifikatami/konfigurirovanie-veb-servera sudo nano /etc/nginx/sites-available/termidesk-lb.conf «comment upstream daas-upstream-ws {
least_conn; # PROXY TERMIDESK server 10.2.0.13:5099; server 10.2.0.14:5099;
}
upstream daas-upstream-nodes {
least_conn; # DISPATCHER TERMIDESK server 10.2.0.11:443; server 10.2.0.12:443;
}
server {
listen 0.0.0.0:80; listen 0.0.0.0:443 ssl;
include snippets/self-signed.conf; include snippets/ssl-params.conf;
location /websockify { # limit_req zone=fast nodelay; proxy_http_version 1.1; proxy_pass http://daas-upstream-ws/; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
# Connection timeout proxy_connect_timeout 1000; proxy_send_timeout 1000; proxy_read_timeout 1000; send_timeout 1000;
# Disable cache proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
location / { proxy_pass https://daas-upstream-nodes/; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; }
}
comment
# Если необходимо добавить конфигурацию апстримов, работающих по WSS, # То следует добавить блок самого апстрима. # А также конфигурацию проксирования на этот апстрим. «comment upstream daas-upstream-wss {
least_conn; # PROXY TERMIDESK server 10.2.0.13:5199; server 10.2.0.14:5199;
} … server { …
location /wss { # limit_req zone=fast nodelay; proxy_http_version 1.1; proxy_pass https://daas-upstream-wss/; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
# Connection timeout proxy_connect_timeout 1000; proxy_send_timeout 1000; proxy_read_timeout 1000; send_timeout 1000;
# Disable cache proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
… }
comment
# Активируем конфигурацию sudo ln -s /etc/nginx/sites-available/termidesk-lb.conf /etc/nginx/sites-enabled/ # Удаляем конфигурацию по-умолчанию sudo rm /etc/nginx/sites-enabled/default # Проверяем корректность настроек sudo nginx -t # Поскольку сертификат является самоподписанным, SSL stapling не будет использоваться. # Сервер nginx выдаст предупреждение, отключит stapling для данного сертификата и продолжит работу. # Если других предупреждений нет, то выполняем перезапуск сервиса sudo nginx -s reload