Why Ghost?
Ghost has several practical advantages over alternatives like WordPress:- Lightweight — Ghost is purpose-built for blogging with no unnecessary features. This keeps memory usage low and makes it suitable for running on modest hardware or a small VPS.
- Low resource consumption — the Node.js runtime and minimal feature set mean Ghost typically runs comfortably within 512 MB of RAM under normal load.
- Fully customizable themes — Ghost uses a Handlebars-based theming system. You can build themes from scratch or modify existing ones with full control over markup and styles.
- Extensible — Ghost supports webhooks, integrations, and a native API, making it easy to connect to external services or build custom workflows around your content.
Prerequisites
You need Docker and Docker Compose installed on your server. Verify both are available before proceeding:Setup
Create a project directory
Create a dedicated directory for your Ghost deployment. All data — including the database and uploaded content — will be stored here.
Create the Docker Compose file
Create a Ghost will be accessible on port
docker-compose.yml file in your project directory with the following contents. This configuration runs Ghost 5 alongside a MySQL 8.0 database.10002 of your host. The ./content volume persists your themes, images, and uploaded files across container restarts. The ./mysql volume persists your database.Start the containers
Start Ghost and MySQL in detached mode:Docker will pull the required images on the first run. Once complete, Ghost will be available at
http://your-server:10002.Complete the Ghost setup wizard
Open your browser and navigate to
http://your-server:10002/ghost. You will be prompted to create an admin account and configure your blog’s title and details. Complete the wizard to finish the initial setup.Customizing your theme
Themes are hot-reloadable in development mode, and Ghost’s theme API is well-documented. You can also install community themes by dropping the theme folder into./content/themes/ and activating it from the admin panel.
Updating Ghost
To update to a newer Ghost version, update the image tag in yourdocker-compose.yml (or pull the latest ghost:5 image) and restart:
./content and ./mysql directories before upgrading.