Хостинг власного блогу: інсталяція та налаштування (частина 2) - Ghost

Цей посібник охоплює все, що потрібно знати для налаштування блогу Ghost у Proxmox VE контейнері, включаючи покупку домену, установку, налаштування, усунення неполадок та основні кроки для стабільної роботи.

Хостинг власного блогу: інсталяція та налаштування (частина 2) - Ghost
Photo by Sean Pollock on Unsplash

Вступ

Привіт. У попередній частині ми попрацювали над базою для нашого блогу, а саме:

  • Обрали залізо
  • Встановили Proxmox VE
  • Підготували LXC контейнер з Linux Ubuntu 23.10

Все це докладно описано тут:

Хостинг власного блогу: залізо та віртуальний контейнер (частина 1) - Ghost
Вступ Ця стаття являє собою покрокову інструкцію про те, як запустити блогу Ghost в домашніх умовах на сервері Proxmox VE, який встановлений на міні сервері у вас вдома. У першій частині ми роглянемо лише залізо та підготовку контейнера, а у другій частині пройдемось покроково по установці блогу та підключенні доменного

У другій (поточній) частині ми зосередимось на інсталяції блогу і всього, що повʼязано з публічним доступом до нього. Для цього нам прийдеться зареєструвати нове доменне імʼя, інсталювати блог та за допомогою тунеля надати користувачам мережі інтернет доступ до вашого локального сервера. Але про все по порядку.

Покупка доменного імені

Вибір доменного імені влучного і короткого це ціла наука, в яку я зараз не хотів би поглиблюватись, бо і сам обираю навмання. От і поточний блог у мене знаходиться на домені https://lavr.site. Думаєте я довго обирав? Ні.

Ви все правильно зрозуміли. Муки вибору імені домена лягають тяжким грузом на вас. Я лише проведу вас по технічній стороні справи у окремій публікації. Тут я описав кроки які допоможуть вам впоратись з покупкою деменного імені для вашого майбутнього блогу

Як придбати власний домен?
Вступ Рано чи пізно у житті IT-ішніка постає питання розміщення свого сервісу в публічному просторі. А це можливо лише через придбання власного доменного імені і привʼязки його до сервера. В цій короткій статті спробую провести вас покроково по процесу придбання доменного імені на своєму приклади. Основні причини, чому доменне ім’я

Інсталяція Ghost блогу

Повертаємось до нашого контейнера в Proxmox з попередньої частини.

Зробіть резервну копію

Перше, що я порекомендую, так це зробити резервну копію існуючого контейнера, або як альтернатива можна конвертувати поточний контейнер у темплейт Proxmox і запустити новий контейнер вже з темплейта. Але і копії буде достатньо. Уразі чого ви матимете гарну точку відправки з чистою системою.

Пройдіть покрокову інструкцію з інсталяції

Зараз потрібно відкрити контейнер через консоль на тому кроці де ми раніше зупинились. Введіть логін root і ваш пароль щоб побачити подібний вивід в консолі

