No description
Find a file
SamoilenkoVadym eb0f8f272b feat: автоматизация backup и экспорт всех credentials
Исправления и улучшения:

1. **backup-full-enhanced.sh v2.1.0 → v2.1.1:**
   - Исправлен баг парсинга в discover_databases()
   - Убраны логи из функции discovery (только результат)
   - Улучшен вывод обнаруженных баз данных
   - Добавлена проверка на пустые строки
   - Теперь корректно показывает список БД перед backup

2. **export-credentials.sh (NEW):**
   - Автоматический экспорт всех credentials из .env файлов
   - Markdown формат с документацией
   - Структурированные разделы по категориям:
     * Core Infrastructure (Traefik, PostgreSQL, Redis, Vault)
     * Security & Authentication (Authentik, Vaultwarden)
     * Business Applications (Odoo, Outline, Documenso, Wiki.js)
     * Core Services (N8N, Evolution API, Supabase, Postiz, Presenton)
     * Monitoring & Tools (Grafana, Prometheus, Portainer, Uptime Kuma)
   - Включает URLs всех сервисов
   - Database connection strings
   - SSH access information
   - Backup locations
   - Emergency contacts
   - Disaster recovery guide
   - Права 600/700 для безопасности

3. **Cron Configuration:**
   - Добавлен экспорт credentials в 2:30 AM (перед backup)
   - Full backup в 3:00 AM ежедневно (уже был)
   - Full backup в 2:00 AM по воскресеньям (уже был)
   - Health check каждые 30 минут (уже был)
   - Server reports в 6:00 AM (уже был)

4. **secrets-backup folder:**
   - Создана папка /opt/secrets-backup на сервере
   - Создана папка /Volumes/SSD/Aimpress_Cloud_Prod/secrets-backup на Mac
   - Готово к синхронизации через Syncthing
   - Исключено из Git (.gitignore)

Результаты:
-  Backup теперь корректно работает с auto-discovery
-  Все credentials экспортируются автоматически
-  Файлы готовы к синхронизации через Syncthing
-  Полная автоматизация через cron
-  Безопасность (права 600/700)

Следующие шаги:
1. Настроить Syncthing folder для secrets-backup
2. Server Device ID: 7WWT3Q3-IL2RSA2-XHO6JKN-LCL2XEL-NWFZCDJ-6XVWIZ7-NYJ6JKJ-C53YCAC
3. Добавить папку в Syncthing UI на обоих устройствах

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06 11:41:55 +00:00
.claude feat: add /mnt folder to Syncthing sync 2025-11-05 16:52:52 +00:00
home feat: add /mnt folder to Syncthing sync 2025-11-05 16:52:52 +00:00
opt feat: автоматизация backup и экспорт всех credentials 2025-11-06 11:41:55 +00:00
secrets-backup feat: добавлена папка для синхронизации секретов с Mac 2025-11-06 11:25:49 +00:00
.gitignore feat: fix Presenton Azure OpenAI integration and add project documentation 2025-11-06 09:19:27 +00:00
CLAUDE.md feat: fix Presenton Azure OpenAI integration and add project documentation 2025-11-06 09:19:27 +00:00
README.md feat: add /mnt folder to Syncthing sync 2025-11-05 16:52:52 +00:00
system-backup-README.md chore: initial infrastructure setup with Syncthing, Git and documentation 2025-11-05 16:41:12 +00:00
system-backup.sh chore: initial infrastructure setup with Syncthing, Git and documentation 2025-11-05 16:41:12 +00:00

OVHserver Infrastructure

Production infrastructure для AI-Impress с полной автоматизацией, мониторингом и системой бэкапов.

Сервер: ubuntu@51.89.231.46 GitHub: SamoilenkoVadym/OVHserver


Трёхуровневая система синхронизации

🔄 1. Syncthing (Реального времени)

Мгновенная двусторонняя синхронизация между Mac и сервером.

  • Режим: Send & Receive (bidirectional)
  • Папки: /opt, /data, /home/ubuntu, /mnt
  • Автозапуск: systemd (сервер) + brew services (Mac)
  • Скорость: 10-30 секунд

📦 2. GitHub (Версионный контроль)

Полная история изменений кода и конфигураций.

  • Репозиторий: git@github.com:SamoilenkoVadym/OVHserver.git
  • Автопуш: Через post-commit hook
  • Защита: pre-commit hook блокирует коммит секретов

💾 3. rsync (Системный бэкап)

Полная копия сервера для восстановления.

  • Назначение: Disaster recovery
  • Запуск: По требованию
  • Хранение: /Volumes/SSD/Aimpress_Cloud_Prod/system-backup/

Структура проекта

