From a95d7039dc5a2c9e0f228eb35b4bc51655bdec12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= <78488229+viktor138irk@users.noreply.github.com> Date: Sat, 9 May 2026 15:33:50 +0900 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=20README=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B4=20Pulse=20=D0=B8=20private=20proxy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 116 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 88 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index e53d59d..99269d9 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,13 @@ -# SWChat +# Pulse / SWChat -SWChat — self-hosted Android/Web мессенджер на базе Matrix для экосистемы StackWorks. +Pulse — self-hosted Android/Web мессенджер на базе Matrix для экосистемы StackWorks. + +Техническое имя репозитория пока остаётся SWChat. Пользовательский бренд продукта — `Pulse by StackWorks`. Проект строится как собственная платформа связи: - Matrix Core на отдельном сервере; - PostgreSQL; +- FastPanel reverse proxy как публичный HTTPS слой; - официальный Matrix/Element-клиент для первого тестирования; - будущий web-клиент; - будущий Android-клиент; @@ -17,19 +20,19 @@ SWChat — self-hosted Android/Web мессенджер на базе Matrix д Порядок: -1. Поднять SWChat Core на отдельном сервере. +1. Поднять Pulse/SWChat Core на отдельном сервере. 2. Проверить Matrix/Synapse локально. -3. Настроить публичный домен `matrix.stackworks.ru`. +3. Настроить публичный домен `matrix.stackworks.ru` через FastPanel reverse proxy. 4. Проверить работу через официальные клиенты Matrix/Element. -5. Только после стабильной проверки начинать разработку собственного Android/Web-клиента. +5. Только после стабильной проверки продолжать глубокий ребрендинг собственного Android/Web-клиента. Это нужно, чтобы не путать проблемы сервера с проблемами будущего собственного UI. ## Архитектура -SWChat работает по split-server архитектуре. +Pulse/SWChat работает по split-server архитектуре. -### Новый сервер: SWChat Core +### Новый сервер: Core На новом сервере размещаются: - Matrix Synapse; @@ -40,30 +43,33 @@ SWChat работает по split-server архитектуре. - backups; - diagnostics. +Текущие private IP: + +```text +FastPanel proxy: 192.168.0.221 +Matrix/Core: 192.168.0.141 +``` + Рекомендуемые домены: ```text -matrix.stackworks.ru -> новый SWChat Core сервер -turn.stackworks.ru -> новый SWChat Core сервер, позже -api-chat.stackworks.ru -> новый SWChat Core сервер, позже +matrix.stackworks.ru -> Matrix API / Synapse через FastPanel reverse proxy +turn.stackworks.ru -> новый Core сервер, позже +api-chat.stackworks.ru -> будущий backend API +admin-chat.stackworks.ru -> будущая Pulse Admin Panel +chat.stackworks.ru -> будущий web-клиент ``` ### Старый сервер с FastPanel -Старый сервер с FastPanel используется только для будущего frontend/web-клиента. +Старый сервер с FastPanel используется как публичный HTTPS/reverse proxy слой и для будущего frontend/web-клиента. На нём остаются отдельно: - ArtistFlow; - widget.stackworks.ru; - текущие сайты StackWorks/FastPanel. -SWChat installer не меняет FastPanel, не меняет vhost, не меняет SSL и не трогает существующие сайты. - -Будущий frontend-домен: - -```text -chat.stackworks.ru -``` +Installer не меняет FastPanel, не меняет vhost, не меняет SSL и не трогает существующие сайты. ## Что нельзя трогать @@ -73,9 +79,9 @@ chat.stackworks.ru - текущие сайты FastPanel; - настройки FastPanel без отдельной явной команды. -`widget.stackworks.ru` на текущем этапе никак не связан с Matrix/SWChat. Новый виджет SWChat не планируется. +`widget.stackworks.ru` на текущем этапе никак не связан с Matrix/Pulse. Новый виджет Pulse не планируется. -## Установка SWChat Core +## Установка Core На новом сервере Ubuntu: @@ -95,6 +101,45 @@ Installer: - запускает контейнеры; - не трогает FastPanel. +## Настройка private reverse proxy + +По умолчанию Matrix endpoint слушает только localhost: + +```text +MATRIX_BIND_HOST=127.0.0.1 +``` + +Для схемы FastPanel reverse proxy → Core нужно на Core-сервере в `/opt/swchat/.env` указать private IP Core: + +```text +MATRIX_BIND_HOST=192.168.0.141 +``` + +Затем перезапустить stack: + +```bash +cd /opt/swchat/source +sudo docker compose --env-file /opt/swchat/.env up -d +``` + +И закрыть прямой публичный доступ к Matrix, разрешив порт 8008 только FastPanel proxy: + +```bash +sudo FASTPANEL_PROXY_IP=192.168.0.221 MATRIX_PORT=8008 bash /opt/swchat/source/scripts/firewall_private_proxy.sh +``` + +Проверка с FastPanel proxy: + +```bash +curl http://192.168.0.141:8008/_matrix/client/versions +``` + +Проверка публичного HTTPS endpoint: + +```bash +curl https://matrix.stackworks.ru/_matrix/client/versions +``` + ## Проверка после установки ```bash @@ -120,15 +165,30 @@ curl http://127.0.0.1:8008/_matrix/client/versions - стабильность Synapse; - работу публичного домена. +## Android-клиент + +Клиентский репозиторий: + +```text +https://github.com/viktor138irk/SWChat-App +``` + +Важное правило staged-ребрендинга: +- пользовательские тексты и UI можно переводить на Pulse; +- `pubspec.yaml name` пока должен оставаться `fluffychat`, пока импорты используют `package:fluffychat/...`; +- Android applicationId сейчас принят как `ru.stackworks.swchat`; +- массовая миграция Dart package/imports — отдельный этап. + ## Структура проекта ```text -.sw главный журнал проекта -docker-compose.yml Matrix/PostgreSQL stack -scripts/install.sh автоустановщик Core-сервера -scripts/healthcheck.sh диагностика -docs/ документация -VERSION версия проекта +.sw главный журнал проекта +docker-compose.yml Matrix/PostgreSQL stack +scripts/install.sh автоустановщик Core-сервера +scripts/healthcheck.sh диагностика +scripts/firewall_private_proxy.sh безопасное ограничение 8008 под FastPanel proxy +docs/ документация +VERSION версия проекта ``` ## Правило `.sw` @@ -147,6 +207,6 @@ VERSION версия проекта ## Текущий статус -Версия: `0.1.0` +Версия: `0.1.2` -Сейчас идёт этап запуска SWChat Core на отдельном сервере и тестирования через официальные Matrix-клиенты. +Core работает на отдельном сервере, публичный HTTPS endpoint `https://matrix.stackworks.ru/_matrix/client/versions` уже был проверен через FastPanel reverse proxy. Текущий этап — закрепление private proxy/firewall схемы и staged-ребрендинг Android-клиента в Pulse без поломки FluffyChat imports.