Хаб: как это работает#
Хаб — единый главный сервер termi. Он один на всех: его адрес вшит в клиент, поэтому ввести его вручную или поднять свой хаб нельзя. Пользователи создают только свои чат-серверы (termi-server), а хаб остаётся общим.
┌────────────┐
termi ◄────► │ ХАБ │ ◄────► termi аккаунты, контакты, личные сообщения, звонки 1 на 1
(клиент) └────────────┘ (клиент)
│ │
└────────► чат-сервер ◄──────────┘ каналы, роли, голос, плагины (у каждого свой)
(ваш, termi-server)
За что отвечает хаб#
| что | как |
|---|---|
| Аккаунты | регистрация и вход по имени и паролю. Пароль хранится только в виде хеша (PBKDF2). Имя — 3–16 символов: буквы, цифры, _ и - |
| Контакты и статусы | список контактов, «в сети / отошёл / не в сети», заблокированные |
| Личные сообщения | хаб пересылает их и хранит историю, но не может прочитать: сообщения шифруются у отправителя ключом на двоих (префикс e1:) |
| Профили | аватар, GIF-баннер, статус-фраза, «о себе», город, цвет ника |
| Звонки 1 на 1 | хаб только соединяет участников и передаёт сигнальные пакеты |
| Копия ключа | ключ шифрования переписки хранится на хабе в виде копии, зашифрованной паролем аккаунта: так вы читаете историю с нового устройства |
| Допуск на серверы | при входе хаб выдаёт подписанный токен; чат-сервер проверяет подпись и впускает пользователя под его именем |
Что хаб НЕ делает#
- не хранит содержимое чат-серверов (каналы, файлы, история — на самих серверах);
- не читает личные переписки;
- не позволяет пользователям запускать собственные хабы или менять адрес хаба в клиенте.
Как проходит вход#
- Клиент соединяется с хабом (шифрованный канал X25519 + AES-256-GCM, отпечаток ключа хаба запоминается при первом входе).
- Вы вводите имя и пароль — хаб проверяет их и отвечает токеном, списком контактов и непрочитанными сообщениями.
- Клиент подключается к вашим чат-серверам (адреса хранятся локально) и предъявляет им токен.
Свой чат-сервер#
Любой пользователь может поднять termi-server, добавить плагины и пригласить друзей: в клиенте — подключиться к серверу, адрес сервера. Подробности — в разделах Быстрый старт и Плагины.
Безопасность коротко#
- Канал клиент ⇄ хаб и клиент ⇄ сервер шифруется всегда, у каждого соединения свои ключи.
- Если у сервера или собеседника сменился ключ, клиент предупреждает и блокирует отправку, пока вы не сверите код безопасности (
/safety) и не подтвердите (/trust). - Пароль хабу не нужен «в открытом виде» после входа: дальше работает токен с ограниченным сроком жизни.