Sie befinden sich hier: REX 18 / PSI 16 » REX3D » REX3D einrichten

REX3D einrichten

Dies ist eine alte Version des Dokuments!


REX3D mit OpenFOAM einrichten

REX3D in der Kombination mit unserem OpenFOAM Solver arbeitet gekapselt in einer Linuxumgebung, so dass neben der erstmaligen Einrichtung für den Zugriff nichts weiter eingestellt werden muss. Die vorgefertigten Container werden von REX automatisch bereitgestellt und eingerichtet. Sie haben zwei Möglichkeiten zur Verwendung des OpenFOAM Solver:

  1. Als lokalen Linux Container in einer WSL Umgebung
  2. Remotezugriff auf einem Linux System

Die Einrichtung der jeweiligen Szenarien erfolgt im folgenden.

Verwendung auf einem lokalen PC mit WSL

Installation von WSL auf dem Client PC

Anpassen der Einstellungen in den REX3D Optionen

Verwendung eines Remote-Servers

Der Podman-Remote-Client ermöglicht es, von einem separaten Windows-Client mit einem Podman-Backend auf einem Linux-Server zu kommunizieren. Das Podman-Backend stellt dabei die für REX3D beziehungsweise PSI benötigte OpenFOAM-Umgebung bereit.

Aus Sicht von REX3D oder PSI verhält sich die entfernte Podman-Installation weitgehend wie eine lokale Installation.

Voraussetzungen

Die Verbindung basiert auf einem Client-Server-Modell.

Benötigt werden:

  • ein Linux-Server oder eine Linux-VM,
  • ein laufender SSH-Dienst auf dem Server,
  • Podman auf dem Server,
  • ein Windows-PC mit einer REX beziehungsweise PSI Version,
  • OpenSSH und ein Podman-Client auf dem Windows-PC.

Die Anleitung geht von Ubuntu 24.04 oder einer vergleichbaren Ubuntu-Version mit systemd aus. Podman ist in den offiziellen Ubuntu-Paketquellen verfügbar.

In den folgenden Befehlen müssen diese Platzhalter ersetzt werden:

  • <SERVER>: Hostname oder IP-Adresse des Servers
  • <ADMIN>: administrativer Benutzer auf dem Server
  • <e3d_usr>: unprivilegierter Benutzer für Podman und OpenFOAM
  • <ssh_podman_e3d_usr>: Dateiname des SSH-Schlüssels

1. Podman auf dem Server installieren

1.1 Auf dem Server anmelden

Auf dem Windows-PC in PowerShell:

ssh.exe <ADMIN>@<SERVER>

1.2 Benötigte Pakete installieren

Auf dem Server:

sudo apt-get update
 
sudo apt-get install -y 
podman 
uidmap 
slirp4netns 
fuse-overlayfs 
passt 

Installation prüfen:

podman --version

2. Podman-Benutzer einrichten

2.1 Benutzer ohne Passwortanmeldung anlegen

Als Administrator auf dem Server:

sudo adduser \
  --disabled-password \
  --gecos "" \
  <e3d_usr>

Der Benutzer erhält kein lokales Passwort. Die Anmeldung erfolgt später ausschließlich über einen SSH-Schlüssel.

2.2 Home-Dateisystem prüfen

findmnt -T /home/<e3d_usr>

Ein lokales Dateisystem wie ext4, xfs oder btrfs eignet sich für den Container-Storage.

Bei einem Homeverzeichnis auf NFS sollte für den Podman-Storage ein lokaler Pfad eingerichtet werden. NFS ist als Speicherort für den Rootless-Container-Storage in der Regel nicht geeignet.

2.3 User-systemd dauerhaft aktivieren

Damit die benutzerspezifischen systemd-Dienste auch ohne aktive SSH-Sitzung ausgeführt werden, muss für den Benutzer Linger aktiviert werden:

sudo loginctl enable-linger <e3d_usr>

Status prüfen:

