# Vendoo 1.41.0 – Coolify-Produktionsinstallation

Zieladresse: `https://vendoo.flatlined.de`

## Zielarchitektur

```text
GitHub Repository Masterluke77/vendoo
        │
        │ Coolify GitHub App
        ▼
Coolify Dockerfile Build
        │
        ▼
Vendoo Container :8124
        │
        ├── Domain/HTTPS durch Coolify
        └── persistentes Volume /app/data
```

Vendoo erhält keinen Zugriff auf `/var/run/docker.sock`. Deployments werden über einen verschlüsselten Coolify-Webhook oder einen minimal berechtigten Coolify-API-Token angefordert.

## Voraussetzungen

- funktionierende Coolify-Installation
- öffentlicher Server mit erreichbaren Ports 80 und 443
- DNS-Verwaltung für `flatlined.de`
- privates GitHub-Repository `Masterluke77/vendoo`
- vollständiger Vendoo-1.41.0-Stand im Branch `main`

## 1. DNS

Beim DNS-Anbieter einen A-Record anlegen:

```text
Typ: A
Name: vendoo
Wert: ÖFFENTLICHE_IPV4_DES_COOLIFY_SERVERS
TTL: Auto oder 300
```

Nur bei korrekt eingerichtetem IPv6 zusätzlich:

```text
Typ: AAAA
Name: vendoo
Wert: ÖFFENTLICHE_IPV6_DES_COOLIFY_SERVERS
```

Vor dem Coolify-Deployment prüfen, dass `vendoo.flatlined.de` auf den Coolify-Server zeigt.

## 2. GitHub-App in Coolify

1. In Coolify links `Sources` öffnen.
2. `Add Source` beziehungsweise `New Source` wählen.
3. `GitHub App` wählen.
4. Die GitHub-Verknüpfung autorisieren.
5. Der App ausschließlich Zugriff auf `Masterluke77/vendoo` geben.
6. Verbindung speichern.

Die GitHub-App ist für private Repositories die bevorzugte Variante, weil Coolify damit Repositoryzugriff, Webhooks und Pull-Request-Deployments verwalten kann.

## 3. Projekt und Anwendung erstellen

1. `Projects` öffnen.
2. Projekt `Vendoo` erstellen.
3. Environment `Production` erstellen.
4. `Add Resource` wählen.
5. `Private Repository (GitHub App)` wählen.
6. Repository `Masterluke77/vendoo` auswählen.
7. Branch `main` auswählen.
8. Build Pack `Dockerfile` wählen.
9. Base Directory `/` eintragen.
10. Dockerfile Location `/Dockerfile` eintragen.

## 4. Netzwerk

In der Anwendung konfigurieren:

```text
Domain: https://vendoo.flatlined.de
Port Exposes: 8124
Port Mapping: leer lassen
Force HTTPS: aktiviert
```

Kein `8124:8124` Host-Port-Mapping verwenden. Der Coolify-Proxy verbindet sich intern mit Port 8124.

## 5. Persistentes Volume

Unter `Storages` oder `Persistent Storage` ein Volume anlegen:

```text
Name: vendoo-data
Destination Path: /app/data
```

Nicht mehrere Container gleichzeitig auf dasselbe SQLite-Volume schreiben lassen. Für Vendoo zunächst genau eine laufende Instanz verwenden.

Im Volume bleiben erhalten:

- Datenbank
- Uploads
- Backups
- Operations-Daten
- verschlüsselte Secrets und Master-Key
- Modulstatus und installierte Module
- Logs

## 6. Umgebungsvariablen

Die Vorlage `deploy/coolify.env.example` verwenden. Für die Domain mindestens folgende Werte setzen:

```env
NODE_ENV=production
PORT=8124
VENDOO_BIND_HOST=0.0.0.0
VENDOO_DATA_DIR=/app/data
VENDOO_DB_PATH=/app/data/db/vendoo.db
VENDOO_UPLOADS_DIR=/app/data/uploads
VENDOO_BACKUP_DIR=/app/data/backups
VENDOO_OPERATIONS_DIR=/app/data/operations
VENDOO_LOG_DIR=/app/data/logs
VENDOO_CONFIG_PATH=/app/data/config/vendoo.env
VENDOO_MODULES_DIR=/app/data/modules
VENDOO_MODULE_STATE_PATH=/app/data/config/modules-state.json

PUBLIC_BASE_URL=https://vendoo.flatlined.de
VENDOO_ALLOWED_HOSTS=vendoo.flatlined.de
VENDOO_ALLOWED_ORIGINS=https://vendoo.flatlined.de
VENDOO_TRUST_PROXY=true
VENDOO_COOKIE_SECURE=true
VENDOO_COOKIE_SAMESITE=lax

VENDOO_REQUIRE_SETUP_TOKEN=true
VENDOO_SETUP_TOKEN=<MINDESTENS_64_ZUFAELLIGE_ZEICHEN>

VENDOO_INITIAL_DISABLED_MODULES=vendoo.flux-studio
LOCAL_IMAGE_ENABLED=false
LOCAL_IMAGE_ALLOW_REMOTE=false
VENDOO_JSON_LOGS=true
SMTP_TLS_REJECT_UNAUTHORIZED=true
```

