Files

3.7 KiB
Raw Permalink Blame History

Design — icq-fix-prosody-network

Итоговая команда

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.

Откат

Если после пересоздания что-то пошло не так (маловероятно — конфиг/образ не менялись):

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)