S SvelteKurs
M11 · Deployment

Coolify — Self-Hosting

Die App auf einer eigenen Coolify-Instanz deployen — genau so, wie dieser Kurs live gegangen ist.

Was ist Coolify?

Coolify ist eine selbst-gehostete Plattform (Open-Source-Alternative zu Heroku/Vercel). Du verbindest ein Git-Repo, Coolify baut daraus einen Container und betreibt ihn hinter einem Reverse-Proxy (Traefik) mit automatischem HTTPS via Let's Encrypt.

🛤️ Rails-Vergleich: Kamal / Heroku

Wenn du Rails schon mal mit Kamal oder Heroku deployed hast, ist der Ablauf vertraut: Repo verbinden, Container bauen, ENV setzen, Datenbank anhängen, Domain zeigen lassen.

Analogie bash
# Vergleichbar mit Kamal/Heroku für Rails:
# - Git push / connect repo
# - Container bauen
# - ENV setzen (DATABASE_URL, SECRET_KEY_BASE, ...)
# - Managed Postgres anhängen
# - Domain + TLS

Deployment in 5 Schritten

  1. Repo verbinden. Neue Application anlegen, das (private) Git-Repo per Deploy-Key hinterlegen, Branch main.
  2. Build-Pack „Dockerfile". Coolify baut das Dockerfile aus dem Repo. Exposed Port: 3000.
  3. Postgres anlegen. Im selben Projekt eine PostgreSQL-Datenbank-Ressource erstellen — Coolify gibt dir eine interne Connection-URL.
  4. Umgebungsvariablen setzen:
    Environment Variables bash
    DATABASE_URL=postgres://user:pass@db-host:5432/devnotes
    SESSION_SECRET=<langer-zufallswert>
    ORIGIN=https://svelte.apps.tomcodes.de
    SEED_ON_START=true
    PORT=3000
  5. Domain + Deploy. FQDN https://svelte.apps.tomcodes.de eintragen (TLS kommt automatisch), dann „Deploy". Der Entrypoint migriert die DB und startet den Server.

Worauf du achten musst

⚠️ Typische Stolpersteine

  • ORIGIN muss exakt der öffentlichen URL entsprechen — sonst lehnt SvelteKit POST/Form-Actions mit einem CSRF-Fehler ab.
  • Der Container muss auf dem Port lauschen, den Coolify exposed (hier 3000).
  • DATABASE_URL zeigt auf den internen Hostnamen der DB im Coolify-Netz, nicht auf localhost.

Geschafft 🎉

Damit hast du den kompletten Weg zurückgelegt: von der ersten $state-Rune bis zur live deployten, datenbankgestützten SvelteKit-App. Genau diese Seite, die du gerade liest, läuft auf dem beschriebenen Setup.

💡 Das Wichtigste

  • Coolify + Dockerfile-Build-Pack + Git-Repo = reproduzierbares Self-Hosting.
  • Postgres als eigene Ressource, per DATABASE_URL verbunden.
  • Traefik übernimmt Reverse-Proxy und automatisches HTTPS.

🎯 Probier es selbst

Öffne die live-Version dieses Kurses unter svelte.apps.tomcodes.de und registriere dort ein DevNotes-Konto — es läuft gegen das echte Postgres im Coolify-Netz.