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

264 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 <container>
```
2. Удалить контейнер (если не используется `--rm`):
```bash
docker rm <container>
```
3. Обновить образ (если используется тег `latest`):
```bash
docker pull <image>: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 (пароль шифрования)
Периодичность: раз в 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).
---
**Связанные разделы:**
- [Управление конфигурацией (Ansible)](09-ansible.md)
- [Безопасность](10-security.md)
- [Резервное копирование](11-backup.md)
- [Решение проблем](12-troubleshooting.md)