Что нужно
Получите доступ к закрытому репозиторию у владельца и скачайте исходный код. Установите Docker с работающим daemon и инструменты, указанные в репозитории. Для host-разработки нужен Node.js, совместимый с проектом, npm и зависимости из lockfile. Production-процедура через k3s описана отдельно.
Перед запуском изучите .env.example. Пример ограничивает локальную публикацию адресом 127.0.0.1. Без BIND_ADDR development-сервер и Compose-порт по умолчанию доступны на всех интерфейсах, включая Wi-Fi.
Быстрый запуск в Docker
make upКоманда создаёт локальную конфигурацию, собирает образ ядра и запускает приложение. Каждая комната получает собственный контейнер; общего instance-wide Jupyter нет. Откройте приложение на http://localhost:3000 и завершите настройку владельца.
Данные и файлы находятся в локальных data/ и workspace/. Development backend имеет доступ к Docker socket; используйте его для доверенной локальной разработки, а не как production-границу безопасности.
Приложение на хосте
npm ci
make dev
NODE_ENV=development KERNEL_BACKEND=docker npm run devmake dev готовит образ комнатного ядра; приложение запускается следующей командой. Для native macOS дополнительно требуется явное разрешение локального режима файлов:
COLLOQ_UNSAFE_DEV_FILES=1 NODE_ENV=development \
KERNEL_BACKEND=docker npm run devЭтот opt-in не предоставляет защищённую Linux-работу с файлами через /proc/self/fd и запрещён в production. Для сборки и запуска host-сервера есть make run.
Development-окружения
make env-list
make env-new NAME=nlp
# Измените требования в kernel/environments/
make env-build NAME=nlp
make env-use NAME=nlpЭто команды Docker-разработки. В production окружения публикуются заранее и выбираются из digest-каталога, как описано в руководстве окружений.
Тексты интерфейса
Парные переводы находятся в shared/locales/: admin.ts, room.ts, server.ts и common.ts. Добавляйте русский и английский варианты под одним ключом, а в месте показа вызывайте tr(key, params) из shared/i18n.ts. Подставляйте имена и другие переменные параметрами; для счётчиков используйте формы множественного числа, для дат и чисел — общие функции форматирования.
В Svelte перевод должен вычисляться реактивно при показе: перевод, сохранённый в константу при загрузке модуля, не обновится. Для нативных элементов редактора есть подписка на смену языка; пересоздавать весь редактор ради подписи не нужно. Служебные значения протокола, имена файлов и пользовательские тексты через переводчик не пропускаются. Проверка tests/i18n.test.mts сверяет наличие обоих языков и совпадение параметров; поведение переключателя проверяют тесты instance-language, admin-language и language-room.
Проверки изменений
npm run typecheck
npm test
npm run buildЗапускайте также относящиеся к изменению интеграционные сценарии из tests/README.md. Локальный green test не заменяет deployment smoke, сетевые проверки, backup/restore и реальную GPU-операцию на целевой VM.
Если ядро не запускается, проверьте Docker daemon, наличие образа, права на socket и пути workspace. Не подставляйте один общий Jupyter endpoint как временную замену отдельным комнатам.