Nomachine Enterprise Workstation auf Proxmox inkl. Grafikbeschleunigung

Nachdem viele von euch schon festgestellt haben das es im Linuxbereich keine brauchbare freie Lösung gibt um einen Terminalserver in einer produktiven Umgebung einzusetzten, kann ich euch beruhigen. Mit ein wenig Geld ist das kein Problem.

Ziel war es:

  • Einen modernen Desktop mit vielen Möglichkeiten für den Benutzer bereit zu stellen
  • Nicht nur einen Terminalserver, sondern eine Arbeitsumgebung zu schaffen wo der Client selbst seine Bedeutung verliert
  • Den Terminalserver mit Grafikbeschleunigung zu versehen wo auch der User über das Netzwerk 3D beschleunigte Applicationen ausführen kann

Nomachine Enterprise Workstation hat 4 Userzugriffe und beinhaltet für die Übertragung h264 und OpenGL. Weiters bietet es die Möglichkeit Grafikarten wie Intel und NVIDIA nativ zu nutzen. Die freie Version von Nomachine würde ich als gut benutzbares VNC und Fernwartungstool zu sehen, aber auf keinem Fall für die tägliche Arbeit. Auch ist zu erwähnen das die tollen Features auch nicht in der EVAL enthalten sind und auch dort manuel eingebaut werden muss. Die paar Euros sind es immer wert die Enterprise Workstation zu kaufen, denn es funktioniert einfach.

  • Proxmox 5.3
  • KVM Gast: KDE Neon 18.04 mit UEFI und Spicegrafik
  • Nomachine Enterprise Workstation Version 6.4.6
  • Grafikbeschleunigung mit virtueller Spicegrafik, hat man ne GPU wird diese selbstverständlich voll genutzt
agent: 1
args: -device intel-hda,id=sound5,bus=pci.0,addr=0x18 -device hda-micro,id=sound5-codec0,bus=sound5.0,cad=0 -device hda-duplex,id=sound5-codec1,bus=sound5.0,cad=1
bios: ovmf
bootdisk: scsi0
cores: 8
cpu: host
cpuunits: 512
description: Terminalserver mit KDE NEON%0ANomachine Enterprise Workstation
efidisk0: SSD-vmdata:vm-104-disk-1,size=128K
hotplug: disk,network,usb
ide2: none,media=cdrom
memory: 5120
name: term.osit.cc
net0: virtio=62:27:B3:7E:09:1A,bridge=vmbr0
numa: 1
onboot: 1
ostype: l26
scsi0: SSD-vmdata:vm-104-disk-0,discard=on,size=32G,ssd=1
scsihw: virtio-scsi-pci
sockets: 1
vga: qxl,memory=128
..

Voraussetzung:

  • Installierte Nomachine Enterprise Workstation (nicht EVAL)
  • Nomachine Login virtueller Desktop funktioniert
  • KDE NEON up do date und auf UEFI basis
  • SSH für dein einfach Zugriff für die Erstkonfiguration
  • Es darf kein Benutzer am physikalischen Desktop, sprich SDDM eingeloggt sein

Zuert konfigurieren wir den NXclient. Dieser benötigt noch zwei LIBS damit der H264codec sein Werk tun kann. Hier als Beispiel ein KDE-Neon mit dem Enterprise Client:

cp  /usr/lib/x86_64-linux-gnu/libavutil.so.55.78.100 /usr/NX/lib/libavutil.so
cp /usr/lib/x86_64-linux-gnu/libavcodec.so.57.107.100 /usr/NX/lib/libavcodec.so

Das wars zum Client.

Um die Beschleunigung am Server zu aktivieren sind folgende zwei Optionen in der Datei /usr/NX/etc/node.cfg auszukommentieren und zu setzten.

..
EnableVirtualGLSupport 1 # Aktiviert die native 3D Beschleunigung, abhängig von der Hardware für den gesamten Desktop
AgentX11VectorGraphics 0 # Deaktiviert die X11 Komprimierung, sonst wird kein h264 für die Beschleunigung verwendet

# for Lubuntu Desktop
-DefaultDesktopCommand "dbus-launch --exit-with-session gnome-session --session=ubuntu"
+DefaultDesktopCommand "/etc/X11/Xsession default"
..

#FR11O03550

Die Punkte und viele andere Optionen können auch mit der Binary gesetzt werden, z.B.:

/usr/NX/bin/nxserver --virtualgl yes

Weiters kann man einen Benutzer zum NX-Administrator machen, dieser kann dann mittels der NX-GUI administrieren.

/usr/NX/bin/nxserver --useradd deinuser --administrator
/usr/NX/bin/nxserver --userlist

NXserver für OpenGL nutzbar machen:

/etc/NX/nxserver --virtualgl-install

Das ganze wieder deaktivieren… wer es braucht:

/etc/NX/nxserver --virtualgl-uninstall

Hat man das ganze Konfiguriert und den NXserverdienst mit der integrierten CLI reloaded oder den Dienst mit systemd neu gestartet. Kann man sich bereits einloggen. Beim Login natürlich „virtuellen Desktop“ auswählen.

Unter SDDM muss man noch ein Timeout vergeben.

nano /usr/share/sddm/scripts/Xsetup
- xhost +LOCAL:
+ sleep 5; xhost +LOCAL:) &

Nun noch den Displaymanager neu starten systemctl restart sddm.service.

Arbeitet das System richtig hat man sogar ohne echter Hardwaregrafikkarte ne super Beschleunigung die nicht mal annähernd an Windowsterminalservern heran kommt, zumindest nicht ohne RemoteFX und sehr viel Geld. Von der komplizierten Config möchte ich hier garnicht erst anfangen. Wichtig ist das man den Compositerenderer auf Xrender setzt. Dann flutscht das ganze.

Um eine bestimmte Application im OpenGL auszuführen falls man EnableVirtualGLSupport 1 nicht aktiviert hat, gibt man auf der CMD folgendes ein, z.B. hier supertuxkart.

/usr/NX/scripts/vgl/vglrun supertuxkart

Man kann auch statt dem Desktop nur einzelne Applikationen aufrufen und verteilen. Es funktioniert auch ohne /usr/NX/scripts/vgl/vglrun.