Як я будую Obsidian Publishing CMS для цього блогу
Цей самий сайт — частина більшого експерименту: Obsidian як CMS, Astro як шар представлення, власний VPS замість GitHub Pages. Нотатка про архітектурні рішення й перші кроки.
Gastrolog — не просто блог на готовій темі. Це перший видимий шматок системи, яку я будую окремо: Obsidian-плагін, який публікує нотатки напряму з vault на власний VPS, без GitHub у ролі production-хостингу.
Три репозиторії, одна мета
Систему розділено на три частини, кожна відповідає за своє:
personal-blog— цей сайт, форк теми Monograph на Astro.publisher-api— Fastify-сервіс на VPS, який приймає Publication Package від плагіна, валідує і будує сайт.obsidian-publisher— сам плагін: читає нотатку, рахує SHA-256 хеші контенту й метаданих, показує статус (Draft / Published / Modified).
Перевірка API вже працює
Перш ніж будувати реальний publish-пайплайн, я підняв мінімальний API з двома маршрутами:
/health
curl https://publish.gastrolog.club/health
# {"ok":true,"siteId":"personal"}/check
curl -X POST https://publish.gastrolog.club/check \
-H "Authorization: Bearer $TOKEN" \
-d '{"slug":"domashniy-burger-baza","type":"recipe"}'Чому VPS, а не GitHub Pages
GitHub Pages простіший, але я свідомо обрав VPS — той самий сервер, на якому вже крутяться інші мої проєкти (EvoHub, ОБЩЕПІТ). Це дає atomic deploy через releases/current symlink і повний контроль над nginx, без прив’язки до чужої інфраструктури.