
Deploy Ghost on Your Own Server
Ghost is a free and open source blogging platform written in JavaScript and distributed under the MIT License
Want to deploy Ghost on your server faster? Try Senate with one-command setup, automatic HTTPS and monitoring.
What is Ghost?
Ghost is a fully open source, adaptable platform for building and running a modern online publication. We power blogs, magazines and journalists from Zappos to Sky News.
Self-Host Ghost
Follow these steps to deploy on your own server.
Install Docker
Skip this step if Docker is already installed on your server.
curl -fsSL https://get.docker.com | sh
Configure
Customize the settings below. Defaults work for most cases.
General
Deploy
Copy the configuration and run it on your server.
services:
ghost:
image: bitnamilegacy/ghost:5.2.2
environment:
GHOST_BLOG_TITLE: User blog
GHOST_DATABASE_HOST: ghost-db
GHOST_DATABASE_NAME: ghost
GHOST_DATABASE_PASSWORD: ""
GHOST_DATABASE_PORT_NUMBER: "3306"
GHOST_DATABASE_USER: ghost
GHOST_EMAIL: youremail@example.com
GHOST_ENABLE_HTTPS: yes
GHOST_HOST: blog.example.com
GHOST_PASSWORD: ""
GHOST_PORT_NUMBER: "2368"
GHOST_SMTP_FROM_ADDRESS: blog@example.com
GHOST_SMTP_HOST: smtp.gmail.com
GHOST_SMTP_PASSWORD: ""
GHOST_SMTP_PORT: "587"
GHOST_SMTP_PROTOCOL: ""
GHOST_SMTP_USER: your_email@gmail.com
GHOST_USERNAME: user
volumes:
- ghost-data:/bitnami/ghost
depends_on:
- ghost-db
ghost-db:
image: bitnamilegacy/mysql:8.0
environment:
MYSQL_DATABASE: ghost
MYSQL_PASSWORD: ""
MYSQL_ROOT_PASSWORD: ""
MYSQL_ROOT_USER: admin
MYSQL_USER: ghost
volumes:
- ghost-db-data:/bitnami/mysql
volumes:
ghost-data: {}
ghost-db-data: {}
Then run:
docker compose up -d
Access
Once started, access your app at http://localhost:2368
Why Self-Host Ghost?
Full Data Ownership
Your data stays on your servers. No third-party access.
No Monthly Fees
Pay only for your server. No per-seat or usage charges.
Complete Control
Customize, backup, and scale on your own terms.
Privacy & Compliance
Meet GDPR, HIPAA, or internal security requirements.
Technical Details
Docker Image
bitnamilegacy/ghost:${ghost_version}Want to go faster?
Try Senate! Senate handles Docker, HTTPS, updates, and monitoring for you. Deploy any of our 300+ apps with a single command.
Install on any Linux server:
sh -c "$(curl -sSL https://get.senate.sh)"