Эта запись написана в Obsidian и опубликована на боевом сервере — значит, вся цепочка работает.
Что настроено
Инфраструктура описана в репозитории блога, в папке ansible, и раскатывается плейбуком provision.yml:
- nginx раздаёт статику из
/var/www/blog; - сертификат Let’s Encrypt выпущен по webroot-челленджу;
- HTTP редиректит на HTTPS, включён HSTS;
- картинки отдаются с кэшем на 30 дней.
Продление сертификата
Пакет certbot ставит systemd-таймер certbot.timer, который дважды в сутки пробует продлить сертификат. Хук /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh перезагружает nginx после обновления. Плейбук проверяет всё это через certbot renew --dry-run.
Как публиковать
Пишем markdown в Obsidian, затем:
npm run deploy
Скрипт собирает сайт локально (контент читается прямо из vault) и заливает dist/ по rsync.
Подробности об устройстве блога — в заметке Как устроен этот блог.