# 6. Обновление и обслуживание

Обновление, резервное копирование, сертификаты, пароли

# Обновление

# Онлайн-обновление Мониторинга

## Описание

Обновление Мониторинга до последней стабильной версии через интернет с помощью install-скрипта.

## Предусловия

- Сервер имеет доступ в интернет
- Права sudo на сервере

## Шаги

### Стандартное обновление

Команда обновления мониторинга до стабильной версии:

	sudo curl -L https://download.printum.io/box/monitoring/install.sh | sudo -E bash

Скрипт автоматически скачает дистрибутив стабильной версии, проверит целостность по чек-сумме (sha512) и выполнит обновление.

### Обновление с шифрованием конфигурационного файла

Если при установке использовалось шифрование `.env`-файла, добавьте переменную `ENV_VAULT_PASSWORD`:

Установка по hostname: 
    
    sudo curl -L https://download.printum.io/box/monitoring/install.sh | sudo -E MON_HOSTNAME=<hostname> ENV_VAULT_PASSWORD=<password> bash -s agent

Установка по IP: 

    sudo curl -L https://download.printum.io/box/monitoring/install.sh | sudo -E IP_ADDRESS=<ip> ENV_VAULT_PASSWORD=<password> bash -s agent

Во время обновления система запросит ввод пароля повторно.

**Важно:** переход с незашифрованного файла на зашифрованный в процессе обновления не поддерживается.

## Проверка

- Проверьте доступность личного кабинета Мониторинга.
- Убедитесь в корректности отображения данных устройств.

# Офлайн-обновление Мониторинга

## Описание

Обновление Мониторинга без доступа в интернет с использованием дистрибутива, полученного от технической поддержки.

## Предусловия

- Получены ссылки на дистрибутив и файл чек-суммы (sha512) от техподдержки
- Файлы переданы на сервер

## Шаги

### Стандартное обновление

Обновление запускается следующей командой:

    sudo -E ./install.sh

### Обновление с шифрованием конфигурационного файла

При обновлении ПринтМенеджера с включённым шифрованием конфигурационного файла необходимо указать переменную ENV_VAULT_PASSWORD=\<password>

    sudo ENV_VAULT_PASSWORD=<password> -E ./install.sh

Пример: `sudo ENV_VAULT_PASSWORD=passW0rd@ -E ./install.sh`

Система запросит ввод пароля повторно. Переход с незашифрованного на зашифрованный в процессе обновления не поддерживается.

## Проверка

- Проверьте доступность личного кабинета Мониторинга.
- Убедитесь в корректности отображения данных.

# Онлайн-обновление ПринтМенеджера

## Описание

Обновление ПринтМенеджера до актуальной стабильной версии через интернет.

## Предусловия

- Сервер имеет доступ в интернет
- Права sudo на сервере

## Шаги

### Стандартное обновление

    sudo curl -L https://download.printum.io/distrib/printum-printmanager/install.sh | sudo -E bash

Скрипт скачает дистрибутив стабильной версии, проверит целостность (sha512) и выполнит обновление.

### Обновление с шифрованием конфигурационного файла

    sudo curl -L https://download.printum.io/distrib/printum-printmanager/install.sh | sudo -E PM_HOSTNAME=<ip> ENV_VAULT_PASSWORD=<password> bash

**Важно:** переход с незашифрованного на зашифрованный файл в процессе обновления не поддерживается.

## Проверка

- Проверьте доступность панели администратора ПринтМенеджера (`https://<ip>:8080/config/`).
- Убедитесь в корректности синхронизации с Мониторингом.

# Офлайн-обновление ПринтМенеджера

## Описание

Обновление ПринтМенеджера без доступа в интернет.

## Предусловия

- Получены ссылки на дистрибутив и файл чек-суммы от техподдержки
- Файлы переданы на сервер и проверена целостность

## Шаги

### Стандартное обновление

Аналогично офлайн-установке, но без переменной `PM_HOSTNAME`:

    sudo -E ./install.sh

### Обновление с шифрованием конфигурационного файла

    sudo ENV_VAULT_PASSWORD=<password> -E ./install.sh

Пример: `sudo ENV_VAULT_PASSWORD=passW0rd@ -E ./install.sh`

Система запросит ввод пароля повторно. Переход с незашифрованного на зашифрованный не поддерживается.

## Проверка

- Проверьте доступность панели администратора ПринтМенеджера.
- Проверьте синхронизацию с Мониторингом.

# Обновление в отказоустойчивой конфигурации

## Описание

Обновление системы, развёрнутой в конфигурации Active-Active с балансировщиком нагрузки (HAProxy) и несколькими серверами ПринтМенеджера.

## Порядок обновления

1. Обновите Мониторинг по инструкции «Онлайн-обновление Мониторинга» или «Офлайн-обновление Мониторинга».
2. Остановите ПМы на серверах. Для этого зайдите на каждый по ssh и выполните команды:
	```
    cd /opt/printmanager
	sudo docker-compose down
    ```
3. Последовательно обновите каждый сервер ПринтМенеджера командой обновления ПМ.
4. Проверьте, что панель администратора ПМ по адресу балансировщика после обновления стабильно доступна.

## Обновление с шифрованием конфигурационного файла

При включённом шифровании массовое развёртывание через скрипт массовой установки **не поддерживается**. Применяйте ручной порядок установки с добавлением переменной `ENV_VAULT_PASSWORD` для каждого сервера:

```
sudo -E ENV_VAULT_PASSWORD=<password> ./install.sh
```

## Проверка

Откройте панель администратора HAProxy и убедитесь, что все секции (`ftp`, `cups_1631`, `tcp_converter_7776/7777`, `admin_8010`, `admin_8080`) отображают зелёные строки серверов. Каждый из разделов должен иметь все зеленые строчки (кроме коричневых строк Frontend или Backend).

# Обновление Клиента ПМ на Linux

## Описание
Обновление клиентской части ПринтМенеджера на рабочих станциях Linux.

### Предусловия
- Получена ссылка на актуальный дистрибутив от техподдержки.
- УЗ пользователя, от которой выполняется обновление есть sudo-права на целевой рабочей станции.

## Шаги
1. Обратитесь в службу поддержки для получения ссылки на актуальный дистрибутив.
2. Скачайте новую версию клиента:

```
curl -O https://download.printum.io/distrib/printmanager-client/printmanager_client-linux-x.y.z.tar
```

3. Распакуйте архив и повторите шаги установки из раздела «Установка клиента ПМ»:

```
tar xvf printmanager_client-linux-x.y.z.tar
cd printmanager_client-linux-x.y.z
sudo -E ./install.sh
```

### Как проверить обновление
Выполните команду ниже для просмотра системных логов работы службы клиента ПМ:
```
sudo systemctl status printum-printmanager-client.service
```

- Служба должна быть активна.
- В системе должен присутствовать виртуальный принтер с именем Printum.

### Логи
```
sudo journalctl -u printum-printmanager-client.service
# или
cat /var/log/printum/printmanager_client.log
```

# Обновление Сетевого агента

## Описание

Обновление сетевого агента мониторинга на Linux или Windows.

## Обновление на Linux (офлайн)

1. Получите ссылку на последнюю версию дистрибутива от техподдержки.
2. Скачайте и выполните обновление:
````
tar xf agent-linux-x.x.tar.gz
cd printum-agent
sudo bash ./update.sh
````

## Обновление на Windows (офлайн)

1. Получите и скачайте архив `agent-win-x.x.x.zip` от техподдержки.
2. Распакуйте в удобную директорию, например `C:\Printum\agent-win-x.x.x`.
3. Откройте и настройте `config.env`:
    - `TOKEN=<GUID_network_agent>` — токен из Настройки → Интеграции → Сетевые агенты.
    - `BACKEND=http://<address_mon>:8000/`— IP-адрес сервера мониторинга. Важно указывать слэш (/) в конце: `http://<IP_M>:8000/.`

