Актуализирован README под Pulse и private proxy
Этот коммит содержится в:
+82
-22
@@ -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 на отдельном сервере;
|
- Matrix Core на отдельном сервере;
|
||||||
- PostgreSQL;
|
- PostgreSQL;
|
||||||
|
- FastPanel reverse proxy как публичный HTTPS слой;
|
||||||
- официальный Matrix/Element-клиент для первого тестирования;
|
- официальный Matrix/Element-клиент для первого тестирования;
|
||||||
- будущий web-клиент;
|
- будущий web-клиент;
|
||||||
- будущий Android-клиент;
|
- будущий Android-клиент;
|
||||||
@@ -17,19 +20,19 @@ SWChat — self-hosted Android/Web мессенджер на базе Matrix д
|
|||||||
|
|
||||||
Порядок:
|
Порядок:
|
||||||
|
|
||||||
1. Поднять SWChat Core на отдельном сервере.
|
1. Поднять Pulse/SWChat Core на отдельном сервере.
|
||||||
2. Проверить Matrix/Synapse локально.
|
2. Проверить Matrix/Synapse локально.
|
||||||
3. Настроить публичный домен `matrix.stackworks.ru`.
|
3. Настроить публичный домен `matrix.stackworks.ru` через FastPanel reverse proxy.
|
||||||
4. Проверить работу через официальные клиенты Matrix/Element.
|
4. Проверить работу через официальные клиенты Matrix/Element.
|
||||||
5. Только после стабильной проверки начинать разработку собственного Android/Web-клиента.
|
5. Только после стабильной проверки продолжать глубокий ребрендинг собственного Android/Web-клиента.
|
||||||
|
|
||||||
Это нужно, чтобы не путать проблемы сервера с проблемами будущего собственного UI.
|
Это нужно, чтобы не путать проблемы сервера с проблемами будущего собственного UI.
|
||||||
|
|
||||||
## Архитектура
|
## Архитектура
|
||||||
|
|
||||||
SWChat работает по split-server архитектуре.
|
Pulse/SWChat работает по split-server архитектуре.
|
||||||
|
|
||||||
### Новый сервер: SWChat Core
|
### Новый сервер: Core
|
||||||
|
|
||||||
На новом сервере размещаются:
|
На новом сервере размещаются:
|
||||||
- Matrix Synapse;
|
- Matrix Synapse;
|
||||||
@@ -40,30 +43,33 @@ SWChat работает по split-server архитектуре.
|
|||||||
- backups;
|
- backups;
|
||||||
- diagnostics.
|
- diagnostics.
|
||||||
|
|
||||||
|
Текущие private IP:
|
||||||
|
|
||||||
|
```text
|
||||||
|
FastPanel proxy: 192.168.0.221
|
||||||
|
Matrix/Core: 192.168.0.141
|
||||||
|
```
|
||||||
|
|
||||||
Рекомендуемые домены:
|
Рекомендуемые домены:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
matrix.stackworks.ru -> новый SWChat Core сервер
|
matrix.stackworks.ru -> Matrix API / Synapse через FastPanel reverse proxy
|
||||||
turn.stackworks.ru -> новый SWChat Core сервер, позже
|
turn.stackworks.ru -> новый Core сервер, позже
|
||||||
api-chat.stackworks.ru -> новый SWChat Core сервер, позже
|
api-chat.stackworks.ru -> будущий backend API
|
||||||
|
admin-chat.stackworks.ru -> будущая Pulse Admin Panel
|
||||||
|
chat.stackworks.ru -> будущий web-клиент
|
||||||
```
|
```
|
||||||
|
|
||||||
### Старый сервер с FastPanel
|
### Старый сервер с FastPanel
|
||||||
|
|
||||||
Старый сервер с FastPanel используется только для будущего frontend/web-клиента.
|
Старый сервер с FastPanel используется как публичный HTTPS/reverse proxy слой и для будущего frontend/web-клиента.
|
||||||
|
|
||||||
На нём остаются отдельно:
|
На нём остаются отдельно:
|
||||||
- ArtistFlow;
|
- ArtistFlow;
|
||||||
- widget.stackworks.ru;
|
- widget.stackworks.ru;
|
||||||
- текущие сайты StackWorks/FastPanel.
|
- текущие сайты StackWorks/FastPanel.
|
||||||
|
|
||||||
SWChat installer не меняет FastPanel, не меняет vhost, не меняет SSL и не трогает существующие сайты.
|
Installer не меняет FastPanel, не меняет vhost, не меняет SSL и не трогает существующие сайты.
|
||||||
|
|
||||||
Будущий frontend-домен:
|
|
||||||
|
|
||||||
```text
|
|
||||||
chat.stackworks.ru
|
|
||||||
```
|
|
||||||
|
|
||||||
## Что нельзя трогать
|
## Что нельзя трогать
|
||||||
|
|
||||||
@@ -73,9 +79,9 @@ chat.stackworks.ru
|
|||||||
- текущие сайты FastPanel;
|
- текущие сайты FastPanel;
|
||||||
- настройки FastPanel без отдельной явной команды.
|
- настройки FastPanel без отдельной явной команды.
|
||||||
|
|
||||||
`widget.stackworks.ru` на текущем этапе никак не связан с Matrix/SWChat. Новый виджет SWChat не планируется.
|
`widget.stackworks.ru` на текущем этапе никак не связан с Matrix/Pulse. Новый виджет Pulse не планируется.
|
||||||
|
|
||||||
## Установка SWChat Core
|
## Установка Core
|
||||||
|
|
||||||
На новом сервере Ubuntu:
|
На новом сервере Ubuntu:
|
||||||
|
|
||||||
@@ -95,6 +101,45 @@ Installer:
|
|||||||
- запускает контейнеры;
|
- запускает контейнеры;
|
||||||
- не трогает FastPanel.
|
- не трогает 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
|
```bash
|
||||||
@@ -120,6 +165,20 @@ curl http://127.0.0.1:8008/_matrix/client/versions
|
|||||||
- стабильность Synapse;
|
- стабильность 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
|
```text
|
||||||
@@ -127,6 +186,7 @@ curl http://127.0.0.1:8008/_matrix/client/versions
|
|||||||
docker-compose.yml Matrix/PostgreSQL stack
|
docker-compose.yml Matrix/PostgreSQL stack
|
||||||
scripts/install.sh автоустановщик Core-сервера
|
scripts/install.sh автоустановщик Core-сервера
|
||||||
scripts/healthcheck.sh диагностика
|
scripts/healthcheck.sh диагностика
|
||||||
|
scripts/firewall_private_proxy.sh безопасное ограничение 8008 под FastPanel proxy
|
||||||
docs/ документация
|
docs/ документация
|
||||||
VERSION версия проекта
|
VERSION версия проекта
|
||||||
```
|
```
|
||||||
@@ -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.
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user