Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk10 min

How to Run Ghost With Docker Compose on a VPS

A practical guide to deploying Ghost on a VPS with the official ghost-docker Compose project, including Docker requirements, DNS, SMTP, Caddy, MySQL, startup commands, sizing, and recovery precautions.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The dependable way to run Ghost on a VPS is Ghost Foundation’s ghost-docker tooling. It brings up Ghost, Caddy for web serving and TLS, and MySQL as a Compose application. You need a Linux server (Ubuntu is the documented recommendation), Docker 20.10.13 or newer, a domain whose A record points to the VPS, and an SMTP service. The official Docker instructions are still marked preview, so check Ghost’s current Docker guide immediately before deployment.

What this deployment includes

The official approach is a prepared Compose project rather than a single Ghost container. The ghost-docker repository supplies the application layout and supporting services:

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: the publishing application you configure at /ghost.
  • Caddy: the reverse proxy and web server that also handles TLS in the bundled setup.
  • MySQL: the database service used by Ghost.
  • Optional services: ActivityPub and Analytics can be enabled when supported by the current project files.

The repository contains top-level caddy and mysql-init directories. A Ghost forum discussion describes the database service as using a standard upstream MySQL image rather than a custom image. The exact Ghost image tag is not established here; inspect the repository’s Compose file before documenting or pinning a version.

Requirements before you start

Server and operating system

Use a Linux VPS. Ghost’s install page recommends Ubuntu. The official minimum is at least 1 GB of memory. A practical baseline is 2 GB RAM, especially when Ghost, MySQL, Caddy, and Docker are active together. DeployHQ describes Ghost’s documented minimum as 1 vCPU and 2 GB RAM; treat that as a third-party sizing recommendation, not as a replacement for Ghost’s own minimum.

#1 Best Overall
Sale
TOZO A1 Wireless Earbuds Bluetooth 5.3 Light Weight in Ear Headphones | IPX5 Waterproof,2 Mics for AI Calls,Immersive Premium Sound Bass Headset with Charging Case,32 EQ via App Black
  • [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
  • [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
  • [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
  • [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
  • [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.
Guidance Value Attribution
Official memory minimum At least 1 GB RAM Ghost developer documentation
Practical starting point 2 GB RAM Common VPS practice for the complete stack
Third-party specification 1 vCPU and 2 GB RAM DeployHQ guide

These figures are starting points, not a promise of a particular traffic capacity. If you expect heavy image processing, large imports, ActivityPub, Analytics, or many simultaneous administrators, leave additional headroom and monitor memory after launch.

Docker and Compose

Install Docker 20.10.13 or higher. Use the modern Compose plugin syntax, docker compose. Older community tutorials may show the hyphenated docker-compose command; do not switch syntax blindly if the official project expects the plugin.

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

Confirm that both commands return versions and that your account can run Docker. If the Compose command is unavailable, install or enable Docker’s Compose plugin before cloning the Ghost project.

Domain, DNS, and mail

Create an A record for the hostname you will use, pointing it to the VPS’s public IPv4 address. Allow DNS to propagate before opening the site. The Caddy portion of the bundle needs the domain to be correct so it can serve the site and manage TLS.

Arrange an SMTP email service before the first-run wizard. Ghost uses email for administrator and member-related messages; an SMTP provider is a prerequisite in the official setup checklist. Keep the SMTP host, port, username, password, and sender details available while completing Ghost’s settings.

Choose the official project instead of writing Compose from scratch

You can hand-write a Compose file containing a Ghost image, MySQL, and a reverse proxy, and older guides demonstrate that pattern. The trade-off is maintenance: you must choose image tags, wire networking, configure TLS, maintain proxy rules, and adapt changes yourself. The official ghost-docker project is the better starting point when you want Ghost-aligned defaults and the bundled Caddy/MySQL arrangement.

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.
Rank #2
Sale
Smart Watch for Men Women Compatible with iPhone Samsung Android Phone 1.69 inch Full Touch Screen IP68 Waterproof Bluetooh Fitness Tracker Heart Rate/Sleep Monitor (Black)
  • 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
  • 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
  • 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
  • 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
  • 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.
Approach What you manage Best fit
Ghost’s ghost-docker tooling Environment values, domain, secrets, and updates to the project Most VPS owners who want the documented path
Hand-written Compose Ghost image selection, MySQL configuration, reverse proxy, TLS, networking, and lifecycle changes Operators with an existing platform and a reason to own every component

The official Docker page is labeled preview, so its repository layout and commands can change. Treat the current page and checked-out files as authoritative rather than copying a command sequence from an undated tutorial.

Deploy Ghost with the repository’s Compose files

1. Connect to the VPS and clone the project

Work in /opt, a conventional location for server applications. Clone Ghost Foundation’s repository into /opt/ghost:

sudo mkdir -p /opt
git clone https://github.com/TryGhost/ghost-docker /opt/ghost
cd /opt/ghost

If Git is not installed, install it using your distribution’s package manager, then repeat the clone. Verify that the directory contains the Compose project and the caddy and mysql-init folders.

2. Copy the example environment and Caddy configuration

The project includes example environment and Caddy configuration files. Copy each example to the live filename expected by the repository. File names can change while the Docker page is in preview, so list the directory first and use the examples that are actually present:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
ls -la
find . -maxdepth 2 -type f | sort

Then copy the example .env and Caddyfile as directed by the checked-out project. Do not overwrite an existing production file without saving a copy. A typical layout uses an example environment file copied to .env and an example Caddyfile copied to Caddyfile; follow the names shown in your checkout.

3. Edit the environment values

Open the live .env file and set the domain and database passwords requested by the project:

Rank #3
New Bee Guitar Cable 10ft Electric Instrument Bass AMP Cord
  • [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
  • [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
  • [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
  • [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
  • [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by
sudo editor .env

Use the exact variable names already present in the file. Set the public hostname to the domain whose A record points at this VPS. Replace every example database password with a long, unique value. The official instructions suggest generating passwords with OpenSSL:

openssl rand -base64 32

Run the command separately when you need more than one secret, and paste each result into the corresponding password field. Keep the file private because it contains credentials. Do not invent additional variables or rename existing ones; the Compose files determine which names are consumed.

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.

4. Check the Caddyfile

Open the live Caddyfile and confirm that its site address matches the same domain entered in .env. A mismatch can make the proxy answer for the wrong host or prevent the expected TLS setup. Keep the supplied service names and paths unless you have a documented reason to change them.

5. Pull images and start the stack

From /opt/ghost, use the Compose plugin commands shown by Ghost:

docker compose pull
docker compose up -d

pull downloads the images referenced by the checked-out project. up -d creates the network and containers and leaves them running in the background. If Docker reports a malformed environment value or missing file, stop and correct that value rather than repeatedly recreating containers.

6. Verify container state

Check that the services are running:

docker compose ps

The output should show the Ghost, Caddy, and MySQL services defined by the project. If a service is restarting or exited, inspect its logs before changing configuration:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
BSIMB 15.6" Digital Family Calendar & Chore Chart, No Subscription Fees
  • Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
  • Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
  • All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
  • Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
  • Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.
docker compose logs --tail=200
docker compose logs --tail=200 ghost
docker compose logs --tail=200 caddy
docker compose logs --tail=200 mysql

Service names can differ between repository revisions. If one of the named commands reports that the service does not exist, run docker compose config --services and use the names it prints.

Finish Ghost’s browser setup

Once the containers are healthy and DNS resolves to the VPS, open your domain in a browser and append /ghost. The first-run screen walks you through creating the administrator account and site details. Use the SMTP details prepared earlier so Ghost can send mail.

  1. Visit https://your-domain.example/ghost after replacing the example host with your configured domain.
  2. Complete the administrator and publication details requested by Ghost.
  3. Enter the SMTP settings in Ghost’s configuration when prompted or when you reach the mail settings.
  4. Sign in to the admin area and create a test post or page.
  5. Open the public site in a separate browser window and send a test email, such as an invitation or password-reset message, to verify outbound mail.

The hostname in this example is illustrative; use the real domain in your configuration. If the browser shows an old certificate, a different website, or a connection failure, re-check the A record, the Caddy domain value, and the container logs.

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

Useful day-to-day Compose commands

Run these from the project directory so Compose reads the intended files:

  • docker compose ps — view service status.
  • docker compose logs -f — follow combined logs while diagnosing a request or startup problem.
  • docker compose stop — stop the stack without removing containers.
  • docker compose start — start previously stopped containers.
  • docker compose down — stop and remove the Compose-managed containers and network; use it deliberately and understand what the project stores in volumes.
  • docker compose pull followed by docker compose up -d — the basic image refresh sequence documented for deployment.

Before running a pull or recreating services on a live publication, read the current Ghost Docker instructions and the repository change history. The preview status means service names, required variables, and upgrade guidance may evolve.

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

Storage, upgrades, and recovery planning

A running container is not a backup. Treat the MySQL data and Ghost content as production data and decide where backups will live before publishing important work. The supplied installation summary does not establish a particular backup command, retention schedule, or upgrade procedure, so do not assume that docker compose down, deleting a volume, or pulling a new image is reversible.

  • Identify the named volumes and bind mounts in the checked-out Compose file before changing or deleting anything.
  • Keep a copy of the environment file and Caddy configuration separately from the VPS, with secrets protected.
  • Export or snapshot the MySQL data using a method appropriate to the project’s current configuration.
  • Back up uploaded images and other content directories as well as the database.
  • Test that a backup can be restored on a disposable host before relying on it.
  • Record the repository revision and image tags used for each deployment so a rollback is possible.

Do not quote or pin a Ghost image version until you have inspected the current Compose file. The image tag used by the repository was not confirmed in the available documentation.

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

Troubleshooting common first deployments

The command is docker-compose, not docker compose

The official instructions use the Compose plugin form, docker compose. Install the plugin or update Docker rather than silently following an old guide that assumes the hyphenated standalone command. Confirm with docker compose version.

The site does not resolve

Check that the domain’s A record points to the VPS’s current public address and that you are using the same hostname in both the environment file and Caddyfile. DNS changes can take time to appear at different resolvers. Query the record from your workstation and compare it with the server address.

HTTPS or the wrong certificate appears

Verify the Caddy hostname, make sure the request reaches this VPS, and inspect Caddy’s logs. A stale DNS record or another server answering for the hostname will prevent the bundled proxy from presenting the expected certificate.

A container exits or repeatedly restarts

Run docker compose ps and inspect the affected service’s logs. Typical configuration causes include a missing copied example file, a typo in a password, an invalid domain value, or an environment variable that does not match the name used by the Compose file. Correct the source file, then recreate the services with the project’s documented command.

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

Ghost loads but email does not arrive

Re-check the SMTP host, port, credentials, sender address, and any provider-side verification requirements. Look for connection or authentication errors in the Ghost logs. A working website does not prove that SMTP is configured correctly.

Memory pressure occurs on a small VPS

Compare the VPS size with Ghost’s official 1 GB minimum and the more comfortable 2 GB baseline. Check host memory and container logs, then reduce optional services or move to a larger VPS rather than treating repeated restarts as an application fix. ActivityPub and Analytics add services to the stack when enabled.

Security and maintenance checklist

  • Use a current Linux installation and keep Docker and the host patched.
  • Use unique, generated database passwords and restrict access to the environment file.
  • Point only the intended domain at the VPS and remove obsolete DNS records.
  • Confirm that Caddy is the only public proxy you intend to run; do not add a second reverse proxy without understanding the port and routing changes.
  • Monitor disk space, memory, and container restarts.
  • Back up the database, uploaded content, environment file, and Caddy configuration before upgrades.
  • Review the preview documentation before changing image tags, enabling optional services, or altering the Compose file.

When a custom Compose file is justified

A custom file can make sense when you already operate a standard proxy, centralize databases, require a particular storage layout, or need infrastructure controls that the bundled project does not expose. It also transfers responsibility for every integration to you. You will need to select a compatible Ghost image, configure MySQL persistence, connect Ghost to the database, arrange proxy routing and TLS, provide SMTP, and maintain upgrades.

For a new single-site VPS, the official repository avoids those choices and keeps Caddy, MySQL, and Ghost aligned in one project. Start there unless a concrete platform requirement demands a different architecture.

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

Final pre-launch checklist

  1. Ubuntu or another supported Linux VPS is ready.
  2. Docker is version 20.10.13 or newer and docker compose works.
  3. The domain A record points to the VPS.
  4. An SMTP service and credentials are available.
  5. The repository is cloned at /opt/ghost.
  6. The example environment and Caddy files were copied using the names present in the checkout.
  7. The domain and generated database passwords are set.
  8. docker compose pull completed successfully.
  9. docker compose up -d started the services.
  10. docker compose ps and logs show healthy containers.
  11. The domain’s /ghost page opens and the administrator setup completes.
  12. Test content, HTTPS, and outbound email work before you announce the site.

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 from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
Windows Errors? Fix Them Before They SpreadFree repair scan

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.