Выбор транспорта
Команды make host, host-direct и настройки relay ниже выполняются из полного исходного checkout соответствующей версии. Минимальный архив colloq-deploy.tar.gz не содержит Makefile и всех host-инструментов. Если у вас только архив установки, настройте собственный HTTPS reverse proxy к 127.0.0.1:30080 или получите исходный комплект у владельца.
| Ситуация | Способ | Что нужно |
|---|---|---|
| Свой публичный IP и порты 80/443 | Прямой Caddy | Домен, root и DNS-настройка. |
| Ноутбук или VM за NAT | Свой relay с FRP | Публичный relay с Caddy/frps, исходящее соединение. |
| Короткая демонстрация | Quick Cloudflare tunnel | Доступность Cloudflare из сети аудитории; URL меняется. |
| Постоянный адрес через Cloudflare | Named tunnel | Предварительная настройка tunnel и DNS. |
Проверяйте доступность выбранного транспорта из реальной сети студентов. Cloudflare tunnel может быть недоступен из части российских сетей; постоянное доменное имя само по себе этот маршрут не меняет.
Прямой публичный сервер
Если у машины действительно есть публичный адрес и доступные TCP 80/443, host-инструменты могут настроить Caddy:
sudo make host-direct HOST=seminar.example.eduПодготовьте CF_TOKEN и CF_ZONE для используемой инструментами Cloudflare DNS-настройки. Эти полномочия нужны оператору, не приложению. Caddy работает на хосте как служба и проксирует production на 127.0.0.1:30080.
Свой relay
На отдельной публичной машине один раз настройте Caddy и FRP:
make relay-setup WHERE=root@your-relay
make host HOST=seminar.example.eduПосле relay-setup перенесите выданные параметры RELAY_DOMAIN, RELAY_ADDR, RELAY_PORT и RELAY_TOKEN в операторскую конфигурацию instance. Команда make host выполняется на машине Colloq; она подключается к relay наружу. Для Vast используется этот же транспорт.
Код продолжает исполняться на машине Colloq. Relay обслуживает трафик и становится общей точкой отказа для всех проходящих через него занятий. Следите за его пропускной способностью и ресурсами; размер аудитории проверяйте нагрузочным сценарием.
Cloudflare tunnel
# Временный адрес
make host
# Именованный tunnel: сначала настройка, затем запуск
make tunnel-setup HOST=seminar.example.edu
make host HOST=seminar.example.eduQuick tunnel выдаёт случайный адрес и живёт вместе с процессом. Скрипт сначала получает URL, затем обновляет PUBLIC_URL и перезапускает приложение. Напечатанная ссылка /admin/t/… предназначена только владельцу.
Корректные ссылки
PUBLIC_URL — внешний origin сервера, из которого строятся ссылки. При изменении адреса установленного k3s-instance используйте:
sudo scripts/cluster.sh public-url https://seminar.example.eduНе оставляйте localhost во внешних ссылках. После смены origin браузер может потребовать повторного преподавательского входа. Перед занятием проверьте HTTPS, вход студента, совместную правку, запуск ячейки и открытие файла с другого устройства.
Какие порты не публиковать
Публичный вход должен вести к приложению через HTTPS. Не публикуйте runtime broker 8787, Jupyter 8888, Kubernetes API 6443, kubelet 10250 и Flannel 8472. NodePort 30080 ограничен loopback для host-прокси.
Firewall, защищающий публичные порты, не решает все обращения из Pod к локальному узлу. Прочитайте ограничение NetworkPolicy перед допуском недоверенного кода.