Основательный и бесповоротный переезд

Edit...
blog
Illustrated by Igan Pol

Привет, %username%! Думаю многие заметили, что меня тут давненько не было. Всякое разное за это время произошло и в числе прочего этот переезд, о котором будет дальше…

🔄 Обновлено 2026-05-15: историю переезда оставляю как есть. В конце добавил короткий блок «Что изменилось с 2019-го» — про переход на PaperMod, текущий submodule-сетап (и что в 2026-м осмысленно смотреть в сторону Hugo Modules) и деплой через GitHub Actions с rsync под капотом.

Причина#

Причина довольно таки простая: мне перестал нравиться стандартный редактор Wordpress, который они благополучно выкатили в последних версиях. Собственно по причине того, что я не сдружился с новым редактором и не было тут постов. Все банально и просто.

Можно было бы изучить его и все вот это вот, но мне тупо леень разибраться в новой технологии для написания постов в собственный бложик. Поэтому и было принято решение о перезде.

Вариант не обновляться я не рассматривал ибо Wordpress сам по себе довольно глючен и дыряв. Поэтому я ушел в глубокие посики себя и смысла жизни вообще.

Нашел, попробовал, пошел искать#

Собственно во время поисков были рассмотренны самые разные варианты того, куда я могу перенести свой блог. В числе прочих были рассмотрены следующие варианты:

  1. Свой движок на PHP – Сосбвенно почему не взялся за такое развитие событий думаю и так понятно: таких костылей вагон и маленькая тележка на просторах тырнета. Эта идея была довольно быстро выкинута из головы;
  2. Свой блог на Flask/Django – Попробовал и то и другое. Слишком много телодвижений для достижения цели, а я писец какой ленивый;
  3. Любой другой движок из популярны – Не особо искал, но из найденого как-то быстро все приелось и так же не понравилось;
  4. Ghost – Попробовал и скажу, что мне понравилось почти все. Были некоторые моменты, которые меня мягко говоря не воодушивили: Node.js, ограниченность бесплатной версии и в целом неткорые мелочи, которые в принципе можно было опустить и не обращать внимания;
  5. Hugo – Нашел и мне понравилось сразу и все!

Сформировались мои хотелки#

То что я искал должно было отвечать сразу целой пачке требований, которые я выставлял перед новым “движком” для своего бложика:

  1. Я хочу писать посты в Markdown;
  2. Я хочу писать их прямо в консоли в любимом vim или VSCode;
  3. Я хочу очень легко и просто закидывать свои посты на свой сайт;
  4. Мне нужна автоматизация и простота в управлении;

Начал разбираться с Hugo#

Понравилось то, что я просто пишу свой пост и запускаю генерацию статических страниц. Сам смысл статических страниц мне очень понравился. Никаких движков и прочего, а как известно чем проще, тем лучше: в простых вещах нечему ломаться. Сложно взломать обычный HTML.

Написание нового поста сводится к нескольким простым действиям:

  • Создать шаблон поста командой:
hugo new post/2019-07-20_23-00.md
  • Далее открыть в любимом редакторе созанный шаблон поста:
code ./content/post/2019-07-20_23-00.md
  • Написать пост;
  • Задеплоить его с помощью простейшего скрипта:
#!/bin/bash
hugo && rsync -avz --progress --delete public/ my_site:~/public_html
exit 0
  • Получить эстетическое удовольствие от простоты;

Все оказалось даже проще, чем я думал изначально.

Что изменилось с 2019-го#

История выше — про самый первый переезд. С тех пор инфраструктура блога ещё несколько раз эволюционировала, и мне есть что добавить.

Тема: PaperMod#

На текущий момент блог живёт на теме PaperMod — она даёт всё, что хотелось от темы для технического блога: тёмная/светлая тема, ToC, поиск через fuse.js, OpenGraph, профиль автора, аккуратная типографика. В hugo.yaml это сводится к одной строке theme: PaperMod. Текущий конфиг блога — hugo.yaml на гитхабе .

Темы — пока submodule, но Hugo Modules уже стучатся#

Я до сих пор подключаю темы через git submodule — это рабочая схема, особенно если ты иногда правишь тему под себя и держишь свой форк. Но для новых сайтов в 2026-м осмысленный путь — это Hugo Modules поверх Go modules:

hugo mod init github.com/your/site
hugo mod get github.com/adityatelange/hugo-PaperMod

И в конфиге:

module:
  imports:
    - path: github.com/adityatelange/hugo-PaperMod

Обновление — hugo mod get -u. Никаких git submodule update --init --recursive, никакого submodules: true в CI-чекаутах. Я свой setup пока не переписываю — submodule работает и менять рабочее ради «красивее» лень, но если ты начинаешь с нуля — иди сразу через Modules.

Деплой через GitHub Actions + rsync#

В исходном посте у меня был локальный shell-скрипт с hugo && rsync. Сейчас та же логика живёт в GitHub Actions — пуш в main запускает workflow, который дёргает мой же action jtprogru/hugo-rsync-deployment . Под капотом он по-прежнему делает hugo --minify + rsync --archive --compress --delete на VPS — никакого GitHub Pages, никаких CDN-провайдеров, просто свой сервер с Nginx.

Сверху повешены ещё две полезные мелочи:

  • после успешного деплоя curl пингует Yandex Webmaster, чтобы он быстрее переиндексировал sitemap;
  • через appleboy/telegram-action в личный Telegram падает уведомление об успехе/провале деплоя.

То есть rsync никуда не делся — он просто переехал из ~/deploy.sh в облако.

Что ещё стоит знать#

  • Hugo сильно ускорился за эти годы. На текущей версии 0.161 сборка ~140 постов занимает секунды. Если сидишь на чём-то старом 0.7x — обнови, особенно ради --gc --minify и нормальной обработки изображений.
  • Goldmark + math passthrough. В hugo.yaml теперь можно прокинуть \(...\)/$$...$$ в KaTeX/MathJax без шорткодов — у меня это включено для постов с формулами.
  • enablegitinfo: true — Hugo берёт lastmod из git-истории, удобно для технического блога с регулярными правками. Тоже стоит у меня в конфиге.

Итоги#

Приводить тут как именно надо “готовить” Hugo я не вижу смысла ибо в тырнетах много различных статей и видео на эту тему.

Да есть вещи, которыми пришлось пожертвовать и это комментарии в Disqus . И хотя в Hugo тоже есть поддержка и интеграция с серивсом Disqus, мне стало просто лень заморачиваться. Возможно я верну комментарии позже, а возможно и не верну их никогда и оставлю только ссылки на чатики в Telegram и в Slack.


Если у тебя есть вопросы, комментарии и/или замечания – заходи в чат , а так же подписывайся на канал .

О способах отблагодарить автора можно почитать на странице “Донаты ”.