From 6733688c69b959e409faa9d7724df32638abe34e Mon Sep 17 00:00:00 2001 From: Administrator Date: Fri, 20 Mar 2026 16:29:00 +0500 Subject: [PATCH] Update 3 files - /docs/10-security.md - /docs/11-backup.md - /docs/12-troubleshooting.md --- docs/10-security.md | 124 ++++++++++++++++ docs/11-backup.md | 148 +++++++++++++++++++ docs/12-troubleshooting.md | 289 +++++++++++++++++++++++++++++++++++++ 3 files changed, 561 insertions(+) create mode 100644 docs/10-security.md create mode 100644 docs/11-backup.md create mode 100644 docs/12-troubleshooting.md diff --git a/docs/10-security.md b/docs/10-security.md new file mode 100644 index 0000000..544d220 --- /dev/null +++ b/docs/10-security.md @@ -0,0 +1,124 @@ +# 10. Безопасность + +## Обзор + +В этом разделе собраны текущие проблемы безопасности инфраструктуры и план их устранения. Документ основан на результатах аудита, проведённого в марте 2026 года. + +## Текущее состояние + +| Область | Статус | Комментарий | +|---------|--------|-------------| +| SSH (парольная аутентификация) | ✅ | Отключена на всех хостах | +| SSH (вход root) | 🔴 | Разрешён на всех хостах | +| SSH-ключи | 🟡 | Управляются через Ansible, но требуется проверка на наличие лишних ключей | +| Samba (шифрование) | 🟡 | На `media` – `desired`, на `games` – `required` | +| Samba (протокол) | 🔴 | На `media` используется `NT1` (SMB1), что небезопасно | +| UFW / фаервол | 🔴 | Отключён на всех LXC и ВМ | +| Хранение паролей в Ansible | 🔴 | Часть паролей в открытом виде в `all.yml` | +| Заголовки безопасности в NPM | 🔴 | Отсутствуют для большинства прокси | +| Docker-образы | 🟡 | Используется тег `latest`, неконтролируемые обновления | +| Обновления систем | 🟡 | Много пакетов требуют обновления (49 на `media`, аналогично на других) | +| Мониторинг | 🟢 | Настроен, но нет алертов на логи и некоторые метрики | +| Резервное копирование | 🔴 | Не настроено (будет описано в отдельном разделе) | + +## Критические проблемы (🔴) + +### 1. Вход root по SSH +- **Описание**: На всех хостах разрешён вход под пользователем `root` через SSH. При компрометации ключа злоумышленник получает полный контроль над системой. +- **Решение**: Создать обычного пользователя (например, `ansible`), добавить его в группу `sudo`, настроить ключи и запретить вход root в `/etc/ssh/sshd_config` (`PermitRootLogin no`). Перезапустить SSH. + +### 2. Samba на media использует SMB1 +- **Описание**: В конфигурации Samba на хосте `media` установлен `server min protocol = NT1`, что соответствует SMB1. Этот протокол уязвим (EternalBlue и другие атаки). +- **Решение**: Изменить на `server min protocol = SMB2` (или `SMB3`). После изменения проверить работу клиентов (Windows, Android, Docker). Если Android не поддерживает SMB2/3, использовать VPN для доступа к шарам. + +### 3. Отсутствие фаервола на всех LXC +- **Описание**: UFW отключён на всех LXC-контейнерах. Сервисы доступны из всей локальной сети без ограничений. +- **Решение**: Включить UFW на каждом хосте, разрешив только необходимые порты: + - SSH (только из подсетей 192.168.1.0/24 и 192.168.45.0/24) + - Samba (139, 445) – только из локальной и VPN-подсетей + - Порты Docker-сервисов (например, 45131, 45132 и т.д.) – если они должны быть доступны только через NPM, то разрешить только для `gateway` или для всей локальной сети + - HTTP/HTTPS (80, 443) – если сервис слушает напрямую, а не через NPM + +### 4. Пароли в открытом виде в Ansible +- **Описание**: В файле `group_vars/all.yml` присутствуют пароли в открытом виде (например, `grafana_admin_password`, пароли Samba, PostgreSQL и др.). +- **Решение**: Немедленно перенести все секреты в `group_vars/vault.yml` и зашифровать с помощью Ansible Vault. Удалить открытые пароли из `all.yml`. + +### 5. Отсутствие заголовков безопасности в NPM +- **Описание**: Для большинства проксируемых доменов не настроены заголовки HSTS, X-Content-Type-Options, X-Frame-Options и другие. +- **Решение**: Через веб-интерфейс NPM для каждого публичного прокси добавить заголовки (см. раздел [Проксирование и SSL](07-proxy-ssl.md)). + +## Проблемы высокого приоритета (🟠) + +### 1. Использование Docker-образов с тегом `latest` +- **Описание**: Образы, такие как `jc21/nginx-proxy-manager:latest`, обновляются неконтролируемо, что может привести к несовместимости или неожиданным изменениям. +- **Решение**: Зафиксировать версии образов в `docker-compose.yml` (например, `jc21/nginx-proxy-manager:2.12.3`). + +### 2. Необновлённые системы +- **Описание**: На хосте `media` 49 пакетов требуют обновления, включая Docker и системные библиотеки. Аналогичная ситуация на других хостах. +- **Решение**: Выполнить `apt update && apt upgrade` на всех хостах. Настроить автоматические обновления безопасности (`unattended-upgrades`). + +### 3. Прокси с Offline статусом +- **Описание**: `qb.zailon.ru` недоступен. Возможно, qBittorrent не запущен или не слушает порт 8080. +- **Решение**: Проверить контейнер qBittorrent на `torrent`, убедиться, что порт 8080 открыт, и правило прокси в NPM корректно. + +## Проблемы среднего приоритета (🟡) + +### 1. Шифрование Samba на media +- **Описание**: Установлено `smb encrypt = desired` вместо `required`. Это снижает безопасность передачи данных. +- **Решение**: После включения VPN для доступа к шарам извне изменить на `required`. Если Android-клиенты не поддерживают шифрование, использовать VPN. + +### 2. Управление SSH-ключами +- **Описание**: В `all.yml` указаны три публичных ключа. Необходимо убедиться, что на всех хостах нет лишних ключей, а также что ключи актуальны. +- **Решение**: Проверить содержимое `~/.ssh/authorized_keys` на каждом хосте, удалить ненужные. Использовать Ansible для централизованного управления ключами. + +### 3. cAdvisor не включён на всех хостах +- **Описание**: В плейбуке роль `cadvisor` закомментирована, поэтому метрики Docker-контейнеров собираются не везде. +- **Решение**: Если нужен полный мониторинг, раскомментировать роль в `olimp-deploy.yml` и применить её для хостов с Docker. + +### 4. Отсутствие алертов на логи +- **Описание**: Настроены только алерты на метрики. Нет алертов на появление в логах ошибок, попыток взлома и т.п. +- **Решение**: Настроить правила алертов в Grafana на основе Loki (например, при появлении `error` в логах NPM или SSH). + +## Рекомендации по улучшению (🟢) + +### 1. Включить автоматические обновления безопасности +- На всех хостах установить `unattended-upgrades` и настроить его на автоматическую установку обновлений безопасности. + +### 2. Сегментация сети +- Выделить VLAN для умных устройств (IoT) и гостевой сети, чтобы ограничить распространение атаки. + +### 3. Мониторинг роутера +- Настроить сбор SNMP-метрик с роутера TP-Link (если поддерживается) для мониторинга нагрузки, ошибок и подозрительного трафика. + +### 4. Резервное копирование +- Организовать регулярное резервное копирование конфигураций, баз данных и пользовательских данных. Хранить копии в зашифрованном виде вне основной сети. + +### 5. Двухфакторная аутентификация +- Для критических сервисов (Grafana, GitLab, Bitwarden) включить 2FA, если это поддерживается. + +### 6. Регулярный аудит +- Проводить периодический аудит безопасности (например, раз в 3 месяца) с использованием специализированных инструментов (Lynis, OpenVAS). + +## План действий + +| Задача | Приоритет | Срок | +|--------|-----------|------| +| Перенести пароли в Ansible Vault | 🔴 | Немедленно | +| Запретить вход root по SSH | 🔴 | Немедленно | +| Включить UFW на всех хостах | 🔴 | В течение недели | +| Обновить Samba (протокол и шифрование) | 🔴 | В течение недели | +| Добавить заголовки безопасности в NPM | 🔴 | В течение недели | +| Зафиксировать версии Docker-образов | 🟠 | В течение месяца | +| Обновить все системы | 🟠 | В течение месяца | +| Настроить автоматические обновления | 🟢 | В течение месяца | +| Включить cAdvisor | 🟡 | По мере необходимости | +| Настроить алерты на логи | 🟡 | По мере необходимости | + +--- + +**Связанные разделы:** +- [Samba – файловые шары](05-samba.md) +- [Проксирование и SSL (NPM)](07-proxy-ssl.md) +- [Мониторинг и логирование](08-monitoring.md) +- [Управление конфигурацией (Ansible)](09-ansible.md) +- [Резервное копирование](11-backup.md) \ No newline at end of file diff --git a/docs/11-backup.md b/docs/11-backup.md new file mode 100644 index 0000000..27e6b25 --- /dev/null +++ b/docs/11-backup.md @@ -0,0 +1,148 @@ +# 11. Резервное копирование + +## Обзор + +Резервное копирование критически важно для защиты данных и возможности восстановления после сбоев, ошибок или атак. На момент аудита (март 2026) централизованная система резервного копирования **не настроена**. В данном разделе описаны требования, предлагаемая стратегия и план внедрения. + +## Текущее состояние + +- **Отсутствие регулярных бэкапов**: Нет автоматизированного процесса резервного копирования конфигураций, баз данных и пользовательских данных. +- **Разрозненные данные**: Данные хранятся на разных томах (RAID6, SSD) и в разных форматах (файлы, базы данных, Docker-тома). +- **Ручные копии**: Возможно, эпизодически создавались копии вручную, но это не систематизировано. +- **Риски**: Потеря данных при сбое RAID (хотя RAID6 защищает от отказа двух дисков, но не от случайного удаления, ошибок программ или вирусов), невозможность отката после неудачного обновления. + +## Цели + +1. **Надёжность**: Гарантированная возможность восстановления данных после любых инцидентов. +2. **Автоматизация**: Регулярные бэкапы по расписанию без участия администратора. +3. **Целостность**: Проверка создаваемых копий (тестирование восстановления). +4. **Безопасность**: Шифрование бэкапов и хранение вне основной инфраструктуры. +5. **Минимизация потерь**: RPO (Recovery Point Objective) – не более 24 часов; RTO (Recovery Time Objective) – не более 4 часов для критических сервисов. + +## Что нужно бэкапить + +### 1. Конфигурации +- Ansible: репозиторий с `group_vars`, ролями, плейбуками (включая зашифрованный `vault.yml`). +- Nginx Proxy Manager: база данных SQLite (контейнер `npm`), сертификаты Let's Encrypt. +- Системные конфигурации: `/etc/ssh`, `/etc/network`, `/etc/samba`, `/etc/fstab`, `/etc/cron*`. +- Docker: `docker-compose.yml` всех сервисов, пользовательские тома. + +### 2. Базы данных +- **PostgreSQL**: Immich, BookStack, Nextcloud (внутри ВМ), GitLab, Grafana, Loki. +- **MySQL/MariaDB**: Ampache, Flibusta, Mealie (SQLite, но можно и файл). +- **SQLite**: Bitwarden, Mealie, BookStack (опционально), кастомные приложения. +- **Redis**: Nextcloud, GitLab. + +### 3. Пользовательские данные +- **Медиафайлы**: `/mnt/video/*`, `/mnt/audio/*`, `/mnt/books/*` на хосте `media`. +- **Игры**: `/mnt/games/` на хосте `games`. +- **Фотографии**: Immich (папка загрузок, библиотека) на `photo`. +- **Документы**: BookStack, Nextcloud. +- **Торренты**: qBittorrent (метаданные, настройки). + +### 4. Виртуальные машины и LXC +- **Proxmox**: конфигурации ВМ (файлы `.conf`), диски LVM-thin, шаблоны. + +## Стратегия резервного копирования + +### Рекомендуемый инструмент: Proxmox Backup Server (PBS) + +- Установить PBS на отдельную ВМ или физический хост (можно на том же сервере, но лучше выделенный). +- Настроить хранилище (желательно на отдельном диске или NAS). +- Использовать дедупликацию, сжатие, шифрование. +- Настроить расписания бэкапов для каждой ВМ/LXC через Proxmox VE (интеграция с PBS). + +### Альтернатива (если PBS не используется) + +- **Для LXC и ВМ**: встроенные средства Proxmox (VZDump) с сохранением на NFS или SMB. +- **Для Docker-контейнеров**: скрипты с `docker exec` дампов БД, архивация томов. +- **Для файлов**: `rsync` или `restic` в cron. + +## План внедрения + +### Этап 1: Подготовка (1–2 дня) +- Определить список всех ресурсов, подлежащих бэкапу (таблица выше). +- Оценить объём данных: примерно (медиа ~8 ТБ, игры ~4 ТБ, фото ~200 ГБ, базы ~10 ГБ, конфиги ~1 ГБ). +- Выбрать место для хранения бэкапов: внешний HDD (USB) + дополнительно облако (например, Backblaze B2) для критических данных. +- Установить и настроить Proxmox Backup Server (можно в LXC на `olimp` или на отдельной машине). + +### Этап 2: Настройка бэкапов ВМ и LXC (2–3 дня) +- В Proxmox VE добавить PBS как хранилище. +- Создать расписания для каждой ВМ/LXC: + - Критические (базы, GitLab, Nextcloud): ежедневно, хранить 7 дней, еженедельно 4 недели, ежемесячно 3 месяца. + - Некритические (медиа, игры): еженедельно, хранить 4 недели. +- Настроить уведомления об ошибках. + +### Этап 3: Бэкап данных вне Proxmox (2–3 дня) +- Написать скрипты (на базе Ansible или shell) для: + - Дампов баз данных PostgreSQL, MySQL, SQLite. + - Копирования Docker-томов. + - Синхронизации файловых данных (медиа, игры) с бэкап-хранилищем (можно через `restic`). +- Запускать скрипты по расписанию (cron или systemd timer) до или после бэкапов ВМ. +- Проверить, что бэкапы не дублируют данные (например, диски ВМ уже содержат часть файлов – можно исключить их из файлового бэкапа, если они уже входят в VZDump). + +### Этап 4: Тестирование восстановления (1 день) +- Выполнить тестовое восстановление ВМ на изолированной среде (или с переименованием). +- Проверить восстановление базы данных из дампа. +- Восстановить несколько файлов из бэкапа. + +### Этап 5: Автоматизация и мониторинг (1 день) +- Настроить алерты в Grafana на статус бэкапов (через API Proxmox или логи). +- Добавить проверку успешности бэкапов в мониторинг. + +## Примеры команд + +### Бэкап базы данных PostgreSQL (например, Immich) + +```bash +pg_dump -U immich -h localhost immich > /backup/immich_$(date +%Y%m%d).sql +``` + +### Бэкап SQLite (Bitwarden) + +```bash +sqlite3 /path/to/vaultwarden.db ".backup /backup/vaultwarden_$(date +%Y%m%d).db" +``` + +### Бэкап Docker-томов (например, Jellyfin) + +```bash +tar -czf /backup/jellyfin_config_$(date +%Y%m%d).tar.gz /opt/service/jellyfin/config +``` + +### Синхронизация файлов с внешним хранилищем (restic) + +```bash +restic -r /mnt/backup_drive/restic_repo backup /mnt/video /mnt/audio /mnt/books +``` + +### Восстановление ВМ из бэкапа через PBS + +- В интерфейсе Proxmox: Datacenter → Storage → PBS → Backups → выбрать backup → Restore. + +## Проблемы и рекомендации + +### 🔴 Отсутствие резервных копий +**Проблема**: Критическая уязвимость – потеря всех данных при сбое или ошибке. +**Решение**: Немедленно начать внедрение системы бэкапов по плану выше. Минимально: запустить ручной бэкап критических данных (базы, конфиги) на внешний диск. + +### 🟡 Большой объём медиа +**Проблема**: Медиафайлы (~8 ТБ) сложно бэкапить часто и хранить в нескольких местах. +**Решение**: +- Для медиа достаточно еженедельного бэкапа. +- Использовать дедупликацию (PBS или restic). +- Рассмотреть бэкап только метаданных (библиотеки Jellyfin, настройки), а сами файлы можно перекачать заново (но если они уникальны, то бэкапить полностью). + +### 🟢 Шифрование бэкапов +**Рекомендация**: Все бэкапы, хранящиеся вне сервера (на внешних дисках, в облаке), шифровать. PBS поддерживает шифрование на стороне клиента. + +### 🟢 Хранение копий вне сети +**Рекомендация**: Хранить как минимум одну копию бэкапов вне основной сети (например, внешний USB-диск, отключаемый после бэкапа, или облачное хранилище). + +--- + +**Связанные разделы:** +- [Гипервизор Proxmox](02-hypervisor.md) +- [Виртуальные машины и LXC](03-vms-lxcs.md) +- [Управление конфигурацией (Ansible)](09-ansible.md) +- [Безопасность](10-security.md) \ No newline at end of file diff --git a/docs/12-troubleshooting.md b/docs/12-troubleshooting.md new file mode 100644 index 0000000..f017bb1 --- /dev/null +++ b/docs/12-troubleshooting.md @@ -0,0 +1,289 @@ +# 12. Решение проблем + +В этом разделе собраны типичные проблемы, возникающие при эксплуатации инфраструктуры, и способы их устранения. + +## Содержание + +- [SSH: не удаётся подключиться](#ssh-не-удаётся-подключиться) +- [Samba: не монтируются шары](#samba-не-монтируются-шары) +- [NPM: сертификат не выпускается](#npm-сертификат-не-выпускается) +- [Docker: контейнер не запускается](#docker-контейнер-не-запускается) +- [Proxmox: ВМ не стартует](#proxmox-вм-не-стартует) +- [Grafana: нет данных](#grafana-нет-данных) +- [Immich: не загружаются фото](#immich-не-загружаются-фото) +- [Jellyfin: аппаратное ускорение не работает](#jellyfin-аппаратное-ускорение-не-работает) +- [Общие проверки](#общие-проверки) + +--- + +## SSH: не удаётся подключиться + +### Симптомы +- `Connection refused` +- `Permission denied (publickey)` +- Таймаут подключения + +### Проверка +1. Доступен ли хост по сети: + ```bash + ping 192.168.1.201 + ``` +2. Слушает ли SSH: + ```bash + ssh -v user@192.168.1.201 + ``` +3. Проверьте файрвол на хосте: + ```bash + ufw status + iptables -L -n -v | grep 22 + ``` +4. Проверьте конфиг SSH на хосте: + ```bash + grep -E '^(PermitRootLogin|PasswordAuthentication|PubkeyAuthentication)' /etc/ssh/sshd_config + ``` + +### Решение +- Если порт не слушается: `systemctl status sshd` +- Если файрвол блокирует: разрешить порт 22 из нужной подсети +- Если проблема с ключами: убедиться, что ключ добавлен в `~/.ssh/authorized_keys` и права на файлы корректны (`600` для ключа, `700` для `.ssh`) + +--- + +## Samba: не монтируются шары + +### Симптомы +- `mount error(13): Permission denied` +- `mount error(112): Host is down` +- В Windows не видит шару + +### Проверка +1. Работает ли Samba на сервере: + ```bash + systemctl status smbd + ``` +2. Правильный ли протокол (версия SMB): + ```bash + smbclient -L //192.168.1.203 -U zailon + ``` +3. Проверка конфигурации: + ```bash + testparm + ``` + +### Решение +- Убедиться, что пользователь существует в Samba: + ```bash + pdbedit -L + ``` +- Проверить `hosts allow` в `smb.conf` – должна быть разрешена подсеть клиента +- Для Docker-контейнеров (qbittorrent) проверить, что учётные данные в `/etc/smb-creds/qb` корректны и файл имеет права `600` +- Если используется шифрование `required`, убедиться, что клиент его поддерживает (для Windows 10/11 включено по умолчанию) + +--- + +## NPM: сертификат не выпускается + +### Симптомы +- В интерфейсе NPM сертификат в статусе `Error` +- Ошибка `Failed to issue certificate` в логах + +### Проверка +1. Доступен ли домен из интернета: + ```bash + dig ab.zailon.ru + ``` +2. Открыт ли порт 443 на роутере +3. Логи NPM: + ```bash + docker logs npm 2>&1 | grep -i error + ``` + +### Решение +- Убедиться, что DNS-запись `A` для домена указывает на внешний IP `188.73.191.202` +- Убедиться, что порт 443 на роутере проброшен на `192.168.1.201:443` +- Если используется Let's Encrypt, проверить, что не превышен лимит запросов +- Для внутренних доменов (без публичного доступа) использовать самоподписанные сертификаты или DNS-челлендж + +--- + +## Docker: контейнер не запускается + +### Симптомы +- `docker start` выдаёт ошибку +- Контейнер падает сразу после запуска +- В логах ошибки + +### Проверка +1. Посмотреть логи контейнера: + ```bash + docker logs + ``` +2. Проверить, нет ли конфликта портов: + ```bash + docker ps -a + ss -tulnwp | grep + ``` +3. Проверить права на монтированные тома: + ```bash + ls -la /path/to/mount + ``` + +### Решение +- Исправить ошибки в конфигурации (обычно они видны в логах) +- Освободить занятый порт или изменить маппинг портов в `docker-compose.yml` +- Убедиться, что пользователь внутри контейнера имеет доступ к смонтированным папкам (UID/GID) + +--- + +## Proxmox: ВМ не стартует + +### Симптомы +- Ошибка `TASK ERROR: unable to open file '/etc/pve/nodes/olimp/qemu-server/205.conf'` +- Ошибка `kvm: no such device` +- ВМ зависает на старте + +### Проверка +1. Статус служб Proxmox: + ```bash + systemctl status pve-cluster pvedaemon qemu-server + ``` +2. Проверить наличие свободного места на хранилище: + ```bash + pvesm status + ``` +3. Посмотреть логи: + ```bash + journalctl -u pvedaemon -f + ``` + +### Решение +- Если проблема с конфигурационным файлом – восстановить из бэкапа (см. раздел 11) +- Если не хватает памяти – остановить другие ВМ или увеличить ресурсы +- Если ошибка KVM – убедиться, что виртуализация включена в BIOS и модули загружены: + ```bash + lsmod | grep kvm + ``` + +--- + +## Grafana: нет данных + +### Симптомы +- Дашборды не отображают метрики +- Ошибка `No data` или `Data source not found` + +### Проверка +1. Доступен ли источник данных (VictoriaMetrics, Loki): + ```bash + curl http://192.168.1.208:8428/api/v1/query?query=up + curl http://192.168.1.208:3100/loki/api/v1/query_range?query={job="node_exporter"} + ``` +2. Работает ли Promtail на хостах: + ```bash + systemctl status promtail + ``` +3. Проверить конфигурацию источников данных в Grafana (Settings → Data Sources) + +### Решение +- Перезапустить VictoriaMetrics, Loki, Promtail +- Проверить сетевые доступы между `manage` и другими хостами (порты 8428, 3100, 9080) +- Убедиться, что файлы конфигурации Promtail корректны (пути к логам, метки) + +--- + +## Immich: не загружаются фото + +### Симптомы +- Ошибка загрузки в веб-интерфейсе или приложении +- Файлы не появляются в библиотеке + +### Проверка +1. Статус контейнеров Immich: + ```bash + docker ps | grep immich + ``` +2. Логи сервера: + ```bash + docker logs immich_server | tail -50 + ``` +3. Доступность хранилища: + ```bash + df -h /mnt/immich + ``` + +### Решение +- Проверить права на папку загрузок: должны быть доступны пользователю внутри контейнера (обычно 1000:1000) +- Убедиться, что база данных PostgreSQL работает и доступна +- Проверить конфигурацию обратного прокси (NPM) – не обрезает ли большие файлы (должно быть `client_max_body_size 2000m`) + +--- + +## Jellyfin: аппаратное ускорение не работает + +### Симптомы +- Высокая загрузка CPU при воспроизведении +- В логах ошибки `Failed to open VAAPI device` + +### Проверка +1. Наличие устройства `/dev/dri` в контейнере: + ```bash + docker exec jellyfin ls -la /dev/dri + ``` +2. Установлены ли драйверы на хосте: + ```bash + apt list --installed | grep -E 'intel-media-va-driver|mesa-va-drivers' + ``` + +### Решение +- Добавить в `docker-compose.yml`: + ```yaml + devices: + - /dev/dri:/dev/dri + ``` +- Установить драйверы на хосте `media`: + ```bash + apt install intel-media-va-driver-non-free + ``` +- Включить аппаратное ускорение в настройках Jellyfin (Администрирование → Воспроизведение → Аппаратное ускорение → VAAPI) + +--- + +## Общие проверки + +Если проблема не локализована, выполните следующие шаги: + +1. **Логи** – первое, что нужно смотреть: + - Системные: `journalctl -xe` + - Docker: `docker logs ` + - Samba: `tail -f /var/log/samba/log.smbd` + +2. **Сеть** – проверить доступность и открытые порты: + ```bash + ping 192.168.1.200 + traceroute 192.168.1.200 + nmap -p 22,80,443 192.168.1.201 + ``` + +3. **Диски** – проверить свободное место: + ```bash + df -h + pvesm status # на Proxmox + ``` + +4. **Файрвол** – временно отключить для теста: + ```bash + ufw disable # только для теста! + ``` + +5. **Перезагрузка** – иногда помогает: + ```bash + reboot + ``` + +--- + +**Связанные разделы:** +- [Сеть и доступ](04-network.md) +- [Samba – файловые шары](05-samba.md) +- [Проксирование и SSL (NPM)](07-proxy-ssl.md) +- [Мониторинг и логирование](08-monitoring.md) \ No newline at end of file