Студент не может войти
Проверьте, что выдана ссылка /s/…, а не главная страница сервера или административный ключ. Если адрес содержит localhost или 127.0.0.1 (на k3s так бывает после остановки make host), исправьте публичный адрес: на k3s-сервере — командой sudo scripts/cluster.sh public-url https://… (см. корректные ссылки), на локальном занятии — выдайте ссылку из colloq host. Проверьте HTTPS и доступ с другой сети, затем состояние relay/tunnel. Доступ преподавателя из своей сети не доказывает доступность из аудитории.
Кнопка недоступна
Прочитайте сообщение интерфейса. Проверьте завершение занятия, правила комнаты и замок отдельной ячейки. «Запускать код» ограничивает также файлы и терминал. Преподаватель может продолжить занятие или изменить нужное правило; переустановка сервера здесь не поможет.
Тетрадь открылась, а Python не запускается
sudo scripts/cluster.sh status
sudo scripts/cluster.sh logs
sudo k3s kubectl -n colloq get pods
sudo k3s kubectl -n colloq get events --sort-by=.lastTimestampПроверьте, работает ли брокер, доступен ли закреплённый image digest, хватает ли CPU/памяти/GPU и корректен ли mount workspace. ImagePullBackOff обычно требует проверки registry и прав, Pending — причин планирования в событиях. Память комнаты резервируется целиком, поэтому Insufficient memory в событиях значит, что узлу не хватает памяти, уже обещанной комнатам: уменьшите память этой или соседних комнат в разделе «Ресурсы» (см. ресурсы комнаты). Такой Pod брокер ждёт 20 секунд, затем удаляет его и сообщает причину в комнату: преподаватель видит, сколько памяти, ядер или какой видеокарты не нашлось, студенты — короткое сообщение без подробностей. В журнале приложения это строка did not start … [unschedulable: memory] (или cpu, gpu, other). Health брокера проверяет доступ к API, а не весь путь исполнения.
Не заменяйте недоступную ревизию другой без осознанного решения и не подключайте комнаты к общему Jupyter. После устранения причины выполните sudo scripts/cluster.sh smoke и настоящую ячейку через приложение.
На сервере с готовым образом начните с colloq-host status и colloq-host logs, см. «Наблюдение, журналы и перезагрузка».
На локальном занятии (pip install colloq) начните с colloq doctor: он проверяет программы, Docker, порт, образ ядра, файлы и место на диске. Журнал занятия показывает colloq logs, контейнеры комнат — docker ps --filter name=colloq-room-. Если комната пишет, что не удалось закрыть ей доступ к локальным адресам, Docker не пустил короткий привилегированный контейнер, который ставит этот запрет; причину называет само сообщение, а про запрет и выход COLLOQ_ROOM_NETWORK=open рассказывает раздел «Занятие на своём компьютере».
NameError или изменившиеся данные
Возможно, не выполнена подготовительная ячейка, ядро перезапустилось или другой участник изменил общие значения. Проверьте порядок запуска. В Консилиуме каждая попытка работает с личными копиями данных, а между попытками в ядре тетради сохраняются файлы, настройки модулей и то, что скопировать не вышло, — о последнем попытка читает строкой в своём выводе. В пуле на машинах попытка считается на снимке тетради: ячейки, выполненные после снимка, она не видит, и её карточка говорит, каких ячеек в снимке нет («состояние 14:05 — без ячеек 8–9»).
Не устанавливается пакет или не скачиваются данные
В production исходящая сеть ядра по умолчанию ограничена DNS, а root filesystem защищён от записи. Подготовьте библиотеку в образе окружения, а данные загрузите в комнату или используйте одобренный оператором outbound-профиль. Не отключайте сетевую защиту всего namespace ради одного импорта.
На локальном занятии интернет комнатам открыт, а локальные адреса — нет: зеркало пакетов, база данных или сервер с данными в вашей сети недоступны, и соединение сразу получает отказ. Положите данные в комнату или, если занятие доверенное, допишите в .env строку COLLOQ_ROOM_NETWORK=open и перезапустите (см. «Занятие на своём компьютере»).
CUDA недоступна
Проверьте драйвер гостевой VM, NVIDIA RuntimeClass, allocatable devices, наличие свободного устройства и GPU-метаданные каталога. CPU-окружение само не становится GPU-окружением. Поставляемые GPU-окружения несут torch 2.14.1, собранный под CUDA 13.0, которому нужен драйвер 580 или новее: версию драйвера и его CUDA nvidia-smi пишет в шапке, а на старом драйвере PyTorch импортируется, но torch.cuda.is_available() возвращает False.
nvidia-smi
sudo k3s kubectl get runtimeclass
sudo k3s kubectl describe node
sudo scripts/cluster.sh gpu-preflightЕсли GPU занят комнатой, preflight не выселяет её. Повторите проверку в согласованное время со свободной картой. Реальное выполнение CUDA необходимо даже при корректном nvidia-smi.
Оракул молчит
Проверьте выбор оракула при создании, лимит участника, паузу между вопросами и статус завершения занятия. Новый участник может спросить оракула только через две минуты после входа. У комнаты есть общий часовой потолок вопросов, а одновременно она ведёт не больше 12 запросов к оракулу. Текст отказа называет причину и время повтора; на преподавателя эти ограничения не действуют. Владелец проверяет provider URL, модель, ключ и доступ приложения к API. Ошибка провайдера не означает поломку Python-ядра. Не отправляйте секреты в диагностический чат.
Заканчивается диск
Проверьте раздел с /var/lib/colloq и место под резервные копии. Upload-лимиты приложения не являются квотой для Python. Сначала определите источник роста, сохраните нужные материалы и только затем очищайте данные. Не удаляйте вручную каталог активной комнаты или образы, на которые ссылается каталог.
Запуск заблокирован после restore
Проверьте сообщение о .restore-in-progress. Повторите тот же проверенный restore с флагами recovery, описанными в руководстве. Снятие маркера вручную может запустить приложение над частично восстановленными данными.
На странице занятия нет файла или новых правок
Страница — снимок комнаты на момент публикации. Правки, сделанные после неё, попадут на страницу при следующем завершении занятия, если включено «Обновлять страницу при каждом «Завершить занятие»», или по кнопке «Обновить страницу». Новые тетради и файлы сами не добавляются: отметьте их на экране «Страница занятия», там они помечены «новая». Если страница не обновилась после завершения, посмотрите раздел «Проверка»: новый ключ, имя или адрес комнаты в файле останавливает обновление. Снятую страницу возвращает преподаватель; права комнаты /s/… от этого не меняются.
Что приложить к сообщению о проблеме
Укажите версию, время, шаги воспроизведения, ожидаемый и фактический результат. Версию установленного выпуска показывает sudo python3 scripts/release.py field --release /var/lib/colloq/releases/current.json --field version, версию локального пакета — colloq --version. Добавьте статус компонентов и относящиеся к сбою события. Уберите административные ссылки, ключи, персональные данные и ненужный вывод ячеек. На Vast используйте NAME=hse SINCE=30m scripts/vast.sh logs; логи удалённых Pod могут уже отсутствовать.
Состояние подсистем
/api/health отдельно сообщает доступность исполнения соревнований и подготовки пакетов в поле capabilities. Недоступный дополнительный исполнитель не означает отказ работающей комнаты.
Преподавателю доступен GET /api/instance/operations: возраст очередей, активные попытки и повторы, ошибки очистки, резервирование памяти и диска, размеры артефактов, задержка и ошибки сохранения документов, восстановление Docker. Это счётчики и состояния без содержимого тетрадей и секретов. Счётчики ошибок процесса обнуляются после перезапуска; размеры хранилища и очереди читаются из текущего состояния.
Временная недоступность Docker проверяется повторно автоматически. Удаление преподавателя или обновление его ссылки отзывает также уже открытые соединения. Выключение режима AI-агента останавливает дальнейшие действия текущего хода; выполненные ранее изменения можно отменить.