Cum să instalezi Ghost pe un VPS de la Hetzner

Cum să instalezi Ghost pe un VPS de la Hetzner

De la începutul anului am reluat un blog pe care îl am de ceva vreme, dar data aceasta am preferat Ghost în locul tradiționalului WordPress deoarece este mult mai stabil, mai rapid și excelează prin simplitate. Ghost este o platformă dedicată pentru publishing, cu un editor vizual extrem de simplu, dar în același timp puternic și perfect pentru a te putea concentra pe scris.

Similar cu WordPress, Ghost este software Open Source și este disponibil într-o variantă hosted cu prețuri de la 29$ pe lună pentru plata anuală, cât și într-o variantă self hosted pentru cei care doresc control total asupra conținutului lor. Pentru a rula Ghost self hosted vei avea nevoie de un VPS și de un client SSH, de ex PuTTY sau PowerShell din Windows 10.

Există mai multe posibilități de a găzdui Ghost self hosted, probabil cea mai simplă soluție fiind aplicația one click install de la DigitalOcean. Dacă dorești găzduire în România, am auzit lucruri bune despre IntoVPS, deși personal nu i-am utilizat decât pentru teste - planul M2 la 3$/lună acoperă cerințele minime ale Ghost. Pentru cel mai bun raport calitate/preț în UE recomand fără ezitare Hetzner - cel mai ieftin VPS la 3€/lună este mai mult decât suficient pentru început, poți oricând să faci un upgrade cu un downtime minim.

Dacă folosești acest link poți primi până la 20 euro gratuit la Hetzner pentru a testa ceea ce voi descrie în continuare.

Ubuntu 18.04 și un VPS cu 2 GB RAM la 3€/lună

Înainte de a începe nu uita că trebuie să modifici A records pentru domeniul pe care îl vei utiliza către IP-ul VPS-ului. Poți folosi varianta gratuită a ClouDNS sau trimite un tichet de suport către cei de unde ai achiziționat domeniul.

#1 Login SSH

Ai primit datele de autentificare pentru noul VPS, pornește PuTTY, introdu IP-ul VPS-ul și datele de autentificare - utilizatorul și parola. Vei primi o avertizare pentru a accepta certificatul serverului, alege să continui. Introdu utilizatorul, de obicei root, și parola primită pe email. După prima autentificare ți se va solicita să schimbi parola implicită. Folosește pentru generarea unei noi parole un serviciu precum Strong Password Generator și introdu aceeași parolă de două ori. Nu uita să o salvezi local într-un fișier txt pentru viitor!

#2 Crează un nou utilizator

Pentru tot ceea ce înseamnă instalare și mentenență Ghost vom avea nevoie de un utilizator diferit de root. Rulează următoare comandă în Terminal, înlocuind în toate instanțele următoare corespunzător <your_new_username> cu utilizatorul dorit

adduser <your_new_username>

Va trebui ca și în pasul anterior să introduci o parolă de două ori și, dacă dorești, și detaliile personale precum nume, prenume, email etc. Poți ignora secțiunea de detalii personale apăsând Enter pentru fiecare rând în parte. Noul utilizator trebuie să aibă capabilități de admin de aceea îl vom adăuga la grup

usermod -aG sudo <your_new_username>

În acest moment vom schimba din utilizatorul root la utilizatorul nou creat

su - <your_new_username>

#3 Actualizare VPS și instalare NGINX

Pentru a ne asigura că totul funcționează corect și este actualizat la ultima versiune compatibilă vom rula aceasta comandă

sudo apt-get update && sudo apt-get -y upgrade

Operațiunea poate dura mai mult, așteaptă până se finalizează deoarece este un pas important din proces. Odată finalizată actualizarea vom instala un server web, NGINX.

sudo apt-get install nginx

Va trebui să confirmi operațiunea prin apăsarea Y pe tastatura. Odată finalizată instalarea trebuie să modificăm firewall-ul astfel încât să permită conexiuni HTTP & HTTPS

sudo ufw allow 'Nginx Full'

#4 MySQL

Până la acest moment avem un server web basic, dar pentru a instala Ghost vom mai avea nevoie de o bază de date MySQL pentru a stoca informațiile și de Node.js, mediul în care rulează platforma.

Pentru a instala MySQL vom rula următoarea comandă

sudo apt-get install mysql-server

În timpul instalării va trebui să setezi o parolă, parolă pe care o vom utiliza mai târziu, nu sări peste acest pas și salveaz-o iarăși în fișierul txt creat mai devreme. Odată finalizată instalarea ne vom loga în MySQL cu următoarea comandă

sudo mysql -p

Va trebui să introduci parola anterior setată pentru autentificare. În continuare vom actualiza utilizatorul pentru baza de date - înlocuiește your_password cu noua parolă, dar păstrează semnele de citare

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';

Ne vom deloga din MySQL cu quit introdus în terminal.

#5 Node.js

Pentru a instala Node.js vom avea nevoie de următoarele 2 comenzi rulate în succesiune. Procesul de instalare va dura semnificativ mai mult și va fi necesar să confirmi cu Y

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash
sudo apt-get install -y nodejs

#6 Ghost CLI

Am instalat până acum NGINX, MySQL și Node.js, urmează Ghost-CLI, unealta necesară pentru actualizarea și mentenența Ghost.

sudo npm install ghost-cli@latest -g

#7 Instalare Ghost pe domeniu

Într-un pas anterior am modificat A records către VPS-ul  nostru și acum, în final, este timpul să instalăm Ghost. Pentru a nu complica momentan configurația vom instala într-un folder numit ghost, îl vom crea cu comanda următoare, dar este important de știut că poți alege oricare altă denumire pentru folder și că poți avea, bineînțeles dacă resursele o permit, mai multe instalări Ghost pe același VPS.

sudo mkdir -p /var/www/ghost

Oferim drepturi complete asupra folderului utilizatorului nostru

sudo chown <your_new_username>:<your_new_username> /var/www/ghost

Schimbăm drepturile de scriere ale folderului

sudo chmod 775 /var/www/ghost

Navigăm la folderul ghost

cd /var/www/ghost

Și pornim instalarea Ghost

ghost install

Ți se va solicita să introduci o serie de informații, prima dintre acestea fiind domeniul utilizat. Acesta trebuie introdus cu HTTPS, în cazul meu va fi https://eugenpaun.ro. Introdu informațiile de mai jos

Enter your MySQL hostname: localhost
Enter your MySQL username: root
Enter your MySQL password: Parola MySQL din pasul 4.
Do you wish to set up "ghost" mysql user?: Yes
Do you wish to set up Nginx? Yes
Do you wish to set up SSL? Yes
Enter your email (For SSL Certificate): Adresa de email personală
Do you wish to set up Systemd? Yes
Do you want to start Ghost? Yes

Dacă totul s-a finalizat fără erori tot ce trebuie să mai faci este să navighezi la panoul de administrare al Ghost, în cazul meu https://eugenpaun.ro/ghost unde îți voi seta utilizatorul și parola pentru primul administrator.

Nu trebuie să te "înspăimânte" faptul că trebuie să lucrezi în terminal. Va trebui să te autentifici în terminal doar pentru actualizări ale Ghost, în versiunile mai noi ești notificat de noi versiuni disponibile în panoul de administrare, și eventuale operațiuni de mentenență, mai multe detalii poți găsi în documentația oficială Ghost-CLI, dar cel mai probabil nu vei avea nevoie în mod regulat decât de următoarele comenzi

# Restartează instanța Ghost după de ex modificări de design
ghost restart
# Actualizează Ghost la ultima versiune disponibilă
ghost update
# Verifică buna funcționare a instanței Ghost
ghost doctor