Files
SWChat/.sw
T

238 строки
14 KiB
Plaintext

# SWChat — журнал проекта
Дата старта: 2026-05-08
Репозиторий: https://github.com/viktor138irk/SWChat
Рабочее имя продукта: SWChat
Проект: собственный мессенджер Android/Web на базе Matrix-сервера.
## Главное правило проекта
Не ломать существующие проекты на сервере.
Защищённые production-активы:
- ArtistFlow / artistflow.ru;
- основной виджет StackWorks / https://widget.stackworks.ru/;
- текущие сайты и домены FastPanel.
## Текущая архитектура установки
Принято решение ставить SWChat Core на отдельный новый сервер.
Старый сервер с FastPanel используется только для будущего frontend/web-клиента, без размещения Matrix/PostgreSQL/TURN.
Разделение:
- новый сервер: Matrix Synapse, PostgreSQL, TURN/STUN, backend, media storage, backups;
- старый FastPanel сервер: frontend/web-client/витрина, без автоматических изменений FastPanel.
## Стратегия тестирования
Сначала SWChat Core тестируется через официальные Matrix-клиенты.
Порядок:
1. Поднять и проверить Matrix/Synapse на Core-сервере.
2. Проверить локальный Matrix endpoint.
3. Настроить публичный домен matrix.stackworks.ru.
4. Проверить вход, регистрацию, комнаты, сообщения и файлы через официальные клиенты Matrix/Element.
5. Только после успешного тестирования официальными клиентами начинать разработку собственного Android/Web-клиента SWChat.
Свой клиент не писать, пока не подтверждено, что серверная часть работает стабильно через официальные клиенты.
## Жёсткое правило про FastPanel
Самостоятельно не трогать всё, что касается FastPanel.
Запрещено без отдельной явной команды пользователя:
- менять настройки FastPanel;
- менять vhost/config доменов FastPanel;
- применять proxy-настройки в FastPanel;
- перезаписывать nginx-конфиги, которыми управляет FastPanel;
- перезапускать/переустанавливать FastPanel;
- ставить новый Nginx поверх FastPanel;
- менять SSL-сертификаты через FastPanel;
- менять webroot существующих сайтов;
- трогать production-домены.
Разрешено:
- готовить инструкции;
- готовить шаблоны proxy-конфигов;
- готовить безопасные команды проверки;
- готовить backup-скрипты;
- описывать, что пользователь может сделать вручную в FastPanel.
Применение любых изменений в FastPanel — только после отдельной явной команды пользователя.
## Постоянное правило ведения .sw
Файл .sw является главным журналом проекта и ведётся постоянно.
Обязательно записывать в .sw:
- каждый значимый шаг разработки;
- архитектурные решения;
- запреты и ограничения;
- защищённые домены и сервисы;
- изменения версий;
- что было создано или изменено;
- текущий статус;
- следующий шаг;
- важные ошибки и выводы после исправлений.
В новом диалоге продолжение проекта начинается с чтения .sw.
## Важно про widget.stackworks.ru
widget.stackworks.ru — отдельный действующий production-проект StackWorks.
На текущем этапе SWChat НЕ связывается с widget.stackworks.ru и НЕ создаёт новый виджет.
Запрещено без отдельной явной команды:
- менять vhost/config домена widget.stackworks.ru;
- менять webroot виджета;
- затирать файлы виджета;
- менять SSL и настройки домена;
- интегрировать виджет с Matrix;
- создавать новый параллельный виджет для SWChat.
## Важно про ArtistFlow
ArtistFlow должен оставаться нетронутым:
- не менять vhost/config домена artistflow.ru;
- не перезаписывать общий nginx.conf FastPanel;
- не ставить новый Nginx поверх FastPanel;
- не трогать MySQL/БД ArtistFlow;
- не занимать порты FastPanel и текущих сайтов;
- перед изменениями nginx/FastPanel делать backup конфигов.
## Принятая архитектура SWChat
SWChat Core разворачивается на отдельном сервере.
Базовая схема:
- Matrix Synapse — отдельный сервис на 127.0.0.1:8008;
- PostgreSQL — отдельная база для Matrix/SWChat;
- backend/админка SWChat — отдельный локальный сервис;
- web-client — на старом FastPanel-сервере в будущем;
- Android-приложение — отдельный клиент Matrix, позже брендированный под SWChat/StackWorks;
- Caddy reverse proxy — отдельный HTTPS слой на Core-сервере.
## Домены проекта
Рекомендуемая безопасная схема:
- matrix.stackworks.ru — Matrix API / Synapse, новый SWChat Core сервер;
- turn.stackworks.ru — TURN/STUN, новый SWChat Core сервер;
- api-chat.stackworks.ru — backend API, новый SWChat Core сервер, если понадобится;
- chat.stackworks.ru или messenger.stackworks.ru — web-клиент на старом FastPanel-сервере;
- widget.stackworks.ru — отдельный production-виджет StackWorks, не часть Matrix/SWChat на текущем этапе.
## Предварительные директории Core-сервера
- /opt/swchat/source — исходники GitHub;
- /opt/swchat/app — backend/админка;
- /opt/swchat/matrix — Matrix/Synapse;
- /opt/swchat/data — данные контейнеров;
- /opt/swchat/backups — резервные копии;
- /opt/swchat/logs — логи.
## Что понадобится на новом Core-сервере
- Ubuntu 24.04 или Ubuntu 22.04;
- root-доступ;
- Docker Engine;
- Docker Compose plugin;
- PostgreSQL в контейнере;
- Matrix Synapse в контейнере;
- Caddy HTTPS reverse proxy;
- coturn позже;
- отдельные DNS-записи на IP нового сервера.
## MVP проекта
Первая рабочая цель:
1. Подготовить базовый репозиторий.
2. Поднять Matrix Synapse на отдельном Core-сервере.
3. Подключить PostgreSQL.
4. Проверить локальный Matrix endpoint.
5. Подготовить DNS/proxy инструкции без изменения FastPanel.
6. Протестировать через официальные Matrix-клиенты.
7. Только после этого подготовить Android/Web-клиент SWChat.
Минимальные функции:
- регистрация/вход;
- личные сообщения;
- групповые комнаты;
- отправка файлов/изображений;
- операторы/админы;
- безопасная установка рядом с production, но на отдельном сервере;
- журнал состояния проекта в этом файле .sw.
## Правила ведения проекта
1. Каждый заметный шаг записывать в этот файл .sw.
2. Новые версии фиксировать в VERSION и changelog.
3. Не плодить мусорные директории.
4. Все сервисы SWChat держать отдельно от ArtistFlow и widget.stackworks.ru.
5. Не вносить изменения в существующие домены без явной команды.
6. Для FastPanel давать точные proxy-конфиги, но не затирать чужие.
7. Перед потенциально опасными действиями добавлять backup-скрипт.
8. Любые действия с widget.stackworks.ru только после отдельной явной команды.
9. Ведение .sw обязательно на протяжении всего проекта.
10. Всё, что касается FastPanel, не трогать самостоятельно: только инструкции/шаблоны до отдельной команды пользователя.
11. Собственный клиент SWChat начинать только после успешного тестирования Core через официальные Matrix-клиенты.
## Текущий статус
2026-05-08:
- Репозиторий переименован в viktor138irk/SWChat.
- Создан файл .sw.
- Созданы VERSION, README.md и базовый docker-compose.yml.
- Созданы docs/ARCHITECTURE.md и docs/FASTPANEL_PROXY.md.
- Созданы scripts/healthcheck.sh и scripts/install.sh.
- Подготовлен автоустановщик.
- Зафиксировано пользовательское имя продукта: SWChat.
- Принято решение ставить SWChat Core на отдельный сервер.
- Старый FastPanel-сервер использовать только для frontend/web-client в будущем.
- Принято решение сначала тестировать SWChat Core официальными Matrix-клиентами, затем писать собственный клиент.
- Исправлен docker-compose.yml: контейнеры переименованы в swchat-*, убран obsolete version, добавлены переменные .env.
- Исправлена PostgreSQL locale для Synapse: добавлены POSTGRES_INITDB_ARGS с locale C.
- Исправлена проблема compose down без env: POSTGRES_PASSWORD получил безопасный fallback.
- SWChat Core успешно поднялся на новом сервере: swchat-synapse healthy, swchat-postgres up.
- Локальный Matrix endpoint успешно отвечает: curl http://127.0.0.1:8008/_matrix/client/versions вернул HTTP 200 OK и JSON версий Matrix API.
- Зафиксировано, что widget.stackworks.ru — отдельный production-виджет StackWorks.
- Зафиксировано, что widget.stackworks.ru пока никак не связывается с Matrix/SWChat.
- Зафиксировано, что новый виджет SWChat не планируется.
- Зафиксировано постоянное правило: файл .sw ведётся всегда и обновляется после каждого значимого шага.
- Зафиксировано жёсткое правило: всё, что касается FastPanel, самостоятельно не трогать; только готовить инструкции и шаблоны до отдельной явной команды пользователя.
2026-05-09:
- Версия проекта повышена до 0.1.1.
- В docker-compose.yml добавлен отдельный контейнер swchat-caddy.
- Принято решение использовать Caddy как основной HTTPS reverse proxy для SWChat Core.
- Создан deploy/caddy/Caddyfile.
- HTTPS реализуется полностью на отдельном Core-сервере без участия FastPanel.
- Caddy проксирует HTTPS-трафик на локальный Matrix Synapse 127.0.0.1:8008.
- Добавлены постоянные директории хранения Caddy data/config/logs.
- Обновлён scripts/healthcheck.sh.
- Исправлено старое имя WSMessenger в healthcheck.
- Healthcheck теперь дополнительно проверяет 80/443 порты и локальный Matrix endpoint.
## Текущий этап установки
SWChat Core локально работает на новом отдельном сервере.
Следующий этап — публичный HTTPS через Caddy.
После настройки 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;
- проверить HTTPS endpoint через браузер и curl;
- создать первого пользователя Matrix;
- проверить вход через официальный Element/Matrix клиент;
- только после этого готовить frontend на FastPanel-сервере и свой Android/Web-клиент.