Чек-лист: Фаза 5 — веб-сервер и SSL для lms.cdto.life

Проект: Установка Moodle 4.5 (LTS) на lms.cdto.life
Задачи Redmine: #6, #47, #48, #49
План: moodle-installation-plan.md
Промежуточная версия: INTERMEDIATE-WORKING-VERSION-2026-02-12.md


Текущее состояние (на 12.02.2026)

Фаза 5 реализована в промежуточной рабочей версии 2026-02-12: виртуальный хост, маршрутизация и доступ по HTTPS работают.


1. Виртуальный хост lms.cdto.life в контейнере moodle — задача #47

Конфиг в репозитории: config/nginx/moodle-lms-cdto-life.conf

Проверка Действие Статус
1.1 Конфиг содержит server_name lms.cdto.life, root /var/www/moodle, PHP-FPM (php8.1-fpm.sock), map X-Forwarded-Proto → HTTPS ✅ В репозитории
1.2 В контейнере moodle конфиг задеплоен в /etc/nginx/sites-available/, symlink в sites-enabled Проверить: lxc exec moodle -- ls -la /etc/nginx/sites-enabled/
1.3 Nginx в контейнере перезагружен после деплоя lxc exec moodle -- systemctl reload nginx при изменении конфига

Деплой конфига в контейнер moodle (при необходимости):

lxc file push config/nginx/moodle-lms-cdto-life.conf moodle/etc/nginx/sites-available/moodle
lxc exec moodle -- ln -sf /etc/nginx/sites-available/moodle /etc/nginx/sites-enabled/
lxc exec moodle -- nginx -t && lxc exec moodle -- systemctl reload nginx
  • [ ] Виртуальный хост настроен и активен в контейнере moodle

2. Маршрутизация в Nginx/HAProxy (BBB) — задача #48

Точка входа: трафик 80/443 приходит в контейнер BBB-CONT22-1 (HAProxy → Nginx:8443).

Проверка Конфиг Статус
2.1 HAProxy: acl host_lms hdr(host) -i lms.cdto.life и use_backend nginx-8443 if ... host_lms ✅ config/snapshots/haproxy-bbb-2026-01-23.cfg
2.2 Nginx в BBB: server_name lms.cdto.life на 127.0.0.1:8443, proxy_pass http://10.218.14.104:80, X-Forwarded-Proto https ✅ config/nginx/bbb-https-routing.conf
2.3 Конфиги задеплоены в BBB-CONT22-1 (haproxy.cfg, nginx sites) Проверить на сервере при изменении
  • [ ] Маршрутизация lms.cdto.life → 10.218.14.104:80 через BBB настроена

3. SSL для lms.cdto.life — задача #49

Где терминация SSL: в контейнере BBB-CONT22-1 на порту 443 (HAProxy: bind *:443 ssl crt /etc/haproxy/certs/).

Вариант Описание
A В /etc/haproxy/certs/ в BBB уже есть сертификат, включающий lms.cdto.life (SAN или отдельный файл) — тогда HTTPS для lms.cdto.life работает без предупреждений.
B Используется общий сертификат (например denkart.cdto.group или school.cdto.life) — браузер может показывать предупреждение о несовпадении имени. Выпустить отдельный сертификат Let's Encrypt для lms.cdto.life и добавить в HAProxy.

Выпуск Let's Encrypt для lms.cdto.life (если нужен отдельный сертификат):

  • HTTP-01 (порт 80 доступен): на хосте выполнить
    sudo /home/cdto/DENKART/scripts/issue-lms-cdto-life-cert.sh
    Скрипт освобождает порт 80 в BBB, запускает certbot --standalone, копирует сертификат в /etc/haproxy/certs/lms.cdto.life.pem и перезагружает HAProxy.
  • DNS-01 (порт 80 недоступен): пошагово в ssl-lms-cdto-life.md (ручной DNS или плагин Cloudflare).

См. также: ssl-lms-cdto-life.md, ssl-school-cdto-life.md.

  • [ ] SSL для lms.cdto.life: сертификат валиден ИЛИ предупреждение зафиксировано для последующей настройки

4. Проверка доступности

  • Открыть https://lms.cdto.life в браузере — главная или страница входа Moodle.
  • Проверить: http://lms.cdto.life → редирект на https://lms.cdto.life (блок server 80 в bbb-https-routing.conf).

  • [ ] https://lms.cdto.life открывается без циклического редиректа

  • [ ] Страница входа Moodle отображается

Связанные документы: План установки Moodle 4.5, Промежуточная рабочая версия 2026-02-12, Отчёт по маршрутизации.