Docker: der eigene Ghost Blog

Der eigene Ghost Blog ist schnell selbst erstellt. Voraussetzung dafür ist ein vorhandener Linux Server. Dabei reicht ein gemieteter virtueller Server vollkommen aus. Ebenfalls muss Docker, die Containervirtualisierung, installiert werden. Zusätzlich wird die Erweiterung Docker-Compose benötigt. Natürlich habe ich eine Anleitung hier. Um das ganze schick per HTTPS-Zertifikat unter der eigenen Domain auffindbar zu machen, ist ein Reverse Proxy notwendig. In meinem Fall nutze ich den guten jwilder nginx Proxy. Eine Anleitung habe ich hier geschrieben. Zuletzt nutze ich den Dienst Sendgrid, damit der Ghost Blog mir E-Mails zusenden kann, da ich keine Lust habe, einen E-Mail Server zu betreiben (zumindest nicht auf dem Docker Server).

Wenn die Docker Basics laufen, muss die Docker-Compose Datei angelegt werden. Dazu erstelle ich je nach Dienst immer einen extra Ordner, meinetwegen im root-Verzeichniss (/root/docker), da Ordnung sein muss:

mkdir /root/docker/ghostblog

cd /root/docker/ghostblog

Hinein kommen zwei Dateien: docker-compose.yml

version: '3.1'

services:
  ghost:
    image: ghost:alpine
    restart: always
    volumes:
      - ghost_data:/var/lib/ghost/content
    environment:
      - url=https://houz.de
      - mail__transport=SMTP
      - mail__host=smtp.sendgrid.net
      - mail__options__port=587
      - mail__options__auth__user=apikey
      - mail__options__auth__pass=SG.XXX
      - mail__options__service=Sendgrid
      - VIRTUAL_HOST=houz.de
      - LETSENCRYPT_HOST=houz.de
      - [email protected]
    networks:
      - proxy-tier

volumes:
  ghost_data:
    driver: local

networks:
  proxy-tier:
    external: true

Die Domains/E-Mail (unter “url=”, “VIRTUAL_HOST=“, “LETSENCRYPT_HOST=“, “LETSENCRYPT_EMAIL=“) und das Sendgrid Password (unter “mailoptionsauth__pass”) müsst ihr natürlich anpassen.

Und meine berüchtigte “update.sh” muss noch erstellt werden, um einfach ein Update des Ghost Blogs durchführen zu können. Als Zusatz mache ich diesmal ein Backup der Ghost Blog Daten:

docker-compose down
docker pull ghost:alpine

# Backup Ghost Files
rsync -a /var/lib/docker/volumes/ghostblog_ghost_data/ /BACKUP/ghostblog_ghost_data.bkp.$(date +%Y%m%d-%H.%M.%S)

docker-compose up -d

Achtung: Der Pfad beim “rsync” Befehl muss stimmen und angepasst werden. Wenn ihr eine andere Ordner Struktur habt (also die docker-compose nicht unter /root/docker/ghostblog liegt), muss der Pfad entsprechend angepasst werden. Auch /BACKUP muss vorhanden sein oder angepasst werden.

Insgesamt sieht so die Struktur aus:

ghost-houz/
├── docker-compose.yml
└── update.sh

0 directories, 2 files

Auf gehts: Schmeißt den Ghostblog an mit:

docker-compose up -d

Und öffnet im Browser eure Domain. Tada, der Ghost Blog erscheint. Unter https://meinedomainistcooleralsdeine.xyz/ghost könnt ihr den Adminbereich besuchen und euch Logindaten erstellen.

Updaten: Updaten geht die immer mit:

sh update.sh

Der Blog wird heruntergefahren, es wird ein Backup gemacht, der Blog wird hochgefahren.

db   db  .d8b.  d8888b. d8888b. db    db 
88   88 d8' `8b 88  `8D 88  `8D `8b  d8' 
88ooo88 88ooo88 88oodD' 88oodD'  `8bd8'  
88~~~88 88~~~88 88~~~   88~~~      88    
88   88 88   88 88      88         88    
YP   YP YP   YP 88      88         YP    
                                         
                                         
d8888b. db       .d88b.   d888b   d888b  d888888b d8b   db  d888b  
88  `8D 88      .8P  Y8. 88' Y8b 88' Y8b   `88'   888o  88 88' Y8b 
88oooY' 88      88    88 88      88         88    88V8o 88 88      
88~~~b. 88      88    88 88  ooo 88  ooo    88    88 V8o88 88  ooo 
88   8D 88booo. `8b  d8' 88. ~8~ 88. ~8~   .88.   88  V888 88. ~8~ 
Y8888P' Y88888P  `Y88P'   Y888P   Y888P  Y888888P VP   V8P  Y888P