diff --git a/README.md b/README.md index e829e93..a7a41f4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Домашний сервер zailon.ru +# Домашний сервер Olimp Документация по инфраструктуре домашнего сервера, работающего под управлением Proxmox VE, с набором LXC-контейнеров и виртуальных машин. Основная цель — создание независимой мультимедийной платформы с доступом из внешней сети через домен `zailon.ru`. @@ -11,13 +11,14 @@ - [Виртуальные машины и LXC](docs/03-vms-lxcs.md) - [Сеть и доступ](docs/04-network.md) - [Samba – файловые шары](docs/05-samba.md) -- [Сервисы и порты](docs/06-services.md) -- [Проксирование и SSL (NPM)](docs/07-proxy-ssl.md) -- [Мониторинг и логирование](docs/08-monitoring.md) -- [Управление конфигурацией (Ansible)](docs/09-ansible.md) -- [Безопасность](docs/10-security.md) -- [Резервное копирование](docs/11-backup.md) -- [Решение проблем](docs/12-troubleshooting.md) +- [Сервисы и порты](docs/06-services.md) *(в разработке)* +- [Проксирование и SSL (NPM)](docs/07-proxy-ssl.md) +- [Мониторинг и логирование](docs/08-monitoring.md) +- [Управление конфигурацией (Ansible)](docs/09-ansible.md) +- [Безопасность](docs/10-security.md) +- [Резервное копирование](docs/11-backup.md) +- [Решение проблем](docs/12-troubleshooting.md) +- [Плановое обслуживание](docs/13-maintenance.md) ## 🚀 Краткий обзор @@ -29,8 +30,4 @@ ## 📝 Статус -Документация актуальна на 20 марта 2026 года. Регулярно обновляется по мере изменений в инфраструктуре. - ---- - -*Навигация по документации осуществляется через оглавление выше. Каждый раздел содержит детальные сведения и ссылки на связанные разделы.* \ No newline at end of file +Документация актуальна на 20 марта 2026 года. Регулярно обновляется по мере изменений в инфраструктуре. \ No newline at end of file diff --git a/docs/13-maintenance.md b/docs/13-maintenance.md new file mode 100644 index 0000000..ed00832 --- /dev/null +++ b/docs/13-maintenance.md @@ -0,0 +1,264 @@ +# 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) \ No newline at end of file