REX3D verwendet in Kombination mit unserem OpenFOAM-Solver eine gekapselte Linux-Umgebung. Nach der einmaligen Einrichtung des Zugriffs sind keine weiteren Konfigurationen erforderlich. Die benötigten Container werden von REX automatisch bereitgestellt und eingerichtet nachdem Sie die REX3D Abhängigkeiten heruntergeladen und installiert haben. Die Anleitung hierfür finden Sie hier: REX3D Installation.
Für die Verwendung des OpenFOAM-Solvers stehen zwei Varianten zur Verfügung:
Die Einrichtung beider Varianten wird in den folgenden Abschnitten beschrieben.
Möchten Sie REX3D mit OpenFOAM lokal verwenden müssen Sie WSL installieren und eine lokale virtuelle Maschine verwenden.
Öffnen Sie die Windows Powershell mit Adminstrationsberechtigungen und geben Sie folgendes ein:
wsl --install
Anschließend muss das System neugestartet werden.
Öffnen Sie anschließend in PSI / REX über das Hauptmenü den Eintrag Optionen > REX3D
Setzen Sie den Haken bei 'Lokale Maschine nutzen' und tragen Sie als Verbindungsname: podman-machine-default ein.
Durch das Klicken auf den Button 'Anwenden und testen' wird die WSL VM eingerichtet und vorbereitet. In den nächsten Schritten müssen Sie noch RAM, CPU Kerne und Festplattenkapazität der VM festlegen.
Mit dem Podman-Remote-Client kann ein Windows-PC auf ein Podman-Backend auf einem Linux-Server zugreifen. Das Podman-Backend stellt die für REX3D beziehungsweise PSI benötigte OpenFOAM-Umgebung bereit.
Für REX3D beziehungsweise PSI verhält sich die entfernte Podman-Installation weitgehend wie eine lokale Podman-Installation.
Die Verbindung basiert auf einem Client-Server-Modell.
Folgende Komponenten werden benötigt:
Diese Anleitung basiert auf Ubuntu 24.04 oder einer vergleichbaren Ubuntu-Version mit systemd. Podman ist über die offiziellen Ubuntu-Paketquellen verfügbar.
In den folgenden Befehlen werden Platzhalter verwendet. Ersetzen Sie diese durch die Werte Ihrer Umgebung:
Öffnen Sie auf dem Windows-PC PowerShell und stellen Sie eine SSH-Verbindung zum Server her:
ssh.exe <ADMIN>@<SERVER>
Aktualisieren Sie zunächst die Paketinformationen:
sudo apt-get update
Installieren Sie anschließend die benötigten Pakete:
sudo apt-get install podman
Prüfen Sie die Installation:
podman --version
Legen Sie als Administrator einen separaten Benutzer für Podman und OpenFOAM an:
sudo adduser \ --disabled-password \ --comment "" \ <e3d_usr>
Der Benutzer erhält kein lokales Passwort. Die Anmeldung erfolgt später ausschließlich über einen SSH-Schlüssel.
Prüfen Sie, auf welchem Dateisystem sich das Home-Verzeichnis des Benutzers befindet:
findmnt -T /home/<e3d_usr>
Für den Container-Storage eignen sich lokale Dateisysteme wie ext4, xfs oder btrfs.
Befindet sich das Home-Verzeichnis auf einem NFS-Dateisystem, richten Sie für den Podman-Storage einen lokalen Speicherpfad ein. NFS ist für Rootless-Container-Storage in der Regel nicht geeignet.
Damit benutzerspezifische systemd-Dienste auch ohne aktive SSH-Sitzung ausgeführt werden können, aktivieren Sie die Linger-Funktion für den Benutzer:
sudo loginctl enable-linger <e3d_usr>
Prüfen Sie anschließend den Status:
loginctl show-user <e3d_usr> -p Linger
Erwartete Ausgabe:
Linger=yes
Auf dem Windows-PC muss der OpenSSH-Client installiert sein.
Öffnen Sie PowerShell und prüfen Sie, ob die benötigten Programme verfügbar sind:
Get-Command ssh.exe Get-Command ssh-keygen.exe Get-Command scp.exe ssh.exe -V
OpenSSH für Windows stellt unter anderem die Programme ssh, scp und ssh-keygen bereit.
Legen Sie zunächst den Pfad für den neuen SSH-Schlüssel fest:
$KeyPath = "$env:USERPROFILE\.ssh\<ssh_podman_e3d_usr>"
Erstellen Sie das Verzeichnis .ssh, falls es noch nicht vorhanden ist:
New-Item ` -ItemType Directory ` -Force ` -Path "$env:USERPROFILE\.ssh" | Out-Null
Prüfen Sie, ob unter dem gewählten Namen bereits Schlüsseldateien vorhanden sind:
Test-Path $KeyPath Test-Path "$KeyPath.pub"
Beide Befehle sollten folgende Ausgabe liefern:
False
Hinweis: Sind unter dem angegebenen Pfad bereits Dateien vorhanden, prüfen Sie vor dem nächsten Schritt, ob diese Schlüssel noch benötigt werden. Vorhandene Schlüssel dürfen nicht unbeabsichtigt überschrieben werden.
Erzeugen Sie anschließend einen neuen SSH-Schlüssel:
ssh-keygen.exe ` -t ed25519 ` -a 100 ` -f $KeyPath ` -C "<e3d_usr>@<SERVER>"
Dabei werden zwei Dateien erzeugt:
<ssh_podman_e3d_usr> Privater Schlüssel <ssh_podman_e3d_usr>.pub Öffentlicher Schlüssel
Wichtig: Der private Schlüssel darf den Windows-PC, auf dem REX3D beziehungsweise PSI installiert ist, nicht verlassen.
Kopieren Sie den öffentlichen Schlüssel zunächst in das temporäre Verzeichnis des Servers:
scp.exe `
"$KeyPath.pub" `
"<ADMIN>@<SERVER>:/tmp/<e3d_usr>.pub"
Melden Sie sich anschließend als Administrator auf dem Server an:
ssh.exe <ADMIN>@<SERVER>
Erstellen Sie zunächst das SSH-Verzeichnis des Podman-Benutzers:
sudo install \ -d \ -m 700 \ -o <e3d_usr> \ -g <e3d_usr> \ /home/<e3d_usr>/.ssh
Installieren Sie anschließend den öffentlichen Schlüssel als authorized_keys:
sudo install \ -m 600 \ -o <e3d_usr> \ -g <e3d_usr> \ /tmp/<e3d_usr>.pub \ /home/<e3d_usr>/.ssh/authorized_keys
Löschen Sie danach die temporäre Datei:
sudo rm -f /tmp/<e3d_usr>.pub
Prüfen Sie abschließend die Berechtigungen:
sudo ls -ld /home/<e3d_usr>/.ssh sudo ls -l /home/<e3d_usr>/.ssh/authorized_keys
Stellen Sie auf dem Windows-PC eine SSH-Verbindung mit dem neu erzeugten Schlüssel her:
ssh.exe `
-i "$env:USERPROFILE\.ssh\<ssh_podman_e3d_usr>" `
<e3d_usr>@<SERVER>
Prüfen Sie nach der Anmeldung Benutzer, Gruppen und Arbeitsverzeichnis:
whoami id pwd
Unter anderem werden folgende Werte erwartet:
<e3d_usr> /home/<e3d_usr>
Die Ausgabe von id muss die Benutzer- und Gruppeninformationen des Benutzers <e3d_usr> anzeigen.
Optional können Sie die SSH-Verbindung direkt vom Windows-PC aus testen:
ssh.exe `
-i "$env:USERPROFILE\.ssh\<ssh_podman_e3d_usr>" `
<e3d_usr>@<SERVER> `
"whoami; podman --version"
Melden Sie sich als <e3d_usr> auf dem Server an und führen Sie folgenden Befehl aus:
podman info
Wichtig: Der Befehl muss ohne sudo ausgeführt werden.
Aktivieren Sie als Benutzer <e3d_usr> den Podman-Socket:
systemctl --user enable --now podman.socket
Prüfen Sie anschließend den Status:
systemctl --user status podman.socket --no-pager
Prüfen Sie den Pfad des Podman-Sockets:
echo "$XDG_RUNTIME_DIR/podman/podman.sock" ls -l "$XDG_RUNTIME_DIR/podman/podman.sock"
Der Rootless-Podman-Socket befindet sich standardmäßig unter:
/run/user/<UID>/podman/podman.sock
Ermitteln Sie die numerische UID des Benutzers mit folgendem Befehl:
id -u
Notieren Sie die ausgegebene UID. Sie wird später für die Einrichtung der Podman-Remote-Verbindung benötigt.
Podman verwendet für den API-Socket die systemd-Socket-Aktivierung. In Verbindung mit loginctl enable-linger bleibt der Socket auch ohne aktive SSH-Sitzung verfügbar.
Auf dem Windows-PC muss ein Podman-Client installiert sein.
Öffnen Sie PowerShell und legen Sie eine neue Podman-Verbindung an:
podman.exe system connection add `
remote-vm-ktp `
--identity "$env:USERPROFILE\.ssh\<ssh_podman_e3d_usr>" `
"ssh://<e3d_usr>@<SERVER>/run/user/<UID>/podman/podman.sock"
Zeigen Sie die konfigurierten Verbindungen an:
podman.exe system connection list
Die Verbindung remote-vm-ktp sollte in der Liste erscheinen.
Testen Sie die Verbindung:
podman.exe `
--connection remote-vm-ktp `
info
Der Befehl sollte Informationen zur Podman-Installation auf dem Linux-Server anzeigen.
Der Container wird auf dem Linux-Server ausgeführt. Auf dem Windows-PC wird lediglich der Podman-Remote-Client verwendet.
Öffnen Sie die REX3D-Optionen und tragen Sie dort den Namen der zuvor angelegten Podman-Verbindung ein.
Bei Verwendung der Befehle aus dieser Anleitung lautet der Verbindungsname:
remote-vm-ktp
Entfernen Sie den Haken bei 'Lokale Maschine nutzen'
Die verfügbaren Podman-Verbindungen können jederzeit mit folgendem Befehl über die Powershell angezeigt werden:
podman.exe system connection list
Nach erfolgreicher Konfiguration kann REX3D die OpenFOAM-Container über die eingerichtete Podman-Remote-Verbindung auf dem Linux-Server verwenden.
Der Podman-API-Socket ermöglicht die vollständige Verwaltung aller Container, Images, Volumes und Pods des Benutzers <e3d_usr>.
Wichtig: Veröffentlichen Sie den Podman-Socket nicht über einen ungeschützten TCP-Port. Verwenden Sie stattdessen den in dieser Anleitung beschriebenen Zugriff über SSH auf den benutzereigenen Unix-Socket.
Für den Benutzer <e3d_usr> gelten folgende Empfehlungen:
sudo-Rechte besitzen.