loginctl show-user <e3d_usr> -p Linger

Erwartete Ausgabe:

Linger=yes

3. SSH-Schlüssel auf dem Windows-PC einrichten

Auf dem Windows-PC muss der OpenSSH-Client installiert sein.

3.1 OpenSSH prüfen

In PowerShell:

Get-Command ssh.exe
Get-Command ssh-keygen.exe
Get-Command scp.exe
 
ssh.exe -V 

Windows OpenSSH enthält unter anderem die Programme ssh, scp und ssh-keygen.

3.2 SSH-Schlüssel erzeugen

Pfad des neuen Schlüssels festlegen:

$KeyPath = "$env:USERPROFILE\.ssh\<ssh_podman_e3d_usr>"

Das Verzeichnis .ssh erstellen, falls es noch nicht vorhanden ist:

New-Item `
    -ItemType Directory `
    -Force `
    -Path "$env:USERPROFILE\.ssh" |
    Out-Null

Prüfen, ob unter dem gewählten Namen bereits ein Schlüssel vorhanden ist:

Test-Path $KeyPath
Test-Path "$KeyPath.pub"

Beide Befehle sollten False zurückgeben.

Falls bereits Dateien vorhanden sind, darf der folgende Befehl erst ausgeführt werden, nachdem geprüft wurde, ob diese Schlüssel noch benötigt werden.

SSH-Schlüssel erzeugen:

ssh-keygen.exe `
    -t ed25519 `
    -a 100 `
    -f $KeyPath `
    -C "<e3d_usr>@<SERVER>"

Dabei entstehen zwei Dateien:

<ssh_podman_e3d_usr>       Privater Schlüssel
<ssh_podman_e3d_usr>.pub   Öffentlicher Schlüssel

Der private Schlüssel darf den Windows-PC, auf dem REX3D beziehungsweise PSI installiert ist, nicht verlassen.

3.3 Öffentlichen Schlüssel auf den Server kopieren

In PowerShell:

scp.exe `
    "$KeyPath.pub" `
    "<ADMIN>@<SERVER>:/tmp/<e3d_usr>.pub"

Anschließend als Administrator am Server anmelden:

ssh.exe <ADMIN>@<SERVER>

3.4 Schlüssel für den Podman-Benutzer installieren

Auf dem Server zunächst das SSH-Verzeichnis erstellen:

sudo install \
  -d \
  -m 700 \
  -o <e3d_usr> \
  -g <e3d_usr> \
  /home/<e3d_usr>/.ssh

Den öffentlichen Schlüssel als authorized_keys installieren:

sudo install \
  -m 600 \
  -o <e3d_usr> \
  -g <e3d_usr> \
  /tmp/<e3d_usr>.pub \
  /home/<e3d_usr>/.ssh/authorized_keys

Die temporäre Datei löschen:

sudo rm -f /tmp/<e3d_usr>.pub

Berechtigungen prüfen:

sudo ls -ld /home/<e3d_usr>/.ssh
sudo ls -l /home/<e3d_usr>/.ssh/authorized_keys

3.5 SSH-Anmeldung als Podman-Benutzer testen

Auf dem Windows-PC:

ssh.exe `
    -i "$env:USERPROFILE\.ssh\<ssh_podman_e3d_usr>" `
    <e3d_usr>@<SERVER>

Nach der Anmeldung auf dem Server prüfen:

whoami
id
pwd

Erwartet werden unter anderem:

<e3d_usr>
/home/<e3d_usr>

Die Ausgabe von id muss die Benutzer- und Gruppeninformationen des Benutzers <e3d_usr> anzeigen.

Optional kann die SSH-Verbindung direkt vom Windows-PC aus geprüft werden:

ssh.exe `
    -i "$env:USERPROFILE\.ssh\<ssh_podman_e3d_usr>" `
    <e3d_usr>@<SERVER> `
    "whoami; podman --version"

4. Podman-Socket auf dem Server aktivieren

4.1 Podman als Benutzer testen

Als <e3d_usr> auf dem Server:

podman info

Der Befehl muss ohne sudo ausgeführt werden.

4.2 Podman-Socket aktivieren

Als <e3d_usr> auf dem Server:

systemctl --user enable --now podman.socket

Status prüfen:

systemctl --user status podman.socket --no-pager

4.3 Socket-Pfad prüfen

echo "$XDG_RUNTIME_DIR/podman/podman.sock"
ls -l "$XDG_RUNTIME_DIR/podman/podman.sock"

Der Rootless-Podman-Socket liegt standardmäßig unter:

/run/user/<UID>/podman/podman.sock

Die numerische UID des Benutzers kann mit folgendem Befehl ermittelt werden:

id -u

Podman verwendet für den API-Socket die systemd-Socket-Aktivierung. Zusammen mit loginctl enable-linger bleibt der Socket auch ohne aktive SSH-Anmeldung verfügbar.

5. Podman-Remote-Verbindung auf dem Windows-PC einrichten

Auf dem Windows-PC muss ein Podman-Client installiert sein.

5.1 Verbindung hinzufügen

In PowerShell:

podman.exe system connection add `
    rex3d-openfoam `
    --identity "$env:USERPROFILE\.ssh\<ssh_podman_e3d_usr>" `
    "ssh://<e3d_usr>@<SERVER>/run/user/<UID>/podman/podman.sock"

Dabei ist <UID> durch die numerische UID des Benutzers <e3d_usr> zu ersetzen.

Beispiel:

ssh://e3d@openfoam-server.example.org/run/user/1001/podman/podman.sock

5.2 Verbindung anzeigen

podman.exe system connection list

Die neue Verbindung sollte in der Liste erscheinen.

5.3 Verbindung testen

podman.exe `
    --connection rex3d-openfoam `
    info

Optional kann zusätzlich ein Testcontainer ausgeführt werden:

podman.exe `
    --connection rex3d-openfoam `
    run `
    --rm `
    docker.io/library/alpine:latest `
    uname -a

Der Container wird auf dem Linux-Server und nicht auf dem Windows-PC ausgeführt.

6. Podman-Verbindung in REX3D konfigurieren

In den REX3D-Optionen muss der Name der zuvor angelegten Podman-Verbindung eingetragen werden.

Bei Verwendung der Befehle aus dieser Anleitung lautet der Verbindungsname:

rex3d-openfoam

Die verfügbaren Verbindungen können jederzeit mit folgendem Befehl angezeigt werden:

podman.exe system connection list

Sicherheitshinweise

Der Podman-API-Socket erlaubt die vollständige Verwaltung aller Container, Images, Volumes und Pods des Benutzers <e3d_usr>.

Der Socket darf daher nicht über einen ungeschützten TCP-Port veröffentlicht werden. Der Zugriff über SSH auf den benutzereigenen Unix-Socket ist die bevorzugte Variante.

Der Benutzer <e3d_usr> sollte:

  • keine sudo-Rechte besitzen,
  • nicht Mitglied privilegierter Gruppen sein,
  • nur auf die benötigten Dateien und Verzeichnisse zugreifen können,
  • ausschließlich für REX3D, PSI und die zugehörigen OpenFOAM-Container verwendet werden,
  • einen eigenen SSH-Schlüssel verwenden,
  • keine privaten Schlüssel anderer Benutzer erhalten.

Der private SSH-Schlüssel auf dem Windows-PC sollte:

  • nur für diesen Verwendungszweck eingesetzt werden,
  • nicht per E-Mail oder über gemeinsame Netzlaufwerke verteilt werden,
  • durch geeignete Dateiberechtigungen geschützt werden,
  • bei Verlust oder bei einem Gerätewechsel aus authorized_keys entfernt werden.
rex3d/openfoamremote.1786087394.txt.gz · Zuletzt geändert: 2026/08/07 09:23