4. Откройте командную строку от имени администратора и выполните:
```
cd C:\Printum\agent-win-x.x.x
install.bat
````
## Проверка

В панели Мониторинга откройте список агентов. В колонке `version` должна быть целевая версия, в `updated_at` — актуальные дата и время.

# Обновление Локального агента

## Описание

Обновление локального агента для мониторинга заданий печати на Windows или Linux.

## Обновление локального агента на Linux
Скачайте обновленный дистрибутив и выполните команды.

    tar xf printum-jtm-linux-x.x.tar
    cd printum-jtm-linux-x.x
    ./install.sh

Чтобы проверить, что служба работает, выполните:

    systemctl status printum-jtm

## Обновление локального агента на Windows

Обновление ПО осуществляется аналогично установке, запустите командную строку
от имени администратора и выполните команду:

    msiexec /i printmanager_client-a.b.c-win.msi /qn /L install.log


При обновлении менять стандартный путь установки не нужно. Предварительно
удалять предыдущую версию не нужно. Установщик самостоятельно удалит
предыдущие версии продукта, сохранив настройки в файле `settings.yml`

# Обновление Клиента ПМ на Windows

## Описание

Обновить Клиент ПМ на рабочей станции Windows до актуальной версии.

### Предусловия

- Клиент ПМ ранее установлен на рабочей станции.
- Командная строка запущена от имени администратора.
- Получена ссылка на актуальную версию дистрибутива от технической поддержки.

### Что потребуется

- MSI-файл актуальной версии дистрибутива: `printmanager_client-a.b.c-win.msi`.

## Шаги обновления

#### Шаг 1. Получить и скачать актуальный дистрибутив

Обновление ПО осуществляется аналогично установке. Запросите у технической поддержки ссылку на актуальную версию дистрибутива и скачайте его на устройство.

#### Шаг 2. Запустить обновление

Запустите командную строку от имени администратора и выполните команду:

```
msiexec /i printmanager_client-a.b.c-win.msi /qn /L install.log
```

При обновлении менять стандартный путь установки не нужно. Предварительно удалять предыдущую версию не нужно. Установщик самостоятельно удалит предыдущие версии продукта, сохранив настройки в файле `settings.yml`.

## Обновление через групповые политики

Обновление через групповые политики проходит так же, как и установка. Воспользуйтесь разделом "Установка MSI пакета" со страницы [Установка клиента ПМ на Windows — групповые политики](https://wiki.printum.io/books/3-ustanovka/page/ustanovka-klienta-pm-na-windows-gruppovye-politiki-s7B).

Предварительно удалять предыдущую версию не нужно. Установщик самостоятельно удалит предыдущие версии клиента, сохранив настройки в файле `settings.yml`.

Для обновления настроек проверки HTTPS-сертификата замените содержимое файла сертификатов в папке с программой:

```
C:\Program Files\printum\printmanager_client\lib\certifi\cacert.pem
```

Содержимое файла должно соответствовать описанному в разделе "Настройка проверки HTTPS-сертификата для службы в Windows" страницы [Настройка SSL для служб Мониторинга](https://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/nastroika-sifrovannogo-soedineniia-dlia-monitoringa-pm-i-klienta-pm).

## Ожидаемый результат

- Клиент ПМ обновлён до актуальной версии.
- Служба `Printum Optimize Service` запущена.
- Настройки из файла `settings.yml` сохранены.

## Как проверить обновление

- Открыть "Службы" и убедиться, что `Printum Optimize Service` в состоянии "Выполняется".
- Проверить версию установленного ПО в разделе "Установка и удаление программ".

## Связанные страницы

- [Удаление Клиента ПМ на Windows](https://wiki.printum.io/books/3-ustanovka/page/udalenie-klienta-pm-na-windows)

---

# Резервное копирование

# Резервное копирование и восстановление данных

## Описание

В Мониторинге и ПринтМенеджере есть функционал создания бэкапа всей системы и ее данных, позволяющий сохранить рабочее состояние при использовании внутренних инструментов, без участия гипервизора.

### Требования к процессу копирования и восстановления

- Восстанавливать резервную копию нужно на чистый сервер, требования к которому описаны в документе [технических требований к инфраструктуре.](https://drive.google.com/file/d/18uiNpfpEInt6VUgLUBQFvT-KQWGuJR4D/view)
- IP-адрес или доменное имя сервера (FQDN) должны совпадать с тем, которое было на момент создания копии.
- Операционная система не должна меняться.
- Для создания копии объем свободного места на жестком диске должен равняться размеру папки `/opt`
- Для восстановления копии объем свободного места на жестком диске должен быть не менее размера архива с копией.

### Создание резервных копий

Для запуска процесса создания резервной копии введите в терминале сервера команды, указанные ниже.

Если на сервере установлена система Мониторинга или сразу оба продукта, Мониторинг и Принтеменджер, используйте команду:

```
sudo /opt/printum/backup.sh /home/user/backup  
```

Где `/home/user/backup/` — это абсолютный путь до файла с резервной копией. 

Если на сервере установлен только ПринтМенеджер, используйте команду:

```
sudo /opt/printmanager/backup.sh  /home/user/backup
```

Резервная копия будет создана для всех установленных продуктов. При резервном копировании создаются копии следующих элементов конфигурации:
- Система Мониторинга (включая значения переменных и базы данных).
- Система ПринтМененджера (включая значения переменных и базы данных).
- Сетевой агент мониторинга (включая его конфигурацию).
- Установочные пакеты 

**ВАЖНО:** Время создания резервных копий может быть продолжительным (зависит от размера бекапа, скорости работы процессора и диска), система в это время будет выключена. 

После успешного завершения резервного копирования в терминале будет выведена надпись:

```
Backup completed. Archives save in /home/user/backup/printum-backup-date-month-day-hour-minute.tar.gz
```

где 
- `/home/user/backup/` –  расположение файла с резервной копией, 
- `printum-backup-date-month-day-hour-minute.tar.gz` – название файла с резервной копией, время в название файла соответствует времени начала бекапа.

Переместите этот файл во внешнее хранилище любым доступным способом, например через scp.

### Восстановление резервных копий

Убедитесь, что на жестком диске сервера достаточно места для сохранения резервной копии. Переместите сохраненный на прошлом шаге файл на чистый сервер в любую папку. 

Для запуска процесса восстановления разархивируйте архив и запустите в нем команды:

```
sudo tar xzvf printum_backup_date-month-day_hour-minute.tar.gz
sudo printum_backup_date-month-day_hour-minute/restore.sh
```

где  
- `printum_backup_date-month-day_hour-minute.tar.gz` – название архива,
- `printum_backup_date-month-day_hour-minute` – название распакованной директории из архива.

При успешном завершении восстановления будет выведена надпись:

```
Restoration complete
```

Восстановление завершено. Подождите несколько минут для запуска системы. Убедитесь, что восстановление прошло успешно, например: проверьте корректность отображения данных принтеров в ЛК, загрузку страниц панелей администратора Мониторинга и ПринтМенеджера, печать, копирование и сканирование документов.

После подтверждения работоспособности системы удалите архив и распакованную папку для экономии места:

```
sudo rm -f printum_backup_date-month-day_hour-minute.tar.gz
sudo rm -fr printum_backup_date-month-day_hour-minute
```

# Резервное копирование при шифровании конфигурационного файла

## Описание

При включённом шифровании `.env`-файла резервная копия должна создаваться с явным указанием пароля шифрования. Без него копия может быть создана некорректно.

## Шаги

### Мониторинг

```
sudo -E ENV_VAULT_PASSWORD=<password> /opt/printum/backup.sh /home/user/backup
```

### ПринтМенеджер

```
sudo -E ENV_VAULT_PASSWORD=<password> /opt/printmanager/backup.sh /home/user/backup
```

Где `<password>` — действующий пароль шифрования, использованный при установке продукта.

## Важно

Отсутствие переменной `ENV_VAULT_PASSWORD` при зашифрованном конфиге приводит к некорректному созданию резервной копии.

# Восстановление

# Восстановление из резервной копии

## Предусловия

- восстанавливать резервную копию нужно на чистый сервер
- IP-адрес или доменное имя сервера должны совпадать с тем, которое было на момент создания копии
- операционная система не должна меняться
- Свободное место ≥ размер архива резервной копии

## Шаги

1. Переместите архив на целевой сервер.
2. Разархивируйте архив и запустите процесс восстановления, с помощью следующих команд:

```
sudo tar xzvf printum_backup_date-month-day_hour-minute.tar.gz
```
```
sudo printum_backup_date-month-day_hour-minute/restore.sh
```
где  
`printum_backup_date-month-day_hour-minute.tar.gz` – название архива,
`printum_backup_date-month-day_hour-minute` – название распакованной директории из архива

## Результат

После успешного восстановления выводится: `Restoration complete`

Подождите несколько минут для запуска системы.

## Проверка

- Корректность отображения данных принтеров в ЛК.
- Загрузка страниц технических кабинетов Мониторинга и ПМ.
- Работа печати, копирования и сканирования.

## Очистка
После подтверждения работоспособности системы удалите архив и распакованную папку для экономии места:

```
sudo rm -f printum_backup_date-month-day_hour-minute.tar.gz
sudo rm -fr printum_backup_date-month-day_hour-minute
```

# Восстановление при шифровании конфигурационного файла

## Описание

Если конфигурационный файл зашифрован, восстановление должно выполняться с указанием пароля шифрования.

## Шаги

Вместо стандартной команды восстановления используйте:

```
sudo -E ENV_VAULT_PASSWORD=<password> printum_backup_date-month-day_hour-minute/restore.sh
```

Где `<password>` — пароль шифрования, использованный при установке системы.

## Важно

Указание правильного пароля критически важно для успешного восстановления зашифрованных данных. 

## Проверка

- Корректность отображения данных принтеров в ЛК.
- Загрузка страниц технических кабинетов Мониторинга и ПМ.
- Работа печати, копирования и сканирования.

# Восстановление Принтум из резервной копии

## Назначение

Инструкция описывает порядок восстановления Принтум после отказа серверов, повреждения инфраструктуры, потери данных или критических инцидентов.

## Когда требуется восстановление

- Отказ NFS, HAProxy, Мониторинга или одного сервера ПринтМенеджера;
- Повреждение PostgreSQL;
- Потеря NFS;
- Повреждение Docker volumes;
- Критический отказ системы (2 и более серверов).

## Основной принцип

Все серверы должны восстанавливаться из резервных копий, созданных в один временной интервал. Несогласованные копии могут привести к потере синхронизации, повреждению статистики и ошибкам очередей.

## Порядок восстановления

Восстановление выполняется строго по следующему порядку:

1. Сервер Мониторинга
2. Сервер базы данных ПринтМенеджера
3. Сервер NFS-хранилища ПринтМенеджера
4. Сервер балансировщика HAProxy
5. Сервер ПринтМенеджера №1
6. Сервер ПринтМенеджера №2
7. Сервер ПринтМенеджера №3
8. Сервер ПринтМенеджера №N

### Шаг 1. Мониторинг

Сначала восстанавливается сервер Мониторинга — он используется как центральная конфигурация, источник пользователей и устройств.

### Шаг 2. Сервер базы данных

Восстановить PostgreSQL. Проверить: запуск сервиса, доступность порта, корректность данных. При отказе сервера базы данных после восстановления — перезапустить все сервисы СУП на серверах ПринтМенеджера.

### Шаг 3. NFS-хранилище

Восстановить NFS storage и stunnel. Проверить: export, mount, доступность volumes.

### Шаг 4. HAProxy

Восстановить балансировщик. Проверить: healthcheck, backend status, routing.

### Шаг 5. Серверы ПринтМенеджера

Восстановить все ноды ПринтМенеджера. После запуска:

```
cd /opt/printmanager
docker-compose down
docker-compose up -d
```

Проверить sync и очереди.

## Контрольные проверки после восстановления

### Проверка веб-интерфейсов

Проверить доступность: Личного кабинета, панелей администратора, Встроенных приложений на МФУ.

### Проверка статусов HAProxy

Убедиться, что статусы всех компонентов в панели администратора HAProxy — ярко-зелёные.

### Проверка Docker-контейнеров

На всех серверах Мониторинга и ПринтМенеджера:

```
docker ps
```

Проверить: нет restart loop, нет exited containers, нет unhealthy status.

### Проверка авторизации

Проверить авторизацию пользователей в Личном кабинете и Встроенных приложениях на МФУ, а также LDAP/SSO и RFID-авторизацию.

### Проверка синхронизации

Проверить доменную синхронизацию в Мониторинге. Проверить синхронизацию данных Мониторинга и ПринтМенеджера.

### Проверка печати

Проверить: direct print, release print, queue processing, статистику, копирование и сканирование во Встроенных приложениях.

## Типовые проблемы

<table id="bkmrk-%D0%A1%D0%B8%D0%BC%D0%BF%D1%82%D0%BE%D0%BC%D0%92%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%B0%D1%8F-%D0%BF%D1%80%D0%B8"><thead><tr><th>Симптом</th><th>Возможная причина</th></tr></thead><tbody><tr><td>ПринтМенеджер не запускается</td><td>NFS</td></tr><tr><td>Нет синхронизации</td><td>Мониторинг</td></tr><tr><td>Контейнеры unhealthy</td><td>PostgreSQL</td></tr><tr><td>Нет печати</td><td>HAProxy</td></tr><tr><td>Нет статистики</td><td>sync queue</td></tr></tbody></table>

## Что важно помнить

- Порядок восстановления критически важен.
- NFS и PostgreSQL — ключевые зависимости.
- После восстановления требуется проверка синхронизации.
- После аварии статистика может догружаться постепенно.

# Сценарии аварийного восстановления

## Описание

 Ниже описаны типовые сценарии аварийного восстановления системы Printum: симптомы, порядок действий и ориентировочное время восстановления.
 
Для успешного восстановления системы обязательно создавайте резервные копии Мониторинга и ПринтМенеджера(ов) в рабочем состоянии с помощью встроенного функционала резервного копирования или внешними средствами (например, снапшота\бэкапами на гипервизоре).

---

### Сценарий 1: Отказ одного сервера ПринтМенеджера в конфигурации кластера

#### Симптомы

- На панели администратора HAProxy один или несколько сервисов конкретного сервера ПМ отображаются как «DOWN» и подсвечены красным цветом.
- Часть заданий печати, копирования и сканирования пользователей не обрабатывается устройствами под управлением печатью.

#### Порядок действий

1. Проверьте статус контейнеров на отказавшем сервере:
```
cd /opt/printmanager && sudo docker-compose ps
```
2. Соберите логи для последующей диагностики:
```
sudo /opt/printmanager/logs.sh
```
3. Перезапустите контейнеры ПМ:
```
sudo docker-compose down
sudo docker-compose up -d
```
4. Если работоспособность ПМ не вернулась, выполните его восстановление из резервной копии (см. [«Резервное копирование и восстановление данных»](https://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/rezervnoe-kopirovanie-i-vosstanovlenie-dannyx)).
5. После восстановления проверьте состояние сервисов всех ПМ на странице панели администратора HAProxy.
6. Проведите анализ собранных логов для установления причин отказа. По возможности, устраните их самостоятельно для предупреждения повторения проблемы в будущем или обратитесь в техническую поддержку Printum (support@printum.io).

**Ориентировочное время:** 15–30 минут при перезапуске; 60–120 минут при восстановлении из резервной копии.

---

### Сценарий 2 — Отказ нескольких серверов ПринтМенеджера

### Симптомы

- Большинство заданий печати, копирования и сканирования пользователей не обрабатываются не обрабатываются на устройствах под управлением печатью.
- На панели администратора HAProxy менее половины узлов отображаются в статусе «UP» и отмечены зелёным цветом (кластер утратил кворум).

### Порядок действий

1. Восстановите сервера ПринтМенеджера, по описанию из сценария №1 (пункты 1-6).
2. После восстановления:
	- Проверьте состояние сервисов всех ПМ на странице панели администратора HAProxy.
	- Проверьте успешность выполнения заданий печати, копирования и сканирования на устройствах под управлением печатью.
	- Проверьте работу синхронизации данных между Мониторингом и ПМ.
3. Проведите анализ собранных логов для установления причин отказа. По возможности, устраните их самостоятельно для предупреждения повторения проблемы в будущем или обратитесь в техническую поддержку Printum (support@printum.io).

**Ориентировочное время:** 60–240 минут в зависимости от числа отказавших узлов.

---

## Сценарий 3 — Потеря базы данных PostgreSQL

### Симптомы

- Ошибки в логах ПМ: `django.db.utils.OperationalError: connection to server failed`
- Веб-интерфейс Личного кабинета недоступен или отображает ошибки.

### Порядок действий

1. Убедитесь, что контейнер PostgreSQL запущен:
```
sudo docker ps | grep postgres
```
2. Если контейнер не запущен — запустите его:
- Для Мониторинга
```
cd /opt/printum
sudo docker-compose up -d postgres
```

- Для ПМ
```
cd /opt/printmanager
sudo docker-compose up -d db
```
3. Если возникают ошибки — соберите логи работы контейнеров и выполните восстановление из резервной копии:
```
sudo /opt/printum/logs.sh
#или
sudo /opt/printmanager/logs.sh
```
4. Для восстановления на чистый сервер выполните команды из раздела [«Восстановление резервных копий»](https://wiki.printum.io/link/186#bkmrk-%D0%92%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%80%D0%B5%D0%B7%D0%B5%D1%80) на странице [«Резервное копирование и восстановление данных»](https://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/rezervnoe-kopirovanie-i-vosstanovlenie-dannyx).
5. Подождите несколько минут для запуска системы.
6. Проведите анализ собранных логов для установления причин отказа базы данных. По возможности, устраните их самостоятельно для предупреждения повторения проблемы в будущем или обратитесь в техническую поддержку Printum (support@printum.io).

**Ориентировочное время:** 30–120 минут в зависимости от объёма данных.

**Важно:** IP-адрес или hostname сервера должны совпадать с теми, что были при создании резервной копии.

---

## Сценарий 4 — Потеря NFS-хранилища (кластер)

### Симптомы

- Пользователи при попытке печати, копирования и сканирования заданий на устройствах под управлением печатью получают ошибку «Файл недоступен».
- Логи ПринтМенеджера содержат ошибки обращения к NFS-директории.

### Порядок действий

1. Проверьте доступность NFS-сервера с сервера ПМ: вручную создайте тестовый файл на NFS-сервере:
```
cd /opt/printmanager
sudo docker-compose exec app touch /opt/app/public/media/test.txt
```
2. Убедитесь в правильности параметров DRIVER_OPTS_DEVICE, DRIVER_OPTS_O, DRIVER_OPTS_TYPE для NFS-сервера в файле конфигурации ПМ:
```
sudo cat /opt/printmanager/.env
```
3. Соберите логи работы ПМ для последующей диагностики:
```
sudo /opt/printmanager/logs.sh
```
4. Выполните восстановление NFS-сервера из резервной копии. После восстановления перезапустите контейнеры ПМ:
```
cd /opt/printmanager
sudo docker-compose down
sudo docker-compose up -d
```
5. Проверьте, что задания в отложенной очереди печати, копирования и сканирования обрабатываются корректно.
6. Проведите анализ собранных логов для установления причин отказа базы данных. По возможности, устраните их самостоятельно для предупреждения повторения проблемы в будущем или обратитесь в техническую поддержку Printum (support@printum.io).

**Ориентировочное время:** 15–60 минут.

---

## Связанные страницы

- [Резервное копирование и восстановление данных](https://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/rezervnoe-kopirovanie-i-vosstanovlenie-dannyx)

# Сертификаты

# Обновление сертификатов Мониторинга и ПринтМенеджера

## Когда требуется

По окончании срока действия SSL-сертификатов их необходимо заменить.

## Шаги

По окончании срока действия сертификаты потребуется заменить. Для этого выполните обновление Мониторинга и ПринтМененджера с помощью разделов выше и добавьте в команды следующие ключи: SSL_CERT, SSL_KEY u SSL_CERT_CA с указанием новых файлов.

Например, онлайн обновление Мониторинга будет выглядеть так:

```
sudo curl -L https://s3.printum.io/box/monitoring/install.sh | sudo -E SSL_CERT=/directory/cert.crt SSL_KEY=directory/cert.key SSL_CERT_CA=/directory/ca.crt  bash -s agent
````

