3.9 KiB
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:
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-сервера по адресу:
http://CORE_SERVER_IP:8008
Если порт 8008 закрыт firewall, нужно разрешить доступ только с IP FastPanel-сервера.
Пример UFW на Core-сервере:
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-сервера.
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-сервера
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:
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:
SERVER_NAME=matrix.stackworks.ru
public_baseurl: https://matrix.stackworks.ru/
Если имя сервера будет изменено после создания пользователей, могут появиться проблемы с федерацией и ID пользователей.
Следующий шаг
- Настроить DNS
matrix.stackworks.ruна FastPanel proxy server. - Выпустить SSL на FastPanel для
matrix.stackworks.ru. - Добавить proxy до
http://CORE_SERVER_IP:8008. - Ограничить доступ к Core:8008 только IP FastPanel-сервера.
- Проверить Matrix API через публичный HTTPS.
- Создать первого Matrix-пользователя.
- Проверить вход через Element.