mirror of
https://github.com/complexcaresolutions/documentation.git
synced 2026-03-17 17:33:53 +00:00
170 lines
4.2 KiB
Markdown
170 lines
4.2 KiB
Markdown
# Deployment Guide - Payload CMS Multi-Tenant
|
|
|
|
*Letzte Aktualisierung: 17. Januar 2026*
|
|
|
|
> **Wichtig:** Für die vollständige Deployment-Strategie siehe [DEPLOYMENT_STRATEGY.md](./DEPLOYMENT_STRATEGY.md)
|
|
|
|
## Übersicht
|
|
|
|
```
|
|
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
│ DEVELOPMENT │ │ STAGING │ │ PRODUCTION │
|
|
│ sv-frontend │───▶│ sv-payload │───▶│ Hetzner 3 │
|
|
│ Local Dev │ │ pl.porwoll.tech│ │ cms.c2sgmbh.de │
|
|
│ develop branch │ │ develop branch │ │ main branch │
|
|
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Umgebungen
|
|
|
|
| Umgebung | Server | URL | Branch | Zweck |
|
|
|----------|--------|-----|--------|-------|
|
|
| **Development** | sv-payload (LXC 700) | https://pl.porwoll.tech | `develop` | Entwicklung & Testing |
|
|
| **Production** | Hetzner 3 | https://cms.c2sgmbh.de | `main` | Live-System |
|
|
|
|
---
|
|
|
|
## Git Branching Workflow
|
|
|
|
**Regel:** Immer auf `develop` entwickeln, nach Freigabe mit `main` mergen.
|
|
|
|
```bash
|
|
# 1. Auf develop entwickeln
|
|
git checkout develop
|
|
git pull origin develop
|
|
git add . && git commit -m "feat: neue Funktion"
|
|
git push origin develop
|
|
# → Automatisches Deployment auf Staging
|
|
|
|
# 2. Nach Test: Merge in main
|
|
git checkout main && git merge develop && git push origin main
|
|
# → Manuelles Deployment auf Production
|
|
```
|
|
|
|
---
|
|
|
|
## Staging Deployment (develop → pl.porwoll.tech)
|
|
|
|
### Automatisch via GitHub Actions
|
|
|
|
Bei jedem Push auf `develop` wird automatisch deployed:
|
|
|
|
1. Pre-deployment Checks (Lint, Tests)
|
|
2. SSH-Verbindung zu sv-payload
|
|
3. `git pull origin develop`
|
|
4. `pnpm install`
|
|
5. `pnpm payload migrate`
|
|
6. `pnpm build`
|
|
7. `pm2 restart payload`
|
|
8. Health Check
|
|
|
|
### Manuell auf sv-payload
|
|
|
|
```bash
|
|
ssh payload@10.10.181.100
|
|
cd /home/payload/payload-cms
|
|
git pull origin develop
|
|
pnpm install
|
|
pnpm payload migrate
|
|
pnpm build
|
|
pm2 restart payload
|
|
pm2 logs payload --lines 20
|
|
```
|
|
|
|
---
|
|
|
|
## Production Deployment (main → cms.c2sgmbh.de)
|
|
|
|
### Option A: Via GitHub Actions (Empfohlen)
|
|
|
|
```bash
|
|
git checkout main && git merge develop && git push origin main
|
|
gh workflow run deploy-production.yml
|
|
```
|
|
|
|
Der Workflow führt automatisch aus: Pre-flight Checks, Tests, Datenbank-Backup, Deployment, Health Check, bei Fehler automatischer Rollback.
|
|
|
|
### Option B: Via Deploy-Script auf Server
|
|
|
|
```bash
|
|
ssh payload@162.55.85.18
|
|
cd ~/payload-cms
|
|
./scripts/deploy-production.sh
|
|
|
|
# Optionen:
|
|
./scripts/deploy-production.sh -y # Ohne Bestätigung
|
|
./scripts/deploy-production.sh --skip-backup # Ohne Backup
|
|
./scripts/deploy-production.sh --rollback # Rollback
|
|
./scripts/deploy-production.sh --dry-run # Dry-Run
|
|
```
|
|
|
|
---
|
|
|
|
## Rollback
|
|
|
|
```bash
|
|
# Automatischer Rollback
|
|
./scripts/deploy-production.sh --rollback
|
|
|
|
# Manuell zu Commit
|
|
git log --oneline -10
|
|
git reset --hard <commit-sha>
|
|
pnpm install && pnpm build
|
|
pm2 restart payload
|
|
```
|
|
|
|
---
|
|
|
|
## CI/CD Pipeline
|
|
|
|
| Workflow | Trigger | Aktion |
|
|
|----------|---------|--------|
|
|
| `ci.yml` | Push/PR auf main, develop | Lint, Test, Build |
|
|
| `security.yml` | Push/PR, Schedule | Security Scanning |
|
|
| `deploy-staging.yml` | Push auf develop | Auto-Deploy zu Staging |
|
|
| `deploy-production.yml` | Manuell | Production Deployment |
|
|
|
|
### GitHub Secrets
|
|
|
|
| Secret | Beschreibung |
|
|
|--------|-------------|
|
|
| `STAGING_SSH_KEY` | SSH Private Key für sv-payload |
|
|
| `PRODUCTION_SSH_KEY` | SSH Private Key für Hetzner 3 |
|
|
|
|
---
|
|
|
|
## Umgebungsvariablen
|
|
|
|
### Production (.env)
|
|
|
|
```env
|
|
DATABASE_URI=postgresql://payload:***@localhost:5432/payload_db
|
|
PAYLOAD_PUBLIC_SERVER_URL=https://cms.c2sgmbh.de
|
|
NODE_ENV=production
|
|
PORT=3001
|
|
REDIS_URL=redis://localhost:6379
|
|
```
|
|
|
|
### Staging (.env)
|
|
|
|
```env
|
|
DATABASE_URI=postgresql://payload:***@127.0.0.1:6432/payload_db
|
|
PAYLOAD_PUBLIC_SERVER_URL=https://pl.porwoll.tech
|
|
NODE_ENV=production
|
|
PORT=3000
|
|
REDIS_URL=redis://localhost:6379
|
|
```
|
|
|
|
---
|
|
|
|
## Health Check
|
|
|
|
```bash
|
|
pm2 status
|
|
pm2 logs payload --lines 50
|
|
curl -I https://cms.c2sgmbh.de/api/users
|
|
curl -I https://cms.c2sgmbh.de/admin
|
|
redis-cli ping
|
|
```
|