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-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