Unicraft uLearn BOX можно установить на любую операционную систему. Однако, официально поддерживаемой является Ubuntu 24.04. Это значит, что именно на этой ОС наша платформа гарантированно работоспособна.
Шаг 1. Установите docker и docker-compose.
Шаг 2. Создайте папку приложения, мы рекомендуем выбрать /opt/unicraft (далее в инструкции мы будем отталкиваться от неё)
Шаг 3. Создайте папки для nginx (веб-сервер) и rethinkdb (база данных):
mkdir /opt/unicraft/nginx
mkdir /opt/unicraft/rethinkdb
Шаг 4. Создайте папки, где будут храниться файловые данные Unicraft:
mkdir /opt/unicraft/build
mkdir /opt/unicraft/lms_resources
Шаг 5. Создайте ключи безопасности (обратите внимание, что папка /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
Шаг 6. По желанию, добавьте TLS-сертификаты в папку /opt/nginx/certs/_ВАШ ДОМЕН_ (их можно получить от Let’s Encrypt с помощью утилиты certbot)
Шаг 7. Создайте конфигурацию 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-сертификатов.
Шаг 8. Создайте конфигурацию 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: _ЗДЕСЬ УКАЖИТЕ ПРЕДОСТАВЛЕННЫЙ НАМИ DOCKER-ОБРАЗ_
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"
Шаг 9. Запустите приложение:
docker-compose up -d
Шаг 10. Проверьте, что приложение открывается по вашему домену.