Добавлена инструкция FastPanel reverse proxy для SWChat
Этот коммит содержится в:
@@ -0,0 +1,118 @@
|
||||
# SWChat: FastPanel reverse proxy → Core
|
||||
|
||||
Эта схема выбрана для публичного доступа к SWChat.
|
||||
|
||||
## Роль серверов
|
||||
|
||||
### Core-сервер
|
||||
|
||||
На Core-сервере работают:
|
||||
- Matrix Synapse;
|
||||
- PostgreSQL;
|
||||
- media storage;
|
||||
- backups;
|
||||
- будущий TURN/STUN.
|
||||
|
||||
Core-сервер не обязан принимать публичные HTTPS-домены напрямую.
|
||||
|
||||
### FastPanel-сервер
|
||||
|
||||
Отдельный FastPanel-сервер принимает публичные домены и SSL:
|
||||
- `matrix.stackworks.ru` — proxy до Synapse на Core-сервере;
|
||||
- `chat.stackworks.ru` или `messenger.stackworks.ru` — web-клиент SWChat;
|
||||
- `api-chat.stackworks.ru` — будущий backend API, если понадобится.
|
||||
|
||||
Текущий production FastPanel с ArtistFlow/widget.stackworks.ru не трогать.
|
||||
|
||||
## DNS
|
||||
|
||||
A-записи доменов SWChat должны указывать на IP FastPanel-сервера, который будет reverse proxy:
|
||||
|
||||
```text
|
||||
matrix.stackworks.ru A FASTPANEL_PROXY_IP
|
||||
chat.stackworks.ru A FASTPANEL_PROXY_IP
|
||||
messenger.stackworks.ru A FASTPANEL_PROXY_IP
|
||||
api-chat.stackworks.ru A FASTPANEL_PROXY_IP
|
||||
```
|
||||
|
||||
## Core-сервер
|
||||
|
||||
Synapse должен быть доступен с FastPanel-сервера по адресу:
|
||||
|
||||
```text
|
||||
http://CORE_SERVER_IP:8008
|
||||
```
|
||||
|
||||
Если порт `8008` закрыт firewall, нужно разрешить доступ только с IP FastPanel-сервера.
|
||||
|
||||
Пример UFW на Core-сервере:
|
||||
|
||||
```bash
|
||||
ufw allow from FASTPANEL_PROXY_IP to any port 8008 proto tcp
|
||||
ufw deny 8008/tcp
|
||||
```
|
||||
|
||||
Важно: сначала разрешить FastPanel IP, потом закрывать общий доступ.
|
||||
|
||||
## Nginx proxy-шаблон для matrix.stackworks.ru
|
||||
|
||||
Этот шаблон добавляется только в отдельном FastPanel-сервере для домена `matrix.stackworks.ru`.
|
||||
|
||||
`CORE_SERVER_IP` заменить на IP Core-сервера.
|
||||
|
||||
```nginx
|
||||
location / {
|
||||
proxy_pass http://CORE_SERVER_IP:8008;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
|
||||
client_max_body_size 100M;
|
||||
proxy_read_timeout 600s;
|
||||
proxy_send_timeout 600s;
|
||||
}
|
||||
```
|
||||
|
||||
## Проверка с FastPanel-сервера
|
||||
|
||||
```bash
|
||||
curl -I http://CORE_SERVER_IP:8008/_matrix/client/versions
|
||||
curl http://CORE_SERVER_IP:8008/_matrix/client/versions
|
||||
```
|
||||
|
||||
Ожидается HTTP 200 и JSON Matrix API.
|
||||
|
||||
## Проверка публичного домена
|
||||
|
||||
После DNS и SSL:
|
||||
|
||||
```bash
|
||||
curl -I https://matrix.stackworks.ru/_matrix/client/versions
|
||||
curl https://matrix.stackworks.ru/_matrix/client/versions
|
||||
```
|
||||
|
||||
Ожидается HTTP 200 и JSON Matrix API.
|
||||
|
||||
## Важное ограничение
|
||||
|
||||
Для стабильной работы Matrix server name должен совпадать с публичным именем в конфиге Synapse:
|
||||
|
||||
```text
|
||||
SERVER_NAME=matrix.stackworks.ru
|
||||
public_baseurl: https://matrix.stackworks.ru/
|
||||
```
|
||||
|
||||
Если имя сервера будет изменено после создания пользователей, могут появиться проблемы с федерацией и ID пользователей.
|
||||
|
||||
## Следующий шаг
|
||||
|
||||
1. Настроить DNS `matrix.stackworks.ru` на FastPanel proxy server.
|
||||
2. Выпустить SSL на FastPanel для `matrix.stackworks.ru`.
|
||||
3. Добавить proxy до `http://CORE_SERVER_IP:8008`.
|
||||
4. Ограничить доступ к Core:8008 только IP FastPanel-сервера.
|
||||
5. Проверить Matrix API через публичный HTTPS.
|
||||
6. Создать первого Matrix-пользователя.
|
||||
7. Проверить вход через Element.
|
||||
Ссылка в новой задаче
Block a user