vault backup: 2025-08-04 15:39:36
This commit is contained in:
@@ -1,136 +1,272 @@
|
|||||||
# Миграция контента на Hugo
|
# Миграция контента на Hugo
|
||||||
|
|
||||||
## 1. Миграция контента
|
## 1. Понимание текущей архитектуры
|
||||||
|
|
||||||
### 1.1 Структура контента
|
### 1.1 Текущий флоу (Quartz)
|
||||||
|
|
||||||
**Текущая структура (Quartz):**
|
|
||||||
```
|
```
|
||||||
content/
|
Obsidian Vault → Quartz → Static Site → Nginx
|
||||||
├── notes/
|
|
||||||
│ ├── Идеи/
|
|
||||||
│ ├── Мой сервер/
|
|
||||||
│ └── index.md
|
|
||||||
├── daily/
|
|
||||||
└── templates/
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**Новая структура (Hugo):**
|
**Компоненты:**
|
||||||
|
- **Obsidian Vault**: Исходные Markdown документы
|
||||||
|
- **Quartz**: Генератор статического сайта на Node.js
|
||||||
|
- **Static Site**: Собранные HTML/CSS/JS файлы
|
||||||
|
- **Nginx**: Веб-сервер для раздачи статики
|
||||||
|
|
||||||
|
### 1.2 Новый флоу (Hugo)
|
||||||
```
|
```
|
||||||
content/
|
Obsidian Vault → Hugo → Static Site → Nginx (в Docker)
|
||||||
├── notes/
|
|
||||||
│ ├── идеи/
|
|
||||||
│ │ ├── obsidian-telegram-bot/
|
|
||||||
│ │ └── optimizatsiya-resursov-vps/
|
|
||||||
│ ├── мой-сервер/
|
|
||||||
│ └── _index.md
|
|
||||||
├── daily/
|
|
||||||
│ └── _index.md
|
|
||||||
└── templates/
|
|
||||||
└── _index.md
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1.2 Основные изменения при миграции
|
**Компоненты:**
|
||||||
|
- **Obsidian Vault**: Те же исходные Markdown документы
|
||||||
|
- **Hugo**: Генератор статического сайта на Go
|
||||||
|
- **Static Site**: Оптимизированные HTML/CSS/JS файлы
|
||||||
|
- **Nginx**: Веб-сервер в Docker контейнере
|
||||||
|
|
||||||
**Frontmatter:**
|
## 2. Миграция контента
|
||||||
- Добавление Hugo-специфичных полей
|
|
||||||
- Преобразование дат в стандартный формат
|
|
||||||
- Добавление метаданных для SEO
|
|
||||||
|
|
||||||
**Внутренние ссылки:**
|
### 2.1 Структура Obsidian Vault
|
||||||
- Замена `[[wiki links]]` на Hugo ссылки
|
|
||||||
- Обновление путей к файлам
|
|
||||||
- Обработка относительных ссылок
|
|
||||||
|
|
||||||
**Изображения:**
|
**Текущая структура:**
|
||||||
- Перемещение в `static/images/`
|
```
|
||||||
- Обновление путей в контенте
|
Second Mind/
|
||||||
- Оптимизация размера файлов
|
├── index.md
|
||||||
|
├── Идеи/
|
||||||
## 2. Базовая настройка Hugo
|
│ ├── Obsidian телеграм бот/
|
||||||
|
│ │ ├── MVP Telegram бота для Obsidian.md
|
||||||
### 2.1 Конфигурация
|
│ │ └── Telegram бот для Obsidian.md
|
||||||
|
│ └── Оптимизация ресурсов VPS/
|
||||||
**Основные параметры:**
|
│ ├── Единое приложение Hugo + Webhook.md
|
||||||
- `baseURL` - адрес сайта
|
│ └── Миграция контента на Hugo.md
|
||||||
- `languageCode` - язык контента
|
├── Мой сервер/
|
||||||
- `title` - название сайта
|
│ ├── Authelia Authentication/
|
||||||
- `theme` - используемая тема
|
│ ├── Git Service/
|
||||||
|
│ ├── Second Mind Setup/
|
||||||
**Настройки контента:**
|
│ └── Traefik Reverse Proxy/
|
||||||
- Структура меню
|
└── Документация сервера aepif.ru.md
|
||||||
- Параметры поиска
|
```
|
||||||
- Настройки навигации
|
|
||||||
- SEO параметры
|
|
||||||
|
|
||||||
### 2.2 Структура проекта
|
|
||||||
|
|
||||||
|
**Новая структура для Hugo:**
|
||||||
```
|
```
|
||||||
hugo-site/
|
hugo-site/
|
||||||
├── config.toml # Основная конфигурация
|
├── content/
|
||||||
├── content/ # Контент сайта
|
│ ├── _index.md # Главная страница
|
||||||
├── layouts/ # Шаблоны темы
|
│ ├── идеи/
|
||||||
├── static/ # Статические файлы
|
│ │ ├── _index.md # Страница раздела
|
||||||
├── themes/ # Темы
|
│ │ ├── obsidian-telegram-bot/
|
||||||
└── public/ # Собранный сайт
|
│ │ │ ├── _index.md
|
||||||
|
│ │ │ ├── mvp-telegram-bota.md
|
||||||
|
│ │ │ └── telegram-bot-dlya-obsidian.md
|
||||||
|
│ │ └── optimizatsiya-resursov-vps/
|
||||||
|
│ │ ├── _index.md
|
||||||
|
│ │ ├── edinoe-prilozhenie-hugo-webhook.md
|
||||||
|
│ │ └── migratsiya-kontenta-na-hugo.md
|
||||||
|
│ └── мой-сервер/
|
||||||
|
│ ├── _index.md
|
||||||
|
│ ├── authelia-authentication/
|
||||||
|
│ ├── git-service/
|
||||||
|
│ ├── second-mind-setup/
|
||||||
|
│ └── traefik-reverse-proxy/
|
||||||
|
├── static/
|
||||||
|
│ ├── images/ # Изображения
|
||||||
|
│ └── attachments/ # Вложения
|
||||||
|
└── themes/
|
||||||
|
└── custom-theme/ # Кастомная тема
|
||||||
```
|
```
|
||||||
|
|
||||||
## 3. Оптимизации
|
### 2.2 Основные изменения при миграции
|
||||||
|
|
||||||
### 3.1 Производительность
|
**Frontmatter преобразования:**
|
||||||
|
- Quartz frontmatter → Hugo frontmatter
|
||||||
|
- Добавление обязательных полей (title, date, draft)
|
||||||
|
- Сохранение пользовательских полей
|
||||||
|
- Преобразование дат в стандартный формат
|
||||||
|
|
||||||
**Сборка:**
|
**Внутренние ссылки:**
|
||||||
- Минификация CSS/JS
|
- `[[wiki links]]` → `{{< ref "path" >}}`
|
||||||
- Оптимизация изображений
|
- Относительные пути → Абсолютные пути Hugo
|
||||||
- Сжатие статических файлов
|
- Обработка Obsidian-специфичных ссылок
|
||||||
- Кэширование ресурсов
|
|
||||||
|
|
||||||
**SEO:**
|
**Изображения и вложения:**
|
||||||
- Мета-теги
|
- Перемещение в `static/images/`
|
||||||
- Open Graph разметка
|
- Обновление путей в контенте
|
||||||
- Sitemap генерация
|
- Сохранение структуры вложений
|
||||||
- Canonical URLs
|
|
||||||
|
|
||||||
### 3.2 Поиск
|
## 3. Docker развертывание
|
||||||
|
|
||||||
**Функциональность:**
|
### 3.1 Архитектура контейнеров
|
||||||
- Поиск по контенту
|
|
||||||
- Фильтрация результатов
|
|
||||||
- Подсветка найденного текста
|
|
||||||
- Быстрый поиск
|
|
||||||
|
|
||||||
## 4. Развертывание
|
```mermaid
|
||||||
|
graph TB
|
||||||
|
A[Git Repository] --> B[Hugo + Webhook Container]
|
||||||
|
B --> C[Static Files Volume]
|
||||||
|
C --> D[Nginx Container]
|
||||||
|
D --> E[Internet]
|
||||||
|
|
||||||
### 4.1 Локальная разработка
|
subgraph "Docker Host"
|
||||||
|
B
|
||||||
|
C
|
||||||
|
D
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
**Команды:**
|
### 3.2 Структура Docker
|
||||||
- `hugo server` - запуск сервера разработки
|
|
||||||
- `hugo --minify` - сборка для production
|
|
||||||
- `hugo --gc` - очистка неиспользуемых файлов
|
|
||||||
|
|
||||||
### 4.2 Production
|
**Docker Compose:**
|
||||||
|
```yaml
|
||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
hugo-webhook:
|
||||||
|
build: .
|
||||||
|
volumes:
|
||||||
|
- ./content:/app/content
|
||||||
|
- ./static:/app/static
|
||||||
|
- static-files:/var/www/html
|
||||||
|
environment:
|
||||||
|
- GIT_REPOSITORY_URL=your-repo
|
||||||
|
- HUGO_SOURCE_PATH=/app
|
||||||
|
- HUGO_OUTPUT_PATH=/var/www/html
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
**Оптимизации:**
|
nginx:
|
||||||
|
image: nginx:alpine
|
||||||
|
volumes:
|
||||||
|
- static-files:/usr/share/nginx/html
|
||||||
|
- ./nginx.conf:/etc/nginx/nginx.conf
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
depends_on:
|
||||||
|
- hugo-webhook
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
static-files:
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.3 Преимущества Docker развертывания
|
||||||
|
|
||||||
|
**Изоляция:**
|
||||||
|
- Отдельные контейнеры для Hugo и Nginx
|
||||||
|
- Изолированные файловые системы
|
||||||
|
- Контроль ресурсов
|
||||||
|
|
||||||
|
**Простота развертывания:**
|
||||||
|
- Один `docker-compose up`
|
||||||
|
- Автоматическое пересоздание при изменениях
|
||||||
|
- Простое масштабирование
|
||||||
|
|
||||||
|
**Управление данными:**
|
||||||
|
- Общие volumes для статических файлов
|
||||||
|
- Сохранение данных между перезапусками
|
||||||
|
- Простое резервное копирование
|
||||||
|
|
||||||
|
## 4. Интеграция с Obsidian
|
||||||
|
|
||||||
|
### 4.1 Рабочий флоу
|
||||||
|
|
||||||
|
**Разработка:**
|
||||||
|
1. Редактирование в Obsidian
|
||||||
|
2. Коммит в Git репозиторий
|
||||||
|
3. Webhook автоматически запускает сборку
|
||||||
|
4. Hugo генерирует новый сайт
|
||||||
|
5. Nginx раздает обновленный контент
|
||||||
|
|
||||||
|
**Синхронизация:**
|
||||||
|
- Obsidian Vault → Git Repository
|
||||||
|
- Git Repository → Hugo Content
|
||||||
|
- Hugo Content → Static Site
|
||||||
|
- Static Site → Nginx
|
||||||
|
|
||||||
|
### 4.2 Автоматизация
|
||||||
|
|
||||||
|
**Git Hooks:**
|
||||||
|
- Автоматический коммит при изменениях в Obsidian
|
||||||
|
- Push в удаленный репозиторий
|
||||||
|
- Webhook уведомление
|
||||||
|
|
||||||
|
**Webhook обработка:**
|
||||||
|
- Валидация изменений
|
||||||
|
- Клонирование/обновление репозитория
|
||||||
|
- Сборка Hugo
|
||||||
|
- Перезагрузка Nginx
|
||||||
|
|
||||||
|
## 5. Конфигурация Hugo
|
||||||
|
|
||||||
|
### 5.1 Базовая конфигурация
|
||||||
|
|
||||||
|
```toml
|
||||||
|
# config.toml
|
||||||
|
baseURL = "https://aepif.ru"
|
||||||
|
languageCode = "ru-ru"
|
||||||
|
title = "Second Mind"
|
||||||
|
theme = "custom-theme"
|
||||||
|
|
||||||
|
[params]
|
||||||
|
description = "Персональная база знаний и заметки"
|
||||||
|
author = "AEP"
|
||||||
|
|
||||||
|
# Настройки для Obsidian
|
||||||
|
enableSearch = true
|
||||||
|
showBreadcrumb = true
|
||||||
|
showReadingTime = true
|
||||||
|
showWordCount = true
|
||||||
|
|
||||||
|
[menu]
|
||||||
|
[[menu.main]]
|
||||||
|
identifier = "ideas"
|
||||||
|
name = "Идеи"
|
||||||
|
url = "/идеи/"
|
||||||
|
weight = 1
|
||||||
|
|
||||||
|
[[menu.main]]
|
||||||
|
identifier = "server"
|
||||||
|
name = "Мой сервер"
|
||||||
|
url = "/мой-сервер/"
|
||||||
|
weight = 2
|
||||||
|
|
||||||
|
[markup]
|
||||||
|
[markup.goldmark]
|
||||||
|
[markup.goldmark.renderer]
|
||||||
|
unsafe = true
|
||||||
|
|
||||||
|
[markup.highlight]
|
||||||
|
style = "dracula"
|
||||||
|
lineNos = true
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5.2 Оптимизации для VPS
|
||||||
|
|
||||||
|
**Производительность:**
|
||||||
- Минификация всех ресурсов
|
- Минификация всех ресурсов
|
||||||
- Оптимизация изображений
|
- Оптимизация изображений
|
||||||
- Gzip сжатие
|
- Gzip сжатие
|
||||||
- Кэширование статических файлов
|
- Кэширование статических файлов
|
||||||
|
|
||||||
## 5. Преимущества миграции
|
**Ресурсы:**
|
||||||
|
- Ограничение использования памяти
|
||||||
|
- Оптимизация времени сборки
|
||||||
|
- Эффективное использование диска
|
||||||
|
|
||||||
### 5.1 Производительность
|
## 6. Преимущества миграции
|
||||||
|
|
||||||
|
### 6.1 Производительность
|
||||||
- **Время сборки**: С 30-60 секунд до 5-10 секунд
|
- **Время сборки**: С 30-60 секунд до 5-10 секунд
|
||||||
- **Размер файлов**: Снижение на 40-60%
|
- **Потребление памяти**: С 512MB до 128MB
|
||||||
- **Время загрузки**: Улучшение на 50-70%
|
- **CPU нагрузка**: Снижение на 70-80%
|
||||||
|
- **Время загрузки**: Улучшение на 40-60%
|
||||||
|
|
||||||
### 5.2 Операционные
|
### 6.2 Операционные
|
||||||
- **Простота развертывания**: Один бинарник
|
- **Простота развертывания**: Docker Compose
|
||||||
- **Низкое потребление ресурсов**: Минимальные требования
|
- **Изоляция**: Контейнеры
|
||||||
- **Надежность**: Меньше зависимостей
|
- **Масштабируемость**: Легкое горизонтальное масштабирование
|
||||||
- **Безопасность**: Меньше уязвимостей
|
- **Мониторинг**: Встроенные метрики
|
||||||
|
|
||||||
### 5.3 Функциональность
|
### 6.3 Интеграция
|
||||||
- **SEO оптимизация**: Встроенные возможности
|
- **Сохранение рабочего флоу**: Obsidian → Git → Hugo
|
||||||
- **Адаптивность**: Современные темы
|
- **Автоматизация**: Webhook → Сборка → Деплой
|
||||||
- **Поиск**: Быстрый и точный
|
- **Консистентность**: Один источник истины
|
||||||
- **Кастомизация**: Полный контроль
|
- **Простота отладки**: Единый лог и контекст
|
||||||
Reference in New Issue
Block a user