Где:

- `SSL_CERT` — полный путь до сертификата.
- `SSL_KEY` — полный путь до ключа.
- `SSL_CERT_CA` — полный путь до корневого сертификата.

# Обновление сертификатов балансировщика

## Описание

Обновление сертификатов в конфигурации с балансировщиком нагрузки (HAProxy). Сертификаты обновляются для всех компонентов: балансировщика, Мониторинга и каждого сервера ПМ.

## Обновление собственных сертификатов (через config.ini)

1. Укажите новые пути в конфигурационном файле `config.ini`:

```
Секция [General]

SSL_CERT_CA — полный путь до корневого сертификата (CA certificate).

Секция  [Balancer]

SSL_CERT — Полный путь до сертификата
SSL_KEY — Полный путь до ключа сертификата.

Секция [Monitoring]

SSL_CERT — Полный путь до сертификата
SSL_KEY — Полный путь до ключа сертификата.

Секции [PrintManager_1], [PrintManager_2], …, [PrintManager_N] 

SSL_CERT — Полный путь до сертификата
SSL_KEY — Полный путь до ключа сертификата.

```

2. Запустите скрипт установки повторно:

```
sudo ./install_all_offline.sh
```

## Обновление автоматических сертификатов (ежегодно)

1. Удалите старые сертификаты на сервере балансировщика:

```
sudo rm -fr /opt/printum_balancer/certificates
```

2. Выпустите новый корневой сертификат:

```
sudo /opt/printum_balancer/scripts/generate_ca_cert.sh
```

3. Перегенерируйте сертификаты:

```
cd /opt/printum_balancer/scripts
sudo ./regenerate_all_certs.sh -balancer <BALANCER_ADR> -pm <PM_1> -pm <PM_2> -pm <PM_3>
```

4. Появится архив с новыми сертификатами. Повторите установку всех серверов ПринтМенеджер с новым архивом `printum_certs.tar.gz`.

**Важно:** необходимо переписать только `printum_certs.tar.gz`. При установке использовался printum_config.tar.gz - его устанавливать не нужно.

# Изменение пароля шифрования конфигурационного файла

## Описание

Смена пароля для шифрования файла `.env.enc` выполняется с помощью утилиты `env-vault`.

## Для Мониторинга

1. Сбросьте переменную среды

        unset ENV_VAULT_PASSWORD
2. Запустите смену пароля

        env-vault rekey /opt/printum/.env.enc

3. Введите текущий пароль, затем новый дважды
4. После смены запустите систему с новым паролем:

        cd /opt/printum
        sudo -E ENV_VAULT_PASSWORD=<password> env-vault .env.enc docker-compose -- up -d

## Для ПринтМенеджера


1. Сбросьте переменную среды

        unset ENV_VAULT_PASSWORD

2. Запустите смену пароля

       env-vault rekey /opt/printmanager/.env.enc

3. Введите текущий пароль, затем новый дважды
4. Перезапустите систему с новым паролем:

        cd /opt/printmanager
        sudo -E ENV_VAULT_PASSWORD=<password> env-vault .env.enc docker-compose -- up -d


## Важно

- После смены пароля все последующие операции (обновление, бекап, восстановление) должны выполняться с новым паролем.
- Сохраните новый пароль в надёжном месте.

# Настройка шифрованного соединения для Мониторинга, ПМ и клиента ПМ

## Назначение

При установке системы автоматически создаётся самоподписанный SSL-сертификат, стандарта SHA-256 с длиной ключа шифрования RSA 2048 бит. Для работы мониторинга и управления печать в сети организации этого достаточно, но при необходимости (например, требования ИБ) допускается установка доверенного сертификата организации.

При необходимости используйте доверенный сертификат одного из типов:

- Сертификат, приобретённый или полученный у внешнего доверенного центра сертификации.
- Сертификат, выданный внутренним центром сертификации организации (Enterprise CA).

---

## Настройка HTTPS

