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. Проверьте, что приложение открывается по вашему домену.