Files
icq/openspec/changes/icq-fix-prosody-network/design.md
T

65 lines
3.7 KiB
Markdown
Raw 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.
# 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)