.
├── opt/                      # Основные проекты
│   ├── 00-infrastructure/    # Traefik, PostgreSQL, Redis, Vault, RabbitMQ
│   ├── 01-security/          # Authentik (SSO), Vaultwarden
│   ├── 02-core/              # n8n, Evolution API, Supabase
│   ├── 03-business/          # Odoo, Outline, Documenso, Wiki.js
│   ├── 04-tools/             # Portainer, Grafana, Monitoring, Uptime Kuma
│   ├── 05-backups/           # Бэкапы и скрипты (не в Git)
│   └── 06-webflow/           # Landing pages
├── data/                     # Данные приложений
├── home/                     # /home/ubuntu
├── mnt/                      # Смонтированные диски
│   ├── backups/              # Бэкапы системы (6.8GB)
│   └── psql-data/            # Данные PostgreSQL
└── .claude/                  # Документация для Claude Code
    ├── workflow.md           # Рабочий процесс
    └── project-structure.md  # Детальная структура

Подробная документация в .claude/project-structure.md


Технологический стек

Инфраструктура

  • Docker + Docker Compose - контейнеризация
  • Traefik - reverse proxy с автоматическим SSL
  • PostgreSQL - основная БД
  • Redis - кэш и очереди
  • RabbitMQ - message broker

Безопасность

  • HashiCorp Vault - управление секретами
  • Authentik - SSO (Single Sign-On)
  • Vaultwarden - менеджер паролей

Мониторинг

  • Prometheus + Grafana - метрики и дашборды
  • Loki - агрегация логов
  • Uptime Kuma - проверка доступности

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

  • Odoo - ERP система
  • n8n - workflow automation
  • Evolution API - WhatsApp Business API
  • Supabase - Backend-as-a-Service
  • Outline - корпоративная wiki
  • Documenso - электронная подпись

Быстрый старт

Проверка синхронизации

# Статус Syncthing на сервере
ssh ubuntu@51.89.231.46 "systemctl --user status syncthing"

# Статус на Mac
brew services list | grep syncthing

# Размер синхронизированных данных
du -sh /Volumes/SSD/Aimpress_Cloud_Prod/{opt,data,home}

Git операции

# Проверить статус
git status

# Посмотреть последние коммиты
git log --oneline -20

# Сделать коммит (push автоматический через hook)
git add .
git commit -m "feat: add new feature"

Доступ к сервисам

Все сервисы доступны через Traefik с автоматическим SSL:

  • Portainer: portainer.domain.com
  • Grafana: grafana.domain.com
  • Authentik: authentik.domain.com
  • Odoo: odoo.domain.com
  • n8n: n8n.domain.com

Работа с проектом через Claude Code

Рабочий процесс

  1. Пользователь даёт задачу Claude
  2. Claude работает с локальными файлами на Mac
  3. Syncthing автоматически синхронизирует изменения на сервер (10-30 сек)
  4. Claude делает git commit с понятным сообщением
  5. Git hook автоматически пушит в GitHub

Формат коммитов

<type>: <short description>

<detailed explanation if needed>

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

Co-Authored-By: Claude <noreply@anthropic.com>

Типы коммитов:

  • feat: - новая функция
  • fix: - исправление бага
  • refactor: - рефакторинг кода
  • docs: - документация
  • chore: - обслуживание (конфиги, зависимости)
  • perf: - улучшение производительности

Полная документация в .claude/workflow.md


Безопасность

Git Hooks

pre-commit:

  • Блокирует коммит файлов .env, .key, .pem
  • Предупреждает о потенциальных секретах в коде
  • Можно пропустить: git commit --no-verify

post-commit:

  • Автоматически пушит каждый коммит в GitHub
  • Работает с ветками main/master

.gitignore

Исключены из Git:

  • Зависимости: node_modules, __pycache__, venv
  • Логи: *.log, logs/
  • Секреты: .env, *.key, *.pem
  • Бэкапы: 05-backups/, *.sql.gz, *.tar.gz
  • Временные: .cache, *.tmp, .DS_Store

Мониторинг и поддержка

Проверка здоровья сервисов

# Docker контейнеры
ssh ubuntu@51.89.231.46 "docker ps"

# Логи контейнера
ssh ubuntu@51.89.231.46 "docker logs <container_name>"

# Disk usage
ssh ubuntu@51.89.231.46 "df -h"

Бэкапы

  • Автоматические: В /opt/05-backups/
  • Restic: Инкрементальные бэкапы
  • Скрипты: В /opt/05-backups/scripts/
  • Документация: /opt/05-backups/SCRIPTS-REGISTRY.md

Uptime Kuma

Мониторинг доступности всех сервисов 24/7 через веб-интерфейс.


Восстановление системы

Из rsync бэкапа

# Полное восстановление (осторожно!)
rsync -avz --progress /Volumes/SSD/Aimpress_Cloud_Prod/system-backup/ ubuntu@51.89.231.46:/

Из Git

# Откат к предыдущему коммиту
git log --oneline
git checkout <commit_hash> -- <file_path>
git commit -m "chore: rollback to <commit>"

Из Restic

# Посмотреть snapshots
restic snapshots

# Восстановить конкретный snapshot
restic restore <snapshot_id> --target /restore/path

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


Контакты и поддержка


Лицензия

Private repository - все права защищены.


Последнее обновление: 2025-11-05 Версия инфраструктуры: 1.0.0