# 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://s3.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 PRINTMANAGER_BASE_URL=http://<ip>:8010 PRINTMANAGER_ACCESS_TOKEN=<token> bash ./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`

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

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

## Назначение

Система поддерживает создание резервной копии всей системы и данных штатными средствами — без участия гипервизора.

## Что копируется

- Система Мониторинга (включая переменные и базы данных)
- Система ПринтМенеджера (включая переменные и базы данных)
- Сетевой агент мониторинга (включая его конфигурацию)
- Установочные пакеты

**Не копируется:** Локальный агент.

## Требования

- Восстановление выполняется только на чистый сервер.
- IP-адрес или доменное имя сервера должны совпадать с адресом на момент создания копии.
- Операционная система не должна меняться.
- Для создания копии: свободное место ≥ размер папки `/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
```

Время в названии файла соответствует времени начала бекапа.

## После создания

Переместите файл во внешнее хранилище любым доступным способом, например через `scp`.

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

## Описание

При включённом шифровании `.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` при зашифрованном конфиге приводит к некорректному созданию резервной копии.

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

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

Резервная копия сервера Мониторинга охватывает все установленные продукты: Мониторинг и ПринтМенеджер (если оба развёрнуты на одном сервере). Используется скрипт `/opt/printum/backup.sh`.

---

## Требования

- Объём свободного места на диске должен быть не менее размера папки `/opt`.
- IP-адрес или доменное имя сервера должны совпадать с теми, что были на момент создания копии — это требуется при последующем восстановлении.
- Операционная система не должна меняться.

---

## Создание резервной копии

Выполните в терминале сервера:

```
sudo /opt/printum/backup.sh /home/user/backup
```

Где `/home/user/backup` — абсолютный путь до директории, в которую будет сохранён архив. Измените путь на актуальный для вашего сервера.

Данная команда применяется, если на сервере установлен Мониторинг или одновременно Мониторинг и ПринтМенеджер.

---

## Ход выполнения

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

---

## Результат

После успешного завершения в терминале выводится:

```
Backup completed. Archives save in /home/user/backup/printum-backup-date-month-day-hour-minute.tar.gz
```

Время в названии файла соответствует времени начала резервного копирования.

---

## После создания копии

Переместите архив во внешнее хранилище, например через `scp`:

```
scp /home/user/backup/printum-backup-*.tar.gz user@backup-server:/backups/
```

# Резервное копирование ПринтМенеджера

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

Резервная копия сервера, на котором установлен только ПринтМенеджер (без Мониторинга). Используется скрипт `/opt/printmanager/backup.sh`.

---

## Требования

- Объём свободного места на диске должен быть не менее размера папки `/opt`.
- IP-адрес или доменное имя сервера должны совпадать с теми, что были на момент создания копии — это требуется при последующем восстановлении.
- Операционная система не должна меняться.

---

## Создание резервной копии

Выполните в терминале сервера:

```
sudo /opt/printmanager/backup.sh /home/user/backup
```

Где `/home/user/backup` — абсолютный путь до директории, в которую будет сохранён архив. Измените путь на актуальный для вашего сервера.

Данная команда применяется, если на сервере установлен **только ПринтМенеджер** без Мониторинга. Если оба продукта установлены на одном сервере — используйте команду из страницы «Резервное копирование Мониторинга».

---

## Ход выполнения

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

---

## Результат

После успешного завершения в терминале выводится:

```
Backup completed. Archives save in /home/user/backup/printum-backup-date-month-day-hour-minute.tar.gz
```

Время в названии файла соответствует времени начала резервного копирования.

---

## После создания копии

Переместите архив во внешнее хранилище, например через `scp`:

```
scp /home/user/backup/printum-backup-*.tar.gz user@backup-server:/backups/
```

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

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

## Предусловия

- восстанавливать резервную копию нужно на чистый сервер
- 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».
- Часть заданий не обрабатывается; пользователи не замечают сбоя (если узлов ≥ 2).

### Порядок действий

1. Проверить статус контейнеров на отказавшем сервере: `cd /opt/printmanager && docker-compose ps`
2. Изучить логи: `docker-compose logs --tail=200`
3. Перезапустить контейнеры: `docker-compose restart`
4. Если не помогает — восстановить из резервной копии (см. «Восстановление из резервной копии»).
5. После восстановления проверить страницу состояния HAProxy.

**Ориентировочное время:** 15–30 минут при перезапуске; 60–120 минут при восстановлении из резервной копии.

---

## Сценарий 2 — Отказ нескольких серверов ПринтМенеджера

### Симптомы

