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>
602 lines
19 KiB
Markdown
602 lines
19 KiB
Markdown
# 🎯 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**
|