OVHserver/opt/infrastructure-docs/ADMIN_GUIDE.md
SamoilenkoVadym a987d45fbc chore: initial infrastructure setup with Syncthing, Git and documentation
Set up three-tier synchronization: Syncthing (real-time), GitHub (version control), rsync (disaster recovery). Includes complete documentation for future Claude sessions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-05 16:41:12 +00:00

19 KiB
Raw Permalink Blame History

🎯 AI-Impress Server - Полное руководство администратора

Версия: 4.0
Дата: 2025-11-03
Для: Администраторов без технического опыта


📋 СОДЕРЖАНИЕ

  1. Быстрый старт
  2. Ежедневные задачи
  3. Все установленное ПО
  4. Где что находится
  5. Пароли и доступы
  6. Резервные копии
  7. Мониторинг и алерты
  8. Как исправить проблемы
  9. Автоматизация
  10. FAQ - Частые вопросы

🚀 БЫСТРЫЙ СТАРТ

Подключение к серверу

ssh ubuntu@51.89.231.46

Главные команды

# Проверить все сервисы
/opt/05-backups/scripts/admin.sh status

# Полный отчет о сервере
/opt/infrastructure-docs/scripts/server-full-report.sh

# Проверка здоровья системы
/opt/05-backups/scripts/health-check-alerting.sh

# Помощь
/opt/05-backups/scripts/admin.sh help

📅 ЕЖЕДНЕВНЫЕ ЗАДАЧИ

Что проверять каждый день

  1. Проверить алерты в Slack - канал #alerts
  2. Проверить email - admin@ai-impress.com
  3. Открыть мониторинг - https://grafana.ai-impress.com
  4. Проверить сайты работают:

🔍 Быстрая проверка (2 минуты)

# SSH на сервер
ssh ubuntu@51.89.231.46

# Запустить быструю проверку
/opt/05-backups/scripts/health-check-alerting.sh

# Если все ОК - увидите зеленую галочку ✅
# Если проблемы - получите список с инструкциями

💻 ВСЕ УСТАНОВЛЕННОЕ ПО

🏛️ Критические сервисы (НЕЛЬЗЯ УДАЛЯТЬ!)

Сервис Назначение Что сломается если удалить
Traefik Обратный прокси, SSL ВСЕ сайты перестанут работать
PostgreSQL База данных ВСЕ приложения потеряют данные
Redis Кеш и очереди N8N, Authentik сломаются
Vault Хранилище паролей Потеряете доступ ко всем паролям

💼 Бизнес-приложения

Приложение URL Можно ли удалить
Outline wiki.ai-impress.com ⚠️ Да, но потеряете документацию
N8N n8n.ai-impress.com ⚠️ Да, но остановятся автоматизации
Mautic marketing.ai-impress.com ⚠️ Да, но потеряете контакты
Odoo odoo.ai-impress.com ⚠️ Да, но потеряете ERP данные
Authentik auth.ai-impress.com Нельзя - сломается вход везде

🔧 Инструменты

Инструмент URL Назначение
Grafana grafana.ai-impress.com Мониторинг и графики
Portainer portainer.ai-impress.com Управление Docker через веб
Uptime Kuma uptime.ai-impress.com Проверка доступности сайтов
pgAdmin pgadmin.ai-impress.com Управление PostgreSQL

📂 ГДЕ ЧТО НАХОДИТСЯ

Структура сервера

