WordPress
CMS for websites and blogs
Websites / CMSFree
Blog and email newsletters
The script is free · VPS from $2.79 per month · installs in about 4 minutes
root@vps:~# command -v docker >/dev/null || curl -fsSL https://get.docker.com | sh; D=blog.example.com; git clone https://github.com/TryGhost/ghost-docker.git /opt/ghost && cd /opt/ghost && cp .env.example .env && cp caddy/Caddyfile.example caddy/Caddyfile && sed -i "s/^DOMAIN=.*/DOMAIN=$D/" .env && sed -i "s/^DATABASE_ROOT_PASSWORD=.*/DATABASE_ROOT_PASSWORD=$(openssl rand -hex 32)/" .env && sed -i "s/^DATABASE_PASSWORD=.*/DATABASE_PASSWORD=$(openssl rand -hex 32)/" .env && docker compose pull && docker compose up -d
✓ Ghost 6.67.0 installed · about 4 minutes
root@vps:~#
Ghost is a platform for blogs, media and newsletters. Write in a convenient editor, publish to your site and send to subscribers by email at the same time, and enable paid subscriptions via Stripe.
On your own server there are no Ghost(Pro) hosting fees and no subscriber limits. The site is fast: Ghost runs on Node.js and is SEO-optimized out of the box.
The command deploys the official ghost-docker Docker stack: Ghost, MySQL and Caddy with automatic HTTPS. You need a domain pointed at the server.
For Ghost: at least 1 vCPU, 2 GB RAM and 10 GB NVMe.
Three steps in the bot or one command over SSH; installation takes about 4 minutes.
Open @ExpressHost_bot and pay for a VPS. The server will be ready in about 60 seconds.
At the “Add-ons” step pick the script from the library, or run it later: Server settings → Scripts.
Before launching, replace blog.example.com with your domain that has an A record pointing to the server
Connect to the server as root and run the command. Supported systems: Ubuntu 22.04, Ubuntu 24.04, Debian 12.
command -v docker >/dev/null || curl -fsSL https://get.docker.com | sh; D=blog.example.com; git clone https://github.com/TryGhost/ghost-docker.git /opt/ghost && cd /opt/ghost && cp .env.example .env && cp caddy/Caddyfile.example caddy/Caddyfile && sed -i "s/^DOMAIN=.*/DOMAIN=$D/" .env && sed -i "s/^DATABASE_ROOT_PASSWORD=.*/DATABASE_ROOT_PASSWORD=$(openssl rand -hex 32)/" .env && sed -i "s/^DATABASE_PASSWORD=.*/DATABASE_PASSWORD=$(openssl rand -hex 32)/" .env && docker compose pull && docker compose up -d| Port | Protocol | Purpose |
|---|---|---|
| 80 | tcp | HTTP and certificate issuance |
| 443 | tcp | Site and admin panel over HTTPS |
blog.example.com with your domain that has an A record pointing to the serverhttps://your-domain/ghost and create the site ownerDidn’t find an answer? Message @ExpressHost_SupportBot.
Ghost is faster and simpler for a blog with a newsletter. WordPress is more flexible thanks to plugins: stores, catalogs, complex sites.
cd /opt/ghost && docker compose pull && docker compose up -d.
Uploads are in /opt/ghost/data/ghost, the MySQL database is in /opt/ghost/data/mysql.
Ghost installs at checkout — in the bot.
Netherlands, Amsterdam
$2.89/mo
$0.10 for 24 hours · $0.72 for 7 days
Pick Ghost at the “Scripts” step when you order the server.
Germany, Frankfurt
$3.14/mo
$0.11 for 24 hours · $0.79 for 7 days
Pick Ghost at the “Scripts” step when you order the server.
Poland, Warsaw
$2.79/mo
$0.10 for 24 hours · $0.70 for 7 days
Pick Ghost at the “Scripts” step when you order the server.
Estonia, Tallinn
$3.10/mo
$0.11 for 24 hours · $0.78 for 7 days
Pick Ghost at the “Scripts” step when you order the server.