# PLESK · Node.js-Einstellungen

# PLESK · Node.js-Einstellungen

> **Hinweis (Stand 2026-05-23):** Aktuelle Produktion läuft mit Node.js 18.x LTS (siehe `.gitlab-ci.yml`). Plesk-Node.js-Toolkit muss installiert sein.

## Application-Settings im Plesk-UI

Im Plesk-Vhost unter **Node.js** folgende Felder setzen:

| Feld | Wert |
|---|---|
| Node.js Version | 18.x (LTS) |
| Document Root | `/var/www/vhosts/agrarforschung.at/dess.agrarforschung.at` |
| Application Root | `/var/www/vhosts/agrarforschung.at/dess.agrarforschung.at` |
| Application Startup File | `index.js` |
| Application Mode | `production` |

## Custom Environment Variables

DESS liest seine Konfiguration über `config/config.js` aus, dort werden bestimmte Felder über `process.env` überschreibbar gehalten. Im Plesk-UI unter **Node.js → Custom environment variables** mindestens setzen:

| Variable | Beispiel | Zweck |
|---|---|---|
| `NODE_ENV` | `production` | Aktiviert Production-Logging + Caching |
| `PORT` | `3000` | interner Node-Port (Plesk-nginx-Proxy davor) |
| `DB_HOST` | `127.0.0.1` | MariaDB-Host |
| `DB_USER` | `dess` | DB-User |
| `DB_PASSWORD` | `<secret>` | aus OpenBao, **niemals im Vault im Klartext** |
| `DB_NAME` | `dess` | DB-Name |
| `OIDC_ENABLED` | `true` | Aktiviert Keycloak-Login (seit 1.0.9) |
| `OIDC_ISSUER` | `https://sso.agrarforschung.at/realms/bab` | Keycloak-Realm |
| `OIDC_CLIENT_ID` | `dess` | KC-Client |
| `OIDC_CLIENT_SECRET` | `<secret>` | aus OpenBao |
| `PROXY` | `true` | hinter nginx-Reverse-Proxy |
| `SESSION_SECRET` | `<random>` | Express-Session-Secret, **nicht hardcoden** |

## Restart-Mechanismus

Plesk Passenger erkennt Neustart-Triggerdatei:

```bash
touch /var/www/vhosts/agrarforschung.at/dess.agrarforschung.at/tmp/restart.txt
```

Die CI-Pipeline `.gitlab-ci.yml` setzt dieses File automatisch nach jedem erfolgreichen SCP-Upload.

## Bekannte Hardening-Punkte

- **`trust proxy` Flag**: Express muss `app.set('trust proxy', 1)` setzen, damit `req.protocol` hinter dem nginx-Reverse-Proxy korrekt `https` liefert. Siehe Incident [DESS SSO-Login defekt nach Keycloak 26 Upgrade](https://doku.agrarforschung.at) bzw. Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`.
- **OIDC `iss`-Parameter**: KC26 sendet `iss` in der Auth-Response. Aktuell ist das auf KC-Seite per Client-Attribut `exclude.issuer.from.auth.response=true` deaktiviert; ein Hardening-Fix in `login.component.ts` + Joi-Schema ist offen.


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*