/opt/                           # Все приложения
├── 00-infrastructure/          # Критическая инфраструктура
│   ├── traefik/               # Обратный прокси
│   ├── postgres/              # Главная БД
│   ├── vault/                 # Хранилище секретов
│   │   └── .vault-token       # 👈 Токен для доступа к Vault
│   └── redis/                 # Кеш
│
├── 01-network/                # Сетевые сервисы
│   └── authentik/             # SSO авторизация
│
├── 02-core/                   # Основные приложения
│   ├── outline/               # Wiki
│   ├── n8n/                   # Автоматизация
│   └── supabase/              # Backend
│
├── 03-business/               # Бизнес приложения
│   ├── mautic/                # Маркетинг
│   ├── odoo/                  # ERP
│   └── documenso/             # Подписание документов
│
├── 04-tools/                  # Инструменты мониторинга
│   ├── monitoring/            # Grafana, Prometheus, Loki
│   ├── portainer/             # Docker UI
│   └── uptime-kuma/           # Uptime monitoring
│
├── 05-backups/                # Система резервных копий
│   ├── scripts/               # 🎯 ВСЕ СКРИПТЫ УПРАВЛЕНИЯ ЗДЕСЬ!
│   ├── logs/                  # Логи скриптов
│   └── reports/               # JSON отчеты
│
└── infrastructure-docs/       # Документация
    ├── scripts/               # Скрипты генерации отчетов
    └── reports/               # 📄 MD отчеты о сервере

/mnt/
├── backups/                   # 💾 ВСЕ БЕКАПЫ ЗДЕСЬ!
└── psql-data/                 # 🗄️ ВСЕ БАЗЫ ДАННЫХ ЗДЕСЬ!
    ├── pgdata/                # postgres-main
    ├── supabase-db/           # Supabase
    └── mautic-db/             # Mautic

🔐 ПАРОЛИ И ДОСТУПЫ

Где хранятся пароли?

Все пароли в Vault и Vaultwarden (Bitwarden).

Как получить пароль?

# SSH на сервер
ssh ubuntu@51.89.231.46

# Установить переменные
export VAULT_ADDR="http://127.0.0.1:8200"
export VAULT_TOKEN="hvs.jYguDdf2IzobXG8b9QWyATV8"

# Посмотреть все секреты
vault kv list aimpress/

# Получить конкретный пароль
vault kv get aimpress/mautic
vault kv get aimpress/odoo
vault kv get aimpress/postgres/admin

Структура секретов в Vault

secret/
├── monitoring              # Slack webhook, email для алертов
└── outline                 # Outline API credentials

aimpress/
├── postgres/
│   ├── admin              # Главный админ PostgreSQL
│   ├── outline            # Пользователь БД для Outline
│   ├── mautic             # Пользователь БД для Mautic
│   └── odoo               # Пользователь БД для Odoo
├── mautic                 # Админ Mautic
├── odoo                   # Админ Odoo
├── authentik              # Админ Authentik
├── grafana                # Админ Grafana
└── portainer              # Админ Portainer

Как добавить новый секрет?

export VAULT_ADDR="http://127.0.0.1:8200"
export VAULT_TOKEN="hvs.jYguDdf2IzobXG8b9QWyATV8"

# Добавить секрет
vault kv put aimpress/новый_сервис \
  username="admin" \
  password="супер_секретный_пароль" \
  api_key="ключ_апи"

# Проверить
vault kv get aimpress/новый_сервис

Веб-интерфейс Vaultwarden

  • URL: https://vault.ai-impress.com
  • Для команды и удобного доступа к паролям
  • Синхронизация с Vault: каждые 4 часа автоматически

💾 РЕЗЕРВНЫЕ КОПИИ

Где хранятся бекапы?

/mnt/backups/               # Главная директория бекапов

Автоматические бекапы

Что Когда Скрипт
Полный бекап Каждый день в 03:00 backup-full-enhanced.sh
Недельный бекап Воскресенье в 02:00 backup-full-enhanced.sh
БД PostgreSQL Каждый день в 03:00 (включено в полный)
Vault секреты Каждые 4 часа vault-bitwarden-sync.sh
Конфигурации Каждый день в 02:00 config-manager.sh

Ручной бекап

# Полный бекап всего
/opt/05-backups/scripts/backup-full-enhanced.sh

# Только базы данных
docker exec postgres-main pg_dumpall -U aimpress_admin | \
  gzip > /mnt/backups/postgres-$(date +%Y%m%d).sql.gz

# Экспорт Vault секретов
/opt/05-backups/scripts/vault-bitwarden-sync.sh export

Восстановление из бекапа

# 1. Найти нужный бекап
ls -lh /mnt/backups/

# 2. Восстановить БД
gunzip < /mnt/backups/postgres-20251103.sql.gz | \
  docker exec -i postgres-main psql -U aimpress_admin

# 3. Перезапустить сервисы
docker restart <имя_контейнера>

📊 МОНИТОРИНГ И АЛЕРТЫ

Куда приходят алерты?

  1. Slack - канал #alerts
  2. Email - admin@ai-impress.com

Что проверяется автоматически?

✓ Критические сервисы работают (Traefik, PostgreSQL, Redis, Vault)
Все сайты отвечают
✓ Диск не заполнен (> 90%)
✓ Память не переполнена (> 90%)
✓ Нет слишком много нездоровых контейнеров
✓ Бекапы создаются регулярно
✓ Контейнеры не перезапускаются постоянно

Проверки запускаются

  • Каждые 30 минут - health-check-alerting.sh
  • Каждый день в 06:00 - полный отчет о сервере
  • Каждый день в 04:30 - системная диагностика

Как протестировать алерты?

# Проверка системы и отправка в Slack (если есть проблемы)
/opt/05-backups/scripts/health-check-alerting.sh

🔧 КАК ИСПРАВИТЬ ПРОБЛЕМЫ

Сайт не работает (502/503)

# 1. Проверить Traefik
docker logs traefik --tail 50

# 2. Проверить контейнер сайта
docker ps | grep <название>
docker logs <название> --tail 100

# 3. Перезапустить
docker restart <название>

# 4. Если не помогло - перезапустить Traefik
docker restart traefik

База данных не работает

# 1. Проверить PostgreSQL запущен
docker ps | grep postgres-main

# 2. Посмотреть логи
docker logs postgres-main --tail 100

# 3. Проверить место на диске
df -h /mnt/psql-data

# 4. Попробовать подключиться
docker exec postgres-main psql -U aimpress_admin -c "SELECT 1;"

# 5. Перезапустить (осторожно!)
docker restart postgres-main

Закончилось место на диске

