Deploy Ghost on a VPS in Minutes

Launch a self-hosted Ghost publication on a VPS you fully control. Ghost-CLI wires up Node.js, MySQL, an NGINX reverse proxy, and Let's Encrypt SSL in a single guided session — no managed plan, no cut of your revenue.

What you can do with self-hosted Ghost on a VPS

Ghost is an open-source headless CMS built for publishing and newsletters. Run it on a VPS, and you own the whole stack — editor, memberships and email delivery — instead of paying a monthly fee for managed hosting.

Run your own publication and newsletter

Ghost ships a focused toolset: a distraction-free editor, native email newsletters and membership tiers. It's a lean WordPress alternative aimed squarely at writers and newsletter operators, running on infrastructure you own rather than a shared platform.

Keep 100% of your subscription revenue

Connect Stripe, turn on paid tiers, and Ghost takes 0% on a self-hosted install — your only costs are the VPS and standard Stripe fees. A single $10.19/mo Ghost VPS replaces the $29/mo managed Publisher plan from your first subscriber.

Own the full stack with root access

You control every layer: the Ghost Node.js process, MySQL, the NGINX reverse proxy and the systemd service that restarts Ghost on reboot. Install any theme, edit configs and tune the server the way managed ghost hosting never lets you.

Deliver newsletters with Mailgun

Ghost hands bulk email to Mailgun over SMTP for reliable delivery, with a free tier covering 3,000 emails a month. Place your VPS near your audience — Frankfurt, Singapore, and more — to cut email latency and keep pages fast for the readers most likely to convert.

Ship fast, custom themes

Ghost themes compile to static HTML with the Handlebars templating engine, so pages load fast out of the box. Pair that with a CDN and full control over caching for performance a shared plan can't match.

Scale on your own terms

Start small and grow. Add RAM or storage as your subscriber list and media library expand — no reprovisioning, no forced migration to a pricier tier.

Choose a VPS plan for Ghost

Ghost, MySQL, and NGINX use around 1.2 GB at rest, so RAM is the spec that matters, and Start VPS is the minimum that fits comfortably. Begin with a Start VPS for a personal blog or small newsletter; move to Medium VPS once it's an active publication with a growing subscriber list. Every plan includes one dedicated IPv4 address, free weekly backups, KVM, and full root/SSH access. RAM, drive, and other specs are scalable later. One caveat on the Start plan: outbound SMTP ports are blocked by default — open a support ticket to enable email before configuring your newsletter (a KYC check may apply).

  • 40 Countries
    Linux
    Intel Xeon
    AMD Ryzen

    From$10.19 / 1 month
    $9.68 with is*smart
    • Xeon 2x2.20 GHz CPU
    • 2 Gb RAM
    • 30GB SSD Drive
    • 3 Tb Bandwidth
    • IPV4 optional
    • 1Gbps Port
    • Weekly Backup
    • KVM Virtualization
    • Control panels
  • 40 Countries
    Linux
    Intel Xeon
    AMD Ryzen

    From$21.24 / 1 month
    $20.18 with is*smart
    • Xeon 3x2.20 GHz CPU
    • 4 Gb RAM
    • 40GB SSD Drive
    • Unmetered Bandwidth
    • IPV4 optional
    • 1Gbps Port
    • Weekly Backup
    • KVM Virtualization
    • Control panels
  • 40 Countries
    Linux
    Intel Xeon
    AMD Ryzen

    From$33.99 / 1 month
    $32.29 with is*smart
    • Xeon 4x2.20 GHz CPU
    • 8 Gb RAM
    • 50GB SSD Drive
    • Unmetered Bandwidth
    • IPV4 optional
    • 1Gbps Port
    • Weekly Backup
    • KVM Virtualization
    • Control panels

Boost Your VPS Server Resources

Check out how you can change the configuration of your VPS. You can purchase additional drive space, increase CPU performance, add RAM, and take advantage of additional services without having to switch to a new plan.

