# 13. Плановое обслуживание Регулярное обслуживание инфраструктуры необходимо для обеспечения стабильности, безопасности и производительности. В этом разделе описан регламент работ, включая обновления, очистку и фиксацию версий. ## Содержание - [Обновление системы](#обновление-системы) - [Обновление Docker-образов](#обновление-docker-образов) - [Фиксация версий](#фиксация-версий) - [Очистка логов и временных файлов](#очистка-логов-и-временных-файлов) - [Очистка Docker](#очистка-docker) - [Проверка резервных копий](#проверка-резервных-копий) - [Проверка сертификатов](#проверка-сертификатов) - [Ротация паролей](#ротация-паролей) - [Регламент обслуживания](#регламент-обслуживания) --- ## Обновление системы ### Пакеты ОС (apt) Для всех хостов (Proxmox, LXC, ВМ) регулярно выполняйте обновление пакетов безопасности и критических исправлений. **Ручное обновление:** ```bash apt update apt list --upgradable # посмотреть список apt upgrade -y # обновить пакеты apt autoremove -y # удалить ненужные зависимости ``` **Автоматические обновления безопасности:** На всех хостах следует настроить `unattended-upgrades`: ```bash 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`, но после обновления ядра требуется перезагрузка. Желательно планировать перезагрузку гипервизора в окно обслуживания. ```bash apt update apt dist-upgrade -y pveversion -v # проверить версию reboot ``` --- ## Обновление Docker-образов ### Просмотр текущих версий ```bash docker ps --format "table {{.Image}}\t{{.Names}}" ``` ### Обновление образа 1. Остановить контейнер: ```bash docker stop ``` 2. Удалить контейнер (если не используется `--rm`): ```bash docker rm ``` 3. Обновить образ (если используется тег `latest`): ```bash docker pull :latest ``` Или загрузить фиксированную версию. 4. Запустить контейнер заново (обычно через `docker-compose up -d`). ### Обновление через docker-compose ```bash cd /path/to/service docker-compose pull docker-compose up -d --remove-orphans ``` ### Рекомендация - Избегать использования `:latest` в production. Зафиксировать версии (см. раздел ниже). - Перед обновлением критических сервисов (Bitwarden, GitLab, базы данных) сделать резервную копию. --- ## Фиксация версий ### Docker-образы В `docker-compose.yml` указывайте конкретную версию образа вместо `latest`. Пример: ```yaml services: npm: image: jc21/nginx-proxy-manager:2.12.3 # вместо :latest # ... ``` Актуальные версии можно найти в документации сервисов или на Docker Hub. ### Пакеты ОС Для важных компонентов (например, ядро, Docker, базы данных) можно фиксировать версии с помощью `apt-mark hold`: ```bash apt-mark hold docker-ce apt-mark unhold docker-ce # когда нужно обновить ``` --- ## Очистка логов и временных файлов ### Логи системные Логи в `/var/log` ротируются автоматически (`logrotate`). Проверить конфигурацию: ```bash cat /etc/logrotate.conf ``` Принудительная ротация логов: ```bash logrotate -f /etc/logrotate.conf ``` ### Логи Docker Docker логи по умолчанию не ротируются, но можно настроить их ограничение в `/etc/docker/daemon.json`: ```json { "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } ``` После изменения перезапустить Docker: ```bash systemctl restart docker ``` ### Временные файлы Очистка `/tmp` (обычно очищается при перезагрузке). Можно настроить `systemd-tmpfiles` для регулярной очистки. --- ## Очистка Docker ### Удаление неиспользуемых образов, контейнеров, томов ```bash docker system prune -a -f # удалить всё неиспользуемое docker volume prune -f # удалить неиспользуемые тома docker image prune -a -f # удалить неиспользуемые образы ``` ### Просмотр занимаемого места ```bash docker system df ``` --- ## Проверка резервных копий Регулярно проверяйте, что резервные копии создаются и могут быть восстановлены. - Проверка логов Proxmox Backup Server (или VZDump) на наличие ошибок. - Тестовое восстановление на изолированной среде (хотя бы раз в квартал). - Проверка, что бэкапы не устарели (срок хранения). --- ## Проверка сертификатов ### Let's Encrypt (NPM) Сертификаты обновляются автоматически, но иногда процесс может зависнуть. Проверить статус: - В интерфейсе NPM: SSL Certificates → статус каждого сертификата. - В логах NPM: ```bash docker logs npm 2>&1 | grep -i "renew" ``` ### Ручное обновление (если нужно) В NPM есть кнопка "Renew Now". Также можно перезапустить контейнер: ```bash docker restart npm ``` --- ## Ротация паролей Рекомендуется менять пароли для: - Административных учётных записей (Grafana, GitLab, NPM, Bitwarden) - Пользователей Samba - Пользователей баз данных - Ansible Vault (пароль шифрования) Периодичность: раз в 6–12 месяцев. --- ## Регламент обслуживания | Действие | Периодичность | Ответственный | Примечание | |----------|---------------|---------------|------------| | Обновление пакетов безопасности (unattended-upgrades) | Ежедневно | Автоматически | Настроено через unattended-upgrades | | Проверка наличия обновлений пакетов (apt) | Еженедельно | Администратор | `apt list --upgradable` | | Обновление критических пакетов (вручную) | Еженедельно | Администратор | После проверки совместимости | | Обновление Docker-образов | Раз в месяц | Администратор | Сначала тестовые, потом prod | | Очистка логов и временных файлов | Ежемесячно | Администратор | `docker system prune`, `logrotate` | | Проверка резервных копий | Ежемесячно | Администратор | Просмотр логов PBS, тестовое восстановление | | Проверка сертификатов | Ежемесячно | Администратор | В NPM; автоматическое обновление обычно работает | | Тестовое восстановление из бэкапа | Раз в квартал | Администратор | На изолированной среде | | Ротация паролей | Раз в 6–12 месяцев | Администратор | Обновить пароли в Ansible Vault и в сервисах | | Аудит безопасности (полный) | Раз в год | Администратор | Использовать Lynis, OpenVAS | ### Окна обслуживания - Плановые работы, требующие перезагрузки или остановки сервисов, проводить в выходные дни (суббота, 2:00–5:00) или в наименее загруженное время. - Перед любыми изменениями делать резервную копию критических данных. - После обновлений проверять работоспособность ключевых сервисов (NPM, Samba, Jellyfin, Immich). --- **Связанные разделы:** - [Управление конфигурацией (Ansible)](09-ansible.md) - [Безопасность](10-security.md) - [Резервное копирование](11-backup.md) - [Решение проблем](12-troubleshooting.md)