Headless Server mit XFCE

Auch für Server gibt es Anwendungsfälle, wo man eine grafische Oberfläche brauchen kann. Etwa, um dort für Unterwegs eine Entwicklungsumgebung mit einer IDE oder Managementtools bereit zu halten. Im folgenden wird davon ausgegangen, dass es nur einen Nutzer gibt. Dies vereinfacht die Einrichtung, weil man dann auf einen Display Manager verzichten kann und direkt den Desktop oder Fenstermanager seiner Wahl startet.

Den grafischen Part übernimmt Xvfb, das in einem virtuellen Framebuffer einen X-Server startet. x11vnc stellt diesen dann via VNC zur Verfügung. Das zugrundeliegende System ist ein aktuelles Ubuntu und gewünscht ist XFCE als Oberfläche. Folgende Pakete werden installiert:

apt install xfce4 xvfb x11vnc

Die Oberfläche soll unter einem eigenen Nutzer laufen:

useradd —shell /bin/bash —user-group —create-home dev

Einmal testen ob alles funktioniert:

sudo -u dev /usr/bin/xvfb-run --server-num=0 --auth-file=/home/dev/.Xauthority --server-args="-screen 0 1920x1080x24" /usr/bin/xfce4-session

Damit das ganze beim Systemstart automatisch funktioniert, legt man sich zwei Unit-Files für SystemD an. Zuerst für Xvfb und XFCE:

[Unit]
Description=Headless XFCE4 with Xvfb
Requires=dbus.service polkitd.service accounts-daemon.service

[Service]
Type=simple
User=dev
Group=dev
ExecStart=/usr/bin/xvfb-run --server-num=0 --auth-file=/home/dev/.Xauthority --server-args="-screen 0 1920x1080x24" /usr/bin/xfce4-session
Environment=LANG=de_DE.utf8

[Install]
WantedBy=multi-user.target

Die Umgebungsvariable $LANG steuert, welche Sprache die Oberfläche hat. Ohne diese Angabe wäre die Locale eingestellt auf C, dann lassen sich aber keine Umlaute eingeben. Für x11vnc sieht das so aus:

[Unit]
Description=VNC Server
Requires=headless.service
After=headless.service

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -forever -xkb -localhost -auth /home/dev/.Xauthority -rfbauth /etc/vncpasswd -solid black -display :0

[Install]
WantedBy=multiuser.target

Nun noch ein Neustart und dann kann man sich z.B. Über einen SSH-Tunnel auf den x11vnc verbinden.

Ersten Kommentar schreiben

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*