change email-storage-analysis: ФС vs Maildir анализ (задача 4)

- STORAGE_ANALYSIS.md: сравнение email.md/Maildir/MBOX/notmuch, рекомендация
  остаться на email.md + tags в frontmatter + опц. экспорт Maildir
- 3 REQUIREMENTS в spec email-storage-format, change архивирован
- Задача 4 из портфеля веб-UI закрыта
This commit is contained in:
estorozhenko
2026-09-11 13:14:56 +00:00
parent bc206a1159
commit b047e3a21d
11 changed files with 492 additions and 0 deletions
@@ -0,0 +1,58 @@
# Proposal — icq-fix-prosody-network
## Почему
С 2026-09-08 chat.nixg.ru (веб-клиент Converse.js) снова показывает бесконечную загрузку.
Ручной запуск контейнера prosody не помог.
**Корневая причина (подтверждена инспекцией):**
- Контейнер `icq-prosody` запущен вручную вне docker compose (`docker start`, пересоздан
вручную 2026-09-08T13:33) и **не подключён ни к одной Docker-сети**:
- `docker ps -a` → колонка Networks у `icq-prosody` пустая;
- `docker network inspect icq_default` → в сети только `icq-webchat` (172.27.0.2)
и `icq-slidgram` (172.27.0.4), prosody отсутствует;
- `docker inspect icq-prosody --format '{{json .NetworkSettings.Networks}}'` → `{}`;
- `docker exec icq-prosody hostname -i` → пусто (нет IP в контейнере).
- Из-за этого `icq-webchat` не может достучаться до Prosody по имени `icq-prosody`
(DNS icq_default не резолвится), WebSocket-соединение не устанавливается →
«бесконечная загрузка».
- `NetMode=icq_default` в метаданных — обманчиво: метка осталась, но фактического
подключения к сети нет (вероятно, контейнер пересоздан вне compose).
## Что делаем
Пересоздать `icq-prosody` штатно через docker compose (force-recreate), чтобы он
вернулся в сеть `icq_default` вместе с webchat и slidgram. Проверить, что:
- контейнер подключён к `icq_default` с IP;
- webchat и slidgram видят prosody по имени `icq-prosody`;
- chat.nixg.ru снова открывается (WS connect → 101);
- мост telegram.nixg.ru по-прежнему аутентифицирован;
- после рестарта ничего не сломалось (логотипы, S2S, http_upload).
## Объём
Один сервис (`prosody`), одна команда `docker compose up -d --force-recreate prosody`
(+ проверки). Без изменений конфигов и образов.
## Принятые решения
- Не менять конфиги Prosody, nginx, DNS — только вернуть контейнер в compose-жизненный цикл.
- Не трогать данные (./data, ./config, ./logs) — они на volume'ах.
- Верификацию делать и изнутри (docker exec), и снаружи (curl через Caddy/nginx).
## Риски и откат
- **Риск:** force-recreate может на пару секунд уронить веб-чат/федерацию. Приемлемо.
- **Откат:** `docker compose up -d` (пересоздание с теми же volume'ами) или
`docker start icq-prosody` если что-то пошло не так — данные не теряются (volume'ы).
- **Не трогаем** данные пользователей; никаких удалений.
## Критерии приёмки
- [ ] `docker ps` показывает `icq-prosody` в сети `icq_default` (не пустая колонка)
- [ ] `docker network inspect icq_default` содержит `icq-prosody` с IP
- [ ] `docker exec icq-prosody hostname -i` возвращает IP (не пусто)
- [ ] из webchat резолвится и коннектится `icq-prosody:5280`
- [ ] https://chat.nixg.ru грузится, Converse показывает окно входа (не бесконечная загрузка)
- [ ] WS `wss://xmpp.nixg.ru` → HTTP 101 (переключение протокола)
- [ ] `docker logs icq-prosody` без новых ошибок; компонент `telegram.nixg.ru` аутентифицирован