Збудуй цей блог

Окей, давайте коротко про те, як зробити свій статичний блог. Замість прикладу, власне цю статтю і напишемо. Чи ви думали у мене дофіга ідей чим блог наповнювати?

Перше: обираємо фреймворк, який дасть технічну частину. Тисячі їх, мій вибір пав на hugo рівно по двом причинам: мене цікавить статичний блог і він вміє працювати з Markdown. Чому Markdown? Бо від html + js пахне ПТСР, а ціни на психотерапію вражають.

Одже, обрали, тепер крок два: де? Якби ми взяли щось типу wordpress - хостінгів було б відро. В випадку з статичними генераторами, вибір трохи менший, але все ще достатній. Я віддаю перевагу роботі з VPS, за старою звичкою. Мій вибір це Vultr, але будь який клауд провайдер з репутацією трошки вище плінтуса підійде. Якщо у вас статичний IP і є зайва raspberry pi - теж чудовий варіант, зробити port forwarding.

Один нюанс, скоріш порада, якщо брати зовнішній ресурс: краще взяти щось дешеве, ніж бесплатне. Це підвищіть шанс, що під час аварійних ситуацій вашими ресурсами не пожертвують. Таке життя, і клієнти які платять гроші - в пріорітеті. Але це таке.

Третє - потрібне доменне ім’я. Звісно, є халявні, але за всі смачні зони типу .me або .blog доведеться трошки заплатити, кілька баксів в перший рік, і порядка 10-15 за кожний наступний. Вважай, чашка кави в місяць, цілком прийнятно, як на мене. Я особисто користувався за свою кар’єру здебільшого namecheap та spaceship, проблем ніколи не мав, тому можу спокійно рекомендувати. За решту, нічого ні поганого, ні хорошого сказати не можу, тому мовчу. В тряпочку. Хлороформ? Упс… Поки я не вирубився - не забудьте зробити DNS A record на адресу, де розгортаєте блог.

У нас є фреймворк, де розгортати і як до цього достучатись. Справа маленька лишилась, створити матеріали, заради яких весь цей двіж розпочинався. Йдемо на сервер, всі дистрибутиво-залежні приклади зроблені на основі моєї улюбленої openSUSE.

Ліземо через ssh, першою справою оновлюємось і бутаємось:

# zypper update 
# systemctl reboot

Ставимо джентельменський набір необхідних речей:

# zypper install vim nginx certbot hugo

Ініціюємо блог (місце розташування та назву, звісно ж, можна міняти)

# cd /srv
# hugo new site darktar.me

Тема оформлення обирається тут і ставиться приблизно так:

# cd /srv/darktar.me
# git clone https://github.com/joeroe/risotto themes/risotto && cd themes/risotto

Всі теми в своїх рідмі мають додаткові кроки по розгортанню, наприклад:

# cd /srv/darktar.me/themes/risotto
# git checkout $(git tag -l | grep '^v[0-9.]*$' | sort -V | tail -n 1)

Заходимо в /srv/darktar.me/ і тут тре набити конфіг. Тут буде багато важливого: прописати структуру блогу, посилання на соціалки, якщо вони у вас є,

Тому погнали:

Більшість конфігурації має бути інтуітивно зрозумілою. Іконки ми беремо з Font Awesome, має вистачити на більшість випадків.

Створюємо нову сторінку для блогпосту, це настільки ж складно, як і вбити команду в термінал:

cd /srv/darktar.me
hugo new content content/posts/build-this-blog/index.md

І заливаємо туди нашу статтю (так, nano теж можна):

vim /srv/darkblog/content/posts/build-this-blog/index.md

Тепер трохи технічної частини. По замовченню, як хто знає, всі сучасні серверні дистрибутиви ріжуть будь який доступ по замовченню, нам треба відкрити 80 та 443 порти, щоб наш улюблений nginx якось має віддати блог в браузер. Я роблю це на openSUSE, тут як і у решти RPM дистрибутивів став модний firewalld, цим і скористаюсь:

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=433/tcp --permanent

Чарівно, тепер налаштуємо сам nginx, нічого феноменального не будемо вигадувати. Наповнення /etc/nginx/conf.d/blog.conf

server {
    listen 80;
    server_name darktar.me;

    root /srv/darktar.me/public; # Update this path to your Hugo public directory
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Перевіряємо конфіг, і стартуємо nginx. Поки не звертаємо уваги на відсутність конфігурації по 443, її нам зробить certbot трішечки згодом.

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# systemctl enable --now nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

А ось і черга сетрифікатів. Виконуємо, йдемо по інструкції, переконуємось що нам видає нормальний domain name.

# certbot --nginx --register-unsafely-without-email

Тут для мене маленький сюрприз, але systemd timer на автоновлення сертифікату відсутній в пакеті certbot, доставляю пакет і підрубаю таймер:

# zypper install certbot-systemd-timer
# systemctl enable --now certbot-renew.timer

Момент істини, збираємо блог і перевіряємо в браузері, що ж в нас вийшло!

# cd /srv/darktar.me
# hugo

darktar.me

Ось тобі вийшло! Якщо мій реальний блог відрізняється від прикладу, то це я його трошки шліфанув з часом. Колист він точно виглядав, як описано тут, чесне слово.``

Замість висновків: ну власне якось так. Звісно, це супер базовий блог, над яким ще працювати і працювати. Треба заповнити about сторінку, продуматии теги, підкрутити налаштування приватності, банальне оформлення головної сторінки відсутнє. Але це вже наступні кроки, головне почати і цей крок тільки що був зроблений.

See ya, space cowboy

Darktar a.k.a. Дарк

Дарк періодично ловить надхнення щось зробити. Інколи, Дарк також хоче цим поділитись з друзями та кимось ще. Тож, привіт!


2025-02-15