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.
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
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.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minute- 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
- [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.
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.
Rank #2
- 【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:
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →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
- [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.
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:
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchPC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Rank #4
- 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.
- Visit
https://your-domain.example/ghostafter replacing the example host with your configured domain. - Complete the administrator and publication details requested by Ghost.
- Enter the SMTP settings in Ghost’s configuration when prompted or when you reach the mail settings.
- Sign in to the admin area and create a test post or page.
- 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.
Recommended Free Tools
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 pullfollowed bydocker 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.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.
Best Value
- 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.
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.
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.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Quick Recap
Final pre-launch checklist
- Ubuntu or another supported Linux VPS is ready.
- Docker is version 20.10.13 or newer and
docker composeworks. - The domain A record points to the VPS.
- An SMTP service and credentials are available.
- The repository is cloned at
/opt/ghost. - The example environment and Caddy files were copied using the names present in the checkout.
- The domain and generated database passwords are set.
docker compose pullcompleted successfully.docker compose up -dstarted the services.docker compose psand logs show healthy containers.- The domain’s
/ghostpage opens and the administrator setup completes. - 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.