Клиент ПринтМенеджера, отправляющий задания на печать с ПК пользователей, имеет параметр `verify_SSL_cert`, отвечающий за включение проверки сертификата безопасности. По умолчанию параметр установлен в `false`, т.е. проверка отключена.

Для включения проверки и обеспечения шифрованного соединения клиента ПМ с сервером ПринтМенеджера выполните настройки, описанные в разделах ниже, в соответствии с операционной системой на пользовательском АРМ.


### Настройка проверки HTTPS-сертификата для службы в Linux

Для корректной проверки сертификата и работы Клиента ПринтМенеджер по протоколу HTTPS выполните следующие действия:

1. Остановите службу Клиента ПМ:

```
sudo systemctl stop printum-printmanager-client.service
```

2. Откройте файл корневого сертификата, который подтверждает подлинность SSL-сертификата, используемого сервером ПМ. Скопируйте из него весь текст, вместе с `BEGIN`, `END` и дефисами.
3. Откройте с правами на редактирование файл:

```
/opt/printum/printmanager_client/venv/lib/python3.10/site-packages/certifi/cacert.pem
```

Для более ранних версий службы для Linux замените `python3.10` на `python3.8`.

4. В конец файла вставьте скопированное из шага 2 и сохраните файл.
5. Запустите службу Клиента ПМ:
```
sudo systemctl start printum-printmanager-client.service
```

### Настройка проверки HTTPS-сертификата для службы в Windows

1. Откройте файл корневого сертификата, который подтверждает подлинность SSL-сертификата, используемого сервером ПМ. Скопируйте из него весь текст, вместе с `BEGIN`, `END` и дефисами.
2. Откройте с правами на редактирование файл:

```
C:\Program Files\printum\printmanager_client\lib\certifi\cacert.pem
```

3. В конец файла вставьте скопированное из шага 1 и сохраните файл.
4. Перезапустите службу или перезагрузите компьютер.

---

## Шифрование данных между компонентами

Данные между пользователем и системой, а также между компонентами (Мониторинг и ПринтМенеджер) передаются по протоколу HTTPS.

|Тип пароля|Метод|Описание|
|:---|:---|:---|
|Пользовательские пароли (вход в систему)|PBKDF2|Хэширование с уникальной «солью» и несколькими десятками итераций|
|Пароли принтеров, доступа к каталогам и др.|AES CBC 128-bit + PKCS7|Шифрование с 128-битным ключом|



## Связанные страницы

