There are two practical ways to create a Ghost blog: use Ghost(Pro), the managed hosted service, or install the free, open-source Ghost software on a server you control. Ghost(Pro) removes server administration and is the quickest route. Self-hosting costs less at the software level and gives you more control, but you must maintain the server, database, security, backups and email delivery.
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
This guide explains both routes, then walks through a production-oriented self-hosted installation on Ubuntu. The exact installer prompts can change between Ghost releases, so use the current Ghost documentation alongside these steps when you reach a version-specific screen.
As an Amazon Associate I earn from qualifying purchases.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallChoose between Ghost(Pro) and self-hosting
Your first decision affects cost, setup time and who is responsible when something breaks.
| Factor | Ghost(Pro) | Self-hosted Ghost |
|---|---|---|
| Infrastructure | Ghost provides and operates the hosting. | You provide a VPS or other compatible server. |
| Setup effort | Create an account, choose a plan and configure the publication. | Configure DNS, Ubuntu, NGINX, Node.js, MySQL, SSL and Ghost-CLI. |
| Software cost | Subscription required; no free tier was reported. | Ghost software is free and open source. |
| Ongoing work | Ghost handles the platform’s server maintenance. | You handle updates, backups, monitoring, SSL renewal and troubleshooting. |
| Control | Less infrastructure control, with a simpler operating model. | More control over the server and configuration, with more responsibility. |
| Newsletter delivery | Use the features and limits included with your Ghost(Pro) plan. | Arrange an external email delivery service for bulk newsletters. |
When Ghost(Pro) is the better choice
Choose the managed service if you want to publish rather than administer Linux. It is suitable when predictable operations, a quicker launch and provider-managed infrastructure matter more than controlling every component. Ghost(Pro) is paid, and plan limits and prices can change, so check the current Ghost pricing page before subscribing. Third-party pricing pages consulted for this guide reported approximately $15 per month when billed annually for a 1,000-member starter tier, approximately $18 month-to-month for that tier, about $29 per month billed annually for a Publisher tier and about $199 per month for a Business tier. Those figures are indicative reports dated before October 14, 2026, not confirmed quotations; treat the official checkout as authoritative.
#1 Best Overall
- Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
When self-hosting makes sense
Self-hosting is appropriate if you are comfortable administering a VPS, need configuration control, or want to pay directly for infrastructure instead of a managed subscription. A third-party guide estimated that a small site can start on a $5–$7-per-month VPS, but the server is only one part of the operating cost. Add domain registration, backups, monitoring and an email provider, and budget for your own time.
What you need before installing Ghost yourself
Ghost’s official Ubuntu installation requirements list the following baseline components:
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →- Ubuntu 22.04, 24.04 or 26.04.
- NGINX 1.9.5 or newer.
- A supported Node.js version. Ghost’s documentation should determine the version for the Ghost release you install.
- MySQL 8.0 or 8.4.
- systemd.
- At least 1 GB of memory.
- A registered domain name.
The requirements are a starting point, not a guarantee that every inexpensive VPS will perform equally well. A publication with many concurrent visitors, large images or several integrations may need more memory and storage. Check available disk space before installation and leave room for database growth, image uploads, logs and backups.
Use a clean server
Install Ghost on a newly provisioned Ubuntu server whenever possible. Existing web servers, reverse proxies, database packages and firewall rules can conflict with the installer. Record the server’s public IPv4 address and keep your provider’s recovery or console access available in case a remote configuration mistake locks you out.
Register the domain and plan DNS
You need a domain before the production install. Create an A record for the blog hostname, such as blog.example.com, pointing to the VPS’s public IP address. If the blog will be at the root domain, use the root-domain A record your DNS provider provides. Set DNS before running the installer because Ghost’s HTTPS setup can request a Let’s Encrypt certificate during installation; certificate issuance requires the hostname to resolve to the server.
DNS changes can take time to appear at different resolvers. Confirm that the hostname resolves to the intended IP address before beginning the SSL portion of the setup. Do not point the domain at an old server while the installer is trying to validate it.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Route A: create a Ghost(Pro) blog
The managed route avoids Linux administration. The names and order of screens can change, but the workflow is straightforward.
Rank #2
- Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (4GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- CanaKit Mega Heat Sink - Black Anodized
- Create a Ghost(Pro) account. Select the publication or plan that fits your expected members and publishing needs. Ghost(Pro) is subscription-only; verify the current recurring price and included limits before paying.
- Choose the publication address. Start with the Ghost-provided address if you want to configure the site before connecting a custom domain, or enter your domain when the setup flow asks for it.
- Connect your domain. Ghost will show the DNS records required for your hostname. Add those records at your DNS provider, then wait for the service to verify them.
- Open the admin area. Create your owner account, set a strong password and enable any available multi-factor authentication. Keep recovery details somewhere secure.
- Select and customize a theme. Use the design settings to set the publication name, logo, icon, colors, navigation and social links. Preview on a phone-sized viewport before publishing the changes.
- Create your first post. Open the editor, add a title, write the article, insert images or cards as needed, set the feature image and choose the publication date. Preview the post, then publish immediately or schedule it.
- Configure members and newsletters. Decide whether visitors can subscribe, whether newsletters are enabled and what confirmation or welcome messages they receive. Test the signup flow with an address you control before promoting it.
The managed route is complete when the domain resolves, HTTPS works, the admin account is protected and a test reader can load the site, subscribe and receive the expected message.
Route B: install Ghost on Ubuntu
The following procedure is for a fresh Ubuntu VPS that meets Ghost’s stated requirements. It intentionally avoids hard-coding a Node.js release because Ghost’s supported version can change; install the version named by the current official requirements for the Ghost release you select.
1. Log in and update the operating system
Connect to the server over SSH with an administrative account that can use sudo. Apply available security updates and reboot if the operating system requests it. The exact commands depend on your provider’s image and access policy, so follow its normal Ubuntu update procedure before installing application software.
Recommended Free Tools
2. Create a normal deployment user
Ghost-CLI expects to install Ghost under a regular user with sudo access rather than a root shell. Create a deployment user according to the Ubuntu administration instructions for your provider, grant the minimum sudo access needed for installation and use SSH keys instead of a password when practical.
Do not create a system user named ghost. Ghost’s official guide warns that this name conflicts with Ghost-CLI. The application directory and deployment username can use another name, such as your own administrative username.
3. Install the required platform components
Install and verify NGINX, MySQL 8.0 or 8.4, the Node.js version supported by your Ghost release and systemd. Ghost’s installer uses NGINX as the web-facing reverse proxy and MySQL for production data. Remove or disable unrelated services that are already binding to ports 80 or 443.
Secure the MySQL installation using your distribution’s normal hardening process. Create a database and database user through the Ghost installer or the official installation procedure; do not reuse a personal administrator password in application configuration.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Rank #3
- CanaKit Raspberry Pi 5 Essentials Starter Kit
4. Install Ghost-CLI
Install the command-line tool globally with npm:
sudo npm install ghost-cli@latest -g
Confirm that the command is available before proceeding:
ghost --version
If npm reports a Node.js compatibility error, stop and install the Node.js version supported by the Ghost release instead of forcing the installation with an unsupported runtime.
5. Prepare the site directory
Create a dedicated directory for the publication and give your deployment user ownership of it. The official Ghost installation guide shows the recommended directory layout and permissions for your Ubuntu release. Avoid installing into a directory served directly as static files by another web server; Ghost should run behind the NGINX configuration created by Ghost-CLI.
6. Run the Ghost installer
From the publication directory, run:
ghost install
The installer asks for values such as the blog URL, database details, an administrator account and whether to configure NGINX and SSL. Answer each prompt using the domain that already points to this server. Allow the installer to configure NGINX as a reverse proxy and request a Let’s Encrypt certificate when the prompts match your intended production setup.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteAn older Ubuntu 18.04 guide documents this general behavior, including automatic NGINX and Let’s Encrypt configuration, but current prompts and flags may differ. Follow the current Ghost-CLI output rather than copying flags from an old tutorial. If a prompt offers a test or development mode, do not select it for a public production blog unless you understand the consequences.
7. Verify the installation
After the installer completes, check the site in a browser over HTTPS and open the admin path shown by Ghost. Verify all of the following:
- The public URL redirects to HTTPS without a certificate warning.
- The homepage loads without NGINX 502 or 504 errors.
- You can sign in to the owner account.
- The admin interface can save a draft and upload an image.
- The server’s Ghost process is running under the intended non-root account.
- The domain in Ghost’s settings exactly matches the public hostname, including the protocol.
Keep the terminal output from the installation. It records the directory, service and configuration choices that you will need during recovery.
Rank #4
- Includes Raspberry Pi 5 16GB with 2.4Ghz 64-bit quad-core CPU (16GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
Set up the publication in Ghost
Create and protect the owner account
Use a unique password that is not reused on your hosting account or domain registrar. If Ghost presents a multi-factor authentication option, enable it and store the recovery method offline. The owner account controls themes, integrations, members and staff access, so do not share it for routine writing.
Configure the publication identity
In the admin settings, enter the publication title, description, logo, icon, accent color and social profiles. Keep the title and description specific enough that a first-time visitor understands the subject. Add a navigation link only after testing it in a private browser window.
Choose a theme and check responsive behavior
Install a theme compatible with your Ghost version, then preview it at desktop and mobile widths. Check the header, navigation, post template, author details, tag pages, search or membership components and the footer. A theme can change the available design controls, so do not assume that a setting documented for one theme exists in another.
Publish the first post
- Open the editor and enter a clear headline.
- Write the article in the editor, using headings, lists and images where they improve scanning.
- Add a feature image with appropriate dimensions and descriptive alternative text when the theme supports it.
- Set the URL slug, tags, author and excerpt if your theme displays them.
- Use preview to check typography, links, image loading and the appearance of embedded cards.
- Publish now or schedule a date and time. Reopen the live URL in a logged-out browser to test what readers see.
Configure members, comments and newsletters
Ghost can support memberships and newsletters, but a self-hosted installation still needs a dependable email-delivery arrangement. Bulk newsletter sending is a separate service concern from hosting the website. A third-party self-hosting guide names Mailgun as one possible provider; choose a service that supports your sending region, volume and authentication requirements.
Authenticate your sending domain
Follow the email provider’s instructions for SPF, DKIM and any DMARC records. Add the records at the DNS provider for the same domain used by your publication. Send a test message to more than one mailbox provider and inspect the headers for authentication results before inviting a large audience.
Free tools Windows power users keep installed
One-click scans. No signup required.
Test the entire signup path
Use a test address to subscribe, confirm the address if double opt-in is enabled, receive the welcome email, unsubscribe and subscribe again. Check that the publication name, sender address, links and unsubscribe mechanism are correct. Keep a separate test account so you can repeat this after an upgrade or theme change.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Maintenance responsibilities for a self-hosted blog
Self-hosting is not finished when the homepage loads. Establish a routine before publishing regularly.
Best Value
- Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM)
- Includes 32GB EVO+ Micro SD Card pre-loaded with 64-bit Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit 45W PD Power Supply for the Raspberry Pi 5
- Display Cable - 6 foot (Supports up to 4K 60p)
- Updates: Monitor Ghost release notes and apply Ghost, Node.js, Ubuntu, NGINX and MySQL updates that are supported together. Test a major upgrade on a backup or staging copy when possible.
- Backups: Back up the MySQL database, uploaded images, theme files and configuration. Store at least one copy outside the VPS. A backup that remains on the same disk does not protect you from disk failure or account loss.
- SSL: Confirm that certificate renewal is working and that port 443 remains reachable. A certificate expiring silently can make the entire publication appear offline.
- Monitoring: Watch disk usage, memory, service status, error logs and certificate expiry. Set an alert before the VPS reaches full disk capacity.
- Access control: Remove unused SSH keys and staff accounts, keep sudo access limited and use a firewall policy appropriate for SSH, HTTP and HTTPS.
- Email reputation: Monitor bounces, complaints and unsubscribe requests. Poor list hygiene can damage delivery even when the website itself is healthy.
Troubleshoot the problems that stop most Ghost launches
The installer cannot obtain an SSL certificate
Check that the A record points to this VPS, that the hostname in the installer is spelled exactly as the DNS record, and that ports 80 and 443 are reachable from the internet. Remove conflicting proxy or redirect rules temporarily, wait for DNS to converge and rerun the certificate step through the supported Ghost-CLI workflow.
NGINX returns 502 Bad Gateway
A 502 usually means NGINX cannot reach the Ghost process. Check the Ghost service status and logs, confirm that the process is listening on the local address configured by Ghost-CLI and verify that the deployment user can read the application directory. Do not expose the application port publicly as a substitute for fixing the reverse proxy.
Ghost-CLI rejects the Node.js version
Use the Node.js version listed as supported for your Ghost release. The requirement is release-dependent; one third-party Ubuntu 24.04 guide associates Ghost 6.x with Node.js 22 LTS, while another claim mentions Node.js 22 or 24 LTS. Those conflicting claims are not a substitute for the official support matrix. Do not upgrade Node.js blindly on a working production site without checking Ghost compatibility and making a backup.
The site runs out of memory
Review memory usage, database size, image processing and other services on the VPS. Stop unnecessary services, optimize oversized uploads and move to a larger instance if the workload genuinely exceeds the minimum 1 GB requirement. Increasing swap can reduce abrupt process termination in some situations, but it is not a replacement for adequate physical memory.
Newsletter messages do not arrive
Separate website availability from email delivery. Check the external provider’s sending status, DNS authentication records, bounce logs and spam-folder placement. Verify that the sender domain is authorized and that the recipient completed any confirmation step. A functioning Ghost admin screen does not prove that bulk email is configured.
How to choose your launch route
- Choose Ghost(Pro) if you want the shortest path, do not want to maintain Linux and can accept a recurring subscription.
- Choose self-hosting if you can patch a server, maintain backups and troubleshoot NGINX, MySQL, DNS, SSL and email.
- Start with Ghost(Pro) if your priority is validating a publication idea; migrate only after you have a clear operational reason and a tested export and import plan.
- Self-host only when the lower software cost or additional control justifies the maintenance time and separate email-service cost.
Whichever route you select, launch with a verified domain, HTTPS, a protected owner account, a tested first post and a working signup and email flow. Those checks matter more to readers than whether Ghost is running on your server or Ghost’s.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




