Files
Skrift-Kofnigurator/Docker Backend/DEPLOYMENT_EINFACH.md
2026-02-07 13:04:04 +01:00

7.6 KiB

Einfaches Deployment OHNE Docker Hub

Warum diese Methode?

  • Kein Docker Hub Account nötig
  • Keine Gefahr, dass andere dein Image sehen
  • Schneller und einfacher
  • Perfekt für einen einzelnen Server

Deployment-Prozess

Schritt 1: Backend zum Server kopieren

Option A: Mit SCP (Windows PowerShell oder Git Bash)

# Temporäres Archiv erstellen (ohne unnötige Dateien)
cd "E:\Dokumente\05_Skrift\Frontend_Backend_Konfigurator\Docker Backend"

# Zip erstellen
tar -czf skrift-backend.tar.gz \
  --exclude='node_modules' \
  --exclude='output' \
  --exclude='cache' \
  --exclude='.git' \
  --exclude='*.md' \
  --exclude='bruno-tests' \
  --exclude='test-*.js' \
  --exclude='generate-*.js' \
  src/ fonts/ package.json package-lock.json Dockerfile docker-compose.yml .dockerignore

# Zum Server kopieren
scp skrift-backend.tar.gz root@DEINE-SERVER-IP:/tmp/

# Auf Server entpacken
ssh root@DEINE-SERVER-IP << 'ENDSSH'
  mkdir -p /opt/skrift-backend
  cd /opt/skrift-backend
  tar -xzf /tmp/skrift-backend.tar.gz
  rm /tmp/skrift-backend.tar.gz
ENDSSH

Option B: Mit RSYNC (empfohlen, wenn verfügbar)

# Direkt synchronisieren (nur geänderte Dateien)
rsync -avz --progress \
  --exclude='node_modules' \
  --exclude='output' \
  --exclude='cache' \
  --exclude='.git' \
  --exclude='*.md' \
  --exclude='bruno-tests' \
  --exclude='test-*.js' \
  --exclude='generate-*.js' \
  "/e/Dokumente/05_Skrift/Frontend_Backend_Konfigurator/Docker Backend/" \
  root@DEINE-SERVER-IP:/opt/skrift-backend/

Option C: Mit WinSCP (GUI)

  1. WinSCP herunterladen und installieren
  2. Verbindung zu deinem Server herstellen
  3. Verzeichnis erstellen: /opt/skrift-backend
  4. Diese Ordner hochladen:
    • src/ (kompletter Ordner)
    • fonts/ (kompletter Ordner)
    • package.json
    • package-lock.json
    • Dockerfile
    • docker-compose.yml
    • .dockerignore

Schritt 2: Auf dem Server einrichten

Per SSH auf den Server:

ssh root@DEINE-SERVER-IP

# Ins Backend-Verzeichnis
cd /opt/skrift-backend

# .env Datei erstellen (WICHTIG!)
cat > .env << 'EOF'
SCRIPTALIZER_LICENSE_KEY=f9918b40-d11c-11f0-b558-0800200c9a66
SCRIPTALIZER_ERR_FREQUENCY=0
BATCH_SIZE=30
CACHE_LIFETIME_HOURS=2
RATE_LIMIT_PER_MINUTE=2
NODE_ENV=production
PORT=4000
EOF

# Berechtigungen setzen
chmod 600 .env

# Output-Verzeichnis für N8N erstellen
mkdir -p /var/skrift-output
chmod 755 /var/skrift-output

# Docker Image bauen und Container starten
docker-compose up -d --build

# Logs ansehen (Ctrl+C zum Beenden)
docker-compose logs -f

Schritt 3: Testen

# Health-Check auf dem Server
curl http://localhost:4000/health

# Sollte zurückgeben:
# {"status":"ok","timestamp":"2026-01-03T..."}