How to deploy Ghost on a VPS

A full install of Ghost 6.x on a fresh Ubuntu 24.04 server takes about 15 minutes. Point a DNS A-record at your VPS IP first — Let's Encrypt needs DNS resolving before it can issue your SSL certificate. Hardening and email setup are listed as next steps at the end. The steps below cover the core install; for the full walkthrough with every command and screenshot, see our complete guide to installing Ghost on a VPS in the blog.

Step 01 — Create a non-root sudo user

Ghost-CLI refuses to run as root. Don't name the user ghost — it clashes with the system user Ghost-CLI creates during setup.

adduser ghostadminusermod -aG sudo ghostadmin

Step 02 — Install dependencies and open the firewall

Install NGINX, MySQL, and the packages for Node.js, then allow web traffic:

su - ghostadminsudo apt-get update && sudo apt-get upgrade -ysudo apt-get install -y nginx mysql-server ca-certificates curl gnupgsudo ufw allow 'Nginx Full'sudo ufw allow OpenSSHsudo ufw enable

Switch MySQL's root user to password auth, which Ghost requires:

sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY 'your_secure_password'; FLUSH PRIVILEGES;"

Step 03 — Install Node.js 22 LTS

Ghost 6.x runs on Node.js v22 only. Install it from NodeSource:

sudo mkdir -p /etc/apt/keyringscurl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpgecho "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.listsudo apt-get update && sudo apt-get install -y nodejs

Step 04 — Install Ghost-CLI

Install the official installer globally as root, then switch back to your user:

exitnpm install ghost-cli@latest -gsu - ghostadmin

Step 05 — Create the install directory and run the installer

Ghost lives in /var/www/ghost with your user as owner:

sudo mkdir -p /var/www/ghostsudo chown ghostadmin:ghostadmin /var/www/ghostsudo chmod 775 /var/www/ghostcd /var/www/ghostghost install

