Установка Citeck c помощью Docker Compose

Системные требования

  • Установлен Docker

  • Установлен Docker Compose

  • 16 ГБ ОЗУ для корректного запуска Citeck

Установка и запуск Citeck Community

Важно

Комплект поставляется с предзаполненными демонстрационными данными.

Для отключения данной настройки перед разворачиванием стенда перейдите в папку \services\environments, в файле demo_data.env в настройке WITH_DEMO_DATA укажите false.

Мы анонимно собираем статистику с использованием сервиса Umami. Сервис не собирает и не хранит персональные данные, избегая необходимости использования файлов cookie.

  1. Установите Docker и Docker Compose на вашу ОС.

  2. Клонируйте репозиторий:

    git clone https://github.com/citeck/citeck-community.git
    
  3. Перейдите в папку с клонированным репозиторием:

    cd /полный/путь/до/папки
    
  4. Запустите Citeck:

    docker-compose up -d
    
  5. Подождите, пока система запустится (время зависит от мощности системы).

  6. Откройте браузер и перейдите по адресу: http://localhost/

  7. Войдите в систему:

    ../../_images/09.png
    Username: admin
    Password: admin
    

    Если необходимо сменить пароль, см. инструкцию Keycloak.

    Примечание

    При первом развёртывании без демонстрационных данных Keycloak попросит сменить пароль.

  8. После входа станет доступна страница персонального рабочего пространства:

    ../../_images/11.png

    В левом верхнем углу доступна кнопка для выбора рабочих пространств и создания нового:

    ../../_images/11_1.png

Подробнее о:

Примечание

При первом запуске в течение первых 5 минут после успешной установки и входа в систему могут возникать ошибки, например:

../../_images/081.png

Развёртывание и запуск Citeck продолжается — необходимо подождать.

Обновление до последнего релиза

Выполните следующие команды в терминале:

  1. Остановите Citeck:

    docker-compose down
    
  2. Перейдите в папку citeck-community:

    cd /полный/путь/до/папки/citeck-community
    
  3. Получите актуальную версию:

    git pull
    
  4. Загрузите последние версии образов:

    docker-compose pull
    
  5. Запустите Citeck:

    docker-compose up -d
    

Подготовка окружения и установка Citeck

Установите Docker:

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Добавьте репозиторий в источники Apt:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Установите последнюю доступную версию:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Или установите конкретную версию:

apt-cache madison docker-ce | awk '{ print $3 }'
VERSION_STRING={Your Specific version}
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING \
    containerd.io docker-buildx-plugin docker-compose-plugin

Настройте автозапуск Docker:

sudo systemctl enable docker

Установите Docker Compose:

curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" \
    -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Проверьте установку:

docker-compose --version

На этом установка Docker Engine и Docker Compose завершена.

Клонируйте репозиторий и запустите Citeck:

wget https://github.com/Citeck/citeck-community/archive/refs/heads/master.zip
unzip master.zip
cd citeck-community-master
docker-compose pull
docker-compose up -d

Примечание

Выполняйте команды из директории citeck-community-master.

Если локальная сеть может пересекаться с сетью Docker, задайте предопределённую подсеть в файле /etc/docker/daemon.json (переменная default-address-pools):

{
    "default-address-pools": [
        {"base": "172.19.0.0/16", "size": 24}
    ]
}

Переключение на BASIC аутентификацию вместо Keycloak

Если нужен простой способ настройки доступа в систему, минуя Keycloak, можно настроить BASIC Auth (не рекомендуется для production-сред).

  1. Откройте файл ecos-proxy-app.env:

    nano citeck-community-master/services/environments/ecos-proxy-app.env
    

    Замените строку:

    ENABLE_OIDC_FULL_ACCESS=true
    

    на:

    ENABLE_OIDC_FULL_ACCESS=false
    
  2. В этом же файле добавьте:

    BASIC_AUTH_ACCESS=admin:admin,fet:fet
    

    Примечание

    admin:admin,fet:fet — список пользователей, имеющих доступ в систему. Формат: {{пользователь_0}}:{{пароль_0}},{{пользователь_1}}:{{пароль_1}}. После изменения файла необходимо перезапустить контейнер ecos-proxy-app, чтобы изменения вступили в силу.

  3. Из директории citeck-community-master остановите проект:

    docker-compose down
    
  4. Запустите проект:

    docker-compose up -d
    

Данные для входа в Citeck:

Username: admin
Password: admin

Сервисы Docker

По ссылке перечислены сервисы с точки зрения Docker и их настройки.

Примечание

Некоторые контейнеры запускаются один раз и далее находятся в статусе exited, например:

  • citeck-community-master-ecos-meetings-ecos-apps-1

  • citeck-community-master-ecos-order-pass-ecos-apps-1

  • citeck-community-master-ecos-common-data-list-ecos-apps-1

  • citeck-community-master-ecos-assignments-ecos-apps-1

Возможные проблемы

Windows

Включение WSL 2

Docker Desktop использует функцию динамического распределения памяти в WSL 2, что значительно снижает потребление ресурсов. WSL 2 улучшает совместное использование файловой системы, время загрузки и предоставляет доступ к новым функциям Docker Desktop.

  1. Включите компонент Платформа виртуальных машин в PowerShell:

    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    
  2. Скачайте и установите пакет обновления ядра Linux для WSL 2 (64-разрядные компьютеры).

  3. Задайте WSL 2 версией по умолчанию:

    wsl --set-default-version 2
    
  4. Проверьте версию WSL:

    wsl --list --verbose
    

    Подробная инструкция: docs.microsoft.com — установка WSL 2

  5. При установке Docker в окне конфигурации установите галочку Use WSL 2 instead of Hyper-V (recommended).

    Подробная инструкция: docs.docker.com — Docker Desktop WSL 2

Порт 8080 уже занят

Citeck UI использует порт 8080. Если он занят другой программой, появится ошибка:

«Error starting userland proxy: listen tcp 0.0.0.0:8080: bind: Only one usage of each socket address is normally permitted.»

../../_images/012.png

Чтобы найти, какой процесс занимает порт, выполните:

netstat -ono
# или
netstat -ono | findstr 8080

Если команда не находит виновника, воспользуйтесь сторонней утилитой, например CurrPorts.

Порт зарезервирован Windows

Некоторые порты (например, 50432, используемый ecos-postgres) могут быть зарезервированы Windows. Проверьте зарезервированные диапазоны:

netsh int ipv4 show excludedportrange protocol=tcp
../../_images/022.png

Если нужный порт попадает в зарезервированный диапазон, появится ошибка:

«Cannot start service ecos-postgres: driver failed programming external connectivity on endpoint»

Чтобы исправить это, выполните в командной строке с повышенными правами:

  1. Отключите Hyper-V и перезагрузите систему:

    dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
    
  2. Добавьте нужный порт в исключения:

    netsh int ipv4 add excludedportrange protocol=tcp startport=50432 numberofports=1
    
  3. Включите Hyper-V обратно и перезагрузите систему:

    dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
    

После перезагрузки порт попадёт в исключения и ошибка не возникнет.

Настройка дополнительных параметров WSL

Настройка глобальных параметров WSL

MacOS

Запускаются не все контейнеры

Если при разворачивании приложения в Docker запускаются не все контейнеры:

../../_images/061.png

Добавьте путь /opt в настройках Docker:

../../_images/071.png

How to

Изменить адрес с localhost на пользовательский домен

С чистой БД

  1. В файле citeck-community/services/environments/ecos-identity-app.env замените:

    KEYCLOAK_FRONTEND_URL=http://localhost/ecos-idp/auth
    

    на:

    KEYCLOAK_FRONTEND_URL=http://mydomain.ru/ecos-idp/auth
    
  2. В файле citeck-community/services/environments/ecos-proxy-app.env замените:

    EIS_ID=citeck-community
    REDIRECT_LOGOUT_URI=http://localhost
    

    на:

    EIS_ID=mydomain.ru
    REDIRECT_LOGOUT_URI=http://mydomain.ru
    
  3. В файле citeck-community/services/configs/ecos-identity-app/realm-export.json замените:

    "redirectUris": [
        "http://localhost*"
    ]
    

    на:

    "redirectUris": [
        "http://mydomain.ru*"
    ]
    

    Примечание

    Шаги 3 и 4 имеют смысл только при разворачивании на чистых БД.

  4. В файле citeck-community/services/configs/ecos-identity-app/realm-export.yaml замените:

    "redirectUris": [
        "http://localhost*"
    ]
    

    на:

    "redirectUris": [
        "http://mydomain.ru*"
    ]
    
  5. Добавьте запись в файл hosts:

    127.0.0.1 mydomain.ru
    

Не с чистой БД

  1. Войдите в панель администратора Keycloak.

  2. Откройте реалм ecos-app.

  3. Перейдите в раздел Clients.

  4. Откройте ecos-proxy-app.

  5. В поле Valid Redirect URIs замените http://localhost на http://mydomain.ru.

  6. Сохраните изменения.

Исключить адрес из авторизации Keycloak

Временно это можно сделать на уровне модификации ecos-proxy-app.

Зайдите в контейнер:

docker-compose exec ecos-proxy-app /bin/bash

Отредактируйте конфигурационный файл:

/etc/nginx/conf.d/default.conf

Перезагрузите nginx:

nginx -s reload

На постоянной основе это возможно только путём сборки собственной версии контейнера ecos-proxy-app или путём отправки Pull Request с возможностью передавать незащищаемые URL в качестве параметра.