Docs/docs/13-maintenance.md
2026-03-20 16:42:43 +05:00

11 KiB
Raw Blame History

13. Плановое обслуживание

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

Содержание


Обновление системы

Пакеты ОС (apt)

Для всех хостов (Proxmox, LXC, ВМ) регулярно выполняйте обновление пакетов безопасности и критических исправлений.

Ручное обновление:

apt update
apt list --upgradable              # посмотреть список
apt upgrade -y                     # обновить пакеты
apt autoremove -y                  # удалить ненужные зависимости

Автоматические обновления безопасности:

На всех хостах следует настроить unattended-upgrades:

apt install unattended-upgrades
dpkg-reconfigure --priority=low unattended-upgrades   # включить автоматические обновления

Конфигурация /etc/apt/apt.conf.d/50unattended-upgrades должна содержать:

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Automatic-Reboot "false";

Обновление Proxmox

Proxmox обновляется через стандартный apt, но после обновления ядра требуется перезагрузка. Желательно планировать перезагрузку гипервизора в окно обслуживания.

apt update
apt dist-upgrade -y
pveversion -v                      # проверить версию
reboot

Обновление Docker-образов

Просмотр текущих версий

docker ps --format "table {{.Image}}\t{{.Names}}"

Обновление образа

  1. Остановить контейнер:
    docker stop <container>
    
  2. Удалить контейнер (если не используется --rm):
    docker rm <container>
    
  3. Обновить образ (если используется тег latest):
    docker pull <image>:latest
    
    Или загрузить фиксированную версию.
  4. Запустить контейнер заново (обычно через docker-compose up -d).

Обновление через docker-compose

cd /path/to/service
docker-compose pull
docker-compose up -d --remove-orphans

Рекомендация

  • Избегать использования :latest в production. Зафиксировать версии (см. раздел ниже).
  • Перед обновлением критических сервисов (Bitwarden, GitLab, базы данных) сделать резервную копию.

Фиксация версий

Docker-образы

В docker-compose.yml указывайте конкретную версию образа вместо latest. Пример:

services:
  npm:
    image: jc21/nginx-proxy-manager:2.12.3   # вместо :latest
    # ...

Актуальные версии можно найти в документации сервисов или на Docker Hub.

Пакеты ОС

Для важных компонентов (например, ядро, Docker, базы данных) можно фиксировать версии с помощью apt-mark hold:

apt-mark hold docker-ce
apt-mark unhold docker-ce   # когда нужно обновить

Очистка логов и временных файлов

Логи системные

Логи в /var/log ротируются автоматически (logrotate). Проверить конфигурацию:

cat /etc/logrotate.conf

Принудительная ротация логов:

logrotate -f /etc/logrotate.conf

Логи Docker

Docker логи по умолчанию не ротируются, но можно настроить их ограничение в /etc/docker/daemon.json:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

После изменения перезапустить Docker:

systemctl restart docker

Временные файлы

Очистка /tmp (обычно очищается при перезагрузке). Можно настроить systemd-tmpfiles для регулярной очистки.


Очистка Docker

Удаление неиспользуемых образов, контейнеров, томов

docker system prune -a -f          # удалить всё неиспользуемое
docker volume prune -f             # удалить неиспользуемые тома
docker image prune -a -f           # удалить неиспользуемые образы

Просмотр занимаемого места

docker system df

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

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

  • Проверка логов Proxmox Backup Server (или VZDump) на наличие ошибок.
  • Тестовое восстановление на изолированной среде (хотя бы раз в квартал).
  • Проверка, что бэкапы не устарели (срок хранения).

Проверка сертификатов

Let's Encrypt (NPM)

Сертификаты обновляются автоматически, но иногда процесс может зависнуть.

Проверить статус:

  • В интерфейсе NPM: SSL Certificates → статус каждого сертификата.
  • В логах NPM:
    docker logs npm 2>&1 | grep -i "renew"
    

Ручное обновление (если нужно)

В NPM есть кнопка "Renew Now". Также можно перезапустить контейнер:

docker restart npm

Ротация паролей

Рекомендуется менять пароли для:

  • Административных учётных записей (Grafana, GitLab, NPM, Bitwarden)
  • Пользователей Samba
  • Пользователей баз данных
  • Ansible Vault (пароль шифрования)

Периодичность: раз в 612 месяцев.


Регламент обслуживания

Действие Периодичность Ответственный Примечание
Обновление пакетов безопасности (unattended-upgrades) Ежедневно Автоматически Настроено через unattended-upgrades
Проверка наличия обновлений пакетов (apt) Еженедельно Администратор apt list --upgradable
Обновление критических пакетов (вручную) Еженедельно Администратор После проверки совместимости
Обновление Docker-образов Раз в месяц Администратор Сначала тестовые, потом prod
Очистка логов и временных файлов Ежемесячно Администратор docker system prune, logrotate
Проверка резервных копий Ежемесячно Администратор Просмотр логов PBS, тестовое восстановление
Проверка сертификатов Ежемесячно Администратор В NPM; автоматическое обновление обычно работает
Тестовое восстановление из бэкапа Раз в квартал Администратор На изолированной среде
Ротация паролей Раз в 612 месяцев Администратор Обновить пароли в Ansible Vault и в сервисах
Аудит безопасности (полный) Раз в год Администратор Использовать Lynis, OpenVAS

Окна обслуживания

  • Плановые работы, требующие перезагрузки или остановки сервисов, проводить в выходные дни (суббота, 2:005:00) или в наименее загруженное время.
  • Перед любыми изменениями делать резервную копию критических данных.
  • После обновлений проверять работоспособность ключевых сервисов (NPM, Samba, Jellyfin, Immich).

Связанные разделы: