Зафиксирован вариант размещения доменов SWChat на отдельном FastPanel-сервере

Этот коммит содержится в:
Виктор
2026-05-09 00:26:21 +09:00
родитель e5118fbf8a
Коммит 637f39eaab
+43 -14
Просмотреть файл
@@ -22,7 +22,7 @@
Разделение: Разделение:
- новый сервер: Matrix Synapse, PostgreSQL, TURN/STUN, backend, media storage, backups; - новый сервер: Matrix Synapse, PostgreSQL, TURN/STUN, backend, media storage, backups;
- старый FastPanel сервер: frontend/web-client/витрина, без автоматических изменений FastPanel. - FastPanel-сервер: домены, frontend/web-client, публичная витрина и при необходимости reverse proxy, без размещения PostgreSQL/TURN и без вмешательства в чужие production-проекты.
## Стратегия тестирования ## Стратегия тестирования
@@ -110,17 +110,38 @@ SWChat Core разворачивается на отдельном сервер
- Matrix Synapse — отдельный сервис на 127.0.0.1:8008; - Matrix Synapse — отдельный сервис на 127.0.0.1:8008;
- PostgreSQL — отдельная база для Matrix/SWChat; - PostgreSQL — отдельная база для Matrix/SWChat;
- backend/админка SWChat — отдельный локальный сервис; - backend/админка SWChat — отдельный локальный сервис;
- web-client — на старом FastPanel-сервере в будущем; - web-client — на FastPanel-сервере в будущем;
- Android-приложение — отдельный клиент Matrix, позже брендированный под SWChat/StackWorks; - Android-приложение — отдельный клиент Matrix, позже брендированный под SWChat/StackWorks;
- Caddy reverse proxy — отдельный HTTPS слой на Core-сервере. - Caddy reverse proxy — отдельный HTTPS слой на Core-сервере либо, при выбранной схеме, FastPanel/Nginx reverse proxy на отдельном FastPanel-сервере.
## Вариант с другим FastPanel-сервером
Можно разместить публичные домены SWChat на другом нашем сервере с FastPanel, если этот сервер не является текущим production-сервером ArtistFlow/widget.stackworks.ru.
Разрешённая роль такого FastPanel-сервера:
- держать DNS/домены и SSL для chat.stackworks.ru, messenger.stackworks.ru, matrix.stackworks.ru;
- размещать web-клиент SWChat;
- работать как reverse proxy до Core-сервера с Matrix Synapse;
- отдавать статическую витрину/лендинг/документацию SWChat.
Нежелательная роль FastPanel-сервера:
- размещать PostgreSQL Matrix;
- размещать TURN/STUN для звонков;
- хранить тяжёлые media/backups Matrix;
- смешивать Matrix Core с чужими production-проектами.
Предпочтительная схема:
- Core-сервер: Synapse, PostgreSQL, media, backups, TURN позже;
- отдельный FastPanel-сервер: домены, SSL, frontend и proxy;
- старый production FastPanel с ArtistFlow/widget.stackworks.ru не трогать.
## Домены проекта ## Домены проекта
Рекомендуемая безопасная схема: Рекомендуемая безопасная схема:
- matrix.stackworks.ru — Matrix API / Synapse, новый SWChat Core сервер; - matrix.stackworks.ru — Matrix API / Synapse, новый SWChat Core сервер или reverse proxy на отдельном FastPanel-сервере до Core;
- turn.stackworks.ru — TURN/STUN, новый SWChat Core сервер; - turn.stackworks.ru — TURN/STUN, новый SWChat Core сервер;
- api-chat.stackworks.ru — backend API, новый SWChat Core сервер, если понадобится; - api-chat.stackworks.ru — backend API, новый SWChat Core сервер, если понадобится;
- chat.stackworks.ru или messenger.stackworks.ru — web-клиент на старом FastPanel-сервере; - chat.stackworks.ru или messenger.stackworks.ru — web-клиент на FastPanel-сервере;
- widget.stackworks.ru — отдельный production-виджет StackWorks, не часть Matrix/SWChat на текущем этапе. - widget.stackworks.ru — отдельный production-виджет StackWorks, не часть Matrix/SWChat на текущем этапе.
## Предварительные директории Core-сервера ## Предварительные директории Core-сервера
@@ -142,7 +163,7 @@ SWChat Core разворачивается на отдельном сервер
- Matrix Synapse в контейнере; - Matrix Synapse в контейнере;
- Caddy HTTPS reverse proxy; - Caddy HTTPS reverse proxy;
- coturn позже; - coturn позже;
- отдельные DNS-записи на IP нового сервера. - отдельные DNS-записи на IP нового сервера или proxy-домены на отдельном FastPanel-сервере.
## MVP проекта ## MVP проекта
@@ -151,7 +172,7 @@ SWChat Core разворачивается на отдельном сервер
2. Поднять Matrix Synapse на отдельном Core-сервере. 2. Поднять Matrix Synapse на отдельном Core-сервере.
3. Подключить PostgreSQL. 3. Подключить PostgreSQL.
4. Проверить локальный Matrix endpoint. 4. Проверить локальный Matrix endpoint.
5. Подготовить DNS/proxy инструкции без изменения FastPanel. 5. Подготовить DNS/proxy инструкции без изменения production FastPanel.
6. Протестировать через официальные Matrix-клиенты. 6. Протестировать через официальные Matrix-клиенты.
7. Только после этого подготовить Android/Web-клиент SWChat. 7. Только после этого подготовить Android/Web-клиент SWChat.
@@ -175,7 +196,7 @@ SWChat Core разворачивается на отдельном сервер
7. Перед потенциально опасными действиями добавлять backup-скрипт. 7. Перед потенциально опасными действиями добавлять backup-скрипт.
8. Любые действия с widget.stackworks.ru только после отдельной явной команды. 8. Любые действия с widget.stackworks.ru только после отдельной явной команды.
9. Ведение .sw обязательно на протяжении всего проекта. 9. Ведение .sw обязательно на протяжении всего проекта.
10. Всё, что касается FastPanel, не трогать самостоятельно: только инструкции/шаблоны до отдельной команды пользователя. 10. Всё, что касается текущего production FastPanel, не трогать самостоятельно: только инструкции/шаблоны до отдельной команды пользователя.
11. Собственный клиент SWChat начинать только после успешного тестирования Core через официальные Matrix-клиенты. 11. Собственный клиент SWChat начинать только после успешного тестирования Core через официальные Matrix-клиенты.
## Текущий статус ## Текущий статус
@@ -213,25 +234,33 @@ SWChat Core разворачивается на отдельном сервер
- Обновлён scripts/healthcheck.sh. - Обновлён scripts/healthcheck.sh.
- Исправлено старое имя WSMessenger в healthcheck. - Исправлено старое имя WSMessenger в healthcheck.
- Healthcheck теперь дополнительно проверяет 80/443 порты и локальный Matrix endpoint. - Healthcheck теперь дополнительно проверяет 80/443 порты и локальный Matrix endpoint.
- Рассмотрен вариант размещения публичных доменов SWChat на другом нашем сервере с FastPanel.
- Зафиксировано: отдельный FastPanel-сервер можно использовать для доменов, SSL, web-клиента и reverse proxy до Core-сервера.
- Зафиксировано: Matrix Core, PostgreSQL, media storage, backups и TURN/STUN лучше держать на отдельном Core-сервере, а не внутри FastPanel.
- Зафиксировано: текущий production FastPanel с ArtistFlow/widget.stackworks.ru не трогать.
## Текущий этап установки ## Текущий этап установки
SWChat Core локально работает на новом отдельном сервере. SWChat Core локально работает на новом отдельном сервере.
Следующий этап — публичный HTTPS через Caddy. Следующий этап — публичный HTTPS.
Допустимые варианты:
1. Caddy на Core-сервере напрямую принимает 80/443 для matrix.stackworks.ru.
2. Отдельный FastPanel-сервер принимает домены/SSL и проксирует matrix.stackworks.ru до Core-сервера.
После настройки DNS ожидается: После настройки DNS ожидается:
- автоматический выпуск Let's Encrypt сертификата через Caddy;
- HTTPS endpoint на https://matrix.stackworks.ru; - HTTPS endpoint на https://matrix.stackworks.ru;
- успешный Matrix login через официальный Element. - успешный Matrix login через официальный Element.
## Следующий шаг ## Следующий шаг
Следующий этап: Следующий этап:
- настроить DNS A-запись matrix.stackworks.ru на IP нового Core-сервера; - выбрать схему публичных доменов: прямой Caddy на Core-сервере или отдельный FastPanel reverse proxy;
- открыть TCP 80/443 до Core-сервера; - настроить DNS A-записи доменов SWChat на выбранный публичный сервер;
- выполнить docker compose up -d после обновления compose; - открыть TCP 80/443 до публичного сервера;
- если выбран FastPanel proxy, подготовить отдельные proxy-шаблоны под matrix.stackworks.ru и chat.stackworks.ru;
- проверить HTTPS endpoint через браузер и curl; - проверить HTTPS endpoint через браузер и curl;
- создать первого пользователя Matrix; - создать первого пользователя Matrix;
- проверить вход через официальный Element/Matrix клиент; - проверить вход через официальный Element/Matrix клиент;
- только после этого готовить frontend на FastPanel-сервере и свой Android/Web-клиент. - только после этого готовить frontend и свой Android/Web-клиент.