Ghost adalah salah satu platform blogging sumber terbuka paling populer. Ini menawarkan fitur-fitur canggih untuk hampir semua hal yang berhubungan dengan blogging, seperti pengeditan, penerbitan, buletin email, dan menawarkan langganan berbayar. Ghost menawarkan tema siap pakai yang dapat Anda gunakan untuk menyiapkan blog Anda dengan cepat, namun berkat API-nya yang luas, Anda juga dapat menggunakannya sebagai CMS tanpa kepala untuk frontend khusus Anda.Anda dapat menginstal Ghost dengan beberapa cara , salah satunya adalah Docker .
Menerapkan Ghost dengan Docker memiliki banyak keuntungan. Dengan wadah Docker, Anda mendapatkan cara yang fleksibel dan mudah direproduksi untuk menjalankan blog Anda. Ini memungkinkan Anda menjalankan instance lain dengan cepat ketika ada yang gagal atau diperbarui. Selain itu, Anda mendapatkan pengalaman penyiapan yang sama, terlepas dari apakah Anda berada di lingkungan pengembangan atau produksi.
Artikel ini akan memandu Anda melalui seluruh proses pengaturan blog Ghost dengan Docker. Anda dapat menemukan semua file konfigurasi dari tutorial ini di repo GitHub ini .
Fitur Ghost
Sebelum mendalaminya, mari kita jelajahi dulu beberapa fitur Ghost secara mendalam.
Kesederhanaan dan Kemudahan Penggunaan
Seperti yang akan Anda lihat sebentar lagi, Ghost sangat mudah diatur, terutama dengan image Docker yang sudah dibuat sebelumnya. Selain itu, bagian lain dari pengalaman Ghost juga mudah dipahami. Segala sesuatu mulai dari editor konten hingga panel pengaturan memiliki desain yang bersih dan minimal.
Pengalaman Mengedit dan Menerbitkan
Editor Ghost adalah salah satu yang terbaik dalam bisnis ini. Ini menyediakan semua yang Anda butuhkan untuk membuat konten luar biasa, termasuk:
- Menu pemformatan mengambang.
- Blok gambar, HTML, dan konten lainnya.
- Penyematan media untuk Twitter, YouTube, CodePen, dan banyak lagi.
- Pintasan penurunan harga.
- Cuplikan konten yang dapat digunakan kembali.
Ketika Anda selesai menulis, penerbitan hanyalah masalah menyediakan beberapa metadata dan menekan tombol Publikasikan .
Buletin Email
Selain untuk blogging, Ghost juga dapat digunakan untuk buletin email. Dengan editor desain email bawaan, daftar anggota, analisis email, dan integrasi Mailgun , Anda mendapatkan solusi lengkap fitur untuk menjalankan buletin Anda sendiri langsung dari blog Anda.
Langganan dan Keanggotaan
Berkat integrasi Stripe, API khusus, dan dasbor administrasi anggota, Ghost memiliki semua yang Anda perlukan untuk menerapkan langganan berbayar dan memonetisasi blog Anda. Anda dapat membuat apa saja mulai dari sistem donasi sederhana hingga konten berbayar atau buletin premium.
Menyiapkan Ghost dengan Docker
Panduan ini mengasumsikan Anda menjalankan Ubuntu 18.04 atau lebih baru. Untuk menjalankan Ghost di Docker, disarankan minimal 1 GB RAM dan CPU yang layak.
Menginstal Docker
Sebelum memasang Ghost, Anda harus memasang Docker Engine dan Docker Compose . Pastikan untuk menghapus instalasi Docker Engine versi sebelumnya yang mungkin diinstal pada sistem Anda:
sudo apt-get remove docker docker-engine docker.io containerd runc
Gunakan apt untuk menginstal semua paket yang dibutuhkan oleh Docker:
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
Tambahkan kunci GPG resmi Docker untuk memverifikasi integritas paket Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Siapkan repositori stabil Docker sebagai sumber pengunduhan paket:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Instal Docker Engine dan Docker Compose, lalu verifikasi instalasi:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose
docker --version
docker-compose --version
Jika semuanya sudah diatur dengan benar, Anda akan melihat nomor versi untuk Docker Engine dan Docker Compose di terminal Anda.
Menjalankan Gambar Ghost
Dengan Docker yang siap, Anda sekarang dapat menggunakannya untuk mengunduh dan menjalankan image Ghost.
Untuk Pembangunan
Ini adalah cara termudah untuk mengaktifkan dan menjalankan image Ghost untuk tujuan pengembangan. Dengan pengaturan ini, container tidak memiliki kewarganegaraan, artinya semua data akan hilang jika terjadi sesuatu padanya. Selain itu, secara default, blog Ghost menggunakan database SQLite .
Jalankan gambar Ghost menggunakan perintah berikut:
docker run -d --name my-ghost-blog -e url=http://localhost:2368 -p 2368:2368 ghost
Ini akan membuat sebuah container diberi nama my-ghost-blog
menggunakan image Ghost resmi yang disediakan oleh komunitas Docker. Blog Ghost akan dapat diakses di port 2368
.
Meskipun nyaman dan bagus untuk tujuan pengembangan, penyiapan ini belum siap untuk produksi. Untuk itu, diperlukan konfigurasi lebih lanjut.
Untuk Produksi
Mulailah dengan membuat direktori khusus, seperti my-ghost-blog
, dan docker-compose.yml
file di dalamnya:
mkdir my-ghost-blog
cd my-ghost-blog
touch docker-compose.yml
Di dalam file, tentukan konfigurasi untuk container Docker:
version: "3.3"
services:
ghost:
image: ghost:latest
restart: always
ports:
- "2368:2368"
depends_on:
- db
environment:
url: http://localhost:2368
database__client: mysql
database__connection__host: db
database__connection__user: ghost
database__connection__password: ghostdbpass
database__connection__database: ghostdb
volumes:
- /home/ghost/content:/var/lib/ghost/content
db:
image: mariadb:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_mysql_root_password
MYSQL_USER: ghost
MYSQL_PASSWORD: ghostdbpass
MYSQL_DATABASE: ghostdb
volumes:
- /home/ghost/mysql:/var/lib/mysql
Dengan konfigurasi ini, container database MySQL tambahan akan dibuat menggunakan image MariaDB . Selain itu, volume khusus ditambahkan untuk blog Ghost guna menyediakan penyimpanan stateful.
Sekarang, jalankan konfigurasi dengan docker-compose up -d
. Anda sekarang dapat melihat blog Ghost di port 2368
.
Menyiapkan Blog Ghost Anda
Untuk memulai dengan Ghost, buka http://localhost:2368/ghost
. Di sinilah panel admin Anda akan ditempatkan. Pergi ke sana untuk pertama kalinya, Anda akan melihat layar pengaturan seperti di bawah ini:
Isi formulirnya, dan Anda akan disambut dengan dashboard.
Untuk membuat postingan pertama Anda, klik tombol + di sebelah Postingan , yang akan membawa Anda ke editor postingan.
Dari dalam editor, Anda dapat menulis postingan blog dan mengatur semua metadatanya. Setelah selesai, klik Publikasikan untuk menjadikan postingan Anda publik.
Mengekspos dan Mengamankan Blog Hantu
Sekarang, ketika blog Ghost sudah aktif dan berjalan, masih ada beberapa pengaturan yang harus dilakukan di backend. Anda harus mengekspos aplikasi untuk akses luar dengan proxy seperti Nginx dan mengamankannya dengan sertifikat SSL. Proses ini memerlukan domain, yang kami sebut sebagai example.com
.
Memperoleh Sertifikat SSL
Untuk mendapatkan sertifikat SSL untuk domain Anda, pertama-tama Anda harus menginstal paket Certbot terbaru dengan penginstal paket Snapd .
Pertama, pastikan Snapd terbaru dan tidak ada Certbot versi lama yang diinstal:
sudo snap install core
sudo snap refresh core
sudo apt remove certbot
Selanjutnya, instal Certbot dan buat symlink ke jalur instalasinya untuk memastikannya dapat diakses melalui certbot
perintah:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Terakhir, jalankan perintah berikut untuk membuat dan mengunduh sertifikat untuk domain Anda:
sudo certbot certonly --standalone -d example.com
Setelah sertifikat SSL siap, Anda dapat melanjutkan ke Nginx.
Membuat Gambar Nginx Docker Kustom
Dalam contoh ini, Anda akan melihat cara menjalankan Nginx sebagai container terpisah dengan Docker Compose.
Untuk memulai, buat nginx
folder baru:
mkdir nginx
cd nginx
Anda harus mengubah image resmi Nginx untuk menyertakan konfigurasi Nginx khusus. Untuk melakukannya, buat file yang dipanggil ghost.conf
untuk menyimpan konfigurasi Nginx khusus:
server {
listen 80;
listen [::]:80;
server_name example.com;
# Useful for Let's Encrypt
location /.well-known/acme-challenge/ { root /usr/share/nginx/html; allow all; }
location / { return 301 https://$server_name$request_uri; }
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
access_log /var/log/nginx/ghost.access.log;
error_log /var/log/nginx/ghost.error.log;
client_max_body_size 20m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ghost:2368;
}
}
Konfigurasi ini mengekspos aplikasi Ghost yang berjalan dalam wadah terpisah (at http://ghost:2368
), dan mencakup konfigurasi yang diperlukan agar sertifikat SSL dapat berfungsi dengan benar.
Sekarang, buat Dockerfile baru di mana Anda akan mengubah image default Nginx:
FROM nginx:latest
RUN rm /etc/nginx/conf.d/default.conf
COPY ghost.conf /etc/nginx/conf.d
Setelah Dockerfile siap, Anda kini dapat kembali ke konfigurasi Docker Compose.
Memperbarui Konfigurasi Docker Compose
Jika blog Ghost Anda masih berjalan, sebaiknya hentikan terlebih dahulu dengan docker-compose down
perintah. Karena konfigurasi sudah memiliki volume yang terpasang, semua data akan tetap ada melalui pengaturan ulang.
Perbarui docker-compose.yml
file untuk menambahkan container Nginx terpisah, dan hapus ports
properti dari ghost
container:
version: '3.3'
services:
ghost:
image: ghost:latest
restart: always
depends_on:
- db
environment:
url: https://example.com
database__client: mysql
database__connection__host: db
database__connection__user: ghost
database__connection__password: ghostdbpass
database__connection__database: ghostdb
volumes:
- /home/ghost/content:/var/lib/ghost/content
db:
image: mariadb:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_mysql_root_password
MYSQL_USER: ghost
MYSQL_PASSWORD: ghostdbpass
MYSQL_DATABASE: ghostdb
volumes:
- /home/ghost/mysql:/var/lib/mysql
nginx:
build:
context: ./nginx
dockerfile: Dockerfile
restart: always
depends_on:
- ghost
ports:
- "80:80"
- "443:443"
volumes:
- /etc/letsencrypt/:/etc/letsencrypt/
- /usr/share/nginx/html:/usr/share/nginx/html
Setelah selesai, jalankan aplikasi docker-compose up -d
sekali lagi. Jika semuanya sudah diatur dengan benar, Anda akan melihat blog Ghost Anda di bawah https://example.com
.
Opsi Penerapan
Berkat popularitas dan fleksibilitas Docker, ada banyak sekali opsi yang dapat dipilih saat menghosting aplikasi Anda. Aplikasi dalam container yang dirancang dengan baik dapat berjalan di mana saja mulai dari server pribadi virtual hingga lingkungan cloud Docker khusus atau cluster Kubernetes.
Beberapa platform penerapan Docker yang paling populer meliputi:
Sekian Terimakasih..