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

5.4 KiB
Raw Blame History

Описание

Second Mind - система автоматической публикации заметок Obsidian через Quartz с использованием Git-based workflow. Позволяет превращать локальные заметки в красивый статический сайт автоматически при каждом commit'е.

Архитектура системы

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
  • Поиск: Полнотекстовый поиск по заметкам
  • Связи: Визуализация связей между заметками

Следующие шаги

Для развертывания системы изучите: