I'm Haunted by a Ghost
After much consideration and a fair share of late-night coding sessions, I’ve decided to transition from GitHub Pages to a self-hosted GhostCMS for my website. This decision wasn't taken lightly, but it's one that I believe will greatly enhance both the functionality and user experience of my site.
Why the Change?
Flexibility and Power: While GitHub Pages served me well with its simplicity and integration with Jekyll, I found myself yearning for more control and features that could elevate the user experience. Enter GhostCMS, a modern platform built specifically for professional publishing. Ghost provides an array of powerful tools right out of the box, from robust SEO features to detailed analytics and custom themes.
User-Friendly Interface: Ghost’s beautifully designed, intuitive interface makes it easier to manage content, publish posts, and even collaborate with other writers. It's built with the content creator in mind, making the process of creating and distributing content much more streamlined.
Performance and Speed: Self-hosting Ghost on a dedicated server allows for optimized performance tailored to my exact needs. This means faster load times and a more responsive browsing experience for my readers.
What is GhostCMS?
GhostCMS is a powerful, open-source platform designed for one thing: publishing. Unlike multi-purpose CMS like WordPress, Ghost is laser-focused on providing the best tools for modern-day content creators. With support for Markdown, dynamic routing, and an extensive marketplace of themes and integrations, Ghost stands out as a formidable choice for anyone serious about their online presence.
My Migration Journey
Moving my content from GitHub Pages to GhostCMS was a well-thought-out process. I started by exporting my posts, configuring my new Ghost instance, and then importing all my content. There were a few hiccups along the way, but the community support and extensive documentation made the transition smoother than I anticipated.
Installation Process
Step 1: Setting Up the Server
First, I chose to self-host my GhostCMS in my Proxmox server, I created a Centos container with SSH
Step 2: Installing Prerequisites
I connected to my container via SSH and installed the necessary prerequisites:
dnf update -y
dnf install -y yum-utils device-mapper-persistent-data lvm2
Step 3: Installing Docker
One Deployment method is to install it via Docker
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce --nobest
systemctl enable --now docker
Step 4: make a Docker compose file
Create a file named docker-compose.yml
with the content below:
version: '3.1'
services:
ghost:
image: ghost:5-alpine
restart: always
ports:
- 8080:2368
environment:
database__client: mysql
database__connection__host: db
database__connection__user: ghost
database__connection__password: dbpassword
database__connection__database: ghost
url: https://ajohnsc.com
volumes:
- ghost:/var/lib/ghost/content
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: dbrootpassword
MYSQL_USER: ghost
MYSQL_PASSWORD: dbpassword
MYSQL_DATABASE: ghost
volumes:
- db:/var/lib/mysql
volumes:
ghost:
db:
Step 5: Standup the container
In the same directory where the compose file is:
docker compose up -d
Conclusion
And that’s it! After successfully migrating my content and configuring my new GhostCMS, I’m thrilled with the results. GhostCMS offers flexibility, performance, and a user-friendly interface that elevates my content creation process. Stay tuned as I dive deeper into the specifics of using Ghost and share more tips and tricks on optimizing your self-hosted Ghost instance.
Whether you’re a developer, blogger, or business owner, I hope my experience provides some valuable insights into why and how you might consider making a similar move. Thanks for joining me on this journey!