4.9 KiB
4.9 KiB
Описание
Second Mind - система автоматической публикации заметок Obsidian через Quartz с использованием Git-based workflow. Позволяет превращать локальные заметки в красивый статический сайт автоматически при каждом commit'е.
Архитектура системы
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 использования
- Создание заметок в Obsidian локально
- Commit и push изменений в Gitea репозиторий
- Автоматический webhook от Gitea запускает пересборку
- Webhook сервис обновляет локальную копию и запускает Quartz
- Quartz генерирует обновленный статический сайт
- 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
- Поиск: Полнотекстовый поиск по заметкам
- Связи: Визуализация связей между заметками
Следующие шаги
Для развертывания системы изучите:
- Мой сервер/Second Mind Setup/Конфигурации - настройки всех сервисов
- Развертывание - пошаговая инструкция установки
- Администрирование - обслуживание и мониторинг