NoMachine NX-Server (GPL-Version) unter FreeBSD

0815Chaot

FreeBSD/sparc64-Tüftler
Das folgende HOWTO ist ein Abfallprodukt aus einem Projekt und als quick-'n'-dirty-Lösung zu sehen. Es beschreibt, wie eine lauffähige Minimalkonfiguration eines NX-Servers unter FreeBSD aufgesetzt wird und wie man den benötigten NX-Client schnell in Betrieb nimmt. Wer Extrawürste (wie eigene Keys) haben will, der lese sich bitte in die Doku ein.

Da ich hier nicht groß Werbung und Geschwafel um das Produkt machen will, setze ich einfach voraus, daß jeder weiß, wofür man NX gebrauchen kann.

Getestet auf FreeBSD 5.4-RELEASE (i386) mit freenx-0.4.4_1 und nxserver-1.4.0.

A. NX-Server

Ich gehe davon aus, daß der Server unter FreeBSD betrieben wird. Die benötigte Server-Software kann ganz einfach über die Ports installiert werden. Die Konfiguration kann ebenfalls schnell abgehakt werden.

  1. cd /usr/ports/net/freenx && make install
    net/freenx ist nur das Server-Frontend, das Server-Backend net/nxserver wird daher vom Port automatisch mitinstalliert.
  2. echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":/usr/X11R6/NX/lib' >> /etc/profile
  3. . /etc/profile
  4. cd /usr/X11R6/NX/bin
  5. ./nxsetup --install --setup-nomachine-key
Damit ist der NX-Server schlüsselfertig. Alle Benutzer können sich jetzt via SSH/PAM am NX-Server authentifizieren. Damit der NX-Server künftig bei jedem Start des Systems automatisch mitgestartet wird, sollte z.B. folgendes Skript unter /usr/local/etc/rc.d/nxserver.sh plaziert werden:
Code:
#!/bin/sh
        
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":/usr/X11R6/NX/lib
                
case "$1" in
  start)    echo "Starting NX server..."
            cd /usr/X11R6/NX/bin  &&  ./nxserver --start
            exit $?
            ;;
  stop)     echo "Stopping NX server..."
            cd /usr/X11R6/NX/bin  &&  ./nxserver --stop
            exit $?
            ;;
  restart)  "$0" stop  &&  "$0" start
            exit $?
            ;;
  *)        echo -e "\nUsage:  $(basename "$0")  { start | stop | restart }\n"
            echo -e "Starts, stops, and restarts the NoMachine NX server.\n"
            exit 1
            ;;
esac
Natürlich nicht vergessen, das Skript ausführbar zu machen.

B. NX-Client

Hier gehe ich ebenfalls davon aus, daß auf dem Client FreeBSD als Betriebssystem verwendet wird. Der NX-Client ist aber auch für diverse andere Betriebssysteme ohne große Schwierigkeiten einzurichten.

net/freenx enthält zwar einen NX-Client, allerdings habe ich ihn nicht zur Mitarbeit bewegen können. Daher greife ich auf den kommerziellen Client zurück, dessen Linux-Version absolut problemlos unter FreeBSD läuft:

  1. Kommerziellen NX-Client (kostenfrei) von www.nomachine.com runterladen. Wir nehmen hier den »NX Client for Linux not requiring the XFT libraries«, und zwar speziell die Datei »NX Client Compressed TAR for Linux«. Das ist ein gzip-komprimiertes tar-Archiv namens »nxclient-1.5.0-141.i386.tar.gz«.
  2. Archiv z.B. nach /usr/local/NX entpacken: tar xzf nxclient-1.5.0-141.i386.tar.gz -C /usr/local
  3. Shell-Skript /usr/local/NX/RunNXClient.sh anlegen und ausführbar machen:
    Code:
    #!/bin/sh
    NXDIR=$(cd "$(dirname "$0")" ; pwd)
    LD_LIBRARY_PATH="$NXDIR"/lib "$NXDIR"/bin/nxclient $@
    exit $?
  4. /usr/local/NX/RunNXClient.sh als User ausführen - ein Wizard hilft beim ersten Einrichten eines NX-Profils. Es sei empfohlen, die Option »Enable SSL encryption of all traffic« zu aktivieren, damit der gesamte Verkehr durch SSH getunnelt wird. Dann gibt's die wenigsten Probleme mit irgendwelchen Paketfiltern.

Im Prinzip also alles ganz einfach, wenn man einmal weiß, wie's geht. :D
 
