bloYg

Back

🛠️ Dieser Artikel dokumentiert das Grundsetup von bloYg: den Weg von einem frischen Debian-13-Server zu einem ersten stabil laufenden Ghost-Blog mit Docker Compose, MariaDB, Caddy und HTTPS.

Wichtig ist die Abgrenzung: Dieser Post beschreibt bewusst nur den technischen Weg zum ersten sauberen Live-Zustand. Branding, Theme-Feinschliff, Membership-Policy und redaktionelle Nacharbeiten gehören danach in eigene Follow-up-Texte.

🔒 Alle sensiblen Daten sind hier durch Platzhalter ersetzt.

1. Ziel des Grundsetups#

Ghost sauber online bringen, HTTPS aktivieren, eine nachvollziehbare Verzeichnisstruktur schaffen und einen Zustand erreichen, auf dem man anschließend sicher weiterarbeiten kann.

2. Minimale Eingaben für ein Redeployment#

SERVER_HOST=<SERVER_HOST_OR_IP>
SSH_USER=<SSH_USER>
SSH_AUTH=<SSH_KEY_OR_PASSWORD>
OS=<DEBIAN_13_ODER_UBUNTU>
DOMAIN=<YOUR_DOMAIN>
WWW_REDIRECT=<YES_OR_NO>
text

3. Zielarchitektur#

  • Host: Debian 13
  • App: Ghost
  • Datenbank: MariaDB
  • Reverse Proxy / TLS: Caddy
  • Orchestrierung: Docker Compose
  • Basisschutz: UFW + fail2ban

4. Empfohlene Reihenfolge#

  1. Host prüfen
  2. Basis-Pakete installieren
  3. Docker installieren
  4. Firewall und Basisschutz aktivieren
  5. Ghost-Stack anlegen
  6. Domain und DNS prüfen
  7. Caddy konfigurieren
  8. Container starten
  9. Ghost initial prüfen

5. Host vorbereiten#

apt-get update
apt-get install -y ca-certificates curl gnupg ufw fail2ban

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

. /etc/os-release
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian ${VERSION_CODENAME} stable" > /etc/apt/sources.list.d/docker.list

apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker fail2ban
bash

Wenn der Erstzugang anfangs nur über Passwort oder Root läuft, sollte das kein Dauerzustand bleiben. Für den Weg zum ersten Live-Stand reicht das manchmal pragmatisch, für den Regelbetrieb sollte danach aber ein sauberer sicherer Zugang eingerichtet werden.

6. Firewall-Basis#

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable
bash

7. Verzeichnisstruktur#

/opt/ghost-stack/
├── .env
├── docker-compose.yml
├── Caddyfile
└── backup.sh
text

Genau diese klare Ordnerstruktur macht spätere Wartung, Backups und Redeployments deutlich leichter.

8. Umgebungsvariablen#

DOMAIN=example.com
GHOST_URL=https://example.com
DB_ROOT_PASSWORD=<DB_ROOT_PASSWORD>
DB_NAME=ghost
DB_USER=ghost
DB_PASSWORD=<DB_PASSWORD>
text

9. Compose-Grundidee#

services:
  db:
    image: mariadb:11
    restart: unless-stopped

  ghost:
    image: ghost:5-alpine
    restart: unless-stopped

  caddy:
    image: caddy:2
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
yaml

10. Caddy-Konfiguration#

www.example.com {
  redir https://example.com{uri} 301
}

example.com {
  encode zstd gzip
  reverse_proxy ghost:2368
  header {
    Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    X-Content-Type-Options nosniff
    X-Frame-Options SAMEORIGIN
    Referrer-Policy strict-origin-when-cross-origin
  }
}
plaintext

11. Erster Start#

cd /opt/ghost-stack
docker compose up -d
bash

Direkt danach lohnt sich ein sehr kurzer operativer Schnellcheck:

cd /opt/ghost-stack
docker compose ps
curl -I https://example.com
bash

Damit sieht man in wenigen Sekunden, ob die Container laufen und ob die Hauptdomain grundsätzlich antwortet.

12. Akzeptanzkriterien#

  • Ghost ist unter der Hauptdomain erreichbar.
  • HTTPS ist aktiv.
  • Caddy terminiert TLS sauber.
  • Der Stack liegt reproduzierbar in einem klaren Ordner.
  • Die Basis für spätere Nacharbeiten steht.

13. Was dieser Post bewusst noch nicht abdeckt#

  • Theme-Feinschliff
  • sichtbares Branding auf bloYg / Y / Notizen aus dem Internet
  • Membership-Policy im Frontend
  • About-Seite, Startseite und redaktionelle Texte
  • spätere Design- und Betriebsdetails

Genau diese Trennung macht das Grundsetup als Vorlage nützlich: Erst ein sauberer technischer Live-Stand, danach die gezielten Nacharbeiten zum finalen Produkt.

Fazit#

📌 Dieser Post endet absichtlich beim ersten stabilen Live-Zustand. Gerade deshalb taugt er als Grundlage für spätere Redeployments und als saubere technische Startmarke.

Ghost-Blog auf Debian 13 einrichten: Das Grundsetup für bloYg
https://pure.bloyg.de/blog/ghost-blog-auf-debian-13-einrichten
Author Y
Published at 14. März 2026