# 1. Посмотреть что занимает место
du -sh /opt/* /mnt/* | sort -h | tail -10

# 2. Очистить Docker
docker system prune -af

# 3. Удалить старые логи
find /opt -name "*.log" -mtime +7 -delete
find /var/log -name "*.log" -mtime +7 -exec truncate -s 0 {} \;

# 4. Удалить старые бекапы (старше 60 дней)
find /mnt/backups -mtime +60 -delete

# 5. Проверить результат
df -h

Контейнер постоянно перезапускается

# 1. Посмотреть логи для ошибки
docker logs <контейнер> --tail 200

# 2. Проверить количество перезапусков
docker inspect --format='{{.RestartCount}}' <контейнер>

# 3. Остановить авто-перезапуск временно
docker update --restart=no <контейнер>

# 4. Запустить вручную и смотреть логи
docker start <контейнер> && docker logs -f <контейнер>

# 5. Исправить проблему из логов

Vault запечатан (sealed)

# Распечатать Vault
/opt/00-infrastructure/vault/unseal.sh

# Проверить статус
docker exec vault vault status

⚙️ АВТОМАТИЗАЦИЯ

Что работает автоматически?

Каждые 15 минут

  • Мониторинг синхронизаций сервисов

Каждые 30 минут

  • Health check - проверка здоровья системы и алерты

Каждые 4 часа

  • Vault export - экспорт секретов в бекап

Ежедневно

Время Задача
01:00 Удаление старых логов (> 30 дней)
02:00 Бекап конфигураций
02:00 Недельный полный бекап (воскресенье)
03:00 Полный системный бекап
03:00 Аудит безопасности (понедельник)
04:30 Системная диагностика
05:00 Загрузка отчетов
05:30 Отчеты мониторинга
06:00 Полный отчет о сервере

Еженедельно

День Время Задача
Суббота 02:00 Обслуживание БД
Понедельник 03:00 Аудит безопасности

Просмотр расписания

# Посмотреть все задачи cron
crontab -l

# Посмотреть логи cron задач
ls -lh /opt/05-backups/logs/cron-*.log
tail -50 /opt/05-backups/logs/cron-health-check.log

FAQ - ЧАСТЫЕ ВОПРОСЫ

Как узнать что установлено?

/opt/05-backups/scripts/admin.sh status

Как посмотреть логи приложения?

docker logs -f --tail 100 <имя_контейнера>

# Примеры:
docker logs -f outline
docker logs -f postgres-main
docker logs -f traefik

Как перезапустить приложение?

docker restart <имя_контейнера>

# Или через docker-compose:
cd /opt/<путь_к_приложению>
docker-compose restart

Как удалить ненужное приложение?

# ⚠️ ВНИМАНИЕ: Создайте бекап сначала!

# 1. Бекап базы данных (если есть)
/opt/05-backups/scripts/backup-full-enhanced.sh

# 2. Остановить контейнер
docker stop <имя_контейнера>

# 3. Удалить контейнер
docker rm <имя_контейнера>

# 4. Удалить из docker-compose.yml
cd /opt/<путь>
nano docker-compose.yml  # Удалить секцию сервиса

# 5. Пересоздать стек
docker-compose up -d

Как обновить приложение?

# 1. Бекап!
/opt/05-backups/scripts/backup-full-enhanced.sh

# 2. Перейти в папку приложения
cd /opt/<путь>

# 3. Скачать новый образ
docker-compose pull

# 4. Пересоздать контейнеры
docker-compose up -d

# 5. Проверить логи
docker-compose logs -f

Как изменить пароль?

Для веб-приложений:

  1. Зайти в веб-интерфейс приложения
  2. Settings → Users → Change Password
  3. Сохранить новый пароль в Vault

Для PostgreSQL:

# Генерация нового пароля
NEW_PASS=$(openssl rand -base64 32)

# Изменить в БД
docker exec postgres-main psql -U aimpress_admin -c \
  "ALTER USER <username> WITH PASSWORD '$NEW_PASS';"

# Сохранить в Vault
export VAULT_ADDR="http://127.0.0.1:8200"
export VAULT_TOKEN="hvs.jYguDdf2IzobXG8b9QWyATV8"
vault kv put aimpress/postgres/<service> password="$NEW_PASS"

# Обновить в приложении
cd /opt/<путь>
nano docker-compose.yml  # Изменить DB_PASSWORD
docker-compose restart

Где посмотреть использование ресурсов?

# Память и CPU
docker stats --no-stream

# Диск
df -h

# Самые большие директории
du -sh /opt/* /mnt/* | sort -h | tail -10

# Топ процессов
top -bn1 | head -20

📞 ПОЛЕЗНЫЕ ССЫЛКИ

Веб-интерфейсы

Документация

  • Полные отчеты: /opt/infrastructure-docs/reports/
  • Логи скриптов: /opt/05-backups/logs/
  • Эта инструкция: /opt/infrastructure-docs/ADMIN_GUIDE.md

🎯 ИТОГОВЫЙ ЧЕКЛИСТ АДМИНИСТРАТОРА

Каждый день

Каждую неделю

  • Посмотреть отчеты в Outline (коллекция Reports)
  • Проверить размер бекапов: du -sh /mnt/backups
  • Проверить место на диске: df -h

Каждый месяц

  • Проверить что бекапы можно восстановить
  • Обновить критические приложения (если есть обновления)
  • Почистить старые бекапы (> 60 дней)
  • Проверить логи на ошибки

Версия документа: 4.0
Последнее обновление: 2025-11-03
Контакты: admin@ai-impress.com
Slack: #alerts

Сгенерировано автоматически системой администрирования AI-Impress