12 KiB
12 KiB
Миграция контента на Hugo
1. Понимание текущей архитектуры
1.1 Текущий флоу (Quartz)
Obsidian Vault → Quartz → Static Site → Nginx
Компоненты:
- Obsidian Vault: Исходные Markdown документы
- Quartz: Генератор статического сайта на Node.js
- Static Site: Собранные HTML/CSS/JS файлы
- Nginx: Веб-сервер для раздачи статики
1.2 Новый флоу (Hugo)
Obsidian Vault → Hugo → Static Site → Nginx (в Docker)
Компоненты:
- Obsidian Vault: Те же исходные Markdown документы
- Hugo: Генератор статического сайта на Go
- Static Site: Оптимизированные HTML/CSS/JS файлы
- Nginx: Веб-сервер в Docker контейнере
2. Сохранение структуры каталогов
2.1 Принцип "не трогать структуру"
Ключевое правило: Структура каталогов в Git остается неизменной, Hugo адаптируется под неё.
Преимущества:
- Сохранение удобной навигации в Obsidian
- Отсутствие необходимости переименовывать файлы
- Сохранение существующих ссылок
- Простота миграции
2.2 Адаптация Hugo под существующую структуру
Текущая структура (остается неизменной):
Second Mind/
├── index.md
├── Идеи/
│ ├── Obsidian телеграм бот/
│ │ ├── MVP Telegram бота для Obsidian.md
│ │ └── Telegram бот для Obsidian.md
│ └── Оптимизация ресурсов VPS/
│ ├── Единое приложение Hugo + Webhook.md
│ └── Миграция контента на Hugo.md
├── Мой сервер/
│ ├── Authelia Authentication/
│ ├── Git Service/
│ ├── Second Mind Setup/
│ └── Traefik Reverse Proxy/
└── Документация сервера aepif.ru.md
Hugo конфигурация для работы с существующей структурой:
- Настройки для работы с существующей структурой
- Поддержка Obsidian-специфичных элементов
- Сохранение кириллических имен
2.3 Обработка имен файлов и каталогов
Стратегия Hugo:
- Использование оригинальных имен файлов и каталогов
- Автоматическое создание slug из имен файлов
- Сохранение кириллических имен
- Обработка пробелов и специальных символов
URL структура:
/идеи/obsidian-телеграм-бот/mvp-telegram-бота-для-obsidian//мой-сервер/authelia-authentication/- Сохранение читаемости URL
3. Граф записей (Graph View)
3.1 Аналоги Obsidian/Quartz графа
Доступные решения для Hugo:
Встроенные возможности Hugo:
- Автоматическое создание графа связей между страницами
- Визуализация внутренних ссылок
- Отображение связанных страниц
- Интерактивная карта знаний
Сторонние библиотеки:
- D3.js для интерактивной визуализации
- Vis.js для сетевых графов
- Cytoscape.js для сложных графов
- Sigma.js для больших сетей
3.2 Функциональность графа
Визуализация связей:
- Отображение всех внутренних ссылок между страницами
- Размер узлов в зависимости от количества связей
- Цветовая кодировка по категориям/тегам
- Интерактивная навигация по графу
Интерактивность:
- Клик по узлу для перехода к странице
- Зум и панорамирование графа
- Фильтрация по тегам или категориям
- Поиск по названиям страниц
Аналитика:
- Центральные страницы (много связей)
- Изолированные страницы (мало связей)
- Кластеры связанных тем
- Пути между страницами
3.3 Интеграция с существующей структурой
Автоматическое создание графа:
- Анализ всех Markdown файлов
- Извлечение внутренних ссылок
- Создание JSON данных для графа
- Генерация интерактивной визуализации
Сохранение Obsidian-стиля:
- Похожий интерфейс на Obsidian Graph View
- Те же принципы навигации
- Совместимость с существующими ссылками
- Поддержка кириллических названий
4. Миграция контента
4.1 Основные изменения при миграции
Frontmatter преобразования:
- Сохранение существующих полей
- Добавление Hugo-специфичных полей (title, date, draft)
- Автоматическое извлечение заголовка из имени файла
- Преобразование дат в стандартный формат
Внутренние ссылки:
[[wiki links]]→{{< ref "path" >}}- Сохранение относительных путей
- Обработка Obsidian-специфичных ссылок
- Автоматическое обновление ссылок при изменении структуры
Изображения и вложения:
- Сохранение в той же структуре каталогов
- Обновление путей в контенте
- Оптимизация размера файлов без изменения структуры
4.2 Автоматизация миграции
Скрипт миграции:
- Анализ существующей структуры
- Автоматическое создание Hugo конфигурации
- Преобразование frontmatter
- Обновление внутренних ссылок
- Сохранение структуры каталогов
5. Docker развертывание
5.1 Архитектура контейнеров
graph TB
A[Git Repository] --> B[Hugo + Webhook Container]
B --> C[Static Files Volume]
C --> D[Nginx Container]
D --> E[Internet]
subgraph "Docker Host"
B
C
D
end
5.2 Структура Docker
Docker Compose:
- Hugo + Webhook контейнер с прямым монтированием существующей структуры
- Nginx контейнер для раздачи статики
- Общие volumes для статических файлов
- Настройки для сохранения структуры
5.3 Преимущества сохранения структуры
Для пользователя:
- Знакомая навигация в Obsidian
- Отсутствие необходимости переучиваться
- Сохранение всех существующих ссылок
- Простота поиска файлов
Для системы:
- Минимальные изменения в Git репозитории
- Простота отката к предыдущей версии
- Сохранение истории изменений
- Совместимость с существующими инструментами
6. Интеграция с Obsidian
6.1 Рабочий флоу
Разработка (без изменений):
- Редактирование в Obsidian
- Коммит в Git репозиторий
- Webhook автоматически запускает сборку
- Hugo генерирует новый сайт
- Nginx раздает обновленный контент
Синхронизация:
- Obsidian Vault → Git Repository (без изменений)
- Git Repository → Hugo Content (прямое использование)
- Hugo Content → Static Site (с сохранением структуры)
- Static Site → Nginx
6.2 Автоматизация
Git Hooks (без изменений):
- Автоматический коммит при изменениях в Obsidian
- Push в удаленный репозиторий
- Webhook уведомление
Webhook обработка:
- Валидация изменений
- Клонирование/обновление репозитория
- Сборка Hugo с сохранением структуры
- Перезагрузка Nginx
7. Конфигурация Hugo
7.1 Базовая конфигурация
Основные параметры:
- Настройки для сохранения структуры
- Поддержка оригинальных имен файлов
- Включение поиска и навигации
- Настройки для графа записей
7.2 Оптимизации для VPS
Производительность:
- Минификация всех ресурсов
- Оптимизация изображений
- Gzip сжатие
- Кэширование статических файлов
Ресурсы:
- Ограничение использования памяти
- Оптимизация времени сборки
- Эффективное использование диска
8. Преимущества миграции
8.1 Производительность
- Время сборки: С 30-60 секунд до 5-10 секунд
- Потребление памяти: С 512MB до 128MB
- CPU нагрузка: Снижение на 70-80%
- Время загрузки: Улучшение на 40-60%
8.2 Операционные
- Простота развертывания: Docker Compose
- Изоляция: Контейнеры
- Масштабируемость: Легкое горизонтальное масштабирование
- Мониторинг: Встроенные метрики
8.3 Интеграция
- Сохранение рабочего флоу: Obsidian → Git → Hugo
- Сохранение структуры: Без изменений в организации файлов
- Граф записей: Интерактивная визуализация связей
- Автоматизация: Webhook → Сборка → Деплой
- Консистентность: Один источник истины
- Простота отладки: Единый лог и контекст