98 lines
4.9 KiB
Markdown
98 lines
4.9 KiB
Markdown
## Описание
|
||
|
||
Second Mind - система автоматической публикации заметок Obsidian через Quartz с использованием Git-based workflow. Позволяет превращать локальные заметки в красивый статический сайт автоматически при каждом commit'е.
|
||
|
||
## Архитектура системы
|
||
|
||
```mermaid
|
||
graph TB
|
||
A[Gitea Repository] --> B[Webhook Service]
|
||
B --> C[Quartz Builder]
|
||
C --> D[Static Files]
|
||
D --> E[Nginx Server]
|
||
F[PostgreSQL] --> A
|
||
G[Traefik Proxy] --> A
|
||
G --> E
|
||
G --> B
|
||
```
|
||
|
||
## Основные компоненты
|
||
|
||
### Git-сервер (Gitea)
|
||
- **Назначение**: Хранение и версионирование заметок
|
||
- **Домен**: `git.aepif.ru`
|
||
- **База данных**: PostgreSQL
|
||
- **Особенности**: SSH доступ на порту 2222, webhook'и при push
|
||
|
||
### 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 # Основная конфигурация
|
||
├── Dockerfile # Образ для webhook сервиса
|
||
├── .env # Переменные окружения
|
||
├── nginx.conf # Конфигурация Nginx
|
||
├── webhook-server/ # Код webhook сервиса
|
||
│ ├── server.js
|
||
│ └── package.json
|
||
├── obsidian_repo/ # Локальная копия репозитория
|
||
└── quartz_build/ # Собранный статический сайт
|
||
```
|
||
|
||
## Преимущества решения
|
||
|
||
- **Автоматизация**: Публикация происходит автоматически при push
|
||
- **Версионирование**: Полная история изменений через Git
|
||
- **Безопасность**: Многоуровневая защита доступа
|
||
- **Производительность**: Статический сайт быстро загружается
|
||
- **Кастомизация**: Возможность настройки внешнего вида через Quartz
|
||
- **Поиск**: Полнотекстовый поиск по заметкам
|
||
- **Связи**: Визуализация связей между заметками
|
||
|
||
## Следующие шаги
|
||
|
||
Для развертывания системы изучите:
|
||
- [[Конфигурации]] - настройки всех сервисов
|
||
- [[Развертывание]] - пошаговая инструкция установки
|
||
- [[Администрирование]] - обслуживание и мониторинг |