Self-hosted apps

    Deploy Ghost on Oracle Cloud's free tier

    Run a Ghost blog or newsletter on your own ARM server instead of a per-member subscription.

    At a glance

    Base imageghost:5-alpine
    Port2368
    Start commandnode current/index.js
    Infrastructure cost$0 on Oracle Always Free (platform fee for managed DevOps)

    Running Ghost on Ampere ARM

    Ghost's official image supports ARM64. Content and images live on the mounted volume, which the Always Free 200 GB block storage allowance covers many times over.

    Steps

    1. Set the url environment variable. Ghost bakes this into every generated link and email; changing it later means rewriting content URLs.
    2. Configure outbound email. Newsletters need an SMTP provider — set mail__* variables to your provider's credentials.
    3. Back up the content volume. It holds images, themes and settings.

    Dockerfile for Ghost on ARM64

    # docker-compose.yml
    services:
      ghost:
        image: ghost:5-alpine
        restart: unless-stopped
        environment:
          url: https://blog.yourdomain.com
          database__client: mysql
          database__connection__host: db
          database__connection__user: ghost
          database__connection__password: ${DB_PASSWORD}
          database__connection__database: ghost
        volumes:
          - ghostdata:/var/lib/ghost/content
        ports:
          - "127.0.0.1:2368:2368"
      db:
        image: mysql:8
        restart: unless-stopped
        environment:
          MYSQL_DATABASE: ghost
          MYSQL_USER: ghost
          MYSQL_PASSWORD: ${DB_PASSWORD}
          MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
        volumes:
          - ghostdb:/var/lib/mysql
    volumes:
      ghostdata:
      ghostdb:

    Need one tailored to your repository? The free Dockerfile generator writes an ARM-ready multi-stage build for you.

    Common mistakes

    • MySQL memory usage: MySQL 8 defaults are hungry; cap innodb_buffer_pool_size on smaller shapes.
    • Missing SMTP: Member signups silently fail without a working mail configuration.
    • Theme uploads lost on redeploy: Only the mounted content directory persists.

    Related reading

    Get the Oracle Always Free deploy checklist

    One email with the exact steps, capacity workarounds and tools we use to ship apps for $0 of cloud spend.

    One email, no spam. Unsubscribe anytime.

    Frequently asked

    Do I still pay Ghost?+

    No. Ghost is open source; Ghost(Pro) is the paid hosted option you are replacing.

    Can I run memberships and Stripe?+

    Yes, self-hosted Ghost supports Stripe-powered memberships.

    How much traffic can it take?+

    Ghost serves cached pages quickly; an Ampere instance handles substantial blog traffic.

    Deploy your project for $0

    No credit card. No Oracle sales call. Ship to your own cloud in under 10 minutes.

    Start free