Files
second-mind-aep/Мой сервер/Second Mind Setup/Обзор системы.md
2025-08-04 14:26:29 +04:00

107 lines
5.4 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.

## Описание
Second Mind - система автоматической публикации заметок Obsidian через Quartz с использованием Git-based workflow. Позволяет превращать локальные заметки в красивый статический сайт автоматически при каждом commit'е.
## Архитектура системы
```mermaid
graph TB
A[External Gitea Repository] --> B[Webhook Service]
B --> C[Quartz Builder]
C --> D[Static Files]
D --> E[Nginx Server]
F[Traefik Proxy] --> E
F --> B
subgraph "Second Mind Container"
B
C
end
subgraph "External Services"
A
F
end
```
## Основные компоненты
### External Git-сервер (Gitea)
- **Назначение**: Хранение и версионирование заметок
- **Домен**: `git.aepif.ru`
- **Особенности**: Отдельный сервис, SSH доступ на порту 2222, webhook'и при push
- **Репозиторий**: `http://gitea:3000/admin/second-mind-aep.git`
### Webhook Service
- **Назначение**: Автоматическая пересборка при изменениях
- **Домен**: `webhook.aepif.ru`
- **Технология**: Node.js + Express
- **Функции**:
- Получение webhook'ов от Gitea
- Обновление локальной копии репозитория
- Запуск сборки Quartz
- Копирование результата для Nginx
### Quartz Builder
- **Назначение**: Генерация статического сайта из Markdown
- **Репозиторий**: Кастомный форк `ssh://git@git.aepif.ru:2222/aep/quartz.git`
- **Особенности**: Поддержка Obsidian-flavored Markdown, граф связей, поиск
### Веб-сервер (Nginx)
- **Назначение**: Раздача статического контента
- **Домен**: `notes.aepif.ru`
- **Особенности**: Кэширование, сжатие, защита через Authelia
### Reverse Proxy (Traefik)
- **Назначение**: Маршрутизация трафика и SSL
- **Функции**: Автоматические SSL сертификаты, балансировка, middleware
## Workflow использования
1. **Создание заметок** в Obsidian локально
2. **Commit и push** изменений в Gitea репозиторий
3. **Автоматический webhook** от Gitea запускает пересборку
4. **Webhook сервис** обновляет локальную копию и запускает Quartz
5. **Quartz генерирует** обновленный статический сайт
6. **Nginx раздает** новый контент посетителям
## Домены и доступ
| Сервис | Домен | Описание | Защита |
|--------|-------|----------|---------|
| Git-сервер | `git.aepif.ru` | Интерфейс Gitea | Авторизация |
| Статический сайт | `notes.aepif.ru` | Опубликованные заметки | Authelia |
| Webhook | `webhook.aepif.ru` | API для автоматизации | Секретный токен |
## Структура файлов
```
/DOCKER/second-mind/
├── docker-compose.yml # Основная конфигурация (только Nginx + Webhook)
├── Dockerfile # Кастомный образ для webhook сервиса
├── nginx.conf # Конфигурация Nginx для статических файлов
├── webhook-server/ # Код webhook сервиса
│ ├── server.js # Node.js сервер для обработки webhooks
│ └── package.json # Зависимости Node.js
├── obsidian_repo/ # Локальная копия Git-репозитория
└── quartz_build/ # Собранные статические файлы для Nginx
```
**Примечание**: Gitea и PostgreSQL развернуты отдельно в `/DOCKER/git/`
## Преимущества решения
- **Автоматизация**: Публикация происходит автоматически при push
- **Версионирование**: Полная история изменений через Git
- **Безопасность**: Многоуровневая защита доступа
- **Производительность**: Статический сайт быстро загружается
- **Кастомизация**: Возможность настройки внешнего вида через Quartz
- **Поиск**: Полнотекстовый поиск по заметкам
- **Связи**: Визуализация связей между заметками
## Следующие шаги
Для развертывания системы изучите:
- [[Мой сервер/Second Mind Setup/Конфигурации]] - настройки всех сервисов
- [[Мой сервер/Second Mind Setup/Развертывание]] - пошаговая инструкция установки
- [[Мой сервер/Second Mind Setup/Администрирование]] - обслуживание и мониторинг