Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Компаниям приходится тратить немалую сумму, чтобы поддерживать парк оборудования в офисе. Цены на ноутбучную конфигурацию с 4 CPU, 8 Gb RAM и 256 Gb SSD стартуют от 27 тыс. рублей. Для небольшой компании с сотней сотрудников на обновление старых устройств уйдет более 2,5 млн. Конечно, здесь не учтены типы занятости: дизайнер, маркетолог, оператор, разработчик, техподдержка. Добавим к этому дополнительные мониторы, стойки к ним и гарнитуры — цена, думаю, будет превышать 10 млн. рублей. А если учесть параллельный импорт и курс рубля? Мне становится не по себе.
Решить данную проблему может инфраструктура виртуальных рабочих столов (VDI). К тому же, она еще хорошо вписывается в тренд перехода на удаленную работу.
Идея виртуализированного доступа к рабочему столу развивалась постепенно:
90-е годы. Компания VMware начала работу над технологией виртуализации серверов. В 1999 году они выпустили свой первый продукт – VMware Workstation, который позволял виртуализировать отдельные рабочие станции.
Начало нулевых. VMware продолжала развивать свои технологии виртуализации, в основном, сосредотачиваясь на серверах. Но идеи о виртуализации рабочих столов уже начинали формироваться.
Середина нулевых. Технологии виртуализации стали более доступными и зрелыми. Компании, такие как VMware, Citrix и Microsoft, начали предлагать решения, ориентированные на виртуализацию рабочих столов. Например, VMware представила свой VDI-продукт, а Citrix предложила XenDesktop.
На сегодняшний день популярными VDI решениями на рынке остаются продукты IT гигантов:
Citrix XenDesktop 7
VMware Horizon 6 Enterprise Edition (с View)
Microsoft VDI
Dell vWorkspace 8.0
Но, к сожалению (или к счастью) они не доступны на российском рынке по известным всем причинам. Поэтому в данной статье предлагаю посмотреть в сторону отечественного VDI решения от компании «Увеон — облачные технологии», входящей в «Группу Астра».
Использование VDI примечательно тем, что можно продолжать пользоваться существующим оборудованием еще долгое время, а также то, что все данные хранятся в контуре компании. Это снижает риски утечки корпоративной информации и повышает удобство пользования данными за счет централизованного управления.
Теперь немного о содержании статьи. Мы рассмотрим решение для виртуальных рабочих столов Termidesk, его установку и настройку в корпоративном контуре, а именно домене FreeIPA, интеграцию с ПК (программным комплексом) СВ «Брест» (мы же тут про отечественное собрались говорить) и работу с TrueConf Server (заявлено сокращение полосы пропускания в 10 раз).
Содержание
Немного предисловия
Схема
Параметры машин
Настройка сети
Развертывание
Установка FreeIPA
Настройка FreeIPA
DNS
Добавление пользователей
Политика паролей
Сертификаты
Создание SPN и генерация Keytab-файла
Ввод в домен
Настройка синхронизации времени
Подключение локального репозитория
Установка ПК СВ «Брест»
Установка оперативного обновления
Установка и инициализация Брест
Установка Termidesk
Установка PostgreSQL
Создание БД
Установка и настройка RabbitMQ
Установка Termidesk
Немного предисловия
Termidesk поддерживает различные протоколы доставки: VNC, RDP, SPICE. Последний они допилили своими усилиями, цитирую:
“за счет уникальных на отечественном рынке наработок по оптимизации протокола доставки на базе SPICE.”
Ну посмотрим.
SPICE — это протокол разработанный компанией Qumranet, но впоследствии представлен миру компанией RedHat. Благодарность им. SPICE можно разделить на 4 различных компонента: протокол, клиент, сервер и гость.
Его главное преимущество, что он поддерживает передачу аудио и видео. Об остальном можно почитать в официальной документации.
Termidesk поддерживает домены аутентификации, то есть LDAP каталоги, что очень важно в корпоративной среде.
Прежде чем перейти к установке нужно рассмотреть схему стенда и системные требования машин.
Также хочу подметить, если вы будете разворачивать тестовый стенд на VMware ESXi, то:
у вас должна быть включена вложенная виртуализация (Expose hardware assisted virtualization to the guest OS);
В настройках адаптера сети нужно включить режим проброса (Promiscuous mode).
Схема
В домене example.lan
находится три машины:
Termidesk —
termidesk.example.lan
,10.110.2.247
;FreeIPA —
freeipa.example.lan
,10.110.2.248
;ПК СВ «Брест» —
brest.example.lan
,10.110.2.249
.
Вне домена расположен TrueConf Server (video.example.net), а также пользователи, которые подключаются через Termidesk Client.
Параметры машин
Я развернул машины с такой конфигурацией:
example.lan | |||
FreeIPA | ПК СВ «Брест» | Termidesk | |
CPU (vCPU) | 2 | 8 | 2 |
RAM | 2 ГБ | 8 | 4 ГБ |
Объем диска | 12 ГБ | 110 ГБ | 20 ГБ |
ОС | Astra Linux | Astra Linux | Astra Linux |
Подробные сведения |
Конечно в продакшене цифры будут другие, но для тестов этого хватит.
Может возникнуть вопрос: “Почему FreeIPA не развернуть вместе с Брестом?”. Официальный ответ из документации:
В связи с особенностью функционирования домена FreeIPA, конфигурация, при которой разворачиваются сервисы контроллера домена и фронтальной машины на одном сервере, недопустима.
Я умышленно не показываю конфигурацию машины для TrueConf Server. Будем считать, что он находится в другом сегменте сети под управлением другого администратора. Для интеграции вам достаточно знать FQDN и IP-адрес этой машины.
Если вы будете администрировать и TrueConf Server, то вот ссылки для изучения:
Установка TrueConf Server.
Настройка интеграции с LDAP.
По ходу статьи я еще расскажу подробнее про интеграцию с TrueConf Server.
Настройка сети
Чтобы каждый раз не повторяться про настройку сети, я решил выделить ее в отдельный раздел, на который буду ссылаться по ходу статьи.
Если при установке ОС вы установили Network Manager, то предварительно перед настройкой сети остановите его с помощью команд:
sudo systemctl stop network-manager
sudo systemctl disable network-manager
Перед настройкой сети на каждой машине установите пакет resolvconf, чтобы каждый раз не менять настройки DNS в /etc/resolv.conf
:
sudo apt install resolvconf
На машине с гипервизором (brest.example.lan), установите пакет bridge-utils, который нужен нам для создания моста между интерфейсами:
sudo apt install bridge-utils
При отображении сообщения Смена носителя: вставьте диск с меткой “OS Astra Linux 1.7.2 1.7_x86-64 DVD” подключите установочный диск и нажмите Enter.
Настройку сети я буду осуществлять через правку *.conf файлов, для меня так проще и привычнее. Поэтому в директории /etc/network/interfaces.d/
создайте файл br0.conf (для brest) и eth0.conf (для всех трех машин).
Если вдруг у вас недоступен eth0 или ваш интерфейс назван иначе, то проверить список доступных можно с помощью команды:
ip -f inet a s
После создания файлов отредактируйте их как показано в таблицы ниже.
termidesk.example.lan | auto eth0 |
freeipa.example.lan | auto eth0 |
brest.example.lan | auto eth0 |
brest.example.lan | auto br0 |
После этого запустите сетевой интерфейс:
termidesk/freeipa:
sudo ifup eth0
brest:
sudo ifup br0
При запуске br0 сам поднимает связанные с ним интерфейсы (eth0), поэтому отдельно запускать их не нужно.
При необходимости перезапустите службу сети:
sudo systemctl restart networking.service
Далее для каждой машины:
Задайте сетевое имя с помощью команды:
sudo hostnamectl set-hostname {NAME}.example.lan
Для удобства администрирования запустите службу ssh и добавьте её в автозапуск:
sudo systemctl enable ssh
sudo systemctl start ssh
Развертывание
Развертывание сервисов должно производиться на Astra Linux 1.7. И казалось, что может пойти не так? Но поверьте, может. Оказалось, что состоянием на осень 2023 Брест нормально функционирует только в версии 1.7.2. После нескольких проб и общения с ТП, я решил не проверять заведется ли Termidesk на свежей версии с Брестом на старой версии и везде поставил одинаковую версию Astra Linux 1.7.2 с оперативным обновлением.
“Умный учится на своих ошибках, мудрый учится на чужих, а дурак …”
Далее мы переходим к установке сервисов. Сеть на данном шаге должна быть настроена.
Установка FreeIPA
Подключитесь к freeipa.example.lan (10.110.2.248) по SSH:
ssh {username}@10.110.2.248
где {username}
— это имя пользователя, которое вы использовали при установке ОС. В моем случае это test.
Если у вас подключен установочный диск, то можно установить FreeIPA с него. В противном случае, откройте файл /etc/apt/sources.list
и отредактируйте как показано ниже:
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/repository-extended 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/repository-update 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/uu/1/repository-update 1.7_x86-64 main contrib non-free
Обновите список пакетов и установите astra-freeipa-server:
sudo apt update && sudo apt install astra-freeipa-server
Проинициализируйте домен с помощью команды:
sudo astra-freeipa-server -d example.lan -n freeipa -ip 10.110.2.248 -o
у вас отобразится сообщение:
compname= freeipa
domain= example.lan
Сертификаты будут сгенерированы с помощью OpenSSL
Будет использован указанный IP-адрес 10.110.2.248.
продолжать ? (y\n)
Введение y (маленькую букву), нажмите Enter и задайте пароль администратора домена.
В конце, после успешной инициализации, у вас отобразится надпись:
Обнаружен настроенный домен example.lan
WEB: https://freeipa.example.lan
После этого обязательно перезагрузите компьютер:
sudo reboot
Настройка FreeIPA
При использование FreeIPA CLI нужно выполнять команды из-под учетной записи администратора контроллера домена (admin).
DNS
FreeIPA в нашем стенде выполняет роль DNS сервера, поэтому заранее добавим A записи для рабочих станций с помощью CLI:
sudo ipa dnsrecord-add {DNSZONE} {NAME} --a-rec {IP}
где:
{DNSZONE}
— зона DNS. В моем случае это example.lan;{NAME}
— имя записи. Например, для домена brest.example.lan — это brest;{IP}
— IP-адрес машины.
С другими настройками можно ознакомиться в официальной документации.
Добавление пользователей
Добавить пользователей в LDAP можно двумя способами: через веб-панель и с помощью CLI.
Недостаток добавления пользователей через веб-панель заключается в том, что при первом входе ему нужно изменить пароль заданный администратором. Вроде бы ничего такого, но Termidesk не умеет изменять пароль, поэтому просто не авторизует пользователя. Поэтому правильный подход добавления пользователей — использование CLI.
Чтобы создать пользователя выполните:
sudo ipa user-add {login} --first={name} --last={surname} --email={email} --gidnumber={group-id} --password --password-expiration={DATETIME}
Параметр DATATIME нужно указывать в формате ГГГГ-ММ-ДДZ, например, 2050-12-31Z.
Приведу пример создания учетной записи для пользователя Иван Иванов, который состоит в группе trueconf:
sudo ipa user-add iivanov --first=Иван --last=Иванов --email=iivanov@example.lan --gidnumber=1466000045 --password --password-expiration=2050-12-31Z
Также вы можете создать пользователя в веб-панели, а потом изменить срок действия пароля через CLI:
sudo ipa user-mod {login} --password -password-expiration={DATETIME}
Для получения справки по другим параметрам воспользуйтесь:
sudo ipa help user-add
Политика паролей
При установке FreeIPA создается глобальная политика паролей. Глобальная политика затрагивает всех пользователей и это значит, что администратор ПК СВ «Брест» не сможет войти в панель администратора через 90 дней, т.к. его пароль истек.
Вы можете настроить политику паролей используя веб-интерфейс. Я приведу пример с использованием CLI.
Чтобы изменить глобальную политику, выполните команду:
sudo ipa pwpolicy-mod --maxlife {amount-of-days}
Вы можете создать политику для каждой группы. Ниже пример изменения политики для группы trueconf:
sudo ipa pwpolicy-mod trueconf --maxlife 360
Для получения справки по другим параметрам выполните:
sudo ipa help pwpolicy-mod
Сертификаты
FreeIPA выступает в роли центра сертификации. После установки ПК СВ «Брест» и Termidesk используют самоподписанные сертификаты к которым нет доверия.
В дальнейшем, при настройке Termidesk, будет шаг проверки SSL сертификатов. К сожалению, проверка будет выдавать ошибку из-за недоверенного сертификата.
Например, в ПК СВ Брест сертификаты используются при входе в веб-панель и подключении по некоторым протоколам, например, VNC и SPICE. Добавлю, лично у меня срабатывала бесконечная авторизация при подключении по SPICE-HTML5, что препятствовало работе через данное подключение.
В данном примере я покажу, как сгенерировать сертификат, упаковать его в pfx контейнер и передать на удаленный сервер.
Для этого выполните команду из-под учетной записи администратора контроллера домена (admin):
sudo astra-freeipa-server-crt --host {FQDN} --export --push {USER}@{REMOTE-HOST} --pin 12345
где: {FQDN}
— это полное доменное имя, для которого выписывается сертификат, например, termidesk.example.lan.{USER}
— имя пользователя на удаленном сервере, у меня test.{REMOTE-HOST}
— IP-адрес или доменное имя удаленного сервера.--pin
— пин для защиты контейнера. При его установке требуется для распаковки контейнера.
Вам будет предложено ввести пароль от учетной записи на удаленном сервере.
После этого на удаленной машине выгрузите сертификат и ключ (каждый в свой файл):
sudo openssl pkcs12 -in {FQDN}.p12 -out cert.pem -nodes
sudo openssl pkcs12 -in {FQDN}.p12 -nocerts -nodes -out cert.key
где {FQDN}.p12
— это имя контейнера с названием домена, например, brest.example.lan.p12.
Далее вам нужно будет указать новый сертификат в конфигурационном файле Apache, о чем будет написано ниже в разделе про развертывание для каждого продукта отдельно.
Создание SPN и генерация Keytab-файла
Чтобы каждый раз не повторяться про настройку Kerberos, я решил выделить ее в отдельный раздел на который я буду ссылаться по ходу статьи.
Kerberos используется для беспарольной аутентификации в Termidesk и TrueConf Server. Чтобы аутентификация работала, нужно сгенерировать keytab-файл. Он содержит пары Kerberos принципалов и их ключей. Но перед этим необходимо создать SPN (Service Principal Name) — уникальный идентификатор экземпляра сервиса, другими словами, просто службу на FreeIPA.
Для создания SPN выполните:
Подключитесь по SSH к контроллеру домена (
freeipa.example.lan
) с помощью учетной записи администратораadmin
.Получите билет (kerberos-ticket) с помощью команды:
kinit admin
Добавьте новый узел с помощью команды (если машины в домене, то этот пункт можно пропустить):
sudo ipa host-add --force --ip-address={x.x.x.x} {FQDN}
#Добавление узла для Termidesk
sudo ipa host-add --force --ip-address=10.110.2.247 termidesk.example.lan
#Добавление узла для TrueConf Server
sudo ipa host-add --force --ip-address=10.110.2.242 video.example.net
Добавьте новую службу на машине с FreeIPA:
#Termidesk
sudo ipa service-add HTTP/termidesk.example.lan
#TrueConf Server
sudo ipa service-add trueconf/video.example.net
Для генерации keytab-файлов выполните команды:
#Termidesk
sudo ipa-getkeytab -s freeipa.example.lan -p HTTP/termidesk.example.lan -k termidesk.keytab
#TrueConf Server
sudo ipa-getkeytab -s freeipa.example.lan -p trueconf/video.example.net -k trueconf.keytab
Теперь перенесите keytab-файлы на рабочую станцию по SSH или другим удобным способом. Например, по SSH это можно сделать, выполнив в терминале на машине с FreeIPA команду:
#Termidesk
sudo scp termidesk.keytab test@10.110.2.247:/home/test
Аналогично надо перенести файл и на машину с TrueConf Server.
Ввод в домен
Чтобы не повторяться про ввод в домен, я решил выделить этот процесс в отдельный раздел на который я буду ссылаться по ходу статьи.
Этот раздел относится ко всем машинам, которые нужно ввести в домен FreeIPA (example.lan). В моем случае это машина c ПК СВ Брест и Termidesk.
Ввод машин в домен FreeIPA осуществляется с помощью специального пакета astra-freeipa-client. Установите его с помощью команды:
sudo apt -y install astra-freeipa-client
Для ввода машины в домен выполните команду:
sudo astra-freeipa-client -d example.lan -u admin -p 12345678 -y
где:
-d
— домен;-y
— отключает запрос подтверждения;-u
— логин администратора домена;-p
— пароль администратора домена (небезопасно).
Можно эти данные не указывать, тогда доменное имя берется из resolv.conf, а логин/пароль придется ввести вручную во время выполнения команды.
Другие варианты использования команды приведены в ее справке.
Внимание! После выполнения команды обязательно выполните перезагрузку ОС!
Для проверки результата ввода в домен необходимо выполнить команду:
sudo astra-freeipa-client -i
Об успешном вводе в домен будет свидетельствовать следующая надпись:
Обнаружен настроенный клиент в домене example.lan
После этого проинициализируйте аутентификацию Kerberos используя логин администратора FreeIPA:
kinit admin
Настройка синхронизации времени
Протокол Kerberos очень чувствителен к правильной синхронизации времени между центром распространения ключей (KDC) и узлами аутентификации. При разнице во времени более нескольких минут аутентификация не сработает. Поэтому на узлах, где будет осуществляться аутентификация по Kerberos, настроим синхронизацию с NTP сервером FreeIPA. Для этого:
В файле
/etc/chrony/chrony.conf
удалите все строки, которые начинаются на pool и server.Затем в начало добавьте:
server freeipa.example.lan iburst
После этого перезапустите службу crony:
sudo systemctl restart chrony
Проверить статус можно с помощью команд chronyc tracking
и chronyc sources
. В выводе должно быть упоминание вашего домена, в моем случае это freeipa.example.lan.
Подключение локального репозитория
Чтобы не повторяться про подключение локального репозитория (CD-ROM или ISO-файла) я решил выделить этот процесс в отдельный раздел, на который буду ссылаться по ходу статьи.
Для подключения локального репозитория выполните:
К машине подключите файл образа установочного диска (ISO/CD).
Создайте каталог для дальнейшего размещения репозитория:
sudo mkdir -p /srv/repo/{directory-name}
где {directory-name}
— название директории, например, brest или termidesk.
Если у вас подключен диск в режиме CD-ROM,то вам необходимо узнать имя подключенного диска. Для этого выполните команду:
lsblk
Примонтируйте установочный диск:
где:
{cd-disk}
— имя диска из предыдущего пункта, например sr0;{file-name-iso}
— название образа ISO, например, termidesk-vdi.XXXXX.iso.
Скопируйте файлы из установочного диска в каталог репозитория:
sudo cp -a /mnt/* /srv/repo/{directory-name}
Отмонтируйте установочный диск:
sudo umount /mnt
Установите пакет lsb-release:
sudo apt install -y lsb-release
Подключите каталог в качестве репозитория:
Брест
sudo sh -c 'echo "deb file:/srv/repo/{directory-name}/ brest main non-free" > /etc/apt/sources.list.d/brest_local.list'
Termidesk
sudo sh -c 'echo "deb file:/srv/repo/{directory-name}/repos/astra $(lsb_release -cs) non-free" > /etc/apt/sources.list.d/termidesk_local.list'
где {directory-name}
— название директории, например, brest или termidesk.
После этого для машины с Termidesk добавьте PGP ключ в ОС:
cat /srv/repo/{directory-name}/repos/astra/GPG-KEY-PUBLIC | sudo apt-key add -
и убедитесь, что ключ с uid «release@uveon.ru» был успешно добавлен:
apt-key list
Установка ПК СВ «Брест»
Важно! На данном этапе сеть настроена, машина введена в домен.
Подключитесь к brest.example.lan (10.110.2.249) по SSH:
ssh {username}@10.110.2.249
где {username}
— это имя пользователя, которое вы использовали при установке ОС. В моем случае это test.
Гипервизор Брест работает только на Astra Linux 1.7.2. Информация о текущей версии операционной системы доступна в файле /etc/astra/build_version:
cat /etc/astra/build_version
Если ваша версия соответствует 1.7.2.11, перейдите к подключению локального репозитория, в противном случае вам придется доустановить оперативное обновление.
Установка оперативного обновления
Для установки оперативного обновления выполните:
В файле
/etc/apt/sources.list
закомментируйте строку с помощью # (хештега):
#deb cdrom:[OS Astra Linux 1.7.2 1.7_x86-64 DVD ]/ 1.7_x86-64 contrib main non-free
Также в конец файла
/etc/apt/sources.list
добавьте строки:
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/repository-extended 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/repository-update 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/uu/1/repository-update 1.7_x86-64 main contrib non-free
Выполните в терминале команду:
sudo apt update
Установите обновление с помощью команды:
sudo astra-update -A -r -T
После установки дополнительно в терминале выполните команду
sync
для того, чтобы удостоверится, что все данные перенесены на диск.Установленная версия должна быть 1.7.2.11. Для проверки выполните:
cat /etc/astra/build_version
В случае успеха выполните перезагрузку машины:
sudo reboot
Установка и инициализация Брест
Подключите локальный репозиторий ПК СВ Брест как было сказано выше.
Важно! Репозитории, добавленные в разделе Установка оперативного обновления, должны быть раскомментированы.
Обновите информацию о пакетах и установите Брест:
Во время процесса установки у вас отобразится страница с лицензионным соглашением, которое следует принять.
Внимание! После выполнения обязательно выполните перезагрузку ОС!
После включения ОС нужно проинициализировать сервис фронтальной машины. Для этого выполните:
sudo brestcloud-configure
Во время инициализации:
введите логин администратора IPA-сервера;
укажите логин и пароль для администратора Брест.
Далее выполните инициализацию сервиса узла виртуализации:
sudo ipa-libvirt-qemu-configure
Во время инициализации:
введите логин и пароль администратора IPA-сервера;
введите FQDN для фронтальной машины Брест (brest.example.lan);
введите логин (test) и пароль учетной записи ОС.
Внимание! После выполнения обязательно выполните перезагрузку ОС!
Установка Termidesk
Перед установкой Termidesk советую ознакомиться с таблицей совместимости версий Termidesk и Astra Linux.
Если вы будете устанавливать Termidesk версии 4.2.1 и выше, то в процессе установки ОС должен быть выбран графический интерфейс.
Важно! На данном этапе сеть настроена, машина введена в домен.
Подключите локальный репозиторий Termidesk как было сказано выше.
Для функционирования Termidesk нужно предварительно установить СУБД PostgreSQL 11 и брокер сообщений RabbitMQ.
Установка PostgreSQL
Для установки Postgres необходимо:
Откройте файл
/etc/apt/sources.list
и отключите получение пакетов с локального репозитория на CD диске. У вас должен получиться следующий список:
#deb cdrom:[OS Astra Linux 1.7.2 1.7_x86-64 DVD ]/ 1.7_x86-64 contrib main non-free
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-update/ 1.7_x86-64 main contrib non-free
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free
Обновите пакеты и установите СУБД:
sudo apt update; sudo apt install -y postgresql-11
Создание БД
После установки PostgreSQL нужно вручную создать БД из консоли.
Для настройки выполните:
Откройте терминал и войдите под пользователем postgres:
sudo su postgres
Запустите интерактивный терминал для работы с PostgreSQL:
psql
У вас должно отобразиться приглашение postgres=#
. Подробнее о psql и приглашениях можно почитать в официальной русской документации.
Создайте БД с именем termidesk используя команду (точка с запятой в конце строки обязательна):
CREATE DATABASE termidesk LC_COLLATE 'ru_RU.utf8' LC_CTYPE 'ru_RU.utf8' TEMPLATE template0;
Создайте пользователя для дальнейшего подключения к БД. Логин и пароль задайте свой:
CREATE USER {admin-username} WITH PASSWORD '{very-strong-password}';
Назначить созданному пользователю права на использование базы данных termidesk:
GRANT ALL PRIVILEGES ON DATABASE termidesk TO {admin-username};
Для выхода из psql используйте команду:
\q
Для выхода из сеансов пользователей postgres и root выполните два раза подряд команду:
exit
Чтобы не возникала ошибка при получении мандатных атрибутов, нужно отредактировать файл /etc/parsec/mswitch.conf
как показано ниже строго вплоть до пробелов:
# Return zero data instead of ENOENT/ENODATA in the absence of record
zero_if_notfound: yes
Установка и настройка RabbitMQ
Для установки выполните команду:
sudo apt install -y rabbitmq-server
Для настройки:
Проверьте существует ли каталог
/etc/rabbitmq
:
ls /etc/
Если каталог отсутствует, то создайте его:
sudo mkdir -p /etc/rabbitmq
Перейдите в каталог
/etc/rabbitmq
:
cd /etc/rabbitmq
Создайте два файла: rabbitmq.conf (основной файл конфигурации) и definitions.json (файл определения данных для подключения):
sudo touch rabbitmq.conf
sudo touch definitions.json
Измените владельца и группу для созданных файлов:
sudo chown rabbitmq:rabbitmq definitions.json rabbitmq.conf
Отредактируйте файл rabbitmq.conf как показано ниже:
# ======================================= Management section ================
## Preload schema definitions from the following JSON file. Related doc guide:
#https://rabbitmq.com/management.html#load-definitions.
##
# management.load_definitions = /path/to/exported/definitions.json
management.load_definitions = /etc/rabbitmq/definitions.json
Отредактируйте файл definitions.json как показано ниже:
Важно! Пользователи termidesk и admin заданы для примера. Вы можете указать свои данные в нужных местах. Хеш пароля мы сгенерируем ниже.
{
"rabbit_version": "3.7.8",
"users": [
{
"name": "termidesk",
"password_hash": "FwIl0US4nfEiEQkIg97X+4n53U7KjBiU6gtZkK6e4W24kUlV",
"hashing_algorithm": "rabbit_password_hashing_sha256",
"tags": ""
},
{
"name": "admin",
"password_hash": "FXQ9WFNSrsGwRki9BT2dCITnsDwYu2lsy7BEN7+UncsPzCDZ",
"hashing_algorithm": "rabbit_password_hashing_sha256",
"tags": "administrator"
},
{
"name": "termik",
"password_hash": "KE0+aR+1TZzZpKTq93YyJYJVtfMQ9C1aE8a7L2oemaCckTF6",
"hashing_algorithm": "rabbit_password_hashing_sha256",
"tags": ""
}
],
"vhosts": [
{
"name": "/"
},
{
"name": "termidesk"
}
],
"permissions": [
{
"user": "termidesk",
"vhost": "termidesk",
"configure": ".*",
"write": ".*",
"read": ".*"
},
{
"user": "admin",
"vhost": "termidesk",
"configure": ".*",
"write": ".*",
"read": ".*"
}
],
"topic_permissions": [
{
"user": "termidesk",
"vhost": "termidesk",
"exchange": "",
"write": ".*",
"read": ".*"
}
],
"parameters": [],
"global_parameters": [
{
"name": "cluster_name",
"value": "rabbit@rabbitmq"
}
],
"policies": [],
"queues": [],
"exchanges": [],
"bindings": []
}
Для преобразования пароля в хеш выполните:
Перейдите в каталог /srv/repo/{directory-name}/repos/Addons/Scripts/, где
{directory-name}
— название директории указанное при подключении локального репозитория.
cd /srv/repo/{directory-name}/repos/Addons/Scripts/
Файл rabbitmq_password2hash.sh сделайте исполняемым:
sudo chmod +x rabbitmq_password2hash.sh
Выполните исполняемый файл:
sudo rabbitmq_password2hash.sh -u {username} -p {password} -w
Перед запуском вам необходимо проинициализировать RabbitMQ с помощью команды:
sudo rabbitmq-plugins enable rabbitmq_management
Перезапустите сервер:
sudo systemctl restart rabbitmq-server
Установка Termidesk
Для установки выполните:
sudo apt update && sudo apt -y install termidesk-vdi
Во время установки будет предложено выбрать компоненты:
Исходя из того, что мы проводим обычную установку Termidesk (на одном сервере), то нужно отметить все пункты и нажать кнопку OK.
После установки необходимо скорректировать файл конфигурации веб-сервера /etc/apache2/apache2.conf
:
Откройте файл и найдите строку с параметром AstraMode.
Раскомментируйте строку и присвойте параметру значение off, как показано ниже:
# Astra security mode
#
AstraMode off
И наконец, перезапустите веб-сервер:
sudo systemctl restart apache2
Установка завершилась. Во второй части мы подробнее остановимся на настройке и использовании ПО.