mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 09:55:11 +00:00
58 lines
3.9 KiB
Markdown
58 lines
3.9 KiB
Markdown
# 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` аутентифицирован |