264 lines
11 KiB
Markdown
264 lines
11 KiB
Markdown
# 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 (пароль шифрования)
|
||
|
||
Периодичность: раз в 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) |