diff --git a/.sw b/.sw index 08f0c0d..eab222b 100644 --- a/.sw +++ b/.sw @@ -22,7 +22,7 @@ Разделение: - новый сервер: 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; - PostgreSQL — отдельная база для Matrix/SWChat; - backend/админка SWChat — отдельный локальный сервис; -- web-client — на старом FastPanel-сервере в будущем; +- web-client — на FastPanel-сервере в будущем; - 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 сервер; - 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 на текущем этапе. ## Предварительные директории Core-сервера @@ -142,7 +163,7 @@ SWChat Core разворачивается на отдельном сервер - Matrix Synapse в контейнере; - Caddy HTTPS reverse proxy; - coturn позже; -- отдельные DNS-записи на IP нового сервера. +- отдельные DNS-записи на IP нового сервера или proxy-домены на отдельном FastPanel-сервере. ## MVP проекта @@ -151,7 +172,7 @@ SWChat Core разворачивается на отдельном сервер 2. Поднять Matrix Synapse на отдельном Core-сервере. 3. Подключить PostgreSQL. 4. Проверить локальный Matrix endpoint. -5. Подготовить DNS/proxy инструкции без изменения FastPanel. +5. Подготовить DNS/proxy инструкции без изменения production FastPanel. 6. Протестировать через официальные Matrix-клиенты. 7. Только после этого подготовить Android/Web-клиент SWChat. @@ -175,7 +196,7 @@ SWChat Core разворачивается на отдельном сервер 7. Перед потенциально опасными действиями добавлять backup-скрипт. 8. Любые действия с widget.stackworks.ru только после отдельной явной команды. 9. Ведение .sw обязательно на протяжении всего проекта. -10. Всё, что касается FastPanel, не трогать самостоятельно: только инструкции/шаблоны до отдельной команды пользователя. +10. Всё, что касается текущего production FastPanel, не трогать самостоятельно: только инструкции/шаблоны до отдельной команды пользователя. 11. Собственный клиент SWChat начинать только после успешного тестирования Core через официальные Matrix-клиенты. ## Текущий статус @@ -213,25 +234,33 @@ SWChat Core разворачивается на отдельном сервер - Обновлён scripts/healthcheck.sh. - Исправлено старое имя WSMessenger в healthcheck. - 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 локально работает на новом отдельном сервере. -Следующий этап — публичный HTTPS через Caddy. +Следующий этап — публичный HTTPS. + +Допустимые варианты: +1. Caddy на Core-сервере напрямую принимает 80/443 для matrix.stackworks.ru. +2. Отдельный FastPanel-сервер принимает домены/SSL и проксирует matrix.stackworks.ru до Core-сервера. После настройки DNS ожидается: -- автоматический выпуск Let's Encrypt сертификата через Caddy; - HTTPS endpoint на https://matrix.stackworks.ru; - успешный Matrix login через официальный Element. ## Следующий шаг Следующий этап: -- настроить DNS A-запись matrix.stackworks.ru на IP нового Core-сервера; -- открыть TCP 80/443 до Core-сервера; -- выполнить docker compose up -d после обновления compose; +- выбрать схему публичных доменов: прямой Caddy на Core-сервере или отдельный FastPanel reverse proxy; +- настроить DNS A-записи доменов SWChat на выбранный публичный сервер; +- открыть TCP 80/443 до публичного сервера; +- если выбран FastPanel proxy, подготовить отдельные proxy-шаблоны под matrix.stackworks.ru и chat.stackworks.ru; - проверить HTTPS endpoint через браузер и curl; - создать первого пользователя Matrix; - проверить вход через официальный Element/Matrix клиент; -- только после этого готовить frontend на FastPanel-сервере и свой Android/Web-клиент. +- только после этого готовить frontend и свой Android/Web-клиент.