TECHSTACK DOKUMENTATION - DEZEMBER 2025
Infrastruktur-Gesamtübersicht
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ GESAMTARCHITEKTUR │
│ │
│ ┌───────────────────────────────────────────────────────────────────────────────┐ │
│ │ LOKALE ENTWICKLUNGSUMGEBUNG │ │
│ │ (Proxmox VE Cluster) │ │
│ │ LAN: 10.10.181.0/24 │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ sv-payload │ │ sv-postgres │ │sv-dev-payload│ │sv-analytics │ │ │
│ │ │ LXC 700 │ │ LXC 701 │ │ LXC 702 │ │ LXC 703 │ │ │
│ │ │ Payload CMS │ │ PostgreSQL │ │ Next.js │ │ Umami │ │ │
│ │ │10.10.181.100│ │10.10.181.101│ │10.10.181.102│ │10.10.181.103│ │ │
│ │ │ + Redis │ │ │ │ │ │ │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └───────────────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌───────────────────┴───────────────────┐ │
│ │ LOKALER INTERNETZUGANG │ │
│ │ 850 Mbps ↓ / 50 Mbps ↑ │ │
│ │ │ │
│ │ Feste IP-Adressen: │ │
│ │ 37.24.237.178 - Router │ │
│ │ 37.24.237.179 - complexcaresolutions │ │
│ │ 37.24.237.180 - Nginx Proxy Manager │ │
│ │ 37.24.237.181 - pl.c2sgmbh.de │ │
│ │ 37.24.237.182 - frei │ │
│ └───────────────────┬───────────────────┘ │
│ │ │
│ INTERNET │
│ │ │
│ ┌──────────────────────────────────┼──────────────────────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ HETZNER 1 │ │ HETZNER 2 │ │ HETZNER 3 │ │
│ │ CCS GmbH │ │ Martin Porwoll │ │ Backend/Analytics │ │
│ │ │ │ │ │ │ │
│ │ 78.46.87.137 │ │ 94.130.141.114 │ │ 162.55.85.18 │ │
│ │ Debian 12.12 │ │ Ubuntu 24.04 │ │ Debian 13 │ │
│ │ Plesk │ │ Plesk │ │ Native │ │
│ │ │ │ │ │ │ │
│ │ Next.js Frontends │ │ Next.js Frontends │ │ ✅ Payload CMS │ │
│ │ • complexcare... │ │ • porwoll.de │ │ ✅ Umami │ │
│ │ • gunshin.de │ │ • caroline-... │ │ ✅ PostgreSQL 17 │ │
│ └─────────────────────┘ └─────────────────────┘ │ ✅ Redis Cache │ │
│ │ ✅ Claude Code │ │
│ └─────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────┘
Server-Details
HETZNER 3 - Backend & Analytics (NEU)
| Eigenschaft |
Wert |
| Hostname |
sv-hz03-backend |
| IP-Adresse |
162.55.85.18 |
| Betriebssystem |
Debian 13 "Trixie" |
| CPU |
AMD Ryzen 5 3600 (6 Cores / 12 Threads) |
| RAM |
64 GB DDR4 ECC |
| Storage |
2x 512 GB NVMe SSD (Software RAID 1) |
| Netzwerk |
1 Gbit/s (garantiert) |
| Traffic |
Unbegrenzt |
| Kosten |
~€52/Monat |
Services auf Hetzner 3
| Service |
User |
Port |
URL |
Status |
| PostgreSQL 17 |
postgres |
5432 |
localhost |
✅ Läuft |
| Payload CMS |
payload |
3001 |
https://cms.c2sgmbh.de |
✅ Läuft |
| Umami Analytics |
umami |
3000 |
https://analytics.c2sgmbh.de |
✅ Läuft |
| Redis Cache |
redis |
6379 |
localhost |
✅ Läuft |
| Nginx |
root |
80/443 |
Reverse Proxy |
✅ Läuft |
| Claude Code |
claude |
- |
CLI Tool |
✅ Installiert |
System-User
| User |
Zweck |
Home-Verzeichnis |
| root |
System-Administration |
/root |
| payload |
Payload CMS |
/home/payload |
| umami |
Umami Analytics |
/home/umami |
| claude |
Claude Code / Server-Admin |
/home/claude |
SSH-Zugang
ssh root@162.55.85.18
ssh payload@162.55.85.18
ssh umami@162.55.85.18
ssh claude@162.55.85.18
HETZNER 1 - Complex Care Solutions GmbH
| Eigenschaft |
Wert |
| Eigentümer |
Complex Care Solutions GmbH |
| IP-Adresse |
78.46.87.137 |
| Betriebssystem |
Debian 12.12 |
| Control Panel |
Plesk Web Pro Edition 18.0.73 |
| CPU |
AMD Ryzen 7 Pro 8700GE |
| RAM |
64 GB |
| Storage |
2x 512 GB NVMe SSD (Software RAID 1) |
| Max. Domains |
30 |
Domains auf Hetzner 1
| Domain |
DNS/Weiterleitung |
Zweck |
| complexcaresolutions.de |
A: 78.46.87.137 |
Hauptdomain |
| complexcaresolutions.at/ch/eu/nl |
→ complexcaresolutions.de |
Redirects |
| complexcaresolutions.org |
A: 78.46.87.137 |
Alternate |
| complex-care-solutions.com |
A: 78.46.87.137 |
International |
| gunshin.de |
Vorlage: Standard |
Portfolio/Holding |
| c2sgmbh.de |
→ complexcaresolutions.de |
Kurzform |
| zweitmeinung-*.de |
→ complexcaresolutions.de |
Fachgebiete |
HETZNER 2 - Martin Porwoll (privat)
| Eigenschaft |
Wert |
| Eigentümer |
Martin Porwoll (privat) |
| IP-Adresse |
94.130.141.114 |
| Betriebssystem |
Ubuntu 24.04 LTS |
| Control Panel |
Plesk Web Pro Edition 18.0.73 |
| CPU |
Intel Xeon E3-1275v6 |
| RAM |
64 GB |
| Storage |
2x 512 GB NVMe SSD (Software RAID 1) |
| Max. Domains |
30 |
Domains auf Hetzner 2
| Domain |
DNS/Weiterleitung |
Zweck |
| porwoll.de |
A: 94.130.141.114 |
Hauptdomain |
| caroline-porwoll.de |
A: 94.130.141.114 |
Dr. Caroline Porwoll |
| caroline-porwoll.com |
A: 94.130.141.114 |
International |
| porwoll.com/cloud/live/shop/tech |
Vorlage: Standard |
Varianten |
Lokale Infrastruktur (Proxmox)
| Server |
IP |
Port |
Funktion |
OS |
| sv-payload |
10.10.181.100 |
3000 |
Payload CMS (Dev) + Redis |
Debian 13 |
| sv-postgres |
10.10.181.101 |
5432 |
PostgreSQL (Dev) |
Debian 13 |
| sv-dev-payload |
10.10.181.102 |
3001 |
Next.js Frontend |
Debian 13 |
| sv-analytics |
10.10.181.103 |
3000 |
Umami (Dev) |
Debian 13 |
Feste IP-Adressen (Lokal)
| IP |
Verwendung |
| 37.24.237.178 |
Router / Gateway |
| 37.24.237.179 |
complexcaresolutions.cloud |
| 37.24.237.180 |
Nginx Proxy Manager |
| 37.24.237.181 |
pl.c2sgmbh.de (Payload Dev) |
| 37.24.237.182 |
Frei |
Credentials
sv-hz03-backend (162.55.85.18) - Produktion
PostgreSQL
| Datenbank |
User |
Passwort |
| payload_db |
payload |
Suchen55 |
| umami_db |
umami |
Suchen55 |
Redis
redis-cli -h localhost -p 6379
# Kein Passwort (nur localhost)
Umami Analytics
Payload CMS
Environment Variables - Payload (.env)
DATABASE_URI=postgresql://payload:Suchen55@localhost:5432/payload_db
PAYLOAD_SECRET=hxPARlMkmv+ZdCOAMw+N4o2x4mNbERB237iDQTYXALY=
PAYLOAD_PUBLIC_SERVER_URL=https://cms.c2sgmbh.de
NEXT_PUBLIC_SERVER_URL=https://cms.c2sgmbh.de
NODE_ENV=production
PORT=3001
CONSENT_LOGGING_API_KEY=7644095c1be9b726ac6c1433c7a544f4d99b55337d70f52c8dc85a4b76ef9f1a
IP_ANONYMIZATION_PEPPER=18f2d29f1ead67f15fec88ee2357565a6c0073394bcd085ef636f877954bd546
REDIS_HOST=localhost
REDIS_PORT=6379
Environment Variables - Umami (.env)
DATABASE_URL=postgresql://umami:Suchen55@localhost:5432/umami_db
APP_SECRET=aqwsOyaH/1IyWHby+Ni5e5IIt/soJwvWcfxMM6kwYS0=
TRACKER_SCRIPT_NAME=custom
COLLECT_API_ENDPOINT=/api/send
DISABLE_TELEMETRY=1
pl.c2sgmbh.de (Entwicklung)
PostgreSQL (sv-postgres)
| Datenbank |
User |
Passwort |
| payload_db |
payload |
Finden55 |
Redis (sv-payload)
redis-cli -h localhost -p 6379
# Kein Passwort (nur localhost)
Environment Variables (.env)
DATABASE_URI=postgresql://payload:Finden55@10.10.181.101:5432/payload_db
PAYLOAD_SECRET=a53b254070d3fffd2b5cfcc3
PAYLOAD_PUBLIC_SERVER_URL=https://pl.c2sgmbh.de
NEXT_PUBLIC_SERVER_URL=https://pl.c2sgmbh.de
NODE_ENV=production
PORT=3000
CONSENT_LOGGING_API_KEY=7644095c1be9b726ac6c1433c7a544f4d99b55337d70f52c8dc85a4b76ef9f1a
IP_ANONYMIZATION_PEPPER=18f2d29f1ead67f15fec88ee2357565a6c0073394bcd085ef636f877954bd546
REDIS_HOST=localhost
REDIS_PORT=6379
Redis Caching
Architektur
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ REDIS CACHING STRATEGIE │
│ │
│ Request → Payload CMS → Redis Cache? │
│ │ │
│ ┌────┴────┐ │
│ HIT MISS │
│ │ │ │
│ ▼ ▼ │
│ Return PostgreSQL → Cache in Redis → Return │
│ │
│ Cache-Typen: │
│ • API Response Cache (GET /api/pages, /api/posts) │
│ • Automatische Invalidierung bei Content-Änderungen │
│ │
│ Konfiguration: │
│ • Max Memory: 2GB (Prod) / 512MB (Dev) │
│ • Eviction: allkeys-lru │
│ • TTL: 5 Minuten (Standard) │
│ │
└─────────────────────────────────────────────────────────────────────────────────────┘
Redis Befehle
# Status prüfen
redis-cli ping
# Statistiken
redis-cli info stats
# Cache-Keys anzeigen
redis-cli keys "*"
# Cache leeren
redis-cli flushdb
# Live-Monitoring
redis-cli monitor
Cache-Dateien im Projekt
src/
├── lib/
│ ├── redis.ts # Redis Client & Cache Helper
│ └── cache-keys.ts # Cache Key Definitionen
└── hooks/
└── invalidateCache.ts # Cache Invalidierung bei Content-Änderungen
Claude Code
Installation auf sv-hz03-backend
ssh claude@162.55.85.18
claude
CLAUDE.md Standort
/home/claude/CLAUDE.md
Berechtigungen
| Berechtigung |
Status |
| sudo systemctl restart nginx |
✅ NOPASSWD |
| sudo systemctl restart postgresql |
✅ NOPASSWD |
| sudo systemctl status * |
✅ NOPASSWD |
| sudo su - payload |
✅ NOPASSWD |
| sudo su - umami |
✅ NOPASSWD |
| sudo redis-cli * |
✅ NOPASSWD |
Häufige Claude Code Aufgaben
# Service-Status
sudo su - payload -c "pm2 status"
sudo systemctl status nginx postgresql redis-server
# Logs
sudo su - payload -c "pm2 logs payload"
sudo tail -f /var/log/nginx/error.log
# Deployment
sudo su - payload -c "~/deploy.sh"
# Backup
sudo su - payload -c "~/backup.sh"
# Redis Monitor
sudo redis-cli monitor
Git & GitHub
Repository
GitHub CLI Installation
Auf Debian/Ubuntu:
# GPG-Schlüssel hinzufügen
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
# Repository hinzufügen
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list
# Installation
sudo apt update
sudo apt install gh -y
GitHub Authentifizierung
# Mit Web-Authentifizierung
gh auth login --web
# Status prüfen
gh auth status
Git-Konfiguration
Remote Repository:
# HTTPS (empfohlen für gh auth)
git remote add origin https://github.com/c2s-admin/cms.c2sgmbh.git
# Remote prüfen
git remote -v
# Remote URL ändern (falls nötig)
git remote set-url origin https://github.com/c2s-admin/cms.c2sgmbh.git
SSH-Keys (Alternative):
# SSH-Key generieren
ssh-keygen -t ed25519 -C "payload@c2sgmbh.de"
# Public Key zu GitHub hinzufügen
cat ~/.ssh/id_ed25519.pub
# → Auf GitHub.com: Settings → SSH and GPG keys → New SSH key
# SSH Remote verwenden
git remote set-url origin git@github.com:c2s-admin/cms.c2sgmbh.git
.gitignore (Wichtig!)
Sensible Dateien, die NICHT committed werden dürfen:
# Environment Variables
.env
.env*.local
# Build-Ausgaben
/.next/
/build
/out
# Dependencies
/node_modules
# Backups & Datenbanken
*.sql
*.sql.gz
/backups/
# Media-Uploads
/media
# Logs
*.log
Git Workflow
Entwicklung (pl.c2sgmbh.de):
cd /home/payload/payload-cms
# Status prüfen
git status
# Änderungen stagen
git add .
# Commit erstellen
git commit -m "feat: Beschreibung der Änderung"
# Zu GitHub pushen
git push origin main
Commit Message Konventionen:
feat: Neues Feature
fix: Bugfix
chore: Wartung/Cleanup
docs: Dokumentation
refactor: Code-Refactoring
style: Formatierung
test: Tests
Nützliche Git-Befehle
# Letzte Commits anzeigen
git log --oneline -10
# Änderungen anzeigen
git diff
git diff --staged
# Änderungen rückgängig machen
git restore <file> # Unstaged Änderungen verwerfen
git restore --staged <file> # Aus Staging entfernen
# Branch-Info
git branch -a
git status
# Von GitHub pullen
git pull origin main
# Merge-Konflikte prüfen
git diff --name-only --diff-filter=U
GitHub CLI Befehle
# Repository anzeigen
gh repo view
gh repo view --web
# Issues
gh issue list
gh issue create
# Pull Requests
gh pr list
gh pr create
# Repository klonen
gh repo clone c2s-admin/cms.c2sgmbh
Backup über Git (Ausnahme!)
Normalerweise: SQL-Dateien werden NICHT committed (.gitignore)
Ausnahme für Server-Migration:
# Backup erzwingen (einmalig!)
git add -f backup.sql
git commit -m "chore: temporary database backup for migration"
git push
# ⚠️ WICHTIG: Nach Transfer wieder entfernen!
git rm backup.sql
git commit -m "chore: remove database backup after migration"
git push
# Optional: Aus Git-Historie komplett löschen
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch backup.sql" \
--prune-empty --tag-name-filter cat -- --all
git push origin --force --all
Deployment Workflow
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ DEPLOYMENT WORKFLOW │
│ │
│ ┌──────────────────────────────────┐ ┌──────────────────────────────────┐ │
│ │ ENTWICKLUNG (DEV) │ │ PRODUKTION (PROD) │ │
│ │ pl.c2sgmbh.de │ │ cms.c2sgmbh.de │ │
│ │ 37.24.237.181 │ │ 162.55.85.18 │ │
│ │ 10.10.181.100 (LAN) │ │ │ │
│ └──────────────────────────────────┘ └──────────────────────────────────┘ │
│ │
│ Step 1: CODE ENTWICKELN │
│ ┌────────────────────────────────────────────────────────────────────────┐ │
│ │ cd /home/payload/payload-cms │ │
│ │ # Code ändern, testen │ │
│ │ pnpm dev # Lokal testen │ │
│ │ pnpm build # Build-Test │ │
│ │ pm2 restart payload # Auf Dev-Server deployen │ │
│ └────────────────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ │
│ Step 2: ZU GITHUB PUSHEN │
│ ┌────────────────────────────────────────────────────────────────────────┐ │
│ │ git status # Änderungen prüfen │ │
│ │ git add . # Alle Änderungen stagen │ │
│ │ git commit -m "feat: XYZ" # Commit erstellen │ │
│ │ git push origin main # Zu GitHub pushen │ │
│ └────────────────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ │
│ ┌────────────────────────────────────────────────────┐ │
│ │ GITHUB REPOSITORY (PRIVAT) │ │
│ │ https://github.com/c2s-admin/cms.c2sgmbh │ │
│ │ │ │
│ │ ✅ Code gesichert │ │
│ │ ✅ Versionierung │ │
│ │ ✅ .env in .gitignore │ │
│ │ ✅ Backup SQL (temporär, nach Transfer löschen) │ │
│ └────────────────────────────────────────────────────┘ │
│ ↓ │
│ │
│ Step 3: AUF PRODUKTION DEPLOYEN │
│ ┌────────────────────────────────────────────────────────────────────────┐ │
│ │ ssh payload@162.55.85.18 │ │
│ │ ~/deploy.sh # Automatisches Deployment │ │
│ │ │ │
│ │ Das deploy.sh Script macht: │ │
│ │ ├─ git pull origin main # Code von GitHub holen │ │
│ │ ├─ pnpm install # Dependencies aktualisieren │ │
│ │ ├─ pnpm build # Produktions-Build │ │
│ │ └─ pm2 restart payload # Service neustarten │ │
│ └────────────────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ │
│ Step 4: VERIFIZIERUNG │
│ ┌────────────────────────────────────────────────────────────────────────┐ │
│ │ pm2 status # Prozess läuft? │ │
│ │ pm2 logs payload --lines 20 # Logs prüfen │ │
│ │ curl https://cms.c2sgmbh.de/api/globals/site-settings │ │
│ │ # Browser: https://cms.c2sgmbh.de/admin │ │
│ └────────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────┘
Git-Setup auf Servern
| Server |
User |
Remote |
Auth-Methode |
Status |
| pl.c2sgmbh.de (Dev) |
payload |
HTTPS |
GitHub CLI (gh auth) |
✅ Konfiguriert |
| cms.c2sgmbh.de (Prod) |
payload |
SSH |
SSH-Key |
✅ Eingerichtet |
Deployment-Befehle
Entwicklungsserver → GitHub:
# Auf pl.c2sgmbh.de (10.10.181.100)
cd /home/payload/payload-cms
# 1. Änderungen prüfen
git status
git diff
# 2. Build-Test lokal
pnpm build
pm2 restart payload
# 3. Testen
curl https://pl.c2sgmbh.de/api/globals/site-settings
# 4. Zu Git committen
git add .
git commit -m "feat: Beschreibung der Änderung"
# 5. Zu GitHub pushen
git push origin main
GitHub → Produktionsserver:
# Option A: SSH + Deploy-Script (empfohlen)
ssh payload@162.55.85.18 '~/deploy.sh'
# Option B: Manuelles SSH-Login
ssh payload@162.55.85.18
cd ~/payload-cms
git pull origin main
pnpm install
pnpm build
pm2 restart payload
pm2 logs payload --lines 20
Deploy-Script (~/deploy.sh)
#!/bin/bash
set -e
echo "🚀 Deployment gestartet..."
cd ~/payload-cms
echo "📥 Git Pull..."
git pull origin main
echo "📦 Dependencies installieren..."
pnpm install
echo "🔨 Build erstellen..."
pnpm build
echo "🔄 PM2 Neustart..."
pm2 restart payload
echo "✅ Deployment abgeschlossen!"
pm2 status
Backup
Backup-Script (~/backup.sh)
#!/bin/bash
set -e
BACKUP_DIR=~/backups
DATE=$(date +%Y-%m-%d_%H-%M-%S)
RETENTION_DAYS=7
mkdir -p $BACKUP_DIR
echo "🔄 Backup gestartet: $DATE"
# PostgreSQL Backup
PGPASSWORD=Suchen55 pg_dump -h localhost -U payload payload_db > $BACKUP_DIR/payload_db_$DATE.sql
PGPASSWORD=Suchen55 pg_dump -h localhost -U umami umami_db > $BACKUP_DIR/umami_db_$DATE.sql
# Komprimieren
gzip $BACKUP_DIR/payload_db_$DATE.sql
gzip $BACKUP_DIR/umami_db_$DATE.sql
# Alte Backups löschen
find $BACKUP_DIR -name "*.sql.gz" -mtime +$RETENTION_DAYS -delete
echo "✅ Backup abgeschlossen!"
ls -lh $BACKUP_DIR/*.sql.gz 2>/dev/null | tail -10
Cronjob (täglich 3:00 Uhr)
0 3 * * * /home/payload/backup.sh >> /home/payload/backups/backup.log 2>&1
Backup-Speicherort
/home/payload/backups/
├── payload_db_2025-12-05_03-00-00.sql.gz
├── umami_db_2025-12-05_03-00-00.sql.gz
└── backup.log
Service-Management
PM2 Befehle
# Status
pm2 status
# Logs
pm2 logs payload
pm2 logs umami
# Neustart
pm2 restart payload
pm2 restart umami
# Alle neustarten
pm2 restart all
# Speichern für Autostart
pm2 save
Systemd Services
# PostgreSQL
systemctl status postgresql
systemctl restart postgresql
# Nginx
systemctl status nginx
systemctl restart nginx
nginx -t # Config testen
# Redis
systemctl status redis-server
systemctl restart redis-server
URLs Übersicht
SSH Schnellzugriff
# Produktion (Hetzner 3)
ssh root@162.55.85.18 # Root
ssh payload@162.55.85.18 # Payload User
ssh umami@162.55.85.18 # Umami User
ssh claude@162.55.85.18 # Claude Code
# Hetzner Server
ssh root@78.46.87.137 # Hetzner 1 (CCS)
ssh root@94.130.141.114 # Hetzner 2 (Porwoll)
# Entwicklung (Proxmox)
ssh payload@10.10.181.100 # sv-payload
ssh root@10.10.181.101 # sv-postgres
ssh developer@10.10.181.102 # sv-dev-payload
ssh root@10.10.181.103 # sv-analytics
Wichtige Dateipfade
sv-hz03-backend (Produktion)
/home/payload/
├── payload-cms/ # Payload CMS
│ ├── .env # Environment
│ ├── src/ # Source Code
│ │ ├── lib/
│ │ │ ├── redis.ts # Redis Client
│ │ │ └── cache-keys.ts # Cache Keys
│ │ └── hooks/
│ │ └── invalidateCache.ts
│ └── .next/ # Build Output
├── deploy.sh # Deployment Script
├── backup.sh # Backup Script
└── backups/ # Backups
/home/umami/
└── umami/ # Umami Analytics
├── .env
└── .next/
/home/claude/
└── CLAUDE.md # Claude Code Kontext
Firewall (UFW)
ufw status verbose
# Offene Ports auf sv-hz03-backend:
# 22/tcp - SSH
# 80/tcp - HTTP
# 443/tcp - HTTPS
SSL Zertifikate
| Domain |
Anbieter |
Ablauf |
| cms.c2sgmbh.de |
Let's Encrypt |
2026-03-05 |
| analytics.c2sgmbh.de |
Let's Encrypt |
2026-03-05 |
Auto-Renewal via Certbot Timer.
Tech Stack
| Komponente |
Technologie |
Version |
| CMS |
Payload CMS |
3.66.0 |
| Framework |
Next.js |
15.4.7 |
| Runtime |
Node.js |
22.x |
| Datenbank |
PostgreSQL |
17.6 |
| Cache |
Redis |
7.x |
| Analytics |
Umami |
3.x |
| Process Manager |
PM2 |
Latest |
| Package Manager |
pnpm |
Latest |
| Reverse Proxy |
Nginx |
Latest |
| SSL |
Let's Encrypt |
- |
| Server Admin |
Claude Code |
2.0.59 |
Notfall-Kontakte
Bei Problemen:
- Logs prüfen:
pm2 logs
- Services neustarten:
pm2 restart all
- Nginx prüfen:
nginx -t && systemctl restart nginx
- PostgreSQL prüfen:
systemctl status postgresql
- Redis prüfen:
redis-cli ping
- Claude Code nutzen:
ssh claude@162.55.85.18 → claude
Checkliste nach Deployment
Stand: 05. Dezember 2025
Server: sv-hz03-backend (162.55.85.18)
Setup: Payload CMS + Umami + PostgreSQL + Redis + Claude Code