Permulaan Blog dengan Ghost: Panduan Mudah untuk Pemula

tutorial 13 Jul 2025

Adakah anda berminat untuk memulakan blog tetapi tidak pasti platform mana yang sesuai? Ghost mungkin menjadi pilihan terbaik untuk anda! Dalam artikel ini, kami akan membimbing anda tentang cara memulakan blog dengan Ghost, platform yang ringkas, pantas, dan mesra pengguna.

Ghost ialah platform penerbitan sumber terbuka yang direka khusus untuk penulis dan penerbit kandungan. Berbanding dengan platform lain seperti WordPress, Ghost menawarkan antara muka yang lebih bersih dan fokus pada pengalaman menulis yang lancar. Ia juga dilengkapi dengan ciri-ciri SEO yang mantap, menjadikannya pilihan yang baik untuk mereka yang ingin meningkatkan penglihatan blog mereka.

Kebaikan dan Kelebihan Ghost

  1. Mudah Digunakan: Antara muka yang intuitif menjadikan proses menulis dan menerbitkan kandungan lebih mudah.
  2. Pantas: Ghost dibangunkan dengan teknologi moden yang menjamin kelajuan laman web yang tinggi.
  3. SEO Terbaik: Platform ini dilengkapi dengan alat SEO terbina dalam untuk membantu kandungan anda mendapat kedudukan yang lebih baik dalam enjin pencarian.
  4. Boleh Disesuaikan: Walaupun ia lebih ringkas daripada WordPress, Ghost masih menawarkan banyak pilihan penyesuaian untuk memenuhi keperluan anda.

Langkah Permulaan

  1. Pilih Pelan Hosting: Ghost boleh dihoskan sendiri atau menggunakan perkhidmatan hos seperti Ghost(Pro). Pilih pelan yang sesuai dengan bajet dan keperluan anda.
  2. Pasang Ghost: Jika anda memilih hos sendiri, ikuti panduan pemasangan rasmi Ghost. Untuk Ghost(Pro), prosesnya lebih mudah kerana ia sudah dihoskan untuk anda.
  3. Pilih Tema: Ghost menawarkan pelbagai tema percuma dan berbayar. Pilih tema yang sesuai dengan gaya blog anda.
  4. Mulakan Menulis: Gunakan editor Ghost yang ringkas untuk mencipta kandungan pertama anda.
  5. Terbitkan dan Kongsi: Setelah siap, terbitkan blog anda dan kongsi dengan dunia!

Tutorial Ringkas

Sekiranya menggunakan VPS dan ingin self-hosted. Tambah docker container ghost template dalam docker-compose.yml.

services:
    ghost:
        image: ghost:latest
        container_name: ghost
        restart: unless-stopped
        environment:
            database__client: mysql
            database__connection__host: mysql
            database__connection__user: ghost_user
            database__connection__password: ghost_pass
            database__connection__database: ghost_db
            url: https://sub.domain.com
            mail__transport: SMTP
            mail__options__service: Mailgun
            mail__options__host: smtp.mailgun.org
            mail__options__port: 587
            mail__options__secureConnection: false
            mail__options__auth__user: [email protected]
            mail__options__auth__pass: ghostauthpass
            NODE_ENV: production
        volumes:
            - ghost:/var/lib/ghost/content
        depends_on:
            - mysql
    mysql:
        image: mysql:8
        container_name: mysql
        restart: unless-stopped
        environment:
            MYSQL_ROOT_PASSWORD: mysqlrootpass
            MYSQL_DATABASE: ghost_db
            MYSQL_USER: ghost_user
            MYSQL_PASSWORD: ghost_pass
        volumes:
            - mysql_data:/var/lib/mysql
        ports:
            - "3306:3306"
    nginx:
        image: nginx:latest
        container_name: nginx
        restart: unless-stopped
        ports:
            - "80:80"
            - "443:443"
        volumes:
            - /root/nginx/conf.d:/etc/nginx/conf.d
            - /etc/letsencrypt:/etc/letsencrypt
        depends_on:
            - ghost
volumes:
    mysql_data:
    ghost:

Bina nginx ghost configuration files.

server {
    listen 80;
    server_name sub.domain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name sub.domain.com;
    ssl_certificate /etc/letsencrypt/live/sub.domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/sub.domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_set_header   Host $http_host;
        proxy_pass         http://ghost:2368;
    }
}

Update DNS dekat service provider atau cloudflare dan bina ssl dengan letsencrypt.

certbot certonly --nginx -d sub.domain.com
docker restart nginx

Tabah crontab untuk auto renew domain ssl certificate

crontab -e
0 3 * * * certbot renew --quiet --deploy-hook "docker restart nginx"

Tags