# Design — icq-fix-prosody-network ## Итоговая команда ```bash cd /opt/icq && docker compose up -d --force-recreate prosody ``` Docker compose пересоздаст контейнер `icq-prosody` из того же образа (`gitea.nixg.ru/hermes/icq-prosody:13.0`) с теми же volume'ами и подключит его к сети `icq_default` (как указано в docker-compose.yml). После этого webchat и slidgram снова видят prosody по имени `icq-prosody`. Образ не меняется (config-hash из inspect = 6523667b1cb848380db7b2b77c15d3d1d0beeb303c8d03de2646699012672f85 — тот же compose-проект icq). Данные на volume'ах `./data`, `./config`, `./certs`, `./modules`, `./logs` — не затрагиваются. ## Порядок 1. **Снимок состояния ДО** (для сравнения): - `docker ps --format '{{.Names}} {{.Networks}}'` — зафиксировать пустую сеть у prosody. - `docker network inspect icq_default` — зафиксировать состав (webchat, slidgram). 2. **Пересоздание:** - `cd /opt/icq && docker compose up -d --force-recreate prosody` - дождаться `Started` и статуса `Up`. 3. **Проверка сети (изнутри compose):** - `docker ps --format '{{.Names}} {{.Networks}}'` → prosody в icq_default. - `docker network inspect icq_default` → prosody с IP. - `docker exec icq-prosody hostname -i` → непустой IP. - `docker exec icq-webchat getent hosts icq-prosody` → резолвится в 172.27.0.x. 4. **Проверка приложения:** - `curl -i` к BOSH/WS через nginx/Caddy на 5280, проверить, что веб-клиент получает ответ (VirtualHost nixg.ru + consider_websocket_secure=true уже в конфиге). - `docker logs icq-prosody --tail 100` — нет новых ошибок, компонент telegram.nixg.ru аутентифицирован. - `docker logs icq-webchat --tail 50` — nginx отдаёт страницу без ошибок. - `docker logs icq-slidgram --tail 50` — мост без ошибок аутентификации. 5. **Проверка снаружи:** - `curl -i https://chat.nixg.ru/` через Caddy → 200. - WS: `curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" ...` на wss://xmpp.nixg.ru (или через браузер/логи) → HTTP 101. ## Откат Если после пересоздания что-то пошло не так (маловероятно — конфиг/образ не менялись): ```bash cd /opt/icq && docker compose up -d # повторное создание без force # или, если совсем плохо: docker start icq-prosody # старый контейнер ещё существует до пересоздания ``` Volume'ы не трогаем; данные не теряются. Резервная копия текущего состояния: `docker inspect icq-prosody > /tmp/icq-prosody-inspect-before.json` (снимок до пересоздания). ## Затронутые файлы Не меняем ни одного файла конфигурации. Только состояние Docker (контейнер). ## Затрагиваемые сервисы/порты - prosody: 5222/5269/5280/5281 (все сохраняются из compose) - webchat: 8081 (nginx, проксируется Caddy на vps02) - slidgram: 5347 (external component) - Сеть: icq_default (172.27.0.0/16, шлюз 172.27.0.1)