Files

58 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` аутентифицирован