Аутентификация и безопасность
Доступ к CodeNomad позволяет выполнять работу на серверном хосте через OpenCode. Считайте пароли сервера, браузерные сессии и сопряжённые устройства мощными учётными данными. CodeNomad — не многопользовательская песочница выполнения.
Выбор аутентификации сервера
| Способ | Время жизни и область |
|---|---|
--password или CODENOMAD_SERVER_PASSWORD |
Переопределение, переданное при запуске процесса серверной части. Нужно снова при каждом запуске; не сохраняется. Имеет приоритет над управляемым файлом пароля. |
| Пароль в настройках | Сохраняет хэш scrypt с солью в auth.json рядом с активной конфигурацией YAML. Используется при следующих запусках, если при запуске не передан другой пароль. |
--generate-token |
Включает локальную одноразовую начальную настройку; напечатанный токен действует 60 секунд. Это не повторно используемый API-токен и не ссылка удалённого управления. |
| Сопряжение удалённого управления | Отдельная аутентификация cookie устройства, управляемая с хоста; см. удалённое управление. |
Имя пользователя по умолчанию — codenomad. Сохранённый файл аутентификации сохраняет имя; изменение только --username не переименовывает эту идентичность. Без настроенного пароля, режима начальной настройки или явно пропущенной аутентификации сервер отказывается запускаться.
Предпочитайте защищённое окружение/секрет службы встраиванию пароля в аргументы команд или историю оболочки. Любой, кто может изучить окружение процесса или каталог конфигурации, всё равно может скомпрометировать развёртывание.
Начальная настройка постоянного пароля
- Запустите локально, не передавая пароль при запуске. Для настройки через loopback без предварительного сертификата используйте
codenomad --host 127.0.0.1 --https=false --http=true --generate-token --launch. - На компьютере серверной части откройте
/auth/tokenпо напечатанному Local Connection URL и отправьте значение послеCODENOMAD_BOOTSTRAP_TOKEN:. Не делитесь этим выводом. - Откройте Настройки → Удалённый доступ → Прямой доступ (локальная сеть, для опытных) → Пароль сервера.
- Выберите Установить пароль, заполните Новый пароль и Подтвердите пароль минимум восемью символами, затем Сохранить пароль.
- При следующем запуске уберите
--generate-tokenи используйте сохранённый пароль для прямых подключений. Перед включением удалённого доступа настройте доверенный HTTPS; команда настройки loopback HTTP не предназначена для удалённого развёртывания.
Начальная настройка принимается только с собственного loopback-слушателя хоста, не от LAN-клиента или входа удалённого управления. Оставьте стандартную loopback-привязку для настройки. Истёкший или использованный токен требует нового запуска начальной настройки. Если постоянный пароль уже есть, сессия настройки позволяет выбрать Изменить пароль.
auth.json управляется приложением; не правьте хэш вручную и не публикуйте файл. Если пароль пришёл из CLI/окружения, настройки отказываются заменять его: перезапустите без переопределения для существующего управляемого пароля или задайте его локальной начальной настройкой. Нечитаемый/незаписываемый файл требует исправления прав ОС/пути, не отключения аутентификации.
Браузерные сессии и отзыв
Прямой вход создаёт непрозрачную сессию в памяти серверной части и cookie codenomad_session (или настроенное имя). Cookie имеют HttpOnly, SameSite=Lax, область / и Secure при выдаче через HTTPS. Это сессионные cookies браузера; перезапуск серверной части делает сессии в памяти недействительными. При запросе войдите заново на месте, а не повторяйте неудачные изменения.
Изменение пароля меняет последующие проверки данных; не аннулирует уже выданные прямые сессии или устройства удалённого управления. При подозрении на компрометацию:
- Ограничьте сетевую доступность и задайте новый пароль на хосте либо измените пароль, передаваемый при запуске, и перезапустите.
- Перезапустите серверную часть для аннулирования существующих прямых сессий.
- В Удалённое управление → Сопряжённые устройства отдельно используйте Отозвать для неизвестных устройств. Остановите удалённое управление, если нужно немедленно перекрыть весь его путь доступа.
- Проверьте затронутые файлы, аккаунты провайдеров и нативную активность OpenCode. Остановка доступа не откатывает уже допущенную работу.
Отдельный срок 30 дней бездействия и пятиминутные ссылки описаны в удалённом управлении. Смена пароля не отзывает устройство, а остановка туннеля не удаляет устройство.
Защита транспорта и доступности слушателей
Используйте доверенный HTTPS для прямого удалённого доступа. Обычный HTTP раскрывает пароли, сессионные cookies и рабочий контент любому наблюдателю этого сетевого участка. Если TLS завершается на обратном прокси, оставьте участок до серверной части на loopback или другой защищённой сети; TLS прокси не шифрует открытое HTTP-соединение к серверной части.
--dangerously-skip-auth / CODENOMAD_SKIP_AUTH отключает вход прямых слушателей CodeNomad и считает запросы аутентифицированными. Это не делает сервер безопасным для публикации. Слушатель без защищающего периметра предоставляет доступ любому, кто может до него добраться; одно VPN-подключение не различает доверенных и недоверенных пользователей VPN. Оставьте аутентификацию включённой, если не спроектировали и не проверили независимо каждый путь доступа. Удалённому управлению всё равно нужно сопряжённое устройство даже с этим флагом.
Проверьте матрицу привязок и процедуры TLS, особенно отдельный режим только HTTP: он учитывает --host и может раскрыть незашифрованный трафик вне loopback. Никогда не решайте ошибки сертификата отключением проверки.
CODENOMAD_SKIP_AUTH=false сохраняет аутентификацию включённой, если не передан --dangerously-skip-auth. 1, true, yes или on включают обход аутентификации, без учёта регистра и пробельных символов по краям; 0, false, no, off, пустое значение или значение только из пробельных символов, а также отсутствие переменной оставляют обход выключенным. Любое другое значение запрещает запуск сервера, даже с флагом CLI. Флаг имеет приоритет над допустимым выключающим значением; см. справочник CLI.
Граница хоста
--workspace-root ограничивает открываемые рабочие пространства, а --unrestricted-root расширяет просмотр. Ни один не является изоляцией ОС, контейнером, песочницей файловой системы или ограничением полномочий авторизованного нативного инструмента. Агенты, команды оболочки, плагины и MCP-инструменты действуют с правами хоста выполнения и собственными настроенными учётными данными.
SideCars — доверенные дополнения. CodeNomad не передаёт службе SideCar свои cookies входа и сопряжённых устройств, но страница SideCar загружается в том же источнике (origin), что и CodeNomad, и её скрипты могут действовать с вашей сессией входа. Регистрируйте только службы, которым доверяете так же, как самому CodeNomad.
Для реальной изоляции используйте учётные записи ОС, контейнеры/ВМ и настройки разрешений upstream. Не давайте устройству доступ лишь потому, что ожидаете показ одной вкладки. Конфигурация сервера и общая служба OpenCode могут влиять на другие разговоры/проекты; их отдельные границы описаны в настройке OpenCode, разрешениях и расширениях.
Конфиденциальность учётных данных и диагностики
OpenCode владеет подключениями провайдеров и глобальным хранилищем разговоров. CodeNomad читает метаданные подключений и выбранные учётные данные на серверной стороне для поддерживаемых интеграций использования; браузерные API не возвращают секреты провайдеров. Обновление чужого входа OAuth принадлежит его владельцу; CodeNomad не обменивает эти токены обновления. См. провайдеры.
| Материал | Обращение |
|---|---|
| Пароли, токены начальной настройки, ссылки сопряжения, cookies | Никогда не вставляйте в задачи, снимки экрана, записи оболочки или общие логи. |
auth.json, закрытые ключи TLS, идентичность туннеля, секреты конфигурации |
Защищайте правами ОС и шифрованными резервными копиями; не загружайте целые каталоги для поддержки. |
| Текст разговоров, вложения, пути рабочего пространства и удалённые адреса | Проверяйте/скрывайте перед передачей; могут идентифицировать людей, проекты или инфраструктуру. |
| Ключи провайдеров и речи | Вводите только у нужного владельца настроек/данных; проверяйте получателя данных. См. голос. |
| Логи debug/trace и сетевые захваты | Собирайте только необходимое, проверяйте локально и очищайте перед отчётом. Не предполагайте отсутствие секретов в выводе каждого нижележащего инструмента. |
Настройки → Информация → Сообщить об ошибке готовит ограниченную диагностику без подстановки слушателей, адресов, путей, учётных данных или контента разговора. Проверьте собственные дополнения перед отправкой. См. поддержку.