Конфигурация доменов проекта DENKART
Дата создания: 2026-01-08
Последнее обновление: 2026-02-08
Версия проекта: 1.0.0
Статус: ✅ Настроено и работает (🟢 nginx-reverse-proxy — единая точка входа)
Домены проекта
denkart.cdto.life и denkart.cdto.group
- Назначение: Интерфейс управления хостингом (Cockpit)
- Маршрутизация (с 2026-02-08): nginx-reverse-proxy (10.218.14.200:80/443) → Cockpit (10.218.14.1:9090)
- Статус: ✅ Работает
- Важно: В
/etc/cockpit/cockpit.confна хосте вOriginsдолжны быть оба домена (см.config/cockpit/cockpit-denkart.conf).
docs.cdto.life и docs.cdto.group
- Назначение: Интерфейс с документацией проекта
- Маршрутизация (с 2026-02-08): nginx-reverse-proxy (10.218.14.200) → docs-denkart (10.218.14.102:80)
- Статус: ✅ Работает
school.cdto.life
- Назначение: Рабочая версия проекта (BigBlueButton)
- Маршрутизация (с 2026-02-08): nginx-reverse-proxy (10.218.14.200) → BBB-CONT22-1 (10.218.14.37:80)
- Статус: ✅ Работает (требует HTTPS)
Текущая конфигурация (с 2026-02-08)
Маршрутизация
Единая точка входа: nginx-reverse-proxy (10.218.14.200)
Правила iptables:
# Порт 80 → nginx-reverse-proxy (10.218.14.200:80)
# Порт 443 → nginx-reverse-proxy (10.218.14.200:443)
nginx-reverse-proxy маршрутизирует по Host на:
- denkart.cdto.group / .life → Cockpit (10.218.14.1:9090)
- docs.cdto.group / .life → docs-denkart (10.218.14.102:80)
- school.cdto.life → BBB-CONT22-1 (10.218.14.37:80)
Конфигурация Nginx в docs-denkart
Файл: /etc/nginx/sites-enabled/00-denkart-routing.conf
Содержит конфигурацию для всех трех доменов:
- denkart.cdto.life → проксирование на Cockpit (10.218.14.1:9090)
- docs.cdto.life → проксирование на Python веб-сервер (127.0.0.1:8090)
- school.cdto.life → проксирование на BigBlueButton (10.218.14.37:80)
Решение проблемы с маршрутизацией ✅
Проблема решена: Добавлена конфигурация маршрутизации в BBB-CONT22-1, которая проксирует запросы на docs.cdto.life и denkart.cdto.life в контейнер docs-denkart.
Подробности: См. docs/operations/routing-solution.md
Архитектура маршрутизации (с 2026-02-08)
Внешний запрос → Хост (iptables 80/443) → nginx-reverse-proxy (10.218.14.200)
↓
┌───────────────────────────┼───────────────────────────┐
↓ ↓ ↓
denkart.cdto.group/.life docs.cdto.group/.life school.cdto.life
↓ ↓ ↓
Cockpit (10.218.14.1:9090) docs-denkart (10.218.14.102:80) BBB-CONT22-1 (10.218.14.37:80)
При остановке BBB-CONT22-1 остаются доступны denkart и docs.
Проверка работы
Внутри контейнера docs-denkart
# docs.cdto.life
lxc exec docs-denkart -- curl -I http://127.0.0.1:80/ -H "Host: docs.cdto.life"
# Результат: HTTP/1.1 200 OK ✅
# denkart.cdto.life
lxc exec docs-denkart -- curl -I http://127.0.0.1:80/ -H "Host: denkart.cdto.life"
# Результат: HTTP/1.1 200 OK ✅
# school.cdto.life
lxc exec docs-denkart -- curl -I http://127.0.0.1:80/ -H "Host: school.cdto.life"
# Результат: HTTP/1.1 301 (редирект на HTTPS - нормально) ✅
Снаружи
# docs.cdto.life
curl -I http://docs.cdto.life/
# Результат: HTTP/1.1 200 OK ✅
# denkart.cdto.life
curl -I http://denkart.cdto.life/
# Результат: HTTP/1.1 200 OK ✅
# school.cdto.life
curl -I http://school.cdto.life/
# Результат: HTTP/1.1 301 (редирект на HTTPS - нормально) ✅
Если denkart.cdto.group не открывается (порты на роутере проброшены)
-
Проверка с сервера:
curl -sI -k -H "Host: denkart.cdto.group" https://127.0.0.1/— ожидаетсяHTTP/2 200.
curl -sI -k -H "Host: denkart.cdto.group" https://192.168.1.112/— то же (приём на LAN). -
Cockpit Origins: В
/etc/cockpit/cockpit.confна хосте в[WebService]:
Origins = ... https://denkart.cdto.group wss://denkart.cdto.group
Затем:sudo systemctl restart cockpit.socket. -
Доступ из той же сети (NAT hairpinning):
Многие роутеры не отдают свой внешний IP «назад» в LAN. Если вы открываете https://denkart.cdto.group с того же Wi‑Fi/сети, что и сервер, браузер идёт на 89.179.242.240, и запрос может не доходить.
Что сделать: - Проверить с другой сети (мобильный интернет 4G/5G или другой провайдер): открыть https://denkart.cdto.group в браузере.
-
Или с ПК в той же LAN: добавить в
C:\Windows\System32\drivers\etc\hosts(Windows) или/etc/hosts(Linux/macOS) строку:
192.168.1.112 denkart.cdto.group
затем открыть https://denkart.cdto.group (трафик пойдёт на 192.168.1.112 в обход роутера). -
Роутер: Проброс 80 и 443 на 192.168.1.112 (см. ROUTER-SETUP-QUICK-GUIDE.md). Внешний IP роутера должен совпадать с DNS для denkart.cdto.group (89.179.242.240).
Восстановление доступа (denkart.cdto.group / docs.cdto.group недоступны)
Если домены denkart.cdto.group и docs.cdto.group не открываются, выполните по порядку:
1. Запустить контейнеры
lxc start nginx-reverse-proxy
lxc start docs-denkart
lxc list nginx-reverse-proxy docs-denkart
У контейнера nginx-reverse-proxy должен быть IPv4 10.218.14.200. Если после перезагрузки IP нет:
lxc exec nginx-reverse-proxy -- ip addr add 10.218.14.200/24 dev eth0 2>/dev/null
lxc exec nginx-reverse-proxy -- ip route add default via 10.218.14.1 2>/dev/null
2. Развернуть конфиг и сертификаты в nginx-reverse-proxy
Сертификаты в certs-work/ принадлежат root — скрипт запускать с sudo:
sudo /home/cdto/DENKART/scripts/deploy-nginx-reverse-proxy-cdto-group.sh
Скрипт копирует config/nginx/nginx-reverse-proxy-routing.conf в контейнер как 01-routing.conf и сертификаты из /home/cdto/certs-work/ в контейнер.
3. Проверить iptables
Порты 80 и 443 должны направляться в nginx-reverse-proxy (10.218.14.200), а не в BBB (10.218.14.37):
sudo iptables -t nat -L PREROUTING -n -v | grep -E '80|443'
Если для 80/443 указан 10.218.14.37, нужно применить правила проброса на 10.218.14.200 (см. снимки в config/snapshots/ или настройки роутера).
4. Проверка с хоста
# HTTP
curl -sI -H "Host: denkart.cdto.group" http://127.0.0.1/
curl -sI -H "Host: docs.cdto.group" http://127.0.0.1/
# HTTPS (если сертификаты развёрнуты)
curl -sI -k -H "Host: denkart.cdto.group" https://127.0.0.1/
curl -sI -k -H "Host: docs.cdto.group" https://127.0.0.1/
Ожидается ответ с кодом 200 или 301/302.
5. Cockpit (только для denkart.cdto.group)
В /etc/cockpit/cockpit.conf на хосте в [WebService] должны быть:
Origins = https://denkart.cdto.group wss://denkart.cdto.group https://denkart.cdto.life wss://denkart.cdto.life
Затем: sudo systemctl restart cockpit.socket.
6. Доступ из той же сети (NAT)
Если сервер и клиент в одной LAN, роутер может не отдавать свой внешний IP «назад». Проверьте с другой сети (мобильный интернет) или добавьте в hosts на клиенте: 192.168.1.112 denkart.cdto.group docs.cdto.group.
Следующие шаги
- ⏳ Получить SSL сертификаты для всех доменов
- ⏳ Настроить HTTPS для всех доменов
- ⏳ Настроить автоматическое обновление SSL сертификатов
Статус: ✅ Конфигурация создана, маршрутизация настроена и работает