- Большинство заданий не обрабатываются.
- HAProxy показывает менее половины узлов в статусе «UP» (кластер утратил кворум).

### Порядок действий

1. Восстановить наибольшее число серверов ПринтМенеджер (перезапуск контейнеров или восстановление из резервной копии).
2. Убедиться, что активно ≥ (N/2 + 1) узлов (кворум), где N — общее число узлов.
3. Проверить статус HAProxy и синхронизацию с Мониторингом.

**Ориентировочное время:** 60–240 минут в зависимости от числа отказавших узлов.

---

## Сценарий 3 — Потеря базы данных PostgreSQL

### Симптомы

- Ошибки в логах ПМ: `django.db.utils.OperationalError: connection to server failed`
- Веб-интерфейс Личного кабинета недоступен или отображает ошибки.

### Порядок действий

1. Убедиться, что контейнер PostgreSQL запущен: `sudo docker ps | grep postgres`
2. Если контейнер упал — перезапустить: `docker-compose up -d db`
3. Если данные повреждены — восстановить базу из резервной копии.
4. Для восстановления на чистый сервер выполнить команды (см. «Восстановление из резервной копии»):
    
    ```
    sudo tar xzvf printum_backup_<date>.tar.gz
    sudo printum_backup_<date>/restore.sh
    ```
    
5. Подождать несколько минут для запуска системы.

**Ориентировочное время:** 30–120 минут в зависимости от объёма данных.

**Важно:** IP-адрес или hostname сервера должны совпадать с теми, что были при создании резервной копии.

---

## Сценарий 4 — Потеря NFS-хранилища (кластер)

### Симптомы

- Пользователи при попытке печати получают ошибку «Файл недоступен».
- Логи ПринтМенеджер содержат ошибки обращения к NFS-директории.

### Порядок действий

1. Проверить доступность NFS-сервера с сервера ПМ: попробовать смонтировать папку вручную.
2. Убедиться в правильности параметров в /opt/printmanager/.env:
    
    ```
    sudo cat /opt/printmanager/.env
    ```
    
    Проверить DRIVER_OPTS_DEVICE, DRIVER_OPTS_O, DRIVER_OPTS_TYPE.
3. После восстановления NFS перезапустить контейнеры: `docker-compose restart`
4. Проверить, что задания в отложенной очереди обрабатываются.

**Ориентировочное время:** 15–60 минут.

---

## Связанные страницы

- [Восстановление из резервной копии](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/vosstanovlenie-iz-rezervnoi-kopii)
- [Проверка резервных копий](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/proverka-rezervnyx-kopii)
- [Резервное копирование — обзор](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/rezervnoe-kopirovanie-obzor)

# Проверка резервных копий

## Назначение

Регулярная проверка резервных копий гарантирует, что при аварии восстановление пройдёт успешно. Проверку рекомендуется выполнять после каждого создания резервной копии и перед крупными обновлениями.

---

## Проверка наличия и целостности архива

1. Убедиться, что файл резервной копии существует в указанном хранилище.
2. Проверить, что архив не повреждён (размер ненулевой и соответствует ожидаемому).
3. Распаковать архив вручную для проверки содержимого:

        sudo tar tzvf printum_backup_<date>.tar.gz | head -50

---

## Тестовое восстановление

1. Подготовить тестовый сервер с теми же IP-адресом/hostname, что и у рабочего сервера.
2. Перенести архив резервной копии на тестовый сервер.
3. Распаковать архив и запустить восстановление:

        sudo tar xzvf printum_backup_<date>.tar.gz
        sudo printum_backup_<date>/restore.sh

4. После сообщения **«Restoration complete»** подождать несколько минут.
5. Проверить работоспособность системы: 
    - Открыть Личный кабинет — страница должна загружаться.
    - Проверить отображение устройств и пользователей.
    - Выполнить тестовую печать (при возможности).
6. После проверки удалить тестовые данные:

       sudo rm -f printum_backup_<date>.tar.gz
       sudo rm -fr printum_backup_<date>
    
---

## Особенности при шифровании конфигурационного файла

Если используется шифрование .env, создание копии выполняется с паролем:

```
sudo -E ENV_VAULT_PASSWORD=<password> /opt/printum/backup.sh /home/user/backup
```

Восстановление — также с паролем:

```
sudo -E ENV_VAULT_PASSWORD=<password> printum_backup_<date>/restore.sh
```

---

## Что входит в резервную копию

- Система Мониторинга (переменные .env и базы данных)
- Система ПринтМенеджера (переменные .env и базы данных)
- Сетевой агент (конфигурация)
- Установочные пакеты

**Не копируется:** Локальный агент мониторинга.

---

