Files
SWChat/README.md
T

5.3 KiB

SWChat

SWChat — self-hosted Android/Web мессенджер на базе Matrix для экосистемы StackWorks.

Проект строится как собственная платформа связи:

  • Matrix Core на отдельном сервере;
  • PostgreSQL;
  • официальный Matrix/Element-клиент для первого тестирования;
  • будущий web-клиент;
  • будущий Android-клиент;
  • будущая админ-панель;
  • безопасная архитектура без вмешательства в существующий production.

Текущая стратегия

Сначала поднимаем и проверяем серверное ядро через официальные Matrix-клиенты.

Порядок:

  1. Поднять SWChat Core на отдельном сервере.
  2. Проверить Matrix/Synapse локально.
  3. Настроить публичный домен matrix.stackworks.ru.
  4. Проверить работу через официальные клиенты Matrix/Element.
  5. Только после стабильной проверки начинать разработку собственного Android/Web-клиента.

Это нужно, чтобы не путать проблемы сервера с проблемами будущего собственного UI.

Архитектура

SWChat работает по split-server архитектуре.

Новый сервер: SWChat Core

На новом сервере размещаются:

  • Matrix Synapse;
  • PostgreSQL;
  • media storage;
  • будущий TURN/STUN;
  • будущий backend API;
  • backups;
  • diagnostics.

Рекомендуемые домены:

matrix.stackworks.ru      -> новый SWChat Core сервер
turn.stackworks.ru        -> новый SWChat Core сервер, позже
api-chat.stackworks.ru    -> новый SWChat Core сервер, позже

Старый сервер с FastPanel

Старый сервер с FastPanel используется только для будущего frontend/web-клиента.

На нём остаются отдельно:

  • ArtistFlow;
  • widget.stackworks.ru;
  • текущие сайты StackWorks/FastPanel.

SWChat installer не меняет FastPanel, не меняет vhost, не меняет SSL и не трогает существующие сайты.

Будущий frontend-домен:

chat.stackworks.ru

Что нельзя трогать

Защищённые production-активы:

  • artistflow.ru;
  • widget.stackworks.ru;
  • текущие сайты FastPanel;
  • настройки FastPanel без отдельной явной команды.

widget.stackworks.ru на текущем этапе никак не связан с Matrix/SWChat. Новый виджет SWChat не планируется.

Установка SWChat Core

На новом сервере Ubuntu:

sudo mkdir -p /opt/swchat
sudo git clone https://github.com/viktor138irk/SWChat.git /opt/swchat/source
cd /opt/swchat/source
sudo SERVER_NAME=matrix.stackworks.ru bash scripts/install.sh

Installer:

  • создаёт структуру /opt/swchat;
  • устанавливает Docker, если он отсутствует;
  • создаёт .env;
  • генерирует Synapse config;
  • настраивает PostgreSQL для Synapse;
  • запускает контейнеры;
  • не трогает FastPanel.

Проверка после установки

sudo bash /opt/swchat/source/scripts/healthcheck.sh
curl http://127.0.0.1:8008/_matrix/client/versions

Ожидаемый результат curl — JSON с версиями Matrix API.

Тестирование официальными клиентами

До разработки собственного клиента проверяем сервер через:

  • Element Web;
  • Element Desktop;
  • Element Android;
  • любые совместимые Matrix-клиенты.

Проверяем:

  • регистрацию/логин;
  • личные сообщения;
  • комнаты;
  • отправку файлов;
  • стабильность Synapse;
  • работу публичного домена.

Структура проекта

.sw                    главный журнал проекта
docker-compose.yml     Matrix/PostgreSQL stack
scripts/install.sh     автоустановщик Core-сервера
scripts/healthcheck.sh диагностика
docs/                  документация
VERSION                версия проекта

Правило .sw

Файл .sw — главный журнал проекта.

В него обязательно записываются:

  • архитектурные решения;
  • изменения версий;
  • текущий статус;
  • следующий шаг;
  • ошибки и исправления;
  • запреты и защищённые production-активы.

Новый диалог по проекту начинается с чтения .sw.

Текущий статус

Версия: 0.1.0

Сейчас идёт этап запуска SWChat Core на отдельном сервере и тестирования через официальные Matrix-клиенты.