Schritt 4: Nginx Proxy Manager einrichten

  1. Öffne Nginx Proxy Manager (z.B. http://dein-server.de:81)
  2. Login mit Admin-Credentials
  3. "Proxy Hosts" → "Add Proxy Host"

Details Tab:

  • Domain Names: backend.deine-domain.de (oder skrift-backend.deine-domain.de)
  • Scheme: http
  • Forward Hostname/IP: skrift-backend (der Docker Container Name!)
  • Forward Port: 4000
  • Cache Assets: ✓ aktivieren
  • Block Common Exploits: ✓ aktivieren
  • Websockets Support: nicht aktivieren

SSL Tab:

  • SSL Certificate: "Request a new SSL Certificate"
  • Force SSL: ✓ aktivieren
  • Email Address: deine-email@domain.de
  • I Agree to the Terms: ✓ aktivieren
  1. "Save" klicken

Schritt 5: Finaler Test

Von deinem lokalen Rechner:

curl https://backend.deine-domain.de/health

Updates durchführen

Wenn du Code-Änderungen gemacht hast:

# 1. Lokal: Neue Version zum Server kopieren
rsync -avz --progress \
  --exclude='node_modules' \
  --exclude='output' \
  --exclude='cache' \
  "/e/Dokumente/05_Skrift/Frontend_Backend_Konfigurator/Docker Backend/" \
  root@DEINE-SERVER-IP:/opt/skrift-backend/

# 2. Auf Server: Container neu bauen
ssh root@DEINE-SERVER-IP "cd /opt/skrift-backend && docker-compose up -d --build"

# 3. Logs prüfen
ssh root@DEINE-SERVER-IP "cd /opt/skrift-backend && docker-compose logs -f"

Automatisches Update-Script

Erstelle eine Datei update.sh auf deinem lokalen Rechner:

#!/bin/bash

SERVER="root@DEINE-SERVER-IP"
REMOTE_PATH="/opt/skrift-backend"
LOCAL_PATH="/e/Dokumente/05_Skrift/Frontend_Backend_Konfigurator/Docker Backend"

echo "Syncing files to server..."
rsync -avz --progress \
  --exclude='node_modules' \
  --exclude='output' \
  --exclude='cache' \
  --exclude='.git' \
  "$LOCAL_PATH/" \
  "$SERVER:$REMOTE_PATH/"

echo "Rebuilding container on server..."
ssh $SERVER "cd $REMOTE_PATH && docker-compose up -d --build"

echo "Done! Checking logs..."
ssh $SERVER "cd $REMOTE_PATH && docker-compose logs --tail=50"

Dann einfach ausführen:

bash update.sh

Vorteile dieser Methode

Privat: Nur auf deinem Server, niemand sonst kann es sehen Einfach: Keine Docker Hub Registrierung nötig Schnell: Direkt auf dem Server gebaut Sicher: Keine Credentials in der Cloud Flexibel: Änderungen sofort deployen

Troubleshooting

Verbindung fehlgeschlagen

# SSH-Verbindung testen
ssh root@DEINE-SERVER-IP

# Falls Fehler: SSH-Key einrichten
ssh-keygen -t rsa -b 4096
ssh-copy-id root@DEINE-SERVER-IP

Container startet nicht

# Logs prüfen
ssh root@DEINE-SERVER-IP "cd /opt/skrift-backend && docker-compose logs"

# Häufige Probleme:
# - .env fehlt → Schritt 2 wiederholen
# - Fonts fehlen → fonts/ Ordner hochladen
# - Port 4000 belegt → docker-compose.yml anpassen

Nginx Proxy erreicht Container nicht

# Prüfen ob Container im richtigen Netzwerk ist
ssh root@DEINE-SERVER-IP "docker network ls"
ssh root@DEINE-SERVER-IP "docker network inspect skrift-network"

# Container Name prüfen
ssh root@DEINE-SERVER-IP "docker ps | grep skrift"

# In Nginx Proxy Manager: Forward Hostname = "skrift-backend" (Container-Name)

Build dauert zu lange

# Cache löschen und neu bauen
ssh root@DEINE-SERVER-IP "cd /opt/skrift-backend && docker-compose build --no-cache"

Sicherheit

  • .env Datei wird nur auf dem Server erstellt (nicht hochgeladen)
  • .dockerignore verhindert Upload von sensiblen Dateien
  • Nur notwendige Ports werden geöffnet (4000 nur intern)
  • Nginx Proxy Manager mit SSL-Verschlüsselung
  • Rate Limiting ist bereits im Backend implementiert

Backup

# Auf dem Server
# 1. Code-Backup
tar -czf /root/skrift-backend-backup-$(date +%Y%m%d).tar.gz /opt/skrift-backend

# 2. Output-Dateien Backup
tar -czf /root/skrift-output-backup-$(date +%Y%m%d).tar.gz /var/skrift-output

# 3. Zu lokalem Rechner herunterladen
scp root@DEINE-SERVER-IP:/root/skrift-*-backup-*.tar.gz ./backups/

Kompletter Workflow - Schritt für Schritt

# === AUF LOKALEM RECHNER ===

# 1. Ins Verzeichnis wechseln
cd "E:\Dokumente\05_Skrift\Frontend_Backend_Konfigurator\Docker Backend"

# 2. Zum Server kopieren
rsync -avz --exclude='node_modules' --exclude='output' --exclude='cache' ./ root@SERVER:/opt/skrift-backend/


# === AUF DEM SERVER (per SSH) ===

# 3. Verbinden
ssh root@SERVER

# 4. Setup
cd /opt/skrift-backend
cat > .env << 'EOF'
SCRIPTALIZER_LICENSE_KEY=f9918b40-d11c-11f0-b558-0800200c9a66
SCRIPTALIZER_ERR_FREQUENCY=0
BATCH_SIZE=30
NODE_ENV=production
EOF

mkdir -p /var/skrift-output
docker-compose up -d --build

# 5. Testen
curl http://localhost:4000/health


# === IN NGINX PROXY MANAGER (Browser) ===

# 6. Proxy Host erstellen
# Domain: backend.deine-domain.de
# Forward to: skrift-backend:4000
# SSL: Let's Encrypt aktivieren


# === FERTIG! ===

# Von überall testen:
curl https://backend.deine-domain.de/health