Welcome to Ubuntu 23.10 (GNU/Linux 6.5.11-8-pve x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro
Last login: Sat Mar  9 19:59:21 UTC 2024 on tty1
root@ghost-test:~# 

І саме з цього моменту вам доведеться пройти всі кроки офіційної інструкції з інсталяції і налаштування блогу Ghost в Ubuntu. Там все гарно розписано.

How to install & setup Ghost on Ubuntu 20.04 or 22.04
A full production install guide for how to install the Ghost professional publishing platform on a production server running Ubuntu 20.04 or 22.04.

По інструкції виконайте всі кроки:

  • Створіть нового користувача
  • Оновіть пакети
  • Утановіть Nginx
  • Встановіть MySQL
  • Встановіть Node.js
  • Встановіть Ghost-CLI
  • Встановіть Ghost пройшовши опитування у консолі
Будьте уважні з іменем і паролем вашого нового користувача
Зверніть увагу і запамʼятайте імʼя вашої бази даних

Інсталяція Ghost

Складністю проходження буде саме уважність до деталей. На етапі налаштування крок з ghost install буде самим цікавим. Ось приклад того як я конфігурував свій блог

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

Примітки до налаштувань

Blog URL: Вам потрібно буде вказати доменне імʼя, яке ви придбали. Для прикладу я вказую http://blog.lavr.site, тобто використовую сабдомен. Бажано оприділитись одразу яке імʼя використати: lavr.site або blog.lavr.site. Замість blog можете використовувати любе імʼя на свій розсуд. Купивши домен, ви також володієте всіма сабдоменами - *.lavr.site

MySQL hostname: вказуємо 127.0.0.1 бо саме таким чином ваша база доступна локально

MySQL username: тут важливо продовжувати працювати з root юзером та паролем відповідно до нього

Ghost database name: вигадайте щось своє

Хочу окремо відмітити те, що я відмовився від створення окремого користувача для MySQL, щоб не ускладнювати собі життя запамʼятовуючи ще й його, а також відмовився від SSL сертифікату, бо його нам надасть Cloudflare у наступних кроках

Ваша конфігурація

Для подальшого користування і обслуговування вашого блогу буде корисним запамїятати важливі параментри вашого блогу такі як:

  • Каталог де знаходиться блог
  • Паролі від root та admin користувачів
  • Порт на якому парацює блог
  • Імʼя бази даних та інші її деталі, якщо створювали іншого користувача бази

Є також непоганий спосіб подивитись більшість тих параметрів виконавши команду ghost status

Логіни та паролі

Стосовно логінів і паролів, то я зберіг їх собі у доволі простому але зручному форматі:

Container
- login: root
- pass: E******
Admin
- login: admin
- pass: T******
MySQL
- login: root
- pass: E******

Таким чином ви знатимете де і який логін та пароль використати в подальшому. Не нехтуйте подібними нотатками, бо ви не так вже й часто будете повертатись в консоль, а такі речі швидко забуваються.

Можете вважати за пораду, та всі нотатки я додаю до самого контейнера в Proxmox

Корисні команди

Ми плавно підійшли до того, що інколи вам доведеться вертатись до налаштувать блогу для того щоб, наприклад, оновити його, а для цього просто запамʼятайте собі деякі корисні команди як ось наступні:

# to quickly jumt to your blog folder
cd /var/www/ghost

# to check the status
ghost status

# to start or stop the blog
ghost start # or stop

Більше про команди Ghost наполегливо рекомендую почитати в офіційній документації або простой тримаєте це посилання під рукою:

Ghost-CLI - A fully loaded tool for installation and configuration
The best way to install, manage, and update your site locally or when self-hosting Ghost. A full guide for our advanced CLI tool.


Налаштування Cloudflare

Перейшовши до цього етапу я знову рекомендую створити нову резервну копію в Proxmox

Як би не хотілось ускладнювати, але доведеться. Платформа Cloudflare доволі громіздка і має небачену кількість налаштувань. Нам все то і не треба. Необхідні кроки я описав для вас в окремій статті. Запасайтесь кавою і печивом - це займе багато часу.

Cloudflare Tunnels: Безпечний доступ до самостійно розміщених сервісів
Ця стаття пропонує покрокову інструкцію з підключення вашого домену до Cloudflare, придбання власного домену та налаштування Cloudflare Zero Trust для безпеки вашого сайту. Дізнайтесь, як активувати та налаштувати тунель для забезпечення надійного й безпечного з’єднання.

Після того, як ви запустили тунель і, як описано у вищевказаній статті, дійшли до кроку додавання ресурсів, то вам залишається лише правильно заповнити інформацію про Ghost блог.

В поле Domain обираємо ваш куплений домен(у мене це lavr.site). У конфігурації блогу ми вказували URL, це був blog.lavr.site. Тому в поле Subdomain зазначаємо blog.

💡
Звісно, якщо ви обрали підхід без сабдомена в конфігурації Ghost блогу, то і тут його не потрібно вказувати

В поле Type ми маємо обрати саме HTTP, а в URL вказати IP адресу свого контейнера з блогом. В попередніх кроках при налаштуванні мережі ми вручну зазначали адресу - її і використовуємо.

І от саме після збереження налаштувань в цьому кроці ви можете йти і перевіряти чи працює блог за вашою адресою.

Що робити якщо блог не працює?

Таке може статись, якщо ви були неуважні у попередніх кроках. За весь час було багато деталей, зараз по них пройдемось.

Перевірте налаштування мережі

На вашому місця я почав би з бази - це налаштування мережі. Впевніться, що вказали саме ту IP адресу

Перевірте статус блогу

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

💡
Systemd має піклуватись про те, шоб блог автоматично запускався при старті операційної системи, але якщо відбувалось екстренне вимкнення, то старт блогу не гарантується. Наприклад, якщо база даних MySQL не змогла запуститись, то і блог не буде працювати.

Перевірте статус тунеля Cloudflare

Вже один раз траплялось у моїй практиці, що тунель потребував оновлення і перестав працювати. Довелось видалити старий тунель в Docker і скопіювати нову команду запуску та виконати її. Займає це від сили 5 хвилин.

Перевірте чи працює сервер

Комусь це здасться глупим, проте коли ви працюєте з сервером Proxmox віддалено, то може трапитись, що він або не підлючений до мережі (коли ви маєте тварин, дітей або активних співмешканців), або немає світла і так далі. Тепер ви відповідальні за стаблільну його роботу і тому при відсутності доступу до блогу ви самостійно маєте вирішувати подібні питання як істиний системний адміністратор

Швидкий огляд

Отже ви вопрались і блог працює. Що далі?

Ну, по-перше, ви побачите стандартний зовнішній вигляд блогу з одним дописом Coming soon. Це те що будуть бачити ваші користувачі. Блог досить пустий і потребує багато роботи. По-друге, кнопка Subscribe не буде працювати поки ви не налаштуєте поштову інтеграцію. Доречі, я її у себе повністю вимкнув і в більшості випадків і вам раджу.

Адміністрування

Але ж ви власник блогу, автор і редактор і все в одному, тому для вас існують інші двері. Додайте в браузері у адресній строці /ghost, щоб вийшло https://blog.lavr.site/ghost. Це сторінка адміністратора і саме через неї ви будете працювати.

При першому вході пройдіть реєстрацію

Після входу вас зустріне Welcome page. Вас покроково ознайомлять з деякими налаштуваннями. І це буде гарний початок вашого нового блогу!

На цьому етапі формально інсталяція та налаштування завершені.

Поради роботи з Ghost

Швиденько розповім, що б я обовʼязково зробив маючи свій блог.

Налаштуйте резервні копії

Час від часу буде необхідність чи то оновити сам блог, чи змінити якісь важливі налаштування. Перед якимись великими змінами робіть резервні копії вручну, але також ви можете налаштувати їх за роскладом. Я вже описував такий подхід з моїм Synology NAS

Proxmox Backup Server та Synology NFS
Вступ І так під час роботи з Proxmox і по мірі зростання кількості контейнерів і віртуальних машин, які почали приносити мені користь, постала проблема резервного копіювання. І Proxmox був підготовлений в цьому питанні. Він має свій власний продукт який гарно інтегрується в Proxmox VE - це Proxmox Backup Server (PBS)

Важливим буде мати окреме місце і бажано за межами вашого дому, щоб зменшити ризики у разі форс мажорів по типу грабіжників чи пожарів.

Не бійтесь зробити зайву резервну копію. Краще її мати, а ніж не мати і починати все з початку.

Додайте інтеграції Google

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

SEO і не тільки - найперші кроки - Ghost
Вступ Описані нижче кроки стосуються практично кожного публічного сайту. І чим швидше це зроблено, тим краще. Як тільки ваш сайт, а в даному прикладі мій блог запущений на движку Ghost, запрацював і доступен в мережі інернет, то вам необхідно зробити його видимим у пошуку, включити аналітику, щоб відслідковувавати хто, як
Як запустити рекламу AdSense?
На прикладі свого досвіду розповім як успішно підключити та запустити рекламу на сторінках вашого блогу. Підключення Звісно, все починається з налаштування аккаунта AdSense та підключення до вашого сайту. Наступним кроком може бути робота з файлом Ads.txt, якщо ви хочете більше контролю над рекламою. Але це все лише передумови, які

Кастомізуйте свій блог

Ваш блог - ваш особистий острівець в інтернеті. Зробіть його затишним та унікальним. Він ває вирізнятись не тільки контентом алей й офрмленням.

Додавайте різні інтеграції які має в своєму арсеналі Ghost: https://ghost.org/integrations?ref=lavr.site

Про фінансову сторону

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

Де захостити власний блог - Ghost
Привіт. З тих пір як я почав цікавитись темою homelab в мене засіло бажання зробити свій сайт і самостійно його захостити. Проте чим глибше я продирався крізь терени інформації тим більше я дізнавався про цікаві сервіси які я можу самостійно хостити, а серед них були і блоги. Отже вирішено заради

Так ось ми отримали функціональніст Business пакету вартістю $199/міс, але ви відповідальні за стабільність його роботи. Тобто той 99.9% uptime SLA повністю на ваших плечах. А також у вас немає команди підтримки яку пропонував Ghost.

В першій частині я писав, що купив разово старенький енергоефективний сервер за $65, також у витрати пишемо покупку домена за $1/рік і звісно додаємо витрати на електроенергію.

Якщо покласти на терези те що я фактично витратив і повний пакет за $199/міс, то перевага відчутна одразу. Але що як порівняти з найдешевшою пропозицією з $9/міс?

Рахуємо: (65+1)/9= 7.33(3)

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

Висновок

Ніхто не казав, що буде швидко і легко. І це дійсно так. Хочу вас привітати з завершенням важливого етапу - запуску власного блогу. Але попереду ще більше роботи - налаштувати вигляд та функціональність, писати та публікувати, просувати свій блог та поширювати його, збираючи власну аудиторію.

Як власнику блогу розміщеного вдома (чи може в офісі), під повним власним контролем, вам потрібно буде вчитись всього по троху. Треба бути і системним адміністратором і DevOps, і дизайнером, і редактором, і SMM. Тепер все у ваших руках. Це і плюс, бо по коштах це звісно має обходитись дешевше, але й мінуси є, бл займатиме певний час для отримання нових знань, що, як на мене, піде вам лише на користь.

Сподіваюсь, що вам було цікаво і ви здобули новий досвід, а також отримаєте задоволення від свого блогу. Нахей він працює стабільно!

Щоб досягти успіху, перестаньте гнатися за грошима, женіться за мрією. Тоні Шей.

Всім дякую! До зустрічі можливо на сторінках вже вашого блогу!

😎
Якщо ви успішно запустили власний блог, то поділіться ним зі мною у будь якій із соціальних мереж, щоб я також порадів за вас. Мої контакти ви знайдете тут: https://lavr.site/about-me/


Socat як альтернатива Nginx (Опціонально)

👾
Цей блок абсолютно опціональний, можете його проігнорувати

Я знайшов непогану альтернативу Nginx, якщо хтось з "релігійних причин" не хоче його використовувати - це Socat. Я спробував і це працює.

Щоб перейти з Nginx на Socat потрібно виконати три кроки:

  1. Видалити Nginx
  2. Вимкнути Ubuntu Firewall (ufw) або переналаштувати
  3. Інсталювати та налаштувати Socat

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

З Ubuntu Firewall (ufw) трохи складніше, але тут вже гарно все розписано: https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu

sudo ufw disable

# and to check the state
sudo ufw status

Ми це робимо, щоб дати змогу відкривати і контролювати самостійно наші порти

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

Налаштування Socat

Якщо попередні кроки доволі тривіальні, то з Socat я хочу трохи детальніше надати команди які виконував у себе.

# install socat
sudo apt-get install socat

# verify socat
sudo socat TCP-LISTEN:80,fork TCP:127.0.0.1:2368

# go to system
cd /etc/systemd/system/

# create new service file
sudo nano /etc/systemd/system/socat-port-forward.service

Вставте наступний текст у редактор nano

[Unit]
Description=Socat Port Forwarding
After=network.target

[Service]
ExecStart=/usr/bin/socat TCP-LISTEN:80,fork TCP:127.0.0.1:2368

[Install]
WantedBy=multi-user.target

Після створення файла сервіса надаємо права та запускаємо його

# enable as service and start
sudo chmod 644 socat-port-forward.service
sudo systemctl enable socat-port-forward
sudo systemctl start socat-port-forward

Зверніть увагу на порт 2368. Вкажіть саме свій порт, який ви бачите при використанні команди ghost status

Корисні посилання

Read more

How to add ads.txt file in self-hosted Ghost blog

Як додати ads.txt до блогу на платформі Ghost

Додаєте ads.txt до блогу на Ghost? Дізнайтесь, як створити файл, опублікувати його на GitHub, налаштувати перенаправлення через redirects.yaml та перевірити коректність роботи. Це простий спосіб забезпечити відповідність стандартам реклами для вашого блогу.

By Volodymyr Lavrynovych