## Связанные страницы

- [Резервное копирование — обзор](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/rezervnoe-kopirovanie-obzor)
- [Создание резервной копии](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)
- [Сценарии аварийного восстановления](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/scenarii-avariinogo-vosstanovleniia)

# Откат после неудачного обновления

## Назначение

Инструкция по откату системы Printum к предыдущей версии при сбое обновления.

---

## Когда выполнять откат

- После обновления система не запускается или недоступен Личный кабинет.
- Критичные функции не работают (печать, авторизация, отображение устройств).
- Ошибки в логах контейнеров, которые не удаётся устранить за разумное время.
- Обновление прервалось — контейнеры в нестабильном состоянии.

---

## Предварительная проверка

Перед откатом убедитесь:

1. Резервная копия была создана **до** обновления.
2. Версии Мониторинга и ПМ, которые были до обновления, известны:
    
    ```
    cat /opt/printum/.version
    cat /opt/printmanager/.version
    ```
    
3. Резервная копия доступна и не повреждена.

---

## Порядок отката

1. Остановить текущие контейнеры:
    
    ```
    cd /opt/printum && sudo docker-compose down
    cd /opt/printmanager && sudo docker-compose down
    ```
    
2. Перенести резервную копию на сервер (если хранится внешне).
3. Распаковать архив и запустить восстановление:
    
    ```
    sudo tar xzvf printum_backup_<date>.tar.gz
    sudo printum_backup_<date>/restore.sh
    ```
    
4. Подождать сообщение **«Restoration complete»**.
5. Подождать несколько минут для запуска системы.
6. Проверить работоспособность: открыть Личный кабинет, проверить устройства и пользователей.

---

## Что проверить после отката

- Версию компонентов: `cat /opt/printum/.version` и `cat /opt/printmanager/.version` — должны показывать предыдущую версию.
- Статус контейнеров: `docker-compose ps` — все контейнеры должны быть Up.
- Логи: `docker-compose logs --tail=100` — не должно быть критических ошибок.
- Доступность Личного кабинета по URL.
- Тестовую печать (при возможности).

---

## Особенности при шифровании конфигурационного файла

При восстановлении с шифрованием использовать команду:

```
sudo -E ENV_VAULT_PASSWORD=<password> printum_backup_<date>/restore.sh
```

---

## Связанные страницы

- [Создание резервной копии](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)
- [Проверка резервных копий](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/proverka-rezervnyx-kopii)
- [Сценарии аварийного восстановления](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/scenarii-avariinogo-vosstanovleniia)

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

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

## Когда требуется

По окончании срока действия 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 для служб Мониторинга

## Назначение

При установке системы автоматически создаётся самоподписанный SSL-сертификат. Для работы в сети организации это, как правило, не создаёт проблем. Однако в ряде случаев (доступ через интернет, требования ИБ) может потребоваться установка доверенного сертификата.

Для шифрования используются сертификаты стандарта SHA-256 с шифрованием RSA 2048 бит. Пароли не хранятся и не передаются по сети в открытом виде.

---

## Настройка HTTPS

Клиентская служба ПринтМенеджера, отправляющая задания на печать с ПК пользователей, имеет параметр `verify_SSL_cert`, по умолчанию установленный в `false`.

При необходимости используйте доверенный сертификат одного из типов:

- Сертификат, приобретённый или полученный у внешнего доверенного центра сертификации.
- Сертификат, выданный внутренним центром сертификации организации (Enterprise CA).

**Важно:** для использования встраиваемого приложения настройка HTTPS может быть обязательной для конкретного вендора. При этом сертификат не обязательно должен быть доверенным. Подробнее — в документации по установке встраиваемых приложений.

---

## Настройка проверки HTTPS-сертификата для службы в Linux

Для корректной проверки сертификата и работы Клиента ПринтМенеджер по протоколу HTTPS выполните следующие действия:

1. Остановите службу Клиента ПМ:

```
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. Перезапустите службу или перезагрузите компьютер.

---

## Настройка проверки 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 (схема с балансировкой нагрузки)

Измените значение переменных:

    DATABASE_URL="postgres://postgres:NEW-PASSWORD@db:5432/printmanager"
где `NEW-PASSWORD` - новый пароль

После чего выполните команды:

    sudo docker-compose down

Измените пароль штатными средствами во внешней базе:

    sudo docker-compose up -d


## Важно

- При схеме с балансировкой все изменения паролей в Мониторинге и ПринтМенеджер должны быть отражены в конфигурационных файлах балансировщика.
- CUPS установлен на всех серверах в схеме с балансировкой — учитывайте это при перезапуске.

# Как обновить 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)