diff --git a/.sw b/.sw index 99fae5e..ef179b3 100644 --- a/.sw +++ b/.sw @@ -8,11 +8,27 @@ Не ломать существующие проекты на сервере. -Защищённые прод-активы: +Защищённые production-активы: - ArtistFlow / artistflow.ru; -- текущий чат-виджет / https://widget.stackworks.ru/; +- основной виджет StackWorks / https://widget.stackworks.ru/; - текущие сайты и домены FastPanel. +## Важно про widget.stackworks.ru + +widget.stackworks.ru — отдельный действующий production-проект StackWorks. + +На текущем этапе SWMessenger НЕ связывается с widget.stackworks.ru и НЕ создаёт новый виджет. + +Запрещено без отдельной явной команды: +- менять vhost/config домена widget.stackworks.ru; +- менять webroot виджета; +- затирать файлы виджета; +- менять SSL и настройки домена; +- интегрировать виджет с Matrix; +- создавать новый параллельный виджет для SWMessenger. + +## Важно про ArtistFlow + ArtistFlow должен оставаться нетронутым: - не менять vhost/config домена artistflow.ru; - не перезаписывать общий nginx.conf FastPanel; @@ -21,78 +37,37 @@ ArtistFlow должен оставаться нетронутым: - не занимать порты FastPanel и текущих сайтов; - перед изменениями nginx/FastPanel делать backup конфигов. -Текущий widget.stackworks.ru тоже должен оставаться нетронутым: -- не менять vhost/config домена widget.stackworks.ru без отдельной команды; -- не менять webroot существующего виджета без отдельной команды; -- не затирать файлы текущего виджета; -- не менять SSL-сертификат и proxy-настройки домена widget.stackworks.ru без отдельной команды; -- новый SWMessenger widget разрабатывать в отдельной директории/поддомене, пока не будет явной команды на замену текущего виджета. +## Принятая архитектура SWMessenger -## Принятая архитектура - -SWMessenger разворачивается отдельно от FastPanel-сайтов, ArtistFlow и текущего widget.stackworks.ru. +SWMessenger разворачивается отдельно от FastPanel-сайтов, ArtistFlow и widget.stackworks.ru. Базовая схема: -- FastPanel/Nginx — только reverse proxy и SSL-витрина; +- FastPanel/Nginx — reverse proxy и SSL-витрина; - Matrix Synapse — отдельный сервис на 127.0.0.1:8008; - PostgreSQL — отдельная база для Matrix/SWMessenger; - backend/админка SWMessenger — отдельный локальный сервис; -- web/client — можно выкладывать в вручную указанный webroot; -- новый widget SWMessenger — только в отдельный тестовый webroot/поддомен до явной команды на замену widget.stackworks.ru; +- web-client — отдельный web-клиент мессенджера; - Android-приложение — отдельный клиент Matrix, позже брендированный под SWMessenger/StackWorks. -## Предварительные домены +## Домены проекта -Домены можно менять в установщике, но рекомендуемая безопасная схема такая: - -- messenger.stackworks.ru или chat.stackworks.ru — web-клиент/панель; -- matrix.stackworks.ru — Matrix API reverse proxy на Synapse; -- sw-widget.stackworks.ru или test-widget.stackworks.ru — тестовый виджет SWMessenger; -- widget.stackworks.ru — существующий прод-виджет, не трогать без отдельной команды; +Рекомендуемая безопасная схема: +- matrix.stackworks.ru — Matrix API / Synapse; +- chat.stackworks.ru или messenger.stackworks.ru — web-клиент; - admin-messenger.stackworks.ru — админ-панель; -- turn.stackworks.ru — TURN/STUN для звонков, если потребуется. +- turn.stackworks.ru — TURN/STUN для звонков, если потребуется; +- widget.stackworks.ru — отдельный production-виджет StackWorks, не часть Matrix/SWMessenger на текущем этапе. ## Предварительные директории -Рекомендуемая структура на сервере: - - /opt/swmessenger/source — исходники GitHub; - /opt/swmessenger/app — backend/админка; - /opt/swmessenger/matrix — Matrix/Synapse; -- /opt/swmessenger/widget — новый виджет SWMessenger; - /opt/swmessenger/element — web-клиент, если используем Element/Web; - /opt/swmessenger/backups — резервные копии; -- /var/www/swmessenger/public — webroot для статики/фронта/тестового виджета. +- /var/www/swmessenger/public — webroot для фронта, если нужен. -Запрещено автоматически использовать webroot текущего widget.stackworks.ru без отдельной команды. - -## Принцип установки рядом с FastPanel - -Можно вручную указать webroot, как в проекте с виджетом, но нельзя случайно указать текущий webroot widget.stackworks.ru, если нет явной команды на замену. - -Файлы фронта/тестового виджета можно тянуть в отдельный webroot: - -```bash -cd /opt/swmessenger/source -rsync -a --delete public/ /var/www/swmessenger/public/ -``` - -Сервисы не кладём в webroot: -- Synapse работает сервисом и слушает 127.0.0.1:8008; -- backend работает сервисом и слушает локальный порт; -- PostgreSQL работает локально; -- наружу выпускаем только через FastPanel/Nginx proxy. - -## FastPanel proxy-логика - -Пример: - -- matrix.example.ru -> proxy_pass http://127.0.0.1:8008; -- chat.example.ru -> proxy_pass http://127.0.0.1:3000; -- admin.example.ru -> proxy_pass http://127.0.0.1:3100; -- sw-widget.example.ru -> отдельный webroot /var/www/swmessenger/public/widget или proxy. - -Не использовать widget.stackworks.ru для нового SWMessenger-виджета, пока не будет отдельной команды. +Запрещено автоматически использовать webroot widget.stackworks.ru. ## Что понадобится @@ -108,8 +83,7 @@ rsync -a --delete public/ /var/www/swmessenger/public/ Клиенты: - Android-клиент на базе Matrix SDK / форка Element; -- web-клиент, желательно сначала Element Web или собственный легкий клиент; -- встраиваемый widget для сайтов. +- web-клиент, желательно сначала Element Web или собственный лёгкий клиент. ## MVP проекта @@ -118,17 +92,15 @@ rsync -a --delete public/ /var/www/swmessenger/public/ 2. Добавить installer/config wizard. 3. Поднять Matrix Synapse локально. 4. Добавить FastPanel proxy-инструкции. -5. Добавить webroot deploy для фронта и тестового виджета. -6. Добавить healthcheck. -7. Добавить backup перед изменениями. -8. Подготовить Android-план. +5. Добавить healthcheck. +6. Добавить backup перед изменениями. +7. Подготовить Android-план. Минимальные функции: - регистрация/вход; - личные сообщения; - групповые комнаты; - отправка файлов/изображений; -- тестовый виджет сайта; - операторы/админы; - безопасная установка рядом с FastPanel; - журнал состояния проекта в этом файле .sw. @@ -136,9 +108,9 @@ rsync -a --delete public/ /var/www/swmessenger/public/ ## Правила ведения проекта 1. Каждый заметный шаг записывать в этот файл .sw. -2. Новые версии фиксировать в VERSION и changelog, когда появятся файлы проекта. +2. Новые версии фиксировать в VERSION и changelog. 3. Не плодить мусорные директории. -4. Все сервисы SWMessenger держать отдельно от ArtistFlow и текущего widget.stackworks.ru. +4. Все сервисы SWMessenger держать отдельно от ArtistFlow и widget.stackworks.ru. 5. Не вносить изменения в существующие домены без явной команды. 6. Для FastPanel давать точные proxy-конфиги, но не затирать чужие. 7. Перед потенциально опасными действиями добавлять backup-скрипт. @@ -149,9 +121,11 @@ rsync -a --delete public/ /var/www/swmessenger/public/ 2026-05-08: - Репозиторий viktor138irk/WSMessenger подключён. - Репозиторий был пустой. -- Создан первый файл .sw с архитектурой, правилами безопасности и планом MVP. +- Создан первый файл .sw. - Созданы VERSION, README.md и базовый docker-compose.yml. -- Зафиксировано, что https://widget.stackworks.ru/ — существующий прод-виджет, его нельзя сносить, перезаписывать или ломать. +- Зафиксировано, что widget.stackworks.ru — отдельный production-виджет StackWorks. +- Зафиксировано, что widget.stackworks.ru пока никак не связывается с Matrix/SWMessenger. +- Зафиксировано, что новый виджет SWMessenger не планируется. ## Следующий шаг @@ -160,5 +134,4 @@ rsync -a --delete public/ /var/www/swmessenger/public/ - docs/ARCHITECTURE.md; - scripts/install.sh; - scripts/healthcheck.sh; -- public/widget/ минимальная тестовая заготовка виджета; - .gitignore.