Nach den neuen (noch nicht im Porters Handbook) Richtlienien sollte das Skript nxserver und nicht nxserver.sh heißen.
 
Hallo,

meine letzte FreeNX-Server-Installation konnte ich über folgende Arbeitsschritte machen:

Code:
cd /usr/ports/net/freenx;  make install clean
cp /usr/X11R6/NX/etc/nxserver/node.conf.sample /usr/X11R6/NX/etc/nxserver/node.conf
/usr/X11R6/NX/bin/nxsetup --install  --setup-nomachine-key;
.../nxsetup --adduser einberechtigter_user
reboot

Bei mir musste ich kein NX-Server mit einem Start-Skript starten und es existiert auch keins in /usr/local/etc/rc.d .

Wenn ich das richtig verstanden habe, dann wird NX sowieso durch eine SSH-Verbindung getunnelt, d.h. der FreeNX-Client öffnet eine SSH-Verbindung und "ruft da seinen Server selbst auf".
 
markus.r schrieb:
Hallo,

....

Bei mir musste ich kein NX-Server mit einem Start-Skript starten und es existiert auch keins in /usr/local/etc/rc.d .

Wenn ich das richtig verstanden habe, dann wird NX sowieso durch eine SSH-Verbindung getunnelt, d.h. der FreeNX-Client öffnet eine SSH-Verbindung und "ruft da seinen Server selbst auf".
Völlig richtig,
wenn Du im Client von www.nomachine.com unter Windows SSL-Verschlüsselung einschaltest ist auch der Befehl ".../nxsetup --adduser einberechtigter_user" nicht nötig.
Funktionert bestens mit FreeBSD-RC1 in einer VM (VMware) unter WinXP.
Die vom "0815Chaot" weiter oben erstellten start/stop-Scripte sind nicht erforderlich.
 
Funktioniert bei euch auch Suspend/Resume? Bei uns ging das erst sauber, nachdem der nxserver explizit gestartet wurde. Daher lasse ich das jetzt immer beim Booten erledigen. Vielleicht ist das auch nur ein Konfigurationsproblem, welches sich aber auf diesem Weg anscheinend lösen läßt.
 
0815Chaot:

Die Sitzungszuverlässigkeit funktioniert bei mir gar bzw. die Sitzung bleibt, aber ich kann mich nicht mehr darauf verbinden.

Vielleicht ist das wirklich die Lösung, dass man den Server explizit startet.

Wir sollten mal ein Wiki daraus machen und unsere Erfahrungen zusammentragen.
 
markus.r schrieb:
Die Sitzungszuverlässigkeit funktioniert bei mir gar bzw. die Sitzung bleibt, aber ich kann mich nicht mehr darauf verbinden.
Hast du den NX Session Administrator innerhalb der NX-Session (also auf dem NX-Server) gestartet und dann über diesen die Session suspended? Zusammen mit dem expliziten Starten des NX-Servers funktionierte daraufhin bei uns auch der Resume einwandfrei.

Unser Fehler war am Anfang, daß wir den NX Session Administrator auf dem NX-Client, also außerhalb der NX-Session aufgerufen und über diesen den Suspend durchgeführt haben - dann funktionierte der Resume nur sehr sporadisch bzw. eigentlich gar nicht mehr.

markus.r schrieb:
Wir sollten mal ein Wiki daraus machen und unsere Erfahrungen zusammentragen.
Könnte man durchaus in Angriff nehmen. Allerdings habe ich die nächsten zwei Wochen keine Zeit, mich noch mal mit dem NX-Kram auseinander zu setzen - was aber leider nötig wäre. Es gibt da nämlich noch einige Ungereimtheiten, wie ich zuletzt leider feststellen mußte. Beispielsweise ist nxesd völlig unbrauchbar, weil der Sound massiv stottert. Der "normale" esd(1) dagegen läuft prima, auch im Zusammenspiel mit einer NX-Session, allerdings ist das nicht wirklich optimal. Außerdem stellt sich Alt+F4 tot, Numlock ist invers, die Tastenwiederholung geht nicht - und so weiter und so fort. Da muß ich mich mal genauer in die node.conf einlesen, dort müßte man ein paar Flags mitgeben können.

Es liegt also noch etwas Bastelarbeit vor mir. Du kannst aber gerne schon einmal anfangen, deine Erfahrungen ins Wiki zu packen. Wie gesagt, ich komme wahrscheinlich fühestens wieder übernächste Woche dazu, mich mit NX zu beschäftigen. Sobald ich da irgendwie weiterkomme, melde ich mich.
 
Zurück
Oben