# Конфликт адресов Docker при установке

## Симптомы

- После установки системы Принтум происходит разрыв соединения с сервером.
- Подключение по SSH становится недоступным сразу после установки или при первом запуске контейнеров.

---

## Возможные причины

Конфликт IP-адресов между внутренней сетью Docker и реальной локальной сетью. Для работы Принтум используется внутренняя сеть Docker с пулом адресов:

```
10.28.32.0/26
```

Если данный диапазон пересекается с адресным пространством инфраструктуры — необходимо выделить другой пул адресов для Docker.

### Когда может возникнуть проблема

- Во время установки системы.
- Сразу после установки.
- При первом запуске контейнеров.

---

## Диагностика

Если подключение по SSH недоступно — подключитесь к серверу **через консоль гипервизора** (vSphere / Proxmox / Hyper-V и т.д.).

---

## Логи и диагностические данные

### Где смотреть логи

- **printum_nginx** — Nginx Мониторинга — если конфликт возник при установке Мониторинга  
    `cd /opt/printum && docker-compose logs -f --tail=200 printum_nginx`
- **printmanager_web** — Nginx ПринтМенеджера — если конфликт возник при установке ПМ  
    `cd /opt/printmanager && docker-compose logs -f --tail=200 printmanager_web`

### Что искать в логах

- Выявить ошибки запуска контейнеров после изменения пула адресов.
- Проверить, что контейнеры успешно запустились после перенастройки сети Docker.

### Что приложить к обращению в поддержку

- Вывод команды `bash /opt/printum/logs.sh` (Мониторинг) или `bash /opt/printmanager/logs.sh` (ПринтМенеджер)
- Версию: `cat /opt/printum/.version` или `cat /opt/printmanager/.version`
- Описание сценария и шагов воспроизведения
- ОС сервера

## Решение

1. **Остановите контейнеры Принтум**

Если установлен Мониторинг:

```
cd /opt/printum
docker-compose down
```

Если установлен ПринтМенеджер:

```
cd /opt/printmanager
docker-compose down
```

2. **Проверьте наличие файла конфигурации Docker**

Проверьте, существует ли файл `/etc/docker/daemon.json`. Если файла нет — создайте его:

```
sudo nano /etc/docker/daemon.json
```

3. **Укажите новый пул IP-адресов Docker**

Добавьте или отредактируйте содержимое файла:

```
{
  "default-address-pools": [
    {
      "base": "x.x.x.x/x",
      "size": 26
    }
  ]
}
```

- `"base"` — выделенный диапазон IP-адресов, который не пересекается с локальной сетью.
- `"size": 26` — размер подсети (изменять не требуется).

Используйте только свободный диапазон, согласованный с сетевым администратором. Сохраните файл и выйдите из редактора.

4. **Перезапустите службу Docker**

```
sudo systemctl restart docker
```

5. **Запустите контейнеры Принтум**

Если установлен Мониторинг:

```
cd /opt/printum
docker-compose up -d
```

Если установлен ПринтМенеджер:

```
cd /opt/printmanager
docker-compose up -d
```

6. **Проверьте адреса контейнеров**

```
sudo docker ps -q | sudo xargs -n 1 docker inspect -f '{{ .Name }}: {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
```

---

## Ошибка при запуске контейнеров

```
ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
```

**Причина:** выбранный диапазон адресов также пересекается с существующими сетями.  
**Решение:** вернитесь к шагу 3 и укажите другой диапазон IP-адресов.

---

## Если конфликт известен до установки

Если известно, что адресное пространство `10.28.32.0/26` конфликтует с вашей сетью до установки системы — выполните инструкцию, игнорируя шаги 1 и 5 (остановку и повторный запуск контейнеров). Настройка пула выполняется до первого запуска системы.

---

## Что проверить перед эскалацией

- Выбранный диапазон не пересекается с другими подсетями (проверить с сетевым администратором).
- Файл `/etc/docker/daemon.json` сохранён корректно (валидный JSON).
- Служба Docker перезапущена после изменения конфигурации.
- IP-адреса контейнеров принадлежат новому пулу (шаг 6).