# Installation Basissystem

# VM für PLESK vorbereiten

# VM für PLESK vorbereiten

> **Hinweis (Stand 2026-05-23):** Diese Seite beschreibt die ursprüngliche Aufsetzung der DESS-Hosting-VM aus 2021. **Die Produktivinstanz `vm-plesk-live.bab.network` (192.168.101.121) läuft weiterhin auf Plesk, das Basis-OS-Setup ist historisch.** Für Neuinstallationen gelten die jeweils aktuellen Plesk-Software-Requirements (siehe Hinweis am Ende).

## Empfehlung VM-Sizing

Die notwendige Leistung richtet sich stark nach der Anzahl der gleichzeitigen Benutzer:innen im System. DESS selbst ist wenig anspruchsvoll, der Plesk-Stack braucht etwas mehr Reserven.

| Ressource | Empfehlung | Hinweis |
|---|---|---|
| vCPU | 4 Kerne | bei >300 aktiven Benutzer:innen 6–8 Kerne |
| RAM | 4 GB | bei >300 aktiven Benutzer:innen 8 GB |
| Festplatte | 100 GB | Wachstum über Reports + Logs einkalkulieren |

## BAB-Setup (Produktion)

`vm-plesk-live.bab.network` (192.168.101.121) hostet `dess.agrarforschung.at` mit Plesk + Node.js + MariaDB. Plesk-Vhost-Pfad:

```
/var/www/vhosts/agrarforschung.at/dess.agrarforschung.at
```

Deployment erfolgt CI-gesteuert per SCP aus `dess/dess`-Repo → `touch tmp/restart.txt` startet Node.js neu (siehe `.gitlab-ci.yml`).

## Aktuelle Plesk-Anforderungen

- Plesk Obsidian: <https://docs.plesk.com/release-notes/obsidian/software-requirements/>
- Für Neuinstallationen ist **Debian 12 (Bookworm)** oder **Ubuntu 22.04 LTS** zu wählen; **Debian 10 (Buster) ist seit 2024-06-30 EOL** und sollte für Neuinstallationen nicht mehr verwendet werden.


---

*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`*

# Debian installieren

# Debian installieren

> **Achtung (Stand 2026-05-23):** Diese Anleitung wurde 2021 für **Debian 10 (Buster)** verfasst. **Debian 10 ist seit 2024-06-30 EOL (End of Life)** und erhält keine Sicherheitsupdates mehr. Für Neuinstallationen ist Debian 12 (Bookworm) zu wählen.
>
> Die DESS-Produktivinstanz auf `vm-plesk-live.bab.network` läuft Stand 2026-05 noch unter dem ursprünglichen Plesk-Setup; ein Host-OS-Upgrade ist als Backlog-Punkt erfasst.

## Wahl des Basis-OS

| OS | Empfehlung | Anmerkung |
|---|---|---|
| Debian 12 (Bookworm) | **empfohlen** für Neuinstallationen | Plesk Obsidian unterstützt |
| Ubuntu 22.04 LTS | gleichwertig | Plesk-getestet |
| Debian 10 (Buster) | **abgelaufen** (EOL 2024-06-30) | nur für Bestandsanalyse, keine Neuinstallation |
| CentOS / RHEL | möglich | an der BAB nicht eingesetzt |
| Windows | nicht empfohlen | wesentlich ressourcenhungriger, an der BAB keine Erfahrung |

Aktuelle Plesk-Software-Requirements: <https://docs.plesk.com/release-notes/obsidian/software-requirements/>

## Installationsmedium

Debian NetInstall AMD64 ISO: <https://www.debian.org/CD/netinst/>

## Installations-Schritte (Standard)

1. ISO booten, Sprache + Locale wählen.
2. Hostname + Domain konfigurieren (z.B. `vm-plesk-live` / `bab.network`).
3. Root-Passwort setzen, Standard-User anlegen.
4. Partitionierung: Standard mit LVM (separates `/var`-Volume optional).
5. Paketauswahl: nur **SSH-Server** + **Standard-System-Werkzeuge** (Plesk übernimmt den Rest).
6. GRUB in den MBR installieren.

## Nach der Installation

```bash
apt update && apt -y upgrade
apt -y install sudo curl gnupg
```

Dann weiter mit der Plesk-Installation (siehe Folgeseite).


---

*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`*

# Debian einrichten und Plesk installieren

# Debian einrichten und Plesk installieren

> **Hinweis (Stand 2026-05-23):** Verfasst 2021 für Debian 10 + Plesk Obsidian. Die Schritte gelten sinngemäß für Debian 12 + aktuelles Plesk.

## Basis-Konfiguration

```bash
apt update && apt -y upgrade
```

## Netzwerk: statische IP konfigurieren

Für Serverbetrieb statt DHCP eine statische IP setzen:

```bash
nano /etc/network/interfaces
```

Beispiel (Debian-klassisch):

```text
auto eth0
iface eth0 inet static
    address 192.168.101.121
    netmask 255.255.255.0
    gateway 192.168.101.1
    dns-nameservers 192.168.64.10 192.168.64.11
```

Speichern mit `Strg+X`, dann `Y` zur Bestätigung. Anschließend Netzwerk-Stack neu starten:

```bash
systemctl restart networking
```

Bei Debian 12 (Bookworm) kommt `systemd-networkd` oder `NetworkManager` infrage — siehe <https://wiki.debian.org/NetworkConfiguration>.

## Plesk installieren

Aktuelle Anleitung (Console Installer):
<https://docs.plesk.com/en-US/obsidian/deployment-guide/plesk-installation-and-upgrade-on-single-server/installing-plesk-using-installer-console/installing-plesk-for-linux-using-installer-console.76445/>

Kurzform:

```bash
sh <(curl https://autoinstall.plesk.com/one-click-installer)
```

Nach der Installation `https://<server-ip>:8443/` aufrufen, mit Root-Passwort einloggen und den Setup-Wizard durchlaufen.

## Komponenten (für DESS)

Im Plesk-Installer mindestens folgende Komponenten aktivieren:

- nginx + Apache
- PHP (für Plesk-UI)
- **MariaDB** (für DESS)
- **Node.js Toolkit** (für DESS-Backend)
- Let's-Encrypt-Extension
- Optional: phpMyAdmin

## Domain anlegen

Im Plesk-UI:

1. Subscription / Domain anlegen → `dess.agrarforschung.at` unter Customer `agrarforschung`.
2. Vhost-Pfad: `/var/www/vhosts/agrarforschung.at/dess.agrarforschung.at`.
3. Node.js aktivieren (siehe Folgeseite).
4. SSL-Zertifikat via Let's-Encrypt oder Wildcard `*.agrarforschung.at` (Hetzner-DNS-01) zuweisen.


---

*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`*

# 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`*