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

602 lines
19 KiB
Markdown
Raw 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.

# 🎯 AI-Impress Server - Полное руководство администратора
> **Версия:** 4.0
> **Дата:** 2025-11-03
> **Для:** Администраторов без технического опыта
---
## 📋 СОДЕРЖАНИЕ
1. [Быстрый старт](#быстрый-старт)
2. [Ежедневные задачи](#ежедневные-задачи)
3. [Все установленное ПО](#все-установленное-по)
4. [Где что находится](#где-что-находится)
5. [Пароли и доступы](#пароли-и-доступы)
6. [Резервные копии](#резервные-копии)
7. [Мониторинг и алерты](#мониторинг-и-алерты)
8. [Как исправить проблемы](#как-исправить-проблемы)
9. [Автоматизация](#автоматизация)
10. [FAQ - Частые вопросы](#faq)
---
## 🚀 БЫСТРЫЙ СТАРТ
### Подключение к серверу
```bash
ssh ubuntu@51.89.231.46
```
### Главные команды
```bash
# Проверить все сервисы
/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. **Проверить сайты работают**:
- https://wiki.ai-impress.com ✓
- https://n8n.ai-impress.com ✓
- https://odoo.ai-impress.com ✓
- https://marketing.ai-impress.com ⚠️
### 🔍 Быстрая проверка (2 минуты)
```bash
# 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)**.
### Как получить пароль?
```bash
# 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
```
### Как добавить новый секрет?
```bash
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 |
### Ручной бекап
```bash
# Полный бекап всего
/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
```
### Восстановление из бекапа
```bash
# 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
- Webhook: https://hooks.slack.com/services/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
2. **Email** - admin@ai-impress.com
### Что проверяется автоматически?
✓ Критические сервисы работают (Traefik, PostgreSQL, Redis, Vault)
Все сайты отвечают
✓ Диск не заполнен (> 90%)
✓ Память не переполнена (> 90%)
✓ Нет слишком много нездоровых контейнеров
✓ Бекапы создаются регулярно
✓ Контейнеры не перезапускаются постоянно
### Проверки запускаются
- **Каждые 30 минут** - health-check-alerting.sh
- **Каждый день в 06:00** - полный отчет о сервере
- **Каждый день в 04:30** - системная диагностика
### Как протестировать алерты?
```bash
# Проверка системы и отправка в Slack (если есть проблемы)
/opt/05-backups/scripts/health-check-alerting.sh
```
---
## 🔧 КАК ИСПРАВИТЬ ПРОБЛЕМЫ
### Сайт не работает (502/503)
```bash
# 1. Проверить Traefik
docker logs traefik --tail 50
# 2. Проверить контейнер сайта
docker ps | grep <название>
docker logs <название> --tail 100
# 3. Перезапустить
docker restart <название>
# 4. Если не помогло - перезапустить Traefik
docker restart traefik
```
### База данных не работает
```bash
# 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
```
### Закончилось место на диске
```bash
# 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
```
### Контейнер постоянно перезапускается
```bash
# 1. Посмотреть логи для ошибки
docker logs <контейнер> --tail 200
# 2. Проверить количество перезапусков
docker inspect --format='{{.RestartCount}}' <контейнер>
# 3. Остановить авто-перезапуск временно
docker update --restart=no <контейнер>
# 4. Запустить вручную и смотреть логи
docker start <контейнер> && docker logs -f <контейнер>
# 5. Исправить проблему из логов
```
### Vault запечатан (sealed)
```bash
# Распечатать 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 | Аудит безопасности |
### Просмотр расписания
```bash
# Посмотреть все задачи cron
crontab -l
# Посмотреть логи cron задач
ls -lh /opt/05-backups/logs/cron-*.log
tail -50 /opt/05-backups/logs/cron-health-check.log
```
---
## ❓ FAQ - ЧАСТЫЕ ВОПРОСЫ
### Как узнать что установлено?
```bash
/opt/05-backups/scripts/admin.sh status
```
### Как посмотреть логи приложения?
```bash
docker logs -f --tail 100 <имя_контейнера>
# Примеры:
docker logs -f outline
docker logs -f postgres-main
docker logs -f traefik
```
### Как перезапустить приложение?
```bash
docker restart <имя_контейнера>
# Или через docker-compose:
cd /opt/<путь_к_приложению>
docker-compose restart
```
### Как удалить ненужное приложение?
```bash
# ⚠️ ВНИМАНИЕ: Создайте бекап сначала!
# 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
```
### Как обновить приложение?
```bash
# 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:
```bash
# Генерация нового пароля
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
```
### Где посмотреть использование ресурсов?
```bash
# Память и CPU
docker stats --no-stream
# Диск
df -h
# Самые большие директории
du -sh /opt/* /mnt/* | sort -h | tail -10
# Топ процессов
top -bn1 | head -20
```
---
## 📞 ПОЛЕЗНЫЕ ССЫЛКИ
### Веб-интерфейсы
- **Wiki**: https://wiki.ai-impress.com
- **Мониторинг**: https://grafana.ai-impress.com
- **Uptime**: https://uptime.ai-impress.com
- **Docker UI**: https://portainer.ai-impress.com
- **Пароли**: https://vault.ai-impress.com
### Документация
- **Полные отчеты**: `/opt/infrastructure-docs/reports/`
- **Логи скриптов**: `/opt/05-backups/logs/`
- **Эта инструкция**: `/opt/infrastructure-docs/ADMIN_GUIDE.md`
---
## 🎯 ИТОГОВЫЙ ЧЕКЛИСТ АДМИНИСТРАТОРА
### Каждый день
- [ ] Проверить Slack алерты
- [ ] Проверить email admin@ai-impress.com
- [ ] Открыть https://grafana.ai-impress.com
- [ ] Проверить все сайты открываются
### Каждую неделю
- [ ] Посмотреть отчеты в Outline (коллекция Reports)
- [ ] Проверить размер бекапов: `du -sh /mnt/backups`
- [ ] Проверить место на диске: `df -h`
### Каждый месяц
- [ ] Проверить что бекапы можно восстановить
- [ ] Обновить критические приложения (если есть обновления)
- [ ] Почистить старые бекапы (> 60 дней)
- [ ] Проверить логи на ошибки
---
**Версия документа:** 4.0
**Последнее обновление:** 2025-11-03
**Контакты:** admin@ai-impress.com
**Slack:** #alerts
**Сгенерировано автоматически системой администрирования AI-Impress**