Ghost Container erstellen

Ghost Container erstellen

Mein self-hosted Ghost-Blog mit Docker

Hallo zusammen!

Nach langem Überlegen habe ich mich entschieden, meinen persönlichen Blog für How-Tos, Homelab-Tipps und Empfehlungen selbst zu hosten – und zwar mit Ghost, der cleanen, open-source Blog-Plattform. Kein WordPress-Overhead, kein Cloud-Abo: Alles läuft lokal in Docker auf meinem Server.

Warum Ghost? Der Editor ist super flüssig, Markdown wird unterstützt, und es sieht von Haus aus professionell aus. Perfekt für Artikel wie diesen.

So richtest du Ghost mit Docker Compose ein

Als erstes habe ich unter meinem Benutzer das Verzeichnis docker/ghost erstellt.

mkdir ~/docker/ghost

Erstelle eine docker-compose.yml (z. B. in einem Ordner ~/docker/ghost):

cd ~/docker/ghost
nano docker-compose.yml
services:
  ghost:
    image: ghost:5-alpine
    container_name: ghost
    restart: always
    ports:
      - 8080:2368  
    environment:
      database__client: mysql
      database__connection__host: db
      database__connection__user: ghost
      database__connection__password: Start123!
      database__connection__database: ghost
      url: http://192.168.202.5:8080
    volumes:
      - ghost:/var/lib/ghost/content
    depends_on:
      db:
        condition: service_healthy

  db:
    image: mysql:8.0
    container_name: ghost-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: Start123!
      MYSQL_DATABASE: ghost
      MYSQL_USER: ghost
      MYSQL_PASSWORD: Start123!
    volumes:
      - db:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 5s
      retries: 10

volumes:
  ghost:
  db:

Container starten und Setup

docker compose up -d

Öffne im Browser: http://192.168.202.5:8080/ghost/
Folge dem Setup-Wizard: Admin-Account anlegen, Blog-Titel setzen – fertig!

Falls beim ersten Start die DB nicht ready ist (ECONNREFUSED): Der Healthcheck oben verhindert das meist. Ansonsten einfach neu starten.

Tipps für den Einstieg

  • Themes: Im Dashboard unter Settings > Design – habe ich mich für Attila entschieden.
  • Reverse Proxy: Für HTTPS und eine echte Domain später Nginx Proxy Manager oder Traefik einrichten. Später wird hier HA-Proxy seinen Dienst verrichten.
  • Backups: Die Volumes ghost und db regelmäßig sichern (z. B. mit rsync oder einem Backup-Tool).

Mein Blog läuft jetzt stabil – und ich freue mich auf die ersten richtigen Posts zu Homelab-Themen, Docker-Tricks und mehr.