Den Setup-Token nicht aus dieser Dokumentation übernehmen. Einen neuen zufälligen Wert erzeugen und ausschließlich in Coolify speichern.

## 7. Healthcheck

Wenn Coolify eigene Healthcheck-Felder anbietet:

```text
Enabled: Ja
Method: GET
Path: /readyz
Port: 8124
Interval: 30 Sekunden
Timeout: 5 Sekunden
Retries: 3
Start Period: 30 Sekunden
```

Der Dockerfile enthält denselben Healthcheck bereits.

## 8. Auto Deploy

Für kontrollierte Produktionsupdates:

```text
Auto Deploy: deaktiviert
Preview Deployments: optional aktiviert
```

Damit führt nicht jeder Merge sofort ein Produktionsdeployment aus. Das erste Deployment wird manuell in Coolify gestartet. Spätere Deployments können aus dem Vendoo Update Center angefordert werden.

Für einen einfachen Testbetrieb kann Auto Deploy vorübergehend aktiviert werden.

## 9. Erstes Deployment

1. In Coolify `Deploy` anklicken.
2. Build-Logs beobachten.
3. Warten, bis der Container `healthy` meldet.
4. `https://vendoo.flatlined.de/readyz` öffnen.
5. Danach `https://vendoo.flatlined.de` öffnen.
6. Ersteinrichtung mit dem in Coolify gesetzten Setup-Token abschließen.
7. Ersten Administrator anlegen.
8. Unter `Administration → Module` prüfen, dass FLUX Studio deaktiviert ist.

`VENDOO_INITIAL_DISABLED_MODULES` gilt nur als erster Standard. Wird FLUX später bewusst im Modulmanager aktiviert, bleibt diese Administratorentscheidung persistent erhalten.

## 10. Coolify-Deployment im Vendoo Update Center konfigurieren

### Empfohlen: Deploy-Webhook

1. In Coolify die Vendoo-Anwendung öffnen.
2. Den Bereich für Deploy Webhooks beziehungsweise Webhooks öffnen.
3. Einen Deploy-Webhook für diese Anwendung kopieren oder erstellen.
4. In Vendoo `Administration → System → Update Center` öffnen.
5. Provider `Coolify` wählen.
6. Coolify URL eintragen, zum Beispiel `https://coolify.flatlined.de`.
7. Trigger `Deploy-Webhook` wählen.
8. Den vollständigen Webhook in `Deploy-Webhook` eintragen.
9. Repository `Masterluke77/vendoo` eintragen.
10. Produktionsbranch `main` eintragen.
11. Vorab-Backup aktiviert lassen.
12. Konfiguration speichern.
13. `Verbindung prüfen` anklicken.

Der Webhook wird verschlüsselt in `/app/data/config/secrets.enc.json` gespeichert und nicht an den Browser zurückgegeben.

### Alternative: Coolify API

1. In Coolify `Settings → Advanced` öffnen und API Access aktivieren.
2. Unter `Security → API Tokens` einen Token erstellen.
3. Nur die Berechtigungen `read` und `deploy` vergeben.
4. Den Token sofort kopieren; Coolify zeigt ihn nur einmal.
5. Die Application Resource UUID aus Coolify kopieren.
6. In Vendoo Trigger `Coolify API` wählen.
7. Coolify URL, Resource UUID und API-Token eintragen.
8. Konfiguration speichern.

Keinen Root-Token verwenden.

## 11. Deployment aus Vendoo auslösen

1. Neue Version zuerst in GitHub nach `main` mergen.
2. GitHub Actions vollständig grün abwarten.
3. Optional GitHub Release veröffentlichen.
4. In der laufenden Vendoo-Installation das Update Center öffnen.
5. `Coolify-Deployment starten` anklicken.
6. Exakt `DEPLOY` eingeben.
7. Vendoo erstellt zuerst ein verifiziertes Backup einschließlich Konfiguration.
8. Danach wird der Coolify-Auftrag gesendet.
9. Coolify baut einen neuen Container aus dem konfigurierten Branch.
10. Der laufende Container verändert sich nicht selbst.

## 12. Nachkontrolle

Nach jedem Deployment prüfen:

- `https://vendoo.flatlined.de/readyz`
- Anmeldung
- Artikel und Medien
- Modulmanager
- Security Center
- Update Center
- Backupliste
- Coolify Build- und Containerlogs

## 13. Rollback

Bei einem fehlerhaften Deployment:

1. In Coolify die Vendoo-Anwendung öffnen.
2. `Deployments` beziehungsweise Deployment History öffnen.
3. das letzte funktionierende lokale Image wählen.
4. Rollback ausführen.
5. `/readyz` prüfen.
6. Daten nur dann wiederherstellen, wenn eine Migration oder ein Nutzdatenproblem vorliegt.

Da Vendoo-Daten im Volume `/app/data` liegen, ersetzt ein Containerrollback normalerweise nur den Programmstand und nicht die Nutzdaten.
