October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
VGSources
Blog

How to Self-Host Ghost with Your Own Configuration and Theme

Set up Ghost on your own VPS with the supported Ubuntu, Node.js, MySQL and NGINX stack, then configure production settings and deploy a custom theme without overwriting persistent content.
Length12 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For a standard production Ghost publication, provision a VPS with Ubuntu 24, Node.js 22 LTS, MySQL 8.0, NGINX, systemd, at least 1 GB of memory, a registered domain and a non-root user. Install Ghost-CLI, run ghost install, then manage production settings in config.production.json and install your custom theme through Ghost Admin. This approach gives you server-level control while keeping Ghost’s supported installation, upgrade and permission model.

What self-hosting Ghost actually involves

Self-hosting means your publication runs on infrastructure you control rather than on Ghost’s managed service. You are responsible for the virtual private server, operating-system updates, DNS, backups, database protection, mail delivery and recovery. In return, you can choose the server layout, control configuration files and deploy a theme built specifically for your publication.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Ghost’s recommended production path is Ghost-CLI on a VPS. The supported stack is Ubuntu 24, Node.js 22 LTS, MySQL 8.0, NGINX and systemd, with at least 1 GB of memory and a non-root Linux user. Ghost can be made to run in other environments, but Ghost describes those alternatives as not officially supported or widely adopted. For a gaming site, this standard path is usually the least surprising option: it handles the web server, process supervision, database setup and TLS wiring without requiring you to assemble each component manually.

The key boundary is between Ghost core and your persistent content. Keep themes, images and other site data in the content directory. Do not edit files inside versioned Ghost core directories to customize the publication; upgrades can replace those files.

#1 Best Overall
Muxiziu Halloween Ghost Figurine, Spooky & Cute Reading Ghost Statue for Bedroom, Desk, Party Decor, Book Lovers Gifts, Funny Light Up Ghost Halloween Decor Indoor (5 in)
  • Charming Design: Adorn your space with our charming resin ghost figurines, a perfect blend of whimsy and warmth. This cute ghost decor depicts a ghost holding a book and reading, emitting a soft glow. Crafted from high-quality resin materials, this cute ghost serves as an enchanting halloween decor item and a year-round home decor accent, ideal for book lovers and those who adore spooky home decor.
  • Soft Warm Glow: Create a cozy ambiance with the gentle illumination of our cute ghost statue. The warm light is easy on the eyes, making it perfect for use as a halloween bedroom decor, spooky home decor, or cute bookshelf decor. It provides just the right amount of light for nighttime reading or creating a calming atmosphere without being too bright or harsh.
  • Multifunctional designed: This mini ghost figurines is designed to be portable, so you can place it anywhere. Use it as halloween indoor decorations, desk decor, mantel decorations, or a centerpiece for your halloween party. Its compact size (5 inches) makes it great for bookshelf decor, spooky office decor, or halloween decorations indoor.
  • Perfect Gift for Halloween & Book Lovers: Searching for a thoughtful gift? This cute ghost figurine is an ideal present for halloween lovers, readers, collectors, and fans of funny home decor. It makes a memorable halloween gift, birthday gift, or holiday surprise that combines humor, function, and charm—sure to delight anyone who enjoys spooky gifts or book lover gifts.
  • Portable and Easy to Use: Enjoy hassle-free decorating with our portable halloween ghosts statue. Allowing instant placement on tables, shelves, or nightstands. Whether used for halloween 2026 decor, year-round indoor figurine, or party decorations, this ghost decor adds a playful yet elegant touch with zero setup required.

Self-hosting or Ghost(Pro)?

Both models publish the same type of Ghost site, but they place different responsibilities on you. Choose according to how much infrastructure work you want to own.

Consideration Self-hosted Ghost Ghost(Pro)
Server control You choose the VPS, operating system, database arrangement and deployment process. The hosting platform manages the underlying service.
Maintenance You handle operating-system updates, Ghost upgrades, backups, monitoring and incident recovery. Routine platform maintenance is managed for you.
Database You operate and protect MySQL, including credentials and backups. The managed service handles database operations.
Reverse proxy and TLS Ghost-CLI can configure NGINX and SSL during installation, but you remain responsible for checking renewals and DNS. The managed platform provides the hosting-layer configuration.
Configuration access You can edit environment-specific settings and supply secrets through environment variables. Configuration is constrained to the controls exposed by the managed service.
Theme workflow You can upload ZIP files or develop locally and deploy your own build. You use the theme controls and deployment options provided by the service.
Operational workload More control and more administration. Less server administration and less low-level control.

Self-hosting is a good fit when you need server access, a custom deployment pipeline, or control over where data and services run. A managed plan is simpler when your priority is publishing rather than maintaining Linux, MySQL and NGINX.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Requirements before you install

  • A VPS: use a current Ubuntu 24 server with at least 1 GB of memory. Larger audiences, image-heavy pages, memberships and traffic spikes may require more resources, but the documented minimum is 1 GB.
  • A domain: register the publication’s domain and be ready to point its DNS records to the VPS address.
  • A non-root account: create an administrative Linux user that can use sudo. Do not run routine Ghost commands as root.
  • Node.js 22 LTS: install the version required by the current Ghost production stack before installing Ghost-CLI.
  • MySQL 8.0: Ghost-CLI can create and configure the restricted database user during installation.
  • Outbound mail: obtain SMTP details from the mail service you intend to use. Ghost requires mail settings in production for administrative and member-related messages.
  • DNS access: you need to create or edit the records that make the domain resolve to the server before SSL can be issued reliably.
  • A backup destination: decide where database exports, uploaded images and theme ZIP files will be stored before launch.

Keep the domain, database and mail credentials available, but do not paste secrets into public repositories or support tickets. If you plan to deploy through automation or containers, environment variables can keep those secrets out of a checked-in JSON file.

Install Ghost with Ghost-CLI

Ghost describes ghost install as the one-stop command for obtaining a running production installation. Run the sequence from the non-root account in the directory where the site should live.

  1. Connect to the VPS and update its operating system. Log in as your non-root user, apply the distribution’s security updates and confirm that the server hostname and clock are correct.
  2. Install the required runtime. Set up Node.js 22 LTS and MySQL 8.0 using the supported Ubuntu packages or installation method for your server. Verify the versions before continuing.
  3. Install Ghost-CLI globally with npm. A typical installation command is npm install ghost-cli@latest -g. If your npm installation requires elevated permission for global packages, use the system’s documented sudo pattern rather than running the Ghost site itself as root.
  4. Create and enter the site directory. Choose a dedicated directory for this publication, then change into it before running the installer. The directory should be owned by the account that will manage the Ghost installation.
  5. Run the installer. Start ghost install and answer the prompts for the site URL, MySQL connection, administrator account and mail configuration. Use the complete public URL, including https:// when SSL is enabled.
  6. Allow the setup stages to complete. Ghost-CLI can configure a restricted MySQL user, NGINX reverse proxy, SSL, database migration, a low-privilege Linux user and a systemd service. Read each prompt instead of accepting a value that does not match your domain or database plan.
  7. Confirm the result. Open the site URL and the Ghost admin area over HTTPS. Create a test post, upload a small image and send a test message if mail is configured. Fix DNS, certificate or SMTP errors before importing a large library.

The installer’s automation reduces manual wiring, but it does not remove the need for operational checks. Record the installation directory, Linux account, database name, backup location and the date of each Ghost upgrade.

Understand the Ghost installation layout

Ghost-CLI uses a predictable layout so upgrades can switch the active Ghost version without overwriting persistent content.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Path or directory Purpose What to do with it
.config.[env].json Environment-specific configuration files used by the installation. Keep production settings valid and protected; do not expose secrets.
content Persistent site data, including themes, images and other uploaded content. Back it up and keep custom themes here so core upgrades do not overwrite them.
current The Ghost version currently selected as active. Do not edit core files here to customize your design.
system System integration used by the installation. Let Ghost-CLI manage it unless you have a documented administrative reason.
versions Installed Ghost releases used by the upgrade and rollback layout. Treat versioned releases as managed application files.

Because the content directory is the durable part of the layout, include it in backups along with the MySQL database. A database-only backup cannot restore uploaded images or themes, while a content-only copy cannot restore posts, members and settings stored in MySQL.

Configure production settings in config.production.json

For a self-hosted installation, a custom configuration file can override Ghost’s defaults. Production settings belong in config.production.json at the installation root, not in a development-only configuration file. The file must be syntactically valid JSON: use double-quoted property names and string values, commas between properties and no comments.

The three required production areas

Area What it controls Important qualification
url The canonical public address Ghost uses for links, redirects, feeds and administrative callbacks. Use the complete public URL. Include https:// when SSL is enabled; do not use an internal hostname.
database The MySQL connection details Ghost uses to store posts, settings, members and other structured data. Use the restricted database account created for Ghost rather than a broad administrative MySQL account.
mail SMTP delivery for administrative and publication messages. Enter the host, port, authentication and sender details supplied by your mail provider, then test delivery.

Keep the configuration environment-specific. A local Ghost instance and the live publication should not share a production URL or production database credentials. If you deploy with containers or another automated system, Ghost also accepts environment variables whose names correspond to its configuration keys. That option is useful for injecting secrets at deploy time without committing them to a JSON file.

Apply and verify a configuration change

  1. Make a backup of the existing configuration and database before editing.
  2. Open config.production.json in the installation root with an editor that preserves plain text.
  3. Change only the required key or section and keep the document valid JSON.
  4. Check that the URL matches the domain visitors use and that mail credentials contain no accidental spaces or line breaks.
  5. Run ghost restart from the site directory so Ghost reloads the settings.
  6. Open the front end and admin area, then send a test message if you changed mail settings.

If Ghost fails to start after an edit, revert the last change, validate the JSON syntax and restart again. A missing comma, an extra comma or an unescaped character can prevent the process from loading.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Enable HTTPS and harden the server

HTTPS protects login credentials and session traffic between visitors, editors and the publication. Ghost recommends HTTPS for both the public site and admin area because credentials sent without encryption travel in plaintext. During a standard installation, Ghost-CLI can configure NGINX and SSL, but you still need to verify DNS and certificate behavior from a browser.

Launch hardening checklist

  • Use a separate admin domain when practical. Ghost’s hosting guidance presents a separate admin domain as an additional defense. Plan the DNS and URL values together so the public and administrative addresses are unambiguous.
  • Run MySQL hardening. After setup, run mysql_secure_installation and follow the prompts to remove unsafe defaults and restrict database access.
  • Keep root out of routine operations. Use the low-privilege Ghost user and the standard install layout. Reserve sudo for operating-system administration.
  • Protect SSH. Use key-based access where available, disable unused accounts and apply Ubuntu security updates promptly.
  • Back up before changes. Save the MySQL database, the content directory and the active configuration before upgrades, theme deployments or DNS changes.
  • Monitor renewal and disk space. A full disk or an expired certificate can take down an otherwise healthy publication.

For theme and image uploads, use Ghost Admin rather than copying files into the content directory as root. The Admin workflow preserves the permissions Ghost-CLI expects and avoids accidental ownership changes that can stop the service from reading assets.

Install your own Ghost theme

Ghost separates theme design from Ghost core, so you can replace the publication’s appearance without modifying the application. Themes should remain in the persistent content area and should be treated like deployable software.

Upload and activate a theme through Ghost Admin

  1. Sign in to Ghost Admin.
  2. Open Settings → Site → Theme.
  3. Choose Upload theme and select the theme’s .zip file.
  4. Wait for Ghost to validate and upload the archive.
  5. Use the preview option to inspect the theme before making it live.
  6. Activate it only after checking the home page, post pages, navigation, membership forms and responsive layouts.

The ZIP should contain the theme files at its expected root rather than an extra folder wrapped around them. If Ghost rejects the archive, rebuild the ZIP from the theme project and check that the theme metadata and required templates are present.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Develop locally for deeper customization

For substantial changes, work on a local development copy instead of editing the live server. A common starting point is Ghost’s official Starter theme. Run it against a local Ghost instance, make template and style changes, and test with representative posts, tags, images, navigation items and membership components.

Rank #4
  1. Clone or download the Starter theme into a local project directory.
  2. Run a local Ghost instance and install the theme there.
  3. Edit templates, styles and theme configuration locally.
  4. Test desktop and mobile layouts, long headlines, galleries, embedded media and error states.
  5. Build the production assets required by the theme.
  6. Create a clean theme ZIP from the project’s distributable files.
  7. Back up the live publication, upload the ZIP through Ghost Admin and preview it.
  8. Activate the new version only after the content and navigation checks pass.

This workflow keeps source files, build tooling and review changes outside the production server while preserving the ability to roll back to the previous ZIP.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Theme deployment checklist for a gaming publication

A gaming site often combines large artwork, video embeds, release information and community forms. Before activating a new theme, test the paths readers actually use.

  • Home page cards, featured images and pagination.
  • Article pages with galleries, captions, tables and embedded video.
  • Game-specific navigation, tag archives and search.
  • Membership signup, sign-in and newsletter forms.
  • Cookie notices, privacy links and any age-related notices your publication requires.
  • Responsive behavior at narrow phone widths, tablets and large desktop screens.
  • Image loading, alt text, focal points and layouts for unusually wide or tall artwork.
  • Canonical URLs, RSS output and social sharing metadata.
  • Keyboard navigation, visible focus states, contrast and readable body text.

Keep the old theme ZIP and the database/content backup until the new version has survived a normal publishing cycle. If a template error appears, reactivate the previous theme through Ghost Admin rather than attempting emergency edits to versioned Ghost core files.

Upgrades, backups and day-to-day operations

Upgrade safely

Ghost-CLI manages the versioned installation layout and systemd service, but an upgrade is still a production change. Read the release notes for the version you intend to install, back up MySQL and content, confirm free disk space and schedule the work for a low-traffic period. Afterward, verify the public site, Admin, image uploads, mail delivery and theme behavior.

Back up what a restore needs

A practical restore set contains three items:

  1. MySQL data: posts, settings, members and other structured records.
  2. The content directory: uploaded images, themes and persistent files.
  3. Configuration and deployment notes: the production URL, database connection details, mail settings, DNS values and the Ghost version in use.

Store copies away from the VPS and periodically perform a restore rehearsal. A backup that has never been restored is only an assumption.

Keep permissions predictable

Ghost-CLI creates a low-privilege ghost user and manages permissions for the standard layout. Upload through Admin and avoid recursive ownership commands copied from unrelated applications. If permissions were changed accidentally, stop making ad hoc edits and compare the installation with the ownership and service settings created by Ghost-CLI.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Troubleshoot the failures that matter most

The domain shows the wrong site or cannot connect

Check that DNS records point to the VPS address, that the domain in Ghost’s url setting exactly matches the address visitors use and that NGINX is serving the intended installation. Confirm the site over HTTPS after DNS changes have propagated.

Ghost will not start after editing configuration

Recheck that config.production.json is valid JSON, that all required production areas are present and that credentials contain the expected characters. Revert the last edit if necessary, then run ghost restart. Do not add comments or trailing commas to the file.

Mail appears configured but messages do not arrive

Verify the SMTP host, port, authentication and sender values, then send a test message. Check the mail provider’s delivery logs and spam handling. A working web server does not prove that outbound SMTP is accepted.

A theme uploads but the site looks broken

Preview the theme, inspect browser errors and confirm that the production asset build was completed before the ZIP was created. Test the theme with a post containing the same media and embeds used on the live site. If the problem is severe, reactivate the previous theme while you correct the build.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Images or themes fail after manual file copying

Use Ghost Admin for uploads and check file ownership if a manual operation already changed permissions. Restore the expected low-privilege ownership instead of running Ghost as root.

A practical launch order

The following order minimizes circular fixes:

  1. Provision Ubuntu 24, create the non-root user and apply updates.
  2. Point the domain’s DNS to the VPS and install Node.js 22 LTS and MySQL 8.0.
  3. Install Ghost-CLI, run ghost install and let it configure NGINX, SSL, MySQL, systemd and the low-privilege service.
  4. Confirm the HTTPS site and admin URL before importing content.
  5. Set and test the three production configuration areas: URL, database and mail.
  6. Run MySQL hardening and create an off-server backup.
  7. Install or upload the theme, preview it and test gaming-specific content types.
  8. Activate the theme, document the final versions and schedule recurring updates and restore tests.

This sequence keeps infrastructure, configuration and presentation changes separate. If something fails, you can identify whether the cause is DNS, the service, configuration, mail or the theme instead of changing all layers at once.

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.