- [Настройка IPPS для МФУ](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/nastroika-ipps-dlia-mfu)
- [Обновление сертификатов Мониторинга и ПринтМенеджера](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/obnovlenie-sertifikatov-monitoringa-i-printmenedzera)
- [Переменные .env Мониторинга](http://wiki.printum.io/books/8-spravocnik/page/peremennye-env-monitoringa)

# Настройка IPPS для МФУ

## Назначение

IPPS (Internet Printing Protocol over SSL) обеспечивает шифрование при отправке заданий печати на МФУ. Настройка требуется при использовании отложенной печати с шифрованием или при требованиях ИБ к защите потока печати.

---

## Настройка IPPS для отложенной печати

1. Перейдите в раздел **«Серверы печати»** по адресу:

```
https://адрес_принтменеджера:8080/config/web/printserver/
```

2. Для всех используемых серверов печати установите галочку **«Использовать SSL»** и сохраните форму.

Для прямой печати через IPPS используйте Клиент ПМ со стандартными настройками — при стандартных настройках IPPS включён по умолчанию.

---

## Установка защищённого соединения с МФУ для отправки задания на печать

1. Убедитесь, что в настройках МФУ включён доступ с использованием SSL для IPP-соединений, а сертификат сервера загружен в МФУ (или проверка серверного сертификата на МФУ не требуется / выключена).
2. Перейдите в панель администратора ПринтМенеджера, во вкладку **«Настройки принтеров в CUPS»**.
3. Найдите нужный принтер и нажмите на него.
4. Установите адрес для защищённого подключения в соответствии с вендором:

|Вендор|Адрес|
|---|---|
|Fplus|`https://{hostname}/ipp/print`|
|Lexmark|`https://{hostname}/ipp/print`|
|Xerox|`ipps://{hostname}/ipp`|
|Konica Minolta|`ipps://{hostname}/ipp`|

Где `hostname` — доменное имя или IP-адрес МФУ.

5. Сохраните настройки. Обновление займёт до 1 минуты.

---

## Связанные страницы

- [Настройка SSL для служб Мониторинга на Linux](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/nastroika-ssl-dlia-sluzb-monitoringa-na-linux)
- [Обновление сертификатов Мониторинга и ПринтМенеджера](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/obnovlenie-sertifikatov-monitoringa-i-printmenedzera)

# Шифрование конфигурационного файла .env

## Описание

Принтум поддерживает шифрование конфигурационного файла `.env` с помощью переменной `ENV_VAULT_PASSWORD` и утилиты `env-vault`. При включённом шифровании файл хранится в зашифрованном виде (`.env.enc`), а все команды запуска системы требуют указания пароля.

---

## Активация шифрования при установке Мониторинга

Для активации шифрования при установке дополнительно задайте переменную `ENV_VAULT_PASSWORD`.

### Онлайн-установка

По доменному имени:

```
sudo curl -L https://download.printum.io/box/monitoring/install.sh | sudo -E MON_HOSTNAME=<hostname> ENV_VAULT_PASSWORD=<password> bash -s agent
```

По IP-адресу:

```
sudo curl -L https://download.printum.io/box/monitoring/install.sh | sudo -E IP_ADDRESS=<ip> ENV_VAULT_PASSWORD=<password> bash -s agent
```

### Офлайн-установка

По доменному имени:

```
sudo MON_HOSTNAME=<hostname> ENV_VAULT_PASSWORD=<password> -E ./install.sh agent
```

По IP-адресу:

```
sudo IP_ADDRESS=<ip> ENV_VAULT_PASSWORD=<password> -E ./install.sh agent
```

В процессе установки необходимо будет повторно ввести пароль.

---

## Активация шифрования при установке ПринтМенеджера

Онлайн-установка:

```
sudo curl -L https://s3.printum.io/distrib/printum-printmanager/install.sh | sudo -E PM_HOSTNAME=<ip> ENV_VAULT_PASSWORD=<password> bash
```

Офлайн-установка:

```
sudo PM_HOSTNAME=<ip> ENV_VAULT_PASSWORD=<password> -E ./install.sh
```

Без указания переменной `ENV_VAULT_PASSWORD` установка ПринтМенеджера на зашифрованный сервер мониторинга невозможна.

---

## Изменение значений переменных в зашифрованном .env файле

### Для Мониторинга

1. Перейдите в каталог установки:

```
cd /opt/printum
```

2. Остановите контейнеры:

```
sudo -E ENV_VAULT_PASSWORD=<password> env-vault .env.enc docker-compose down
```

3. Откройте зашифрованный файл для редактирования:

```
sudo -E ENV_VAULT_PASSWORD=<password> env-vault edit .env.enc
```

Откроется системный редактор по умолчанию (например, vim). Внесите изменения и сохраните файл (в vim: введите `:wq`).

4. Перезапустите контейнеры:

```
cd /opt/printum
sudo -E ENV_VAULT_PASSWORD=<password> env-vault .env.enc docker-compose -- up -d
```

### Для ПринтМенеджера

Следуйте аналогичной инструкции, заменяя путь к каталогу:

```
cd /opt/printmanager
```

---

## Смена пароля шифрования

### Для Мониторинга

1. Сбросьте переменную среды:

```
unset ENV_VAULT_PASSWORD
```

2. Запустите процесс смены пароля:

```
env-vault rekey /opt/printum/.env.enc
```

3. Введите текущий пароль, затем новый пароль дважды для подтверждения.
4. После смены пароля запустите систему с новым паролем:

```
cd /opt/printum
sudo -E ENV_VAULT_PASSWORD=<password> env-vault .env.enc docker-compose -- up -d
```

### Для ПринтМенеджера

1. Сбросьте переменную среды:

```
unset ENV_VAULT_PASSWORD
```

2. Запустите процесс смены пароля:

```
env-vault rekey /opt/printmanager/.env.enc
```

3. Введите текущий пароль, затем новый пароль дважды для подтверждения.
4. Перезапустите систему с новым паролем:

```
cd /opt/printmanager
sudo -E ENV_VAULT_PASSWORD=<password> env-vault .env.enc docker-compose -- up -d
```

---

## Резервное копирование при шифровании

При создании резервной копии на зашифрованной системе необходимо передавать пароль:

Для Мониторинга:
```
sudo -E ENV_VAULT_PASSWORD=<password> /opt/printum/backup.sh /home/user/backup
```

Для ПринтМенеджера:
```
sudo -E ENV_VAULT_PASSWORD=<password> /opt/printmanager/backup.sh /home/user/backup
```

При отсутствии указания переменной `ENV_VAULT_PASSWORD` резервная копия может быть создана некорректно.

---

## Примечания

- Для работы с шифрованными файлами необходимо наличие утилиты `env-vault` на сервере.
- При работе с конфигурационными файлами рекомендуется заранее создать резервную копию.

---

## Связанные страницы

- [Переменные .env Мониторинга](http://wiki.printum.io/books/8-spravocnik/page/peremennye-env-monitoringa)
- [Переменные .env ПринтМенеджера](http://wiki.printum.io/books/8-spravocnik/page/peremennye-env-printmenedzera)
- [Резервное копирование при шифровании конфигурационного файла](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/rezervnoe-kopirovanie-pri-sifrovanii-konfiguracionnogo-faila)
- [Изменение пароля шифрования конфигурационного файла](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/izmenenie-parolia-sifrovaniia-konfiguracionnogo-faila)

# Подключение стороннего балансировщика к кластеру

## Подключение стороннего балансировщика

По умолчанию система использует HAProxy для балансировки нагрузки. Рекомендуется использовать его в качестве балансировщика нагрузки, так как именно с ним система проходит все этапы тестирования и по умолчанию используется при установке у клиентов. Однако, если необходимо использовать сторонний балансировщик, выполните настройку в соответствии с этой инструкцией.

**Важно**: При использовании сторонних балансировщиков испытания системы на совместимость не проводились. Мы не можем гарантировать стабильную и бесперебойную работу системы с другими решениями. Использование сторонних балансировщиков осуществляется под вашу ответственность.

Перед началом убедитесь, что ознакомились с разделом "[Подготовка к установке кластера Active-Active](https://wiki.printum.io/books/3-ustanovka/page/podgotovka-k-ustanovke-klastera-active-active)". Этот раздел актуален для настройки любого балансировщика.

### Требования к стороннему балансировщику

1. **Проксирование сообщений**: балансировщик должен корректно обрабатывать следующие типы соединений:
    
    - **FTP-соединения**: порты 20–21 и 30000–30199.
    - **HTTP-соединения**: порты 1631, 8010, 8080.
    - **WebSocket-соединения** (при использовании TCP-конвертера): порты 7776, 7777.
    
    Если стандартные порты изменены при установке ПМ, укажите новые значения.
    
2. **Проверка доступности (healthcheck)**:
    
    - Балансировщик должен выполнять HTTP-запросы на адрес `/health/`.
    - Если ответ имеет статус **200**, сервер считается исправным. Любой другой ответ означает неисправность.
    - Настройте механизм оповещений о сбоях серверов, доступный в вашем балансировщике.
3. **Параметры настройки**:
    
    - Используйте алгоритм **Round Robin** с включением **Sticky Session**.
    - Настройки таймаутов:
        - **Таймаут сервера (timeout server)**: 30 секунд.
        - **Таймаут клиента (timeout client)**: 30 секунд.
        - **Таймаут соединения (timeout connection)**: 5 секунд.
    - **Повторы (retries)**: не требуются.
    - Используйте сгенерированные SSL-сертификаты для балансировщика.

После подготовки настроек установите ваш балансировщик.

### Установка и настройка ПринтМенеджеров

#### Перед установкой первого ПринтМенеджера

Выполните команды для экспорта переменных окружения:

```
export NFS_ADDR=<NFS_ADDR>
export NFS_PATH=<NFS_FOLDER_PATH>
export DATABASE_URL=postgres://<POSTGRES_LOGIN>:<POSTGRES_PASSWORD>@<DB_HOST>:<PORT>/<BASE_NAME>
```

Или с указанием конкретной схемы базы данных:

```
export 	DATABASE_URL=postgres://<POSTGRES_LOGIN>:<POSTGRES_PASSWORD>@<DB_HOST>:<PORT>/<BASE_NAME>?currentSchema=<POSTGRES_SCHEMA>
```

Если используется табличное пространство, то добавьте команду:

```
export DATABASE_TABLESPACE=<DATABASE_TABLESPACE>
```

Укажите настройки Redis и других сервисов (эти команды обязательны):

```
export REDIS_ROLE=master
export REDIS_SENTINEL_LIST=<IP_1>,<IP_2>,<IP_3>
export REDIS_MASTER_IP=<IP_1>
export PM_HOSTNAME=<IP_1>
export DRIVER_OPTS_TYPE="nfs"
export DRIVER_OPTS_O="addr=<NFS_ADDR>,nolock,soft,rw"
export DRIVER_OPTS_DEVICE=":/scratch"
export EXT_HOSTNAME=<IP_BALANCER>
export REDIS_PASSWORD=<REDIS_PASSWORD>
export CUPS_PASSWORD=<CUPS_PASSWORD>
export FTPD_PASSWORD=<FTPD_PASSWORD>
export WEBDAV_PASSWORD=<WEBDAV_PASSWORD>
```

Где:

- **<NFS_ADDR>**: IP-адрес или доменное имя сервера NFS.
- **<NFS_FOLDER_PATH>**: путь к директории NFS.
- **<POSTGRES_LOGIN>, <POSTGRES_PASSWORD>, <POSTGRES_SCHEMA>**: данные для подключения к базе.
- **<IP_1>, <IP_2>, <IP_3>**: IP-адреса серверов ПринтМенеджера.
- **<IP_BALANCER>**: IP-адрес балансировщика.

**Важно**: Оставайтесь в этом же терминале до завершения установки, иначе переменные окружения будут потеряны.

Запустите установку первого ПринтМенеджера.

#### Установка второго и последующих ПринтМенеджеров

Повторите команды экспорта переменных окружения, изменив:

```
export REDIS_ROLE=slave
export PM_HOSTNAME=<IP>
```

Где **<IP>** — IP-адрес устанавливаемого сервера.

Запустите установку.

### Проверка корректности установки

1. Проверьте систему по "Чек-листу для проверки корректной установки".
2. Исключите проверки, связанные с настройкой HAProxy.
3. Добавьте собственные проверки, актуальные для вашего балансировщика.

# Смена паролей технических сервисов

# Смена паролей в Мониторинге

## Описание

Смена паролей внутренних сервисов Мониторинга. По умолчанию используется
случайный пароль из 16 символов, включая спецсимволы.

---

## Допустимые символы в пароле

Цифры, строчные и прописные латинские буквы, спецсимволы: `+` `-` `_` `!` `^` `(` `)`

---

## Общий порядок

Смена паролей происходит в файле /opt/printum/.env. Обязательно сделайте копию данного файла перед его редактированием. Далее внесите изменения указанные в конкретном разделе ниже. В конце, для вступления изменений в силу выполните перезапуск системы Мониторинга:

    cd /opt/printum/
    sudo docker-compose down
	sudo docker-compose up -d


---

## ClickHouse

Измените значение переменной `CLICKHOUSE_PASSWORD="NEW-PASSWORD"` 

Где `NEW-PASSWORD` — новый пароль


---

## Redis

Измените значение переменных:

    REDIS_URL="redis://:NEW-PASSWORD@redis:6379/0"
    REDIS_PASSWORD="NEW-PASSWORD"
    CACHEOPS_REDIS="redis://:NEW-PASSWORD@redis:6379/1"
где `NEW-PASSWORD` — новый пароль

---

## PostgreSQL (версия Мониторинга 4.0+)

Измените значение переменной:

    POSTGRESQL_PASSWORD="NEW-PASSWORD"
После чего выполните команды:

	sudo docker-compose down
	sudo docker-compose up -d postgres
	sudo docker-compose exec -T postgres bash -c 'PGPASSWORD="OLD-PASSWORD" psql -U printum -c "ALTER USER printum PASSWORD '\''NEW-PASSWORD'\'';"'
	sudo docker-compose up -d
Где: 

`NEW-PASSWORD` - новый пароль
`OLD-PASSWORD` - текущей пароль

Обратите внимание, в данной команде необходимо указать старый пароль `OLD-PASSWORD` и новый пароль `NEW-PASSWORD`. Между аргументом -p и старым паролем нет пробела.

При корректном вводе в терминале будет выведено сообщение:
>mysql: [Warning] Using a password on the command line interface can be insecure.
>
В случае ошибки ввода старого пароля в терминале будет сообщение вида:
>ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

# Смена паролей в ПринтМенеджере

## Описание

Смена паролей внутренних сервисов ПринтМенеджера.

## Общий порядок

Смена паролей происходит в файле /opt/printmanager/.env. Обязательно сделайте копию данного файла перед его редактированием. Далее внесите изменения указанные в конкретном разделе ниже. В конце, для вступления изменений в силу выполните перезапуск системы:

```
cd /opt/printmanager/
sudo docker-compose down
sudo docker-compose up -d
```

**При балансировке нагрузки:** повторите шаги на каждом сервере ПМ.

### PostgreSQL (базовая схема, без балансировки)

Измените значение переменных:

```
DATABASE_URL="postgres://postgres:NEW-PASSWORD@db:5432/printmanager"
DATABASE_PASSWORD="NEW-PASSWORD"
```

После чего выполните команды:

```
sudo docker-compose down
sudo docker-compose up -d db
sudo docker-compose exec -T db bash -c "psql -U postgres -c \"ALTER USER postgres PASSWORD '\$POSTGRES_PASSWORD';\""
sudo docker-compose up -d
```
Где `NEW-PASSWORD` - новый пароль

### PostgreSQL (схема с балансировкой нагрузки)

Измените значение переменных в файле конфигурации **.env** на всех нодах ПМ:

```
DATABASE_URL="postgres://postgres:NEW-PASSWORD@db:5432/printmanager"
```
Где `NEW-PASSWORD`- новый пароль.

Выполните команду остановки контейнеров на всех нодах ПМ:

```
sudo docker-compose down
```

Измените пароль штатными средствами во внешней базе данных.
Далее по очереди запустите контейнеры на всех нодах ПМ, с первой по последнюю.

```
sudo docker-compose up -d
```

**Важно:** При схеме с балансировкой все изменения паролей в ПринтМенеджере должны быть отражены в конфигурационных файлах балансировщика.

### Redis, Redis-sentinel

Пароль общий, поэтому меняется в обоих компонентах системы. Redis-sentinel работает только в схеме балансировки нагрузки.

Измените значение переменных:

```
REDIS_URL="redis://:NEW-PASSWORD@redis:6379/0"
REDIS_PASSWORD="NEW-PASSWORD"
```
Где `NEW-PASSWORD`- новый пароль.

После чего выполните команду остановки работы контейнеров:

```
sudo docker-compose down
```

Если используется схема с балансировкой нагрузки, то также выполните следующую команду:

```
sudo docker volume rm -f printmanager_sentinel-conf
```

Для применения изменений запустите контейнеры:
```
sudo docker-compose up -d
```

### CUPS

Измените значение переменных:
```
CUPS_PASSWORD="NEW-PASSWORD"
```
Где `NEW-PASSWORD`- новый пароль.

Для применения изменений перезапустите контейнеры:
```
sudo docker-compose down
sudo docker-compose up -d
```

### FTP

Измените значение переменных:

```
FTP_SCAN_PASSWORD="NEW-PASSWORD"
```
Где `NEW-PASSWORD`- новый пароль.

Для применения изменений перезапустите контейнеры:
```
sudo docker-compose down
sudo docker-compose up -d
```

## Связанные страницы

- [Шифрование конфигурационного файла .env](https://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/sifrovanie-konfiguracionnogo-faila-env)

# Как обновить Printum

<!--
title: Как обновить Printum
slug: kak-obnovit-printum
tags: [обновление, update, install.sh, singlenode, балансировщик, партнёр]
domain: Installation
type: Runbook
audience: partner-engineer
product_versions: "4.x"
status: ready
related_components: [Мониторинг, ПринтМенеджер, Балансировщик]
related_pages:
  - kak-vosstanovit-printum-iz-rezervnoy-kopii
  - kak-rabotaet-sinhronizaciya-monitoring-i-printmanager
  - oshibki-posle-obnovleniya-printum (раздел Troubleshooting)
-->

#### Когда использовать

Перед обновлением Мониторинга или ПринтМенеджера в продуктивной среде.

---

#### Предусловия

- Доступ к серверам по SSH.
- Дистрибутивы получены и размещены на серверах вместе с хеш-суммами.
- Сделан снапшот ВМ или резервная копия — **обязательно**.

---

### Резервная копия

При создании резервной копии предпочтительнее воспользоваться инструментами гипервизора (снапшот или бэкап).

Если нет возможности использовать инструменты гипервизора то, воспользуйтесь инструкцией по созданию резервной копии системы:
[Создание резервной копии](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/sozdanie-rezervnoi-kopii)

Восстановление: [Восстановление из резервной копии](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/vosstanovlenie-iz-rezervnoi-kopii)

---

### Базовая конфигурация: онлайн-обновление

```bash
# 1. Обновить М
sudo curl -L https://s3.printum.io/box/monitoring/install.sh | sudo -E bash

# 2. Убедиться что М работает — открыть ЛК, проверить доступность панели администратора Монитоирнга.

# 3. Обновить ПМ
sudo curl -L https://s3.printum.io/distrib/printum-printmanager/install.sh | sudo -E bash
```
Если используется шифрование конфигурационного файла — добавить переменную `ENV_VAULT_PASSWORD=<password>` в команду запуска обновления.

---

### Базовая конфигурация: офлайн-обновление

```bash
# Перенести дистрибутивы на сервер
scp monitoring-x.y.z.tar.gz root@<ip>:/root/dist/
scp monitoring-x.y.z.tar.gz.sha512 root@<ip>:/root/dist/
scp printmanager-x.y.z.tar.gz root@<ip>:/root/dist/
scp printmanager-x.y.z.tar.gz.sha512 root@<ip>:/root/dist/

# Проверить целостность
cd /root/dist
sha512sum -c monitoring-x.y.z.tar.gz.sha512
sha512sum -c printmanager-x.y.z.tar.gz.sha512

# Обновить М
tar xzvf monitoring-x.y.z.tar.gz
cd monitoring-x.y.z
sudo -E ./install.sh

# После запуска М — обновить ПМ
cd /root/dist
tar xzvf printmanager-x.y.z.tar.gz
cd printmanager-x.y.z
sudo -E ./install.sh
```

Если используется шифрование конфигурационного файла — добавить переменную `ENV_VAULT_PASSWORD=<password>` в команду запуска обновления.

---

### Балансировщик: обновление через скрипт массовой установки

Если система устанавливалась через `install_all_offline.sh`, то обновить пути к дистрибутивам в config.ini:\
В разделе [General] указать путь где хранятся новые дистрибутивы на сервере:
```bash
[General]
MON_DIST_PATH = /home/user/printum-x.x.x.tar.gz
PM_DIST_PATH = /home/user/printmanager-x.x.x.tar.gz
```
Убедится, что в каждом из разделов Мониторинга и ПринтМенеджера переменная SKIP установлена в нужное положение:
```
SKIP = false  #если пропускать обновление для данного сервера не нужно.
SKIP = true   #если требуется пропустить обновление данного сервера.
```
Сохранить изменения в файле и запустить обновление:
```
sudo ./install_all_offline.sh
```
---

### Балансировщик: ручное обновление

Если скрипт массовой установки не использовался:

1. Обновить Мониторинг согласно вышеизложенной инструкции по базовой конфигурации.
2. Остановить контейнеры ПринтМенеджера на всех нодах:
```bash
ssh user@pm1 "cd /opt/printmanager && sudo docker-compose down"
ssh user@pm2 "cd /opt/printmanager && sudo docker-compose down"
ssh user@pm3 "cd /opt/printmanager && sudo docker-compose down"
```
3. Обновить ПринтМенеджер на первой ноде согласно вышеизложенной инструкции по базовой конфигурации.
4. Обновить остальные ПринтМенеджеры — можно параллельно.
5. Проверить панель доступность нод в веб-интерфейсе балансирвощика.
6. Проверить доступность ПринтМенеджера по адресу балансировщика.
---

### Проверка после обновления

```bash
# Версии компонентов
cat /opt/printum/.version
cat /opt/printmanager/.version

# Статус контейнеров
cd /opt/printum && sudo docker-compose ps
cd /opt/printmanager && sudo docker-compose ps
```

Все контейнеры должны быть в статусе `Up`. Контейнеры в статусе `Exit` или `Restarting` — признак проблемы.

Функциональные проверки:
- Открывается Личный Кабинет и панель администратора Мониторинга.
- Открывается панель администратора ПринтМенеджер.
- Синхронизация Мониторинг–ПринтМенеджер завершается без ошибок.
- Авторизация на МФУ работает.
- Тестовое задание уходит на печать.

---

### Если что-то пошло не так

Типовые ошибки после обновления — в разделе  "Устранение неисправностей":

- [Встала печать после обновления — Bad response 500](http://wiki.printum.io/books/7-ustranenie-neispravnostei/page/vstala-pecat-posle-obnovleniia-bad-response-from-monitoring-500)
- [Счётчики не обновляются после обновления М](http://wiki.printum.io/books/7-ustranenie-neispravnostei/page/scetciki-ne-obnovliaiutsia-posle-obnovleniia-monitoringa)
- [SSL: Hostname mismatch после обновления](http://wiki.printum.io/books/7-ustranenie-neispravnostei/page/ssl-hostname-mismatch-posle-obnovleniia)
- [Синхронизация Мониторинг–ПринтМенеджер завершается ошибкой 403](http://wiki.printum.io/books/7-ustranenie-neispravnostei/page/sinxronizaciia-m-pm-zaversaetsia-osibkoi-403-posle-obnovleniia)
- [Ошибка MultipleObjectsReturned при обновлении ПринтМенеджер 4.3 → 4.4](http://wiki.printum.io/books/7-ustranenie-neispravnostei/page/osibka-multipleobjectsreturned-pri-obnovlenii-pm-43-44)

---

## Связанные страницы

- [Обновление и обслуживание](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie)
- [Как работает синхронизация Мониторинга и ПринтМенеджера](http://wiki.printum.io/books/1-arxitektura-i-koncepcii/page/kak-rabotaet-sinxronizaciia-monitoringa-i-printmenedzera)
- [Как работает отказоустойчивый ПринтМенеджер](http://wiki.printum.io/books/1-arxitektura-i-koncepcii/page/kak-rabotaet-otkazoustoicivyi-printmenedzer)

# Как обновить SSL-сертификаты Printum

<!--
title: Как обновить SSL-сертификаты Printum
slug: ts-ssl-obnovlenie-sertifikatov
tags: [ssl, сертификат, обновление, истёк срок, балансировщик]
domain: Operations
type: Runbook
audience: partner-engineer
product_versions: "4.x"
status: ready
related_components: [Мониторинг, ПринтМенеджер, Балансировщик]
related_pages:
  - trebovaniya-k-ssl-sertifikatam
  - kak-obnovit-printum
--->

### Когда использовать

- Истёк срок действия сертификатов.
- Изменился hostname или IP-адрес сервера.
- Требуется заменить сертификаты по требованиям ИБ.

---

### Основные приципы
Обновление сертификатов системы производится путём запуска обновления Мониторинга и ПринтМенеджера. При обновлении требуется указать переменные, содержащие ссылки на локальные файлы сертификатов:
* SSL_CERT - переменная для хранения пути ssl-сертификата сервера. 
* SSL_KEY - переменная для хранения пути ключа к ssl-сертификату. 
* SSL_CERT_CA - переменная для хранения пути корневового сертификата.

> **Примечание** Если во время установки системы в конфигурации Singlenode использовались автоматические сертификаты, то по истечению срока действия требуется обновить их на собственные сертификаты организации.

### Singlenode: обновление сертификатов Мониторинга
**Офлайн метод:**
```bash
tar xvf printum-x.x.x.tar.gz
cd printum-x.x.x
sudo -E SSL_CERT=/path/cert.crt \
       SSL_KEY=/path/cert.key \
       SSL_CERT_CA=/path/ca.crt ./install.sh 
```
**Онлайн метод:**
```bash
sudo curl -L https://s3.printum.io/box/monitoring/install.sh | \
  sudo -E SSL_CERT=/path/cert.crt \
       SSL_KEY=/path/cert.key \
       SSL_CERT_CA=/path/ca.crt bash
```

---

### Singlenode: обновление сертификатов ПринтМенеджер
**Офлайн метод:**
```bash
tar xvf printmanager-x.x.x.tar.gz
cd printmanager-x.x.x
sudo -E SSL_CERT=/path/cert.crt \
       SSL_KEY=/path/cert.key \
       SSL_CERT_CA=/path/ca.crt ./install.sh 
```
**Онлайн метод:**
```bash
sudo curl -L https://s3.printum.io/distrib/printum-printmanager/install.sh | \
  sudo -E SSL_CERT=/path/cert.crt \
       SSL_KEY=/path/cert.key \
       SSL_CERT_CA=/path/ca.crt bash
```

---

### Балансировщик: обновление собственных сертификатов через скрипт автоматической установки

В файле `config.ini` обновить пути к новым сертификатам:

```ini
[General]
SSL_CERT_CA = /path/to/new/ca.crt

[Balancer]
SSL_CERT = /path/to/balancer/cert.crt
SSL_KEY  = /path/to/balancer/cert.key

[Monitoring]
SSL_CERT = /path/to/monitoring/cert.crt
SSL_KEY  = /path/to/monitoring/cert.key

[PrintManager_1]
SSL_CERT = /path/to/pm1/cert.crt
SSL_KEY  = /path/to/pm1/cert.key

# [PrintManager_2], [PrintManager_3] — аналогично
```

Запустить скрипт:

```bash
sudo ./install_all_offline.sh
```

---

### Балансировщик: перевыпуск автоматических сертификатов для установки балансировщика вручную

Выполнять на сервере балансировщика раз в год:

```bash
# Удалить все сертификаты
sudo rm -fr /opt/printum_balancer/certificates

# Выпустить новый корневой сертификат
sudo /opt/printum_balancer/scripts/generate_ca_cert.sh

# Перевыпустить сертификаты для всех серверов
cd /opt/printum_balancer/scripts
sudo ./regenerate_all_certs.sh \
  -balancer <BALANCER_ADR> \
  -pm <PM_1> \
  -pm <PM_2> \
  -pm <PM_3>
```

Где `<BALANCER_ADR>`, `<PM_1>`, `<PM_2>`, `<PM_3>` — те же адреса, что использовались при первоначальной установке.

---

### Проверка после обновления

```bash
# Проверить срок действия нового сертификата М
openssl s_client -connect <адрес_М>:8001 </dev/null 2>/dev/null \
  | openssl x509 -noout -dates

# Проверить синхронизацию М–ПМ
cd /opt/printmanager
sudo docker-compose logs printmanager-celery-print-queue --tail=50 | grep -i ssl
```

Ошибок SSL нет. Синхронизация завершается успешно.

---

### Когда эскалировать

- Обновление сертификатов не устраняет SSL-ошибки.
- Цепочка доверия не проходит проверку.
- PKI управляется заказчиком.

---

### Связанные страницы

- [Требования к сертификатам безопасности](https://wiki.printum.io/books/3-ustanovka/page/trebovaniia-k-sertifikatam-bezopasnosti)
- [Hostname mismatch — сертификат не соответствует адресу](https://wiki.printum.io/books/7-ustranenie-neispravnostei/page/osibka-hostname-mismatch-posle-obnovleniia)
- [Как обновить Printum](https://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/kak-obnovit-printum)