Перейти к содержанию

Обзор развертывания 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/

Процесс установки приложения

Установка выполняется путем загрузки конкретного архива релиза, его распаковки и запуска скрипта установки с определенными параметрами.

  1. Загрузка архива релиза: Источник установки извлекается из официального репозитория статического контента Kasm.

    https://kasm-static-content.s3.amazonaws.com/kasm_release_1.17.0.bbc15c.tar.gz
    

  2. Распаковка архива: Архив распаковывается в каталог /root/.

    tar -xf kasm_release_1.17.0.bbc15c.tar.gz
    

  3. Выполнение скрипта установки: Скрипт 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.

  • Запуск служб:

    /opt/kasm/bin/start
    

  • Остановка служб:

    /opt/kasm/bin/stop
    

  • Управление службой Docker:

  • Демон Docker включен и запущен через systemd:

    systemctl start docker
    systemctl enable docker
    

  • Docker Compose:

  • Docker Compose v1.52 установлен через каталог плагинов CLI.

  • Устаревшая версия Docker Compose v1.42 удалена или заархивирована в /root/docker-plugin-142/docker-compose.old.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×