Обзор кода RyzenDesk: серьёзная работа над безопасностью и одна открытая дверь чата
Ticketing, SLA, Kanban, wiki, analytics, automation, AI, email, Telegram, encrypted Git sync и RBAC. Build, type-check и audit проходят; anonymous chat требует исправления.

DEEP PROJECT REVIEW · SOURCE + REPOSITORY VISUALS
RyzenDesk - самый крупный продукт этой серии обзоров и один из тех, у кого заявления о безопасности в основном выдерживают встречу с кодом. Express-сервер регистрирует 96 обработчиков маршрутов. React-клиент охватывает очереди тикетов, ветки ответов, Kanban, wiki, аналитику, установку, админ-политики, AI-провайдеров, клиентский портал и мобильную навигацию. Аккуратные места настоящие: пароли scrypt, сессии с HMAC-подписью, серверный RBAC, хешированные токены клиентов, зашифрованные секреты, строгие SSRF-проверки webhook, проверка origin, лимиты запросов и production-секреты с отказом при отсутствии. Один публичный путь живого чата нарушает эту картину.
Сильная инженерия
- Server RBAC из пяти tiers
- Пароли scrypt, подписанные HttpOnly-сессии, хешированные токены клиентов
- SSRF checks, no redirects, HMAC webhooks
- Build, type-check и audit проходят
Важные ограничения
- Нет verified live demo
- Chat start возвращает existing thread по заявленному email
- Thread ID - единственный secret для read/post/close
- 989 kB browser chunk; тестов нет
Как это устроено
Vite/React SPA обращается к Express. Typed JSON DB хранит tickets, staff, wiki, boards, chats и audit; sessions не sync. Git snapshots шифруются AES-256-GCM. SMTP, Telegram, email и webhooks подключают внешние системы. Один JSON и process-local state ограничивают scaling.
Насколько глубоки функции
96 маршрутов покрывают вход, тикеты, SLA, пакетные действия, присутствие, учёт времени, CSAT, слияние, экспорт, шаблоны ответов, Kanban, wiki, аналитику, RBAC, SMTP, webhooks, аудит, установку, статус, правила, входящую почту, чат и AI-провайдеров.
Проверка безопасности и единственная трещина
Core routes защищены хорошо: fail-closed secrets, client scope, stripped internal notes, hashed tokens, SSRF DNS/IP blocks, rejected redirects и HMAC. Но chat start ищет open thread по введённому email и возвращает его. ID служит capability для чтения, сообщений и закрытия. Нужен отдельный secret, hashed server-side, без восстановления по email и с проверкой на каждой операции.
Ссылка-возможность безопасна, только если её нельзя восстановить по публичному заявлению об идентичности.
| Защита | Пробелы и scaling |
|---|---|
| scrypt, HMAC sessions, RBAC | Process-local sessions and limits |
| Hashed customer tokens | Anonymous chat email recovery |
| SSRF-resistant signed webhooks | No automated auth regression suite |
| Encrypted Git snapshot | Single JSON write model |
Что показывают проверки качества
Lint/type-check, build и production audit с нулём advisories воспроизведены. CI делает install, lint, build. Bundle 989.57 kB до gzip. Automated tests не найдены.
Как он выглядит и звучит
Десять repo screenshots показывают цельный slate/indigo console, queues, SLA, thread и internal notes. UI серьёзный, но breadth требует progressive disclosure. Live demo нет.
Вердикт
Сильная self-hosted основа. После chat fix подходит one-node командам; крупным нужны shared sessions/rate limits, transactional DB, auth tests и code splitting.
FAQ
Что такое RyzenDesk?
Self-hosted helpdesk под лицензией MIT с тикетами, SLA, Kanban, wiki, аналитикой, AI, RBAC и зашифрованным хранением в Git.
Есть live demo?
Нет verified demo; есть десять screenshots и Docker/local install.
Готов к production?
Core security сильная, но chat capabilities и tests нужно исправить до public exposure.
Репозиторий
Reviewed source at commit 4d4aa64 · No separate live demo listed · build, type-check and audit reproduced 2026-09-21