CodeNomad/docs/help/ru/security.md
Pascal André 1dabb5110f
docs(help): bring the user guide back in line with the current app (#1079)
docs(help): bring the user guide back in line with the current app

The help was written on 2026-10-14 and about forty user-visible changes merged since without touching it, so several pages described controls that no longer exist: Missions still listed four playbooks and a Save step for preferences that now save on each change, the depth editor kept its old names, notifications still had their former switches, and voice input pointed to a microphone button that is not in the composer.

Every English page was re-checked claim by claim against the current labels (English UI messages) and behaviour, then the nine translations were updated to match, using each locale's own UI labels. Notable corrections: Missions (Compare two models, autosaving defaults with Apply to / Global / Reset, Subsession nesting depth, prepared hand-offs, retired-task interrupts, the named causes of "Mission Control is unavailable", standalone server support); conversations and history (reasoning/tool durations, token lines adding up the cleanup selection, presets including Nothing, timeline markers following Message content, in-place reveal of long text, Open in session, focus after send, Queue message / Steer now, Retrying); settings (notification routing table and defaults, Stats, Mode, info tips, Server setting badge, localized native menus); shortcuts (72 actions, Clear shortcut, Ctrl/Cmd+K); voice (More actions entries, Save status); files (live Workspace refresh, Show 200 more); OpenCode, install, server and updates (2.1.1 recommended, OpenCode 2 beside an older installation, version card first, private loopback listener for Missions, preview releases offered once all builds are published); providers, integrations, browser, SideCars, desktop and remote pages. Translations also repaired older drift, mainly the project-tab closing passages.

The Chat settings table header (Default state, its title, item column, the thinking row and its accessible label) was still English in eight locales; it is now translated so the help can cite what users see. AGENTS.md now asks every PR changing user-visible behavior to update the affected help pages in the same PR, since CI validates structure and links but not whether the text still matches the UI; it also corrects the needs-input notification default. USER_HELP.md no longer claims native menus stay English.

Validation: npm run test:help (all ten locales, 25 pages, heading ids unchanged), a full help build, and the i18n and transcript-visibility unit tests.
2026-10-21 14:38:29 +02:00

15 KiB
Raw Permalink Blame History

Аутентификация и безопасность

Доступ к CodeNomad позволяет выполнять работу на серверном хосте через OpenCode. Считайте пароли сервера, браузерные сессии и сопряжённые устройства мощными учётными данными. CodeNomad — не многопользовательская песочница выполнения.

Выбор аутентификации сервера

Способ Время жизни и область
--password или CODENOMAD_SERVER_PASSWORD Переопределение, переданное при запуске процесса серверной части. Нужно снова при каждом запуске; не сохраняется. Имеет приоритет над управляемым файлом пароля.
Пароль в настройках Сохраняет хэш scrypt с солью в auth.json рядом с активной конфигурацией YAML. Используется при следующих запусках, если при запуске не передан другой пароль.
--generate-token Включает локальную одноразовую начальную настройку; напечатанный токен действует 60 секунд. Это не повторно используемый API-токен и не ссылка удалённого управления.
Сопряжение удалённого управления Отдельная аутентификация cookie устройства, управляемая с хоста; см. удалённое управление.

Имя пользователя по умолчанию — codenomad. Сохранённый файл аутентификации сохраняет имя; изменение только --username не переименовывает эту идентичность. Без настроенного пароля, режима начальной настройки или явно пропущенной аутентификации сервер отказывается запускаться.

Предпочитайте защищённое окружение/секрет службы встраиванию пароля в аргументы команд или историю оболочки. Любой, кто может изучить окружение процесса или каталог конфигурации, всё равно может скомпрометировать развёртывание.

Начальная настройка постоянного пароля

  1. Запустите локально, не передавая пароль при запуске. Для настройки через loopback без предварительного сертификата используйте codenomad --host 127.0.0.1 --https=false --http=true --generate-token --launch.
  2. На компьютере серверной части откройте /auth/token по напечатанному Local Connection URL и отправьте значение после CODENOMAD_BOOTSTRAP_TOKEN:. Не делитесь этим выводом.
  3. Откройте Настройки → Удалённый доступ → Прямой доступ (локальная сеть, для опытных) → Пароль сервера.
  4. Выберите Установить пароль, заполните Новый пароль и Подтвердите пароль минимум восемью символами, затем Сохранить пароль.
  5. При следующем запуске уберите --generate-token и используйте сохранённый пароль для прямых подключений. Перед включением удалённого доступа настройте доверенный HTTPS; команда настройки loopback HTTP не предназначена для удалённого развёртывания.

Начальная настройка принимается только с собственного loopback-слушателя хоста, не от LAN-клиента или входа удалённого управления. Оставьте стандартную loopback-привязку для настройки. Истёкший или использованный токен требует нового запуска начальной настройки. Если постоянный пароль уже есть, сессия настройки позволяет выбрать Изменить пароль.

auth.json управляется приложением; не правьте хэш вручную и не публикуйте файл. Если пароль пришёл из CLI/окружения, настройки отказываются заменять его: перезапустите без переопределения для существующего управляемого пароля или задайте его локальной начальной настройкой. Нечитаемый/незаписываемый файл требует исправления прав ОС/пути, не отключения аутентификации.

Браузерные сессии и отзыв

Прямой вход создаёт непрозрачную сессию в памяти серверной части и cookie codenomad_session (или настроенное имя). Cookie имеют HttpOnly, SameSite=Lax, область / и Secure при выдаче через HTTPS. Это сессионные cookies браузера; перезапуск серверной части делает сессии в памяти недействительными. При запросе войдите заново на месте, а не повторяйте неудачные изменения.

Изменение пароля меняет последующие проверки данных; не аннулирует уже выданные прямые сессии или устройства удалённого управления. При подозрении на компрометацию:

  1. Ограничьте сетевую доступность и задайте новый пароль на хосте либо измените пароль, передаваемый при запуске, и перезапустите.
  2. Перезапустите серверную часть для аннулирования существующих прямых сессий.
  3. В Удалённое управление → Сопряжённые устройства отдельно используйте Отозвать для неизвестных устройств. Остановите удалённое управление, если нужно немедленно перекрыть весь его путь доступа.
  4. Проверьте затронутые файлы, аккаунты провайдеров и нативную активность 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 и сетевые захваты Собирайте только необходимое, проверяйте локально и очищайте перед отчётом. Не предполагайте отсутствие секретов в выводе каждого нижележащего инструмента.

Настройки → Информация → Сообщить об ошибке готовит ограниченную диагностику без подстановки слушателей, адресов, путей, учётных данных или контента разговора. Проверьте собственные дополнения перед отправкой. См. поддержку.