Мобильные и удалённый доступ

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

Как purplemux защищает вашу панель — пароль с scrypt-хешем, локальные данные и HTTPS для внешнего доступа.

purplemux self-hosted и остаётся на вашей машине. Никаких внешних серверов, никакой телеметрии, никакого облачного аккаунта. Всё ниже описывает несколько частей, которые реально охраняют вашу панель.

Установка пароля

При первом открытии purplemux экран онбординга предложит задать пароль. После отправки:

  • Пароль хешируется через scrypt (случайная 16-байтовая соль, 64-байтовый производный ключ).
  • Хеш записывается в ~/.purplemux/config.json в виде scrypt:{salt}:{hash} — открытый текст никогда не сохраняется.
  • Параллельно генерируется отдельный authSecret (случайный hex). purplemux подписывает им cookie сессии после входа.

Последующие визиты показывают экран входа, который проверяет ваш пароль через crypto.timingSafeEqual против сохранённого хеша.

Длина пароля
Минимум короткий (4 символа), чтобы локальные установки не были неудобными. Если вы выставляете purplemux в tailnet — или ещё куда-то — выберите что-то посильнее. Неудачные логины ограничены: 16 попыток в 15 минут на процесс.

Сброс пароля

Забыли? Достаточно shell-доступа к хосту:

rm ~/.purplemux/config.json

Перезапустите purplemux (pnpm start, npx purplemux или как запускали), и снова появится экран онбординга, где можно задать новый пароль.

Это сбросит и другие настройки в этом файле (тема, локаль, размер шрифта, переключатель уведомлений и т. д.). Рабочие пространства и вкладки лежат в workspaces.json и каталоге workspaces/, поэтому раскладка не пострадает.

HTTPS для внешнего доступа

По умолчанию привязка идёт к localhost по обычному HTTP. Это нормально на той же машине — но как только вы заходите в purplemux с другого устройства, нужно быть на HTTPS.

  • Tailscale Serve — рекомендуемый путь: WireGuard-шифрование плюс автоматические сертификаты Let's Encrypt. См. Доступ через Tailscale.
  • Reverse-proxy (Nginx, Caddy и т. д.) тоже работает, при условии что вы пробрасываете заголовки WebSocket Upgrade и Connection.

iOS Safari дополнительно требует HTTPS для установки PWA и регистрации Web Push. См. Настройка PWA и Web Push.

Что лежит в ~/.purplemux/

Всё локально. На чувствительных файлах права 0600.

Файл Что хранит
config.json scrypt-хеш пароля, секрет сессии, настройки приложения
workspaces.json + workspaces/ список рабочих пространств и раскладка панелей/вкладок
vapid-keys.json пара VAPID-ключей Web Push (генерируется автоматически)
push-subscriptions.json подписки на push по устройствам
cli-token общий токен для хуков/CLI, чтобы общаться с локальным сервером
pmux.lock блокировка единственного экземпляра (pid, port, startedAt)
logs/ ротируемые логи pino

Полный инвентарь и таблицу сброса смотрите в первоисточнике: docs/DATA-DIR.md.

Никакой телеметрии

purplemux сам по себе не делает исходящих запросов. Единственные сетевые вызовы, которые он инициирует:

  • Web Push уведомления, на которые вы подписались, отправляются через push-сервисы ОС.
  • Что бы ни делал сам Claude CLI — это между вами и Anthropic, не purplemux.

Код и данные сессий вашу машину не покидают.

Что дальше