Skip to Content

Self-host Ghost on redu

Ghost is a professional publishing platform for blogs, publications, and paid newsletters, with membership signups and subscription payments built in. People self-host it to own their content, data, and audience instead of renting a hosted plan. On redu, your agent runs Ghost for you on real EU infrastructure, so you set nothing up by hand.

License: Ghost is licensed under MIT. That is a permissive open source license, so you can self-host it freely. In this guide you are the operator, running Ghost on your own redu infrastructure.

Deploy it with your agent

Connect the redu MCP:

claude mcp add --transport http redu-cloud https://mcp.redu.cloud/mcp

Point your agent (Claude Code is one example, but any MCP client works) at Ghost’s official Docker setup and tell it:

Deploy Ghost on redu using its official docker-compose, and expose the web UI.

Ghost ships an official Docker image and Compose-based self-hosting setup. Your agent uses deploy_compose to run the whole stack on a single EU VM with podman-compose up -d --build, then serves the Ghost web UI at https://<name>.redu.cloud. redu does not rewrite your compose file: it runs the official setup as-is and exposes the one service you point it at. The agent discovers Ghost’s exposed port at deploy time, so you do not need to configure it yourself.

Database

Ghost requires MySQL 8. It no longer supports SQLite for production, and it does not use Postgres. You have two clean options:

  • Keep the db service from Ghost’s compose file. The official setup already includes a MySQL service, so the default compose database mode runs it alongside Ghost on the same VM. Nothing extra to provision.
  • Use a redu managed MySQL. Have the agent provision a separate managed MySQL and point Ghost at it:
Deploy Ghost on redu using its official docker-compose, but use a redu managed MySQL database instead of the bundled db service.

When a managed database is provisioned, its connection env is appended to the compose project’s .env, and DATABASE_* aliases are set alongside the MYSQL_* values, so Ghost connects without manual mapping.

Pick the bundled MySQL for a simple all-in-one setup, or managed MySQL if you want the database on its own VM.

Access it

Once the deploy finishes, Ghost comes up at https://<name>.redu.cloud with TLS already in place (a wildcard cert), so there is no per-app certificate setup. On first run, open that URL and follow Ghost’s own setup flow to create your admin account and name your publication.

Keep it running

Deploys are self-healing: redu recreates and retries until Ghost actually runs, and get_deployment returns the build log if you want to see what happened. Day two, your agent can SSH into the VM to update Ghost, adjust its configuration, or fix an issue in place, and commit any repo changes back with a GitHub token. Everything runs on EU-hosted infrastructure, billed by the hour.

What’s next

Stuck? support@redu.cloud

Last updated on