Обзор развертывания Kasm Workspaces на сервере¶
Предварительные требования и базовые условия¶
-
Операционная система: Дистрибутивы на базе Debian (например, Ubuntu 22.04 Jammy) или дистрибутивы на базе RHEL.
-
Привилегии: Для установки пакетов, управления Docker и генерации сертификатов требуются права
rootили привилегииsudo. -
Зависимости:
-
ca-certificates,curl,gnupg -
python3-pip,python3-requests,python3-docker -
letsencryptдля управления SSL-сертификатами -
Версия Docker: Docker Engine 5:28.5.2-1ubuntu.22.04jammy (специально зафиксирована в Ubuntu Jammy).
-
Свободное место под своп (Swap Space): 8192 МБ, выделяется во время установки.
FQDN финальной панели¶
Приложение доступно по следующему формату Полного Доменного Имени (FQDN):
-
Домен:
kasm<Server ID>.hostkey.in -
Пример: Если ID сервера равен
123, адрес будетkasm123.hostkey.in. -
Порт: Сервис слушает порт
3000и динамический порт, определяемый переменнойkasm_port.
Структура файлов и каталогов¶
Приложение использует следующую структуру каталогов для конфигурации, данных и сертификатов:
-
Основной каталог приложения:
/opt/kasm/ -
Текущая версия:
/opt/kasm/current/ -
Скрипты служб:
/opt/kasm/bin/(содержит скриптыstart,stop) -
Сертификаты:
/opt/kasm/current/certs/-
Основной ключ:
/opt/kasm/current/certs/kasm_nginx.key -
Основной сертификат:
/opt/kasm/current/certs/kasm_nginx.crt -
Резервный ключ:
/opt/kasm/current/certs/kasm_nginx.key_bak -
Резервный сертификат:
/opt/kasm/current/certs/kasm_nginx.crt_bak
-
-
Хранение данных (режим RHEL/контейнера):
-
/data/kasm/: Маппинг на/optвнутри контейнера. -
/data/kasm/profiles/: Маппинг на/profilesвнутри контейнера. -
SSL-сертификаты (системные):
/etc/letsencrypt/live/kasm<Server ID>.hostkey.in/
Процесс установки приложения¶
Установка выполняется путем загрузки конкретного архива релиза, его распаковки и запуска скрипта установки с определенными параметрами.
-
Загрузка архива релиза: Источник установки извлекается из официального репозитория статического контента Kasm.
-
Распаковка архива: Архив распаковывается в каталог
/root/. -
Выполнение скрипта установки: Скрипт
install.shвыполняется со следующими аргументами:./install.sh \ --admin-password <password> \ --user-password <password> \ --public-hostname kasm<Server ID>.hostkey.in \ --accept-eula \ --no-images \ --no-check-ports \ --no-check-disk \ --swap-size 8192-
--admin-passwordи--user-password: Устанавливаются во время развертывания с использованием пароля SSH. -
--public-hostname: Определяет FQDN для панели управления. -
--swap-size: Выделяет 8192 МБ памяти под своп.
-
Права доступа и безопасность¶
-
Межсетевой экран (Firewall): Развертывание пропускает проверку портов (
--no-check-ports), что означает, что внешний доступ к портам должен управляться через межсетевой экран хоста для разрешения входящего трафика на настроенных портах. -
SSL/TLS: Защищенные соединения реализуются с использованием сертификатов Let's Encrypt, выданных для конкретного FQDN хоста.
-
Учетные записи пользователей: Скрипт установки устанавливает пароли как для учетной записи администратора, так и для стандартной учетной записи во время начальной настройки.
Базы данных¶
-
Метод хранения: Предоставленная конфигурация явно не определяет отдельную строку подключения к базе данных, внешний сервер базы данных или скрипт инициализации SQL.
-
Сохранность данных: Данные хранятся в томах (volumes) Docker-контейнеров, маппингуемые на файловую систему хоста (например,
/data/kasm/в RHEL или/opt/kasm/в пути установки по умолчанию).
Контейнеры Docker и их развертывание¶
Kasm Workspaces разворачивается с использованием контейнеров Docker со следующими спецификациями:
Образ контейнера¶
-
Образ:
lscr.io/linuxserver/kasm:latest -
Имя контейнера:
kasm
Параметры конфигурации¶
Контейнер запускается со следующими настройками:
-
Привилегированный режим (Privileged Mode):
true(требуется для доступа к оборудованию и специфических функций). -
Политика перезапуска:
unless-stopped. -
Переменные окружения:
-
KASM_PORT: Определяется переменной развертыванияkasm_port.
Монтирование томов (Volume Mounts)¶
-
/data/kasmна хосте маппингуется на/optвнутри контейнера. -
/data/kasm/profilesна хосте маппингуется на/profilesвнутри контейнера. -
/dev/inputна хосте маппингуется на/dev/inputвнутри контейнера (для перенаправления USB). -
/run/udev/dataна хосте маппингуется на/run/udev/dataвнутри контейнера.
Отображение портов (Port Mappings)¶
-
Порт хоста
3000маппингуется на порт контейнера3000. -
Порт хоста
kasm_portмаппингуется на порт контейнераkasm_port.
Проксильные серверы¶
Развертывание настраивает Nginx (интегрированный в Kasm) для обработки обратного проксирования и завершения SSL.
-
Источник SSL-сертификатов: Let's Encrypt (
certbot). -
Обновление сертификатов: Сертификаты выдаются с использованием standalone-проверки через HTTP.
-
Применение сертификатов: Система копирует файлы
privkey.pemиfullchain.pemиз/etc/letsencrypt/live/в/opt/kasm/current/certs/, заменяя самоподписанные сертификаты Kasm по умолчанию. -
Оригинальные сертификаты: Оригинальные сертификаты Kasm переименовываются с добавлением расширения
.bakи сохраняются в/opt/kasm/current/certs/.
Настройки прав доступа¶
-
Права доступа к каталогам:
-
/dataи/data/kasm/profilesсоздаются с правами0640. -
Владелец:
root, Группа:root. -
Конфигурация демона Docker:
-
Файл
daemon.jsonразмещается в/etc/docker/с правами0644, владельцемroot. -
Управление пакетами:
-
Пакеты Docker (
docker-ce,docker-ce-cli) находятся в статусеhold(зафиксированы), чтобы предотвратить автоматическое удаление или обновление.
Расположение файлов конфигурации и данных¶
-
Скрипты служб:
/opt/kasm/bin/startи/opt/kasm/bin/stop. -
SSL-сертификаты:
-
Активные:
/opt/kasm/current/certs/kasm_nginx.keyи/opt/kasm/current/certs/kasm_nginx.crt. -
Источник (Let's Encrypt):
/etc/letsencrypt/live/kasm<Server ID>.hostkey.in/. -
Конфигурация Docker:
/etc/docker/daemon.json. -
Пользовательские данные: Хранятся в смонтированных томах, определенных в конфигурации Docker.
Доступные порты для подключения¶
Следующие порты открыты для доступа к интерфейсу Kasm Workspaces: | Порт | Описание | | :--- | :--- | | 3000 | Основной порт веб-интерфейса. | | kasm_port | Вторичный динамический порт для трафика контейнера. |
Запуск, остановка и обновление¶
Приложение управляется с помощью пользовательских скриптов, предоставляемых в каталоге установки Kasm.
-
Запуск служб:
-
Остановка служб:
-
Управление службой Docker:
-
Демон Docker включен и запущен через systemd:
-
Docker Compose:
-
Docker Compose v1.52 установлен через каталог плагинов CLI.
-
Устаревшая версия Docker Compose v1.42 удалена или заархивирована в
/root/docker-plugin-142/docker-compose.old.