Files
SWChat/docs/FASTPANEL_REVERSE_PROXY.md
T

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 пользователей.

Следующий шаг

  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.