Answer the wizard with your blog URL (full https:// domain), MySQL details, and yes to the NGINX, SSL and systemd prompts. Ghost-CLI configures the reverse proxy, requests a Let's Encrypt certificate and starts Ghost as a systemd service.

Step 06 — Go live and confirm the ports

Your admin panel is now at https://yourdomain.com/ghost/. Ports 80 and 443 are public via NGINX; Ghost (2368) and MySQL (3306) stay bound to localhost, so no extra firewall rules are needed. Open the admin URL to create your account and publish your first post.

Next steps (before production): harden SSH, connect Mailgun for newsletters, set up monitoring, and run ghost backup before every ghost update — rollback a bad update with ghost update --rollback.

Common issues

  • Ghost-CLI refuses to run as root. That's by design — Ghost-CLI won't install under the root account. Create a non-root sudo user first and run the install from there. Don't name that user ghost either, as it collides with the system user Ghost-CLI creates during setup.
  • SSL step is skipped during install. If Ghost-CLI prints "SSL certs cannot be generated for IP addresses, skipping," you ran the install against an IP instead of a domain. Point a DNS A-record at your VPS before installing and enter the full https:// domain as your blog URL — Let's Encrypt needs DNS resolving to issue the certificate.
  • Ghost can't connect to MySQL. On Ubuntu, MySQL 8's root user defaults to socket-based authentication, which Ghost can't use. Switch it to password auth with mysql_native_password, and use those credentials in the install wizard.
  • Newsletter emails don't send. Outbound SMTP is blocked by default on the Start plan, so Mailgun delivery fails until it's enabled. Open a support ticket to unblock the SMTP ports (a KYC check may apply), then add your Mailgun API key under Settings → Newsletters.
  • Install fails on the wrong Node.js version. Ghost 6.x runs on Node.js v22 LTS only and will refuse to install on Node 18 or 20. Install v22 from NodeSource and confirm with node --version before running ghost install. Note also that MySQL 8 is required — MariaDB isn't supported for production.

is*hosting infrastructure is a solid base for Ghost

Dedicated IPv4 and SSL on every plan

Ghost needs a public IP to issue SSL and accept traffic. Every is*hosting VPS includes a dedicated IPv4 by default, so Let's Encrypt certificates issue cleanly with no extra setup.

Free weekly backups, easy to restore

All plans include free weekly VPS backups. Pair them with ghost backup before every update, and rolling back a failed migration is a fast, low-risk operation.

40+ global locations for fast delivery

Place your Ghost VPS close to your readers — Europe, Asia, the Americas — to cut newsletter latency and keep pages fast for the audience most likely to become paying members.

Ready to launch your Ghost VPS?

Own your publication, keep every dollar of subscription revenue, and run Ghost on hosting you control. Spin up a Ghost VPS from $10.19/mo, with root access and SSL on delivery.

Launch Ghost on VPS

Frequently asked questions about Ghost hosting

What is Ghost, and how is it different from WordPress?

Ghost is an open-source, headless CMS built specifically for publishing and newsletters. Where a general-purpose CMS piles on plugins, Ghost ships a focused set of tools — editor, memberships, native email, and Stripe subscriptions — which makes it a lean WordPress alternative.

Why self-host Ghost instead of using managed Ghost hosting?

Managed Ghost(Pro) starts at $29/mo for paid subscriptions. A self-hosted Ghost VPS starts at $10.19/mo, gives you full root access, and takes 0% of your revenue. The savings begin before your first subscriber dollar.

What do I need to install Ghost on a VPS?

A domain with an A-record pointing at your VPS, Ubuntu 22.04 or 24.04, a non-root sudo user, Node.js v22 LTS, and MySQL 8. Ghost-CLI wires everything together in one guided session.

Can I run Ghost with Docker?

Yes — a Ghost Docker Compose install is supported and is the route for fully self-hosting features like ActivityPub. The one-click Ghost-CLI method above is the fastest path for most publications.

How do I send newsletters from a self-hosted Ghost?

Ghost uses Mailgun over SMTP for bulk email. Add your Mailgun API key and domain under Settings → Newsletters. On the Start plan, ask is*hosting support to unblock SMTP ports first.

Does self-hosting Ghost include SSL?

Yes. Ghost-CLI provisions a free Let's Encrypt certificate during install and NGINX handles HTTPS on port 443 automatically — as long as your DNS is pointing at the server beforehand.

Do you offer managed VPS hosting for Ghost?

Choose unmanaged for full root-level control of your Ghost install, or managed if you'd rather the is*hosting team handle OS updates, monitoring, and backups while you focus on publishing.

More from is*hosting

Data Storage

Off-server backups for your Ghost content, database exports, and configuration. Faster to restore a targeted backup than to rebuild a server from scratch.
Explore
From $1.00 /mo

Dedicated Servers

Move a high-traffic publication to bare metal with root and full hardware control when a VPS is no longer enough.
Explore
From $75.00 /mo

Recent Posts

  • Mailcow on VPS

    Mailcow on a VPS: Your Own Mail Server Without the Per-Seat Bill

    A full guide to self-hosting email with Mailcow on a VPS: Docker setup, DNS and DKIM records, spam filtering, and webmail, with no per-seat fees to pay.

    UTC 2026-10-01 9 min reading
  • How to Install Ghost on a VPS: Self-Hosting Guide

    How to Install Ghost on a VPS: Self-Hosting Guide

    Install Ghost 6 on a VPS and run your own publication. Native newsletters, Stripe paid tiers, and free SSL, replacing the $29/mo Ghost(Pro) Publisher plan.

    UTC 2026-09-29 8 min reading
  • Nextcloud on VPS: Self-Hosted File Sync Without the Per-Seat Bill

    Nextcloud on VPS: Self-Hosted File Sync Without the Per-Seat Bill

    Installing Nextcloud on a VPS using the official All-in-One method via Docker. From a blank VPS to a working instance in less than 10 minutes.

    UTC 2026-09-22 8 min reading