Quartz 4 — это набор инструментов, который поможет вам опубликовать ваши заметки из Obsidian и не только в виде веб-сайта бесплатно
🔧Настройка публикаций через Quartz_v4:
Скачиваем на сервер суппозиторий репозиторий с quartz_v4
git clone https://github.com/jackyzha0/quartz
cd quartz
Редактируем quartz.config.ts под свои предпочтения, я задаю эти параметры:
pageTitle: "SelfOps"
locale: "ru-RU"
baseUrl: "SelfOps.ru"
analytics: {
provider: "umami", # добавляем аналитику umami
host: '<your-umami-host>', # только https!
websiteId: '<your-umami-website-id>'
},
Добавление аналитики Umami
Важный момент - чтобы в секции analytics добавить переменные
<your-umami-host>
и<your-umami-website-id>
их сначала нужно сгенерировать в вашем установленном экземпляре Umami
Важно
В секцию
host:
вставляйте доменное имя, которое работает поhttps
, если укажете адрес вашего umami в локальной сетиhttp://localhost:port
то сбор статистики будет поhttp
версии вашего сайта внутри локальной сети, до выхода за revers proxy, а это совсем нас не устраивает!
Так как автор проекта позаботился о включении в репозиторий Dockerfile, то можно собрать image и сразу запустить его:
sudo docker run --rm -itp 8080:8080 -p 3001:3001 -v ./content:/usr/src/app/content $(sudo docker build -q .)
Внимание
но лучше воспользоваться следующими вариантами.
Вариант 1
Создать docker-compose.yml в ~/quartz в котором будет сборка image:
services:
app:
build: . # Собирает образ из Dockerfile в текущей директории (аналог docker build -q .)
ports:
- "3706:8080"
- "3707:3001"
volumes: # прокидываем контент и favicon
- /home/user/SelfOps_content:/usr/src/app/content
- /media/devmon/raid1/AppData/icon.png:/usr/src/app/quartz/static/icon.png
restart: unless-stopped # Опционально: автоматический перезапуск
Выполнить sudo docker compose up -d
После этого наш сайт будет доступен в браузере по http://localhost:3706
Рекомендация
Не рекомендую использовать данный вариант, потому что долгая операция сборки образа будет происходить каждый раз при за пуске docker compose
Вариант 2 (мой рабочий вариант)
Создаем образ: sudo docker build -t quartz:latest .
если он еще не создан, если он создан, то пропускаем процесс создания
Посмотреть все Docker images в системе
Посмотреть создан ли наш образ можно командой
sudo docker images
Затем создаем docker-compose: nano docker-compose.yml
services:
app:
image: quartz:latest # Используем собранный ранее образ
ports:
- "3706:8080"
- "3707:3001"
volumes: # прокидываем контент и favicon
- /media/devmon/raid1/AppData/big-bear-obsidian/config/Obsidian Vault/SelfOps_content:/usr/src/app/content
- /media/devmon/raid1/AppData/icon.png:/usr/src/app/quartz/static/icon.png
restart: unless-stopped # Опционально: автоматический перезапуск
Выполнить sudo docker compose up -d
После этого наш сайт будет доступен в браузере по http://localhost:3706
автогенерация
Quartz_v4 автоматически генерирует контент при любых изменениях в дирректории, которую мы примонтировали
🔄 Синхронизация папки SelfOps_content
Если вы используете для синхрноизации хранилища Obsidian приложение SyncThing, то никакой сложности в этом нет, просто настраиваете синхронизацию вашей директории SelfOps_content в директорию content в контейнере Quartz
Если же вы используете другой сервис для синхронизации, например я использую сторонний плагин Self-hosted LiveSynk, то придётся заморочится с синхронизацией через Github Actions или Gitea actions, в моем случае Gitea actions, так как у меня развернут свой Gitea
Еще вариант использовать синхронизацию через n8n:
Так же можете использовать вариант с Вебхуком + Локальный веб-сервер, в какой-то степени это будет даже проще. А вообще можно придумать кучу вариантов синхронизации одной директории на нескольких устройств, все упирается только в вашу инфраструктуру и фантазию.
P.S. После нескольких дней мучений выбрал для себя возможно не элегантный, но действенный способ синхронизации Obsidian Vault: просто установил экземпляр Obsidian локально на home server Obsidian CasaOS и настроил на нем плагин Self-hosted LiveSynk