bloYg
Inhaltsverzeichnis

Ghost-Blog auf Debian 13 einrichten: Das Grundsetup für bloYg

March 14, 2026
aktualisiert March 14, 2026
2 min read

🛠️ 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>

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=(dpkgprintarchitecture)signedby=/etc/apt/keyrings/docker.asc]https://download.docker.com/linux/debian(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

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

7. Verzeichnisstruktur

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

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>

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”

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 } }

11. Erster Start

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

Direkt danach lohnt sich ein sehr kurzer operativer Schnellcheck:

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

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.