119 строки
3.9 KiB
Markdown
119 строки
3.9 KiB
Markdown
# 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.
|