Skip to content

Server-Einrichtung — From Scratch ​

Vollständige Anleitung zur Einrichtung des Produktions-Servers mit Coolify.

Voraussetzungen ​

  • VPS mit Ubuntu 24.04 LTS (empfohlen: Hetzner CX32, 4 vCPU / 8 GB RAM, ~9 €/Monat)
  • Root-SSH-Zugang
  • Domain registriert (z.B. saw-sg.de) mit DNS-Verwaltungszugriff

Schritt 1 — VPS bereitstellen ​

  1. VPS buchen (Hetzner, Contabo, DigitalOcean, etc.)
  2. Ubuntu 24.04 LTS als Betriebssystem wählen
  3. SSH-Key beim Erstellen hinterlegen
  4. Server-IP notieren

Schritt 2 — Coolify installieren ​

bash
# Per SSH mit dem Server verbinden
ssh root@<server-ip>

# Coolify installieren (einziger Befehl)
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash

Nach der Installation:

  • Coolify-UI erreichbar unter: http://<server-ip>:8000
  • Admin-Account anlegen
  • Einmaligen Setup-Assistenten durchlaufen

Coolify ist kostenlos

Self-hosted Coolify ist vollständig kostenlos und Open Source (Apache 2.0). Keine versteckten Features hinter einer Paywall.


Schritt 3 — DNS-Records setzen ​

Im DNS-Dashboard der Domain folgende A-Records anlegen:

SubdomainTypZiel
venturoA<server-ip>
apiA<server-ip>
docsA<server-ip>
n8nA<server-ip>

DNS-Propagation

DNS-Änderungen brauchen bis zu 24 Stunden. Mit nslookup venturo.saw-sg.de prüfen ob der Record aktiv ist.


Schritt 4 — Datenbank-Services in Coolify anlegen ​

MySQL 8 ​

  1. Coolify → New Resource → Database → MySQL
  2. Einstellungen:
    • Name: venturo-db
    • MySQL Version: 8.0
    • Database: venturo
    • Username: venturo
    • Password: (sicheres Passwort generieren und notieren)
  3. Deploy klicken
  4. Zugangsdaten notieren — werden für Backend .env benötigt

Redis 7 ​

  1. Coolify → New Resource → Database → Redis
  2. Einstellungen:
    • Name: venturo-redis
    • Redis Version: 7
  3. Deploy klicken
  4. Hostname notieren — wird für Backend .env benötigt

Schritt 5 — Backend-App anlegen ​

  1. Coolify → New Resource → Application → Public Repository
  2. Einstellungen:
FeldWert
Repositoryhttps://github.com/marcelstingl/venturo
Branchmain
Base Directorybackend/
Dockerfilebackend/Dockerfile
Domainhttps://api.saw-sg.de
Port80
  1. Post-Deployment Command setzen:
bash
php artisan migrate --force && php artisan config:cache && php artisan route:cache
  1. Environment Variables setzen (Tab "Environment Variables"):
env
APP_ENV=production
APP_DEBUG=false
APP_URL=https://api.saw-sg.de
APP_KEY=                          # php artisan key:generate --show

DB_CONNECTION=mysql
DB_HOST=<coolify-mysql-host>
DB_PORT=3306
DB_DATABASE=venturo
DB_USERNAME=venturo
DB_PASSWORD=<dein-mysql-passwort>

SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
CACHE_STORE=redis
REDIS_HOST=<coolify-redis-host>
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=<smtp-host>             # z.B. Brevo, Mailgun
MAIL_PORT=587
MAIL_USERNAME=<smtp-user>
MAIL_PASSWORD=<smtp-passwort>
MAIL_FROM_ADDRESS=noreply@saw-sg.de
MAIL_FROM_NAME=Venturo

FRONTEND_URL=https://venturo.saw-sg.de
SANCTUM_STATEFUL_DOMAINS=venturo.saw-sg.de

N8N_WEBHOOK_BASE=https://n8n.saw-sg.de/webhook
N8N_WEBHOOK_SECRET=<sicherer-zufallsstring>

ANTHROPIC_API_KEY=sk-ant-<dein-key>
ANTHROPIC_DEFAULT_MODEL=claude-haiku-4-5-20251001
ANTHROPIC_COACH_MODEL=claude-sonnet-4-6
  1. Deploy klicken

  2. Einmalig nach dem ersten erfolgreichen Deploy: Stammdaten-Seeder ausführen (Simulations-Vorlagen). Nur nötig bei einer neuen Datenbank — nicht in start.sh automatisieren, da der Seeder bestehende Templates truncated und überschreiben würde:

bash
docker exec -it <backend-container-name> php artisan db:seed --class=SimulationTemplateSeeder --force

Schritt 6 — Frontend-App anlegen ​

  1. Coolify → New Resource → Application → Public Repository
  2. Einstellungen:
FeldWert
Repositoryhttps://github.com/marcelstingl/venturo
Branchmain
Base Directoryfrontend/
Dockerfilefrontend/Dockerfile
Domainhttps://venturo.saw-sg.de
Port80
  1. Environment Variables:
env
VITE_API_BASE_URL=https://api.saw-sg.de
  1. Deploy klicken

Schritt 7 — Docs-App anlegen ​

  1. Coolify → New Resource → Application → Public Repository
  2. Einstellungen:
FeldWert
Repositoryhttps://github.com/marcelstingl/venturo
Branchmain
Base Directorydocs/
Dockerfiledocs/Dockerfile
Domainhttps://docs.saw-sg.de
Port80

Nicht als reinen Static-Build deployen

Ein Static-Build (Build Command + Publish Directory) liefert VitePresss "Clean URLs" (z.B. /changelog statt /changelog.html) nicht korrekt aus — der Standard-Server kennt nur changelog.html und wirft 404. Das Dockerfile bringt eine eigene nginx-Konfiguration mit try_files $uri $uri.html $uri/ =404; mit, die das korrekt auflöst.

  1. Deploy klicken

Schritt 8 — SSL aktivieren ​

Coolify und Traefik übernehmen SSL automatisch via Let's Encrypt.

Voraussetzung: DNS-Records aus Schritt 3 müssen aktiv sein.

In Coolify pro App: Domain → HTTPS aktivieren → Zertifikat wird automatisch ausgestellt.


Schritt 9 — Auto-Deploy einrichten ​

  1. In Coolify → App → Webhooks → GitHub-Webhook-URL kopieren
  2. In GitHub → Repository → Settings → Webhooks → Add webhook
    • Payload URL: (aus Coolify kopiert)
    • Content type: application/json
    • Events: Just the push event
  3. Save klicken

Ab jetzt: git push origin main → Coolify deployt automatisch.


Verifikation ​

Nach erfolgreichem Setup alle URLs prüfen:

bash
curl https://api.saw-sg.de/api/v1          # {"status":"ok"}
curl -o /dev/null -w "%{http_code}\n" https://docs.saw-sg.de/changelog  # 200 (Clean-URL-Check)
# https://venturo.saw-sg.de                    → Vue.js App
# https://docs.saw-sg.de                   → VitePress Docs

Empfohlene Server-Größen ​

OptionSpecsPreis/MonatGeeignet für
Hetzner CX222 vCPU, 4 GB RAM~4,50 €Entwicklung / Staging
Hetzner CX324 vCPU, 8 GB RAM~9 €Produktion (empfohlen)
Hetzner CX428 vCPU, 16 GB RAM~18 €Bei hoher KI-Last

Venturo — Simulate Your Venture