Panduan Cara Install Ghost di VPS

Panduan Install Ghost

Gegara diskusi ringan dengan kakak kelas kuliah, saya jadi pengin nyoba install ghost di vps sembari mencoba project blog bule yang mau saya coba optimasi SEO. Katanya ghost ini cukup mumpuni untuk SEO.

Kebutuhan dari blog yang akan saya bangun ini memang hanya untuk menulis dan optimasi SEO saja karena untuk monetize dengan adsense dan affiliate. Mumpung ada proyek iseng, kenapa nggak iseng juga nyobain ghost?

Baca: Panduan Install Wordpress di VPS

Nggak pake lama, langsung build server saja di Vultr. Kenapa kok nggak Digital Ocean? Meski ghost ini punya vps partner di Digital Ocean, saya pilih pakai VULTR karena harganya lebih murah. Dengan spesifikasi yang sama di digital Ocean per bulan $7 sedangkan di VULTR cuma %6.

Dapatkan saldo $10 dengan mendaftar melalui link ini.

Deploy Server di VULTR

Meski saya sudah punya beberapa vps di VULTR, saya putuskan untuk deploy server baru karena Ghost memiliki kebutuhan yang berbeda dengan wordpress. Kalau wordpress pakai PHP, sedangkan Ghost ini pakai NodeJS. Saya belum pernah pakai nodejs sebelumnya,. Langsung saja kita mulai percobaan ini!

Pilih Spesifikasi Server

Dengan budget pas-pas an ya tentu pilih cloud compute. Sedangkan untuk CPU saya coba pakai Intel high performance dan storage menggunakan NVMe SSD dengan biaya $6/ bulannya.

Pilih Lokasi Server

Berhubung target visitor untuk blog baru saya ada di Amerika Serikat, saya memilih lokasi server di Amerika. Kalau teman-teman punya target visitor orang Indonesia, saya sarankan untuk ambil yang Singapore saja. Karena lebih dekat sehingga loading website bisa lebih cepat ketika diakses dari Indonesia.

Pilih Sistem Operasi Server

Pilih OS Server

Kemudian pilih sistem operasi, Ghost menyarankan untuk menggunakan Ubuntu. Saya manut dengan install Ubuntu 22.04 LTS. Setidaknya selama 2 tahun nggak perlu update OS.

Pilih Ukuran Server

Pilih Ukuran Server

Pilih ukuran server yang sesuai dengan blog / website yang kamu gunakan. Saya memilih yang paling murah untuk spesifikasi ini, yaitu 1vCPU, RAM 1Gb, SSD 25 Gb (ini kebanyakan sih sebenernya). Minimal requirements untuk install Ghost adalah memiliki RAM 1Gb.

Berinama Server

Beri nama server

Jangan lupa untuk memberi nama server supaya lebih enak nyarinya. Kalau sudah punya SSH ya bisa langsung tambahkan sekalian sshnya biar makin masyuk.

Dasar Keamanan Server

Setelah VPS sudah bisa digunakan, langkah selanjutnya adalah mengatur basic server security. Seperti menonaktifkan root login, buat username untuk login, dan buat ssh key.

Buat User Baru

Hal pertama yang harus dilakukan ketika membuat server baru adalah login kemudian membuat user baru. Login ke server baru menggunakan perintah

ssh root@ipserver

Kemudian buat user baru menggunakan perintah

adduser namauser

Jangan menggunakan username ghost, karena bisa memicu konflik saat proses instalasi Ghost. Oleh karena itu lebih baik menggunakan nama lain. Masukkan username tersebut ke group superuser supaya punya privileges admin, gunakan perintah berikut ini

usermod -aG sudo namauser

Setting Login SSH Key

Langkah selanjutnya adalah mematikan login root dan gunakan ssh key untuk login. Sehingga untuk masuk ke server hanya bisa menggunakan perangkat yang sudah di daftarkan.

Buka terminal di komputer / laptop linux / mac kemudian jalankan perintah di bawah ini

ssh-keygen -t rsa

Kamu bisa pilih lokasi penyimpanan kunci ini. Lokasi defaultnya sih ada di ~/.sshd/id_rsa.pub . Kamu juga akan diminta untuk mengisi passphrase yang merupakan pin ketika kamu login ke server menggunakan ssh. passphrase ini hanya dibutuhkan sekali di setiap sesinya.

Sekarang kamu bisa buka file id_rsa.pub yang sudah dibuat oleh ssh-keygen dan copy semua isinya untuk diletakkan ke dalam vps.

Sekarang kembali lagi ke terminal VPS, dan beberapa langkah berikut ini supaya bisa login ke VPS dengan mudah

mkdir ~/.ssh
chmod 700 ~/.ssh

Dalam folder .ssh yang ada di VPS, kamu buat file dengan nama authorized_keys, gunakan perintah

nano ~/.ssh/authorized_keys

Paste isi konten yang ada pada file id_rsa.pub yang sudah kita copy sebelumnya ke dalam file authorized_keys. Kemudian simpan. Ubah permission authorized_keys menjadi 600 menggunakan perintah

chmod 600 ~/.ssh/authorized_keys

Disable Root Login

Langkah selanjutnya adalah mematikan login root dan login menggunakan password. Sehingga hanya komputer yang sudah didaftarkan saja yang bisa login ke vps tersebut. Jalankan perintah

sudo nano /etc/ssh/sshd_config

Cari PermitRootLogin yes ubah menjadi PermitRootLogin no

Kemudian cari juga PasswordAuthentication yes ganti PasswordAuthentication no

Jangan lupa untuk restart ssh service menggunakan perintah

sudo service ssh restart

Setelah melakukan perintah tersebut, kamu tidak bisa login ke vps sebagai root, dan nggak bisa login menggunakan password lagi. Hanya komputer yang memiliki terdaftar di authorized_keys yang bisa masuk. Penak to?

Install Firewall

Langkah selanjutnya adalah mengaktifkan firewall, ini juga merupakan salah satu layer keamanan. Gunakan perintah

sudo apt-get install ufw

Sedangkan untuk konfigurasinya bisa jalankan perintah di bawah ini

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

Ketika perintah tersebut digunakan untuk memberikan izin akses ssh, http dan https.

Setup Ghost Server

Setelah persiapan dasar keamanan server dilakukan, langkah selanjutnya adalah mempersiapkan beberapa software yang dibutuhkan oleh Ghost, yaitu

  • Nginx
  • Node.js
  • MySQL

Sebelum install software-software tersebut, ada baiknya untuk mengarahkan domain ke server baru terlebih dahulu. Saya biasanya melakukan ini kalau semua data di server sudah siap sehingga bisa meminimalisir situs down.

Tetapi dalam proses instalasinya, ghost akan langsung install SSL sehingga ada baiknya domain sudah diarahkan ke server baru. Kalau belum diarahkan, proses instalasi ssl ini akan gagal.

Pointing Domain

Buka DNS Manager yang kamu gunakan, kemudian arahkan A name dari domain ke ip server yang sudah kamu buat. Saya lebih suka menggunakan Cloudflare untuk DNS Manager. Selain gratis, propagasi domain menurutku bisa dikatakan hampir real time.

Install Nginx

Nginx merupakan web server yang digunakan untuk menjalankan ghost. Untuk install bisa gunakan perintah

sudo apt-get install nginx

Install MySQL

Langkah selanjutnya adalah install MySQL (minimal versi 8.0 ketika saya menulis artikel ini), gunakan perintah

sudo apt-get install mysql-server

Setelah berhasil install MySQL, langkah selanjutnya adalah membuat database dan user baru di MySQL untuk digunakan ghost nantinya. Memang sih agak ribet, tapi bisa dibilang ini akan memperlancar semuanya. Lakukan beberapa langkah berikut untuk membuat database baru di MySQL

Login ke MySQL dulu dengan perintah

sudo mysql / sudo mysqladmin

Kemudian set root password menggunakan perintah

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'passwordmu';

Setelah sudah tahu password root, selanjutnya sekalian bikin database yang mau digunakan untuk Ghost. Jalankan perintah berikut ini

CREATE DATABASE ghostblog;

Setelah itu buat user dan setting password dengan perintah

CREATE USER 'blog'@'localhost' IDENTIFIED BY 'pass-blog';

Kemudian berikan user game semua privileges di database igamerss dengan perintah

GRANT ALL PRIVILEGES ON ghostblog.* TO 'blog'@'localhost';

Setelah itu flush privileges dengan perintah

flush privileges;

dan keluar dari console mysql dengan perintah

quit;

Install Node.js

Setelah MySQL, selanjutnya install Node.js. Sebelum itu tambahkan node.js repository dengan perintah

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash

Setelah selesai jalankan perintah berikut untuk install Node.JS

sudo apt-get install -y nodejs

Install Ghost-CLI

Selanjutnya install Ghost-CLI yang mempermudah kita untuk setting dan install Ghost. Jalankan perintah

sudo npm install ghost-cli@latest -g

Semua persiapan untuk instalasi ghost sudah selesai, sekarang saatnya melanjutkan install Ghost.

Install Ghost

Sama dengan ketika install wordpress di VPS, kita harus buat folder dulu untuk data-data Ghost. Buat folder untuk Ghost dimanapun kamu mau. Kamu bisa menggunakan perintah di bawah ini

sudo mkdir -p /var/www/domain.com

Kemudian ubah permission folder domain.com menjadi milik user, bisa gunakan perintah di bawah ini

sudo chown $USER:$USER /var/www/domain.com

Jangan lupa untuk ubah permission folder menjadi 755 dengan perintah

sudo chmod 775 /var/www/domain.com

Kemudiah masuk ke folder domain.com menggunakan perintah

cd /var/www/domain.com

Jalankan perintah di bawah ini untuk install Ghost

ghost install

Selama proses instalasi, ada beberapa pertanyaan yang harus kamu jawab, diantaranya adalah sebagai berikut ini

  • Blog url, isi yang komplit dengan httpsnya. Misalnya https://domain.com/ Ketika kita input protokol yang digunakan https, ghost akan membantu install SSL.
  • MySQL hostname: localhost , langsung enter saja kalau databasenya ada dalam server tersebut.
  • MySQL username / password: masukkan username dan password dari user yang sudah kita buat tadi untuk database yang akan digunakan. Dalam contoh ini saya tadi menggunakan username blog sedangkan passwordnya menggunakan pass-blog
  • Ghost database name: Nama databasenya sesuai dengan yang saya buat tadi yaitu ghostblog.
  • Setup ghost MySQL user, pilih aja Y
  • Setup Nginx, pilih Y
  • Setup SSL, pilih Y
  • Masukkan email aktif untuk SSL:
  • Setup Systemd, karena direkomendasikan ya pilih Yes dong.
  • Start Ghost? jawabannya adalah Y

Instalasi ghost sudah selesai!

Setup Ghost Website

Setelah membuka halaman website, akan muncul default ghost page seperti gambar di bawah ini

Default Ghost Website

Lalu bagaimana cara login? Apa username dan passwordnya? Kan belum disetting sebelumnya? Jangan khawatir, karena sekarang kita akan mulai untuk mengatur ghost yak!

Buka domain.com/ghost, kamu akan diminta untuk mengisi judul website, nama lengkap, alamat email, dan password. Tampilannya kurang lebih seperti di bawah ini

Setup Ghots Website

Setelah mengisi, kamu sudah bisa masuk dan mulai menulis, mendesain dan macem-macem. Jangan bandingkan dengan wordpress ya, karena ghost dibuat untuk para penulis sehingga nggak banyak pengaturan yang bisa kamu lakukan. Untuk custom template agak susah sih.

First Impression Ghost

Saya belum begitu ngeh dengan konfigurasi server block nginx yang digunakan oleh Ghost, sehingga nggak saya apa-apain. Saya pakai default pengaturan saat instalasi Ghost. Semua baik-baik saja.

Saya mencoba menulis artikel sekitar 1000 kata. Menggunakan sekitar 7 gambar dengan resolusi 1200px x 675px. Saya menggunakan format gambar webp, sehingga ukuran gambarnya nggak bengkak. Kemudian saya coba test page menggunakan Google Page Speed Insight, hasilnya mengejutkan sih :))

Hasil Google Page Speed Insight

Yang tidak saya sukai dari Ghost!

Setelah menulis di blog, ada beberapa hal yang membuat saya tidak menyukai ghost, salah satunya adalah galeri gambar! Tidak ada fitur galeri gambar di ghost, jadi kamu hanya bisa upload gambar setiap ingin menambahkan gambar. Kamu tidak bisa menggunakan gambar di postingan lain untuk digunakan lagi.

Dalam jangka waktu lama, tentu ini akan memakan banyak space di server karena gambar-gambar yang tidak terpakai. Untuk menghapusnya pun harus melalui ssh ke server. Sangat ndak praktis bos.

Padahal di Ghost bisa insert gambar dari unsplash, tetapi kenapa dia nggak membiarkan user untuk browser dari local servernya saja? Entahlah. Itu salah satu hal yang membuatku menunda untuk memindah blog ini untuk menggunakan platfrom Ghost.

Kalau kamu minim dalam penggunaan gambar, masalah ini bukan menjadi masalah sih.

Sering Ditanyakan

Berikut beberapa hal yang sering ditanyakan oleh orang-orang sebelum memutuskan untuk pindah ke Ghost. Kalau kamu ada pertanyaan, tulis aja di kolom komentar. Nanti akan saya coba balas satu persatu.

Enak mana sama wordpress?
Kalau cuma mau fokus nulis memang enak ghost sih, tapi dengan segala kerumitannya setup server masih lebih enak wordpress. Hampir semua web hosting bisa melayani.
Lho kok nggak install PHP?
Ghost pakai Node.JS, jadi kita nggak usah install PHP di server.

Bagikan:

Tags

Related Post

Leave a Comment