• Contact
  • Contact Us
  • Disclamer
  • Home 1
  • Home 2
  • Home 3
  • Privacy Policy
Tuesday, June 24, 2025
How VPS - How to use/setup VPS
  • Login
  • Home
  • Management guides
    • Web servers software
      • Directadmin
      • Hocvps Script
      • Centmin Mod
      • CWP
      • Kloxo-MR
      • Plesk
    • Control Panels
    • Securing VPS/Servers
      • SSL Certificates
      • Upgrading
      • Authentication
  • Operating System
    • CentOS
    • Fedora
    • Debian
    • Linux
    • Arch
    • BSD
    • CoreOS
  • Reviews
  • Coupon
    • Domain Coupon
    • Hosting Coupon
No Result
View All Result
  • Home
  • Management guides
    • Web servers software
      • Directadmin
      • Hocvps Script
      • Centmin Mod
      • CWP
      • Kloxo-MR
      • Plesk
    • Control Panels
    • Securing VPS/Servers
      • SSL Certificates
      • Upgrading
      • Authentication
  • Operating System
    • CentOS
    • Fedora
    • Debian
    • Linux
    • Arch
    • BSD
    • CoreOS
  • Reviews
  • Coupon
    • Domain Coupon
    • Hosting Coupon
No Result
View All Result
How VPS - How to use/setup VPS
No Result
View All Result
Home Operating System Fedora

How to Deploy Ghost on Fedora 25

How VPS by How VPS
December 1, 2019
in Fedora
0
0
SHARES
11
VIEWS
Share on FacebookShare on Twitter

Contents

  1. Using a Different System?
    1. Requirements
    2. Let’s Encrypt
    3. Install NodeJS
    4. Install Nginx
    5. Install Ghost
    6. Install PM2
    7. Conclusion
  2. Want to contribute?

Using a Different System?

  • How to Deploy Ghost on Ubuntu 16.04

  • How to Deploy Ghost on CentOS 7.3

  • How to Deploy Ghost on Debian 8.7

  • How to Deploy Ghost v0.11 LTS on Ubuntu 16.04

Are we missing a guide for your target system? Request one, or submit your own!


Ghost is an open source blogging platform that is gaining popularity among developers and ordinary users since its 2013 release. It puts focus on content and blogging. The most attractive thing about Ghost is its simple, clean, and responsive design. You can write your blog posts from a mobile phone. Content for Ghost is written using the Markdown language. Ghost is perfect fit for individuals or small groups of writers.

In this guide we are going to set up and deploy a secure Ghost blog on an Fedora 25 VPS using Let’s Encrypt, Certbot, Node.js, Nginx and PM2.

Requirements

  • Fedora 25 server instance with minimum of 1GB RAM.
  • You will probably have to open port 2368 with semanage port -a -t http_port_t -p tcp 2368.

Let’s Encrypt

Before starting this step, ensure that you have set DNS records for your domain.

We are going to use Let’s Encrypt CA and EFF’s Certbot client to obtain TLS certificate for our Ghost blog.
Don’t forget to replace all instances of example.com with your domain name.

  1. Update system:

    dnf check-update || dnf upgrade -y
    
  2. Install needed tools:

    dnf install @development-tools -y
    
  3. Install Certbot (a.k.a Let’s Encrypt client):

    dnf install certbot -y
    
  4. Check Certbot version:

    certbot --version
    # certbot 0.12.0
    
  5. Obtain a certificate using standalone” mode:

    certbot certonly --standalone --domains example.com,www.example.com --email [email protected] --agree-tos --rsa-key-size 2048
    

After going through previous steps, your certificate and private key will be in the /etc/letsencrypt/live/example.com directory.

Install NodeJS

Ghost currently supports Node versions 0.12.x, 4.2+, and 6.9+ only.

We are going to install supported version for Ghost which is v6 Boron LTS at the time of this writing.

  1. Download and install the latest LTS version of Node.js:

    dnf install nodejs -y
    
  2. Check Node and NPM version:

    node -v && npm -v
    # v6.10.2
    # 3.10.10
    

Install Nginx

  1. Download and install Nginx:

    dnf install nginx -y
    
  2. Check Nginx version:

    nginx -v
    # nginx version: nginx/1.10.2
    
  3. Start and Enable Nginx service:

    systemctl start nginx.service && systemctl enable nginx.service
    
  4. Configure Nginx as a reverse proxy:

    vi /etc/nginx/conf.d/ghost.conf
    
  5. Paste the following in /etc/nginx/conf.d/ghost.conf:

    server {
    
      listen 80;
      listen [::]:80;
      listen 443 ssl http2;
      listen [::]:443 ssl http2;
    
      server_name example.com www.example.com;
    
      ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    
      location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:2368;
      }
    
    }
    
  6. Check Nginx syntax:

    nginx -t
    
  7. Reload Nginx configuration:

    systemctl reload nginx.service
    

Install Ghost

If you want to host multiple Ghost blogs on same VPS, each Ghost instance must be running on a separate port.

  1. Make webroot directory:

    mkdir -p /var/www/
    
  2. Create a new ghost user:

    useradd -c "Ghost Application" ghost 
    
  3. Download Ghost:

    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.8/Ghost-0.11.8.zip -o ghost.zip
    
  4. Unzip Ghost:

    unzip -uo ghost.zip -d /var/www/ghost
    rm -f ghost.zip
    
  5. Navigate to webroot:

    cd /var/www/ghost
    
  6. Change the ownership of webroot directory:

    chown -R ghost:ghost .
    
  7. Switch to new ghost user:

    su - ghost
    
  8. Navigate to webroot:

    cd /var/www/ghost
    
  9. Install Ghost:

    npm install --production
    
  10. Configure Ghost by changing url and mail property of production object inside of config.js file:

    cp config.example.js config.js
    vi config.js
    
    
    var path = require('path'),
           config;
    
    config = {
      // ### Production
      // When running Ghost in the wild, use the production environment.
      // Configure your URL and mail settings here
      production: {
        url: 'https://example.com',
        mail: {
          options: {
             service: '',
                auth: {
                  user: '',
                  pass: ''
                }
              }
        },
            . . .
            . . .
        },
    }
    . . .
    . . .        
    

    NOTE: You should configure mail also. Consult the official Ghost documentation on how to do that.

  11. Start Ghost:

    npm start --production
    

    Ghost will now be running. Both blog front-end and admin interface are secured with HTTPS and HTTP/2 is working also. You can open your browser and visit site at https://example.com. Don’t forget to replace example.com with your domain name.

  12. Shut down Ghost process by pressing CTRL + C and exit from ghost user back to root user:

    exit
    

Install PM2

If you close your terminal session with your VPS, your blog will also go down. That’s not good. To avoid this, we are going to use the PM2 process manager. It will keep our blog up 24/7.

  1. Install latest stable version of PM2 process manager:

    npm install -g pm2@latest
    
  2. Check PM2 version:

    pm2 -v
    # 2.4.6
    
  3. Switch to ghost user again:

    su - ghost
    
  4. Set NODE_ENV environment variable to production:

    echo "export NODE_ENV=production" >> ~/.bashrc && source ~/.bashrc
    
  5. Start (daemonize) Ghost application with PM2:

    pm2 start /var/www/ghost/index.js --name "Ghost Blog"
    
  6. Navigate to https://example.com/ghost/ and create Ghost admin user. Do this as soon as possible.

Conclusion

That’s it. We now have a fully functional Ghost blog. If you want to change the default Ghost theme called Casper to a custom one, you can just download and unzip the theme into the /var/www/ghost/content/themes folder and select it via Ghost admin interface, located at https://example.com/ghost.

Want to contribute?

You could earn up to $300 by adding new articles

Submit your article
Suggest an update
Request an article
Previous Post

How to install Snort on CentOS 7?

Next Post

How to Install LimeSurvey CE on Fedora 28

Next Post

How to Install LimeSurvey CE on Fedora 28

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

No Result
View All Result

Recent Post

Install Imagemagick on CentOS
CentOS

Install Imagemagick on CentOS

by How VPS
June 28, 2023
0

This is how I installed Imagemagick on a vanilla CentOS server Start off by installing the prerequisites yum install php-pear...

Read more
how to Check phpinfo

How to Check phpinfo of Hosting or VPS?

June 28, 2023
Failed to download metadata for repo 'appstream' on Centos 8

How to fix error: Failed to download metadata for repo ‘appstream’ on Centos 8

February 25, 2022
How to Fix MySQL Error "Plugin 'InnoDB' registration as a STORAGE ENGINE failed"?

How to Fix MySQL Error “Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed”?

November 17, 2020
How to optimize Mysql or MariaDB

How to optimize Mysql or MariaDB

November 3, 2020

Recent News

  • Install Imagemagick on CentOS
  • How to Check phpinfo of Hosting or VPS?
  • How to fix error: Failed to download metadata for repo ‘appstream’ on Centos 8

Category

  • Arch
  • Authentication
  • Backups
  • BSD
  • Centmin Mod
  • CentOS
  • Control Panels
  • CoreOS
  • CWP
  • Debian
  • Directadmin
  • Encryption
  • Fedora
  • Firewalls
  • Hocvps Script
  • Hosting providers
  • Kloxo-MR
  • Linux
  • Mitigations
  • Operating System
  • Plesk
  • Reviews
  • Securing VPS/Servers
  • Security Patches
  • SSL Certificates
  • Uncategorized
  • Upgrading
  • VPS/Servers management guides
  • Vulnerability Detection
  • Web servers software
  • Webhosting Control Panel
  • About
  • Advertise
  • Careers
  • Contact

© 2025 JNews - Premium WordPress news & magazine theme by Jegtheme.

No Result
View All Result
  • Home
  • Management guides
    • Web servers software
      • Directadmin
      • Hocvps Script
      • Centmin Mod
      • CWP
      • Kloxo-MR
      • Plesk
    • Control Panels
    • Securing VPS/Servers
      • SSL Certificates
      • Upgrading
      • Authentication
  • Operating System
    • CentOS
    • Fedora
    • Debian
    • Linux
    • Arch
    • BSD
    • CoreOS
  • Reviews
  • Coupon
    • Domain Coupon
    • Hosting Coupon

© 2025 JNews - Premium WordPress news & magazine theme by Jegtheme.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In