Безопасность и аутентификация
Как purplemux защищает вашу панель — пароль с scrypt-хешем, локальные данные и HTTPS для внешнего доступа.
purplemux self-hosted и остаётся на вашей машине. Никаких внешних серверов, никакой телеметрии, никакого облачного аккаунта. Всё ниже описывает несколько частей, которые реально охраняют вашу панель.
Установка пароля
При первом открытии purplemux экран онбординга предложит задать пароль. После отправки:
- Пароль хешируется через scrypt (случайная 16-байтовая соль, 64-байтовый производный ключ).
- Хеш записывается в
~/.purplemux/config.jsonв видеscrypt:{salt}:{hash}— открытый текст никогда не сохраняется. - Параллельно генерируется отдельный
authSecret(случайный hex). purplemux подписывает им cookie сессии после входа.
Последующие визиты показывают экран входа, который проверяет ваш пароль через crypto.timingSafeEqual против сохранённого хеша.
Сброс пароля
Забыли? Достаточно 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.
Код и данные сессий вашу машину не покидают.
Что дальше
- Доступ через Tailscale — безопасный путь к внешнему HTTPS.
- Настройка PWA — как только аутентификация настроена, поставьте на главный экран.
- Web Push уведомления — фоновые алерты.