Техническая инструкция по базовой установке и настройке

Unicraft uLearn BOX можно установить на любую операционную систему. Однако, официально поддерживаемой является Ubuntu 24.04. Это значит, что именно на этой ОС наша платформа гарантированно работоспособна.

Выполнение следующих шагов предполагается в bash-консоле (если прямо не указано обратного).

Шаг 1. Установите docker и docker-compose.

Шаг 2. Выполните авторизацию в Docker Repository от Unicraft:

docker login <адрес сервера>
Username: <имя пользователя>
Password: <пароль>

Адрес сервера, имя пользователя и пароль будут предоставлены Вашим персональным менеджером.

Шаг 3. Получите ссылку на образ:

  • Через веб-браузер зайдите на адрес сервера (из предыдущего шага);
  • Введите имя пользователя и пароль (из предыдущего шага);
  • Откройте единственный доступным Вам проект (ему присвоен идентификатор, соответствующий названию Вашей организации);
  • Откройте единственный доступный Вам репозиторий;
  • В списке docker-образов отметьте галочкой слева последний по дате (поле Push Time);
  • Нажмите на Copy Pull Command и в раскрытом списке нажмите на иконку копирования слева от надписи Docker;
  • Теперь команда на получение образа приложения Unicraft uLearn находится в буфере обмена.

Шаг 4. Скачайте образ приложения Unicraft uLearn:

docker pull <ссылка на образ>

При успешном сценарии консоль выведет следующую строчку:

Status: Downloaded newer image for <ссылка на образ>

Шаг 5. Сохраните ссылку на образ (идентификатор образа) для последующих шагов;

Шаг 6. Создайте папку приложения, мы рекомендуем выбрать /opt/unicraft (далее в инструкции мы будем отталкиваться от неё)

Шаг 7. Создайте папки для nginx (веб-сервер) и rethinkdb (база данных):

mkdir /opt/unicraft/nginx
mkdir /opt/unicraft/rethinkdb

Шаг 8. Создайте папки, где будут храниться файловые данные Unicraft:

mkdir /opt/unicraft/build
mkdir /opt/unicraft/lms_resources

Шаг 9. Создайте ключи безопасности (обратите внимание, что папка /opt/unicraft/.uclms/keys должна быть предварительно создана):

openssl ecparam -name secp521r1 -genkey -noout -out /opt/unicraft/.uclms/keys/uclms.pem
openssl ec -in /opt/unicraft/.uclms/keys/uclms.pem -pubout -outform PEM -out /opt/unicraft/.uclms/keys/uclms.pub.pem

Шаг 10. По желанию, добавьте TLS-сертификаты в папку /opt/nginx/certs/_ВАШ ДОМЕН_ (их можно получить от Let’s Encrypt с помощью утилиты certbot)

Шаг 11. Создайте конфигурацию nginx (предлагаем разместить её в /opt/unicraft/nginx/_ВАШ ДОМЕН_.conf):

upstream unicraft_service {
  server unicraft:23000;
} 

server {
  listen 80;
  server_name _ВАШ ДОМЕН_;
  return 301 https://_ВАШ ДОМЕН_$request_uri;
}

server {
  listen 443 ssl;
  server_name _ВАШ ДОМЕН_;
  
  ssl_certificate /etc/nginx/certs/_ВАШ ДОМЕН_/fullchain.pem;
  ssl_certificate_key /etc/nginx/certs/_ВАШ ДОМЕН_/privkey.pem;
  ssl_trusted_certificate /etc/nginx/certs/_ВАШ ДОМЕН_/chain.pem;
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';

  set $root /opt/unicraft/build;
  set $resources /opt/unicraft/lms_resources;

  location /static {
    root $root;
    access_log off;
    expires 10m;
  }

  location /courses_resources {
    root $resources;
    internal;
  }
  
  location /public_resources {
    alias $resources/public;
    access_log off;
  }

  location /certs {
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_pass http://unicraft_service/api/v2/certs;
  }

  location / {
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_pass http://unicraft_service;
  }
}

Данная конфигурация подразумевает наличие TLS-сертификатов.

Шаг 12. Создайте конфигурацию docker-compose (предлагаем разместить её в /opt/unicraft/docker-compose.yml):

version: "3"
services:
  nginx:
    image: nginx:latest
    volumes:
      - "/opt/unicraft/nginx/_ВАШ ДОМЕН_.conf:/etc/nginx/conf.d/_ВАШ ДОМЕН_.conf:ro"
      - "/opt/unicraft/nginx/.htpasswd:/etc/nginx/.htpasswd:ro"
      - "/opt/unicraft/nginx/certs:/etc/nginx/certs:ro"
      - "/opt/unicraft/lms_resources:/opt/unicraft/lms_resources:ro"
      - "/opt/unicraft/build:/opt/unicraft/build:ro"
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - unicraft
      - rethinkdb

  unicraft:
    image: _ЗДЕСЬ УКАЖИТЕ ССЫЛКУ НА ОБРАЗ_
    volumes:
      - "/opt/unicraft/lms_resources:/lms/lms_resources" 
      - "/opt/unicraft/.uclms:/lms/.uclms:ro"
      - "/opt/unicraft/build:/lms/build"
      - "/opt/unicraft/lms_resources:/ulearn/lms_resources"
      - "/opt/unicraft/.uclms:/ulearn/.uclms:ro"
    ports:
      - "23000:23000"
    environment:
      - RETHINKDB_HOST=rethinkdb
      - RETHINKDB_PORT=28015
      - BEANSTALKD_HOST=beanstalkd
      - BEANSTALKD_PORT=11300
    depends_on:
      - rethinkdb
      - beanstalkd

  rethinkdb:
    image: rethinkdb:2.4.0
    volumes:
      - "/opt/unicraft/rethinkdb:/data/rethinkdb_data"

  beanstalkd:
    image: "schickling/beanstalkd:latest"

  postgresql:
    image: postgres:latest
    environment:
      POSTGRES_DB: pglms
      POSTGRES_USER: pglms
      POSTGRES_PASSWORD: _УКАЖИТЕ ПАРОЛЬ ДЛЯ POSTGRESQL_
    volumes:
      - "/opt/unicraft/postgresql:/var/lib/postgresql/data"

  redis:
    image: redis:latest
    volumes:
      - "/opt/unicraft/redis:/data"

❗️Обратите внимание, что пароль для PostgreSQL должен представлять собой MD5-хэш, рассчитанный на основе идентификатора (ID) платформы.

Идентификатор (ID) Вашей платформы хранится в специальном реестре платформ, его можно получить у Вашего персонального менеджера.

Также настоятельно рекомендуем не открывать внешний доступ к PostgreSQL ни при каких условиях.

Шаг 13. Запустите приложение:

docker-compose up -d

Шаг 14. Проверьте, что приложение открывается по вашему домену.

Получите бесплатную консультацию по выбору обучающей платформы

Или позвоните по телефону 8 (800) 350-24-43

consult_man

Unicraft © 2016-2024 Все права защищены.