Es ist vollbracht?

Man stelle sich vor, man hat gerade eine Projektarbeit am Laufen, selbstverständlich ohne irgendwelche Fristen oder allgemeine Zielsetzungen, auf Windows 7.
Alle 90 Minuten Raumwechsel, neu booten, was ja an sich schon schlimm ist, wäre es nicht ein Imagesystem, welches seinen Zustand, also alle vom User installierten Programme, jedes mal auf's Neue zurücksetzt.
Bedeutet, git erneut installieren, projektspezifische Treiber erneut installieren, Eclipse konfigurieren, ganz zu schweigen davon, dass man alle Programme wieder öffnen muss.

Was kann in solch einer Situation getan werden, um sowohl das Aggressionspotential zu minimieren, als auch die geistige Gesundheit zu wahren?

Ich bin ja schon länger der Meinung, Thin-Clients und eine Serverfarm werden es richten. Fehlt nur noch FTTH/FTTB/Gigabit synchron, flächendeckend, in Deutschland.

VNC ist das Linux eigene RDP (Remotedesktopverbindung). Sonach muss auf Clientseite nur die VNC Applikation gestartet werden, alle Programme sind und bleiben da, wie man sie zuletzt verlassen hat. Der VNC-Client darf jederzeit geschlossen werden, trotzdem kann man sofort an einem anderen Rechner weiter machen.


SSH-Tunneling mit Pubkeys; und auch Passwortabfragen gehören der Vergangenheit an. Nach diesem Dialog steht die Verbindung zum entfernten Desktop.

Als Client sowie Server kommen ausschießlich TurboVNC in Frage. Tightvnc, Vnc4server, x11vnc, alles zu langsam und veraltet.
Zudem X11vnc auch gar nicht für persistente Desktops ausgelegt ist, eher zum Teilen schon vorhandener X-Sessions.

Beim TurboVNC nicht die Beta nehmen, diese ist buggy.
TurboVNC 2.0.2 Download - es gibt .deb, .rpm und natürlich .exe, für Windows. Das ganze benötigt Java. Es wird aktiv daran entwickelt, letztes Release war Anfang des Jahres.

TurboVNC passt die Serverauflösung automatisch der Fenstergröße des Clients an. Das macht sonst kein anderer VNC-Client bzw Server.
Wenigstens unter Windows funktioniert das problemlos.
Andererseits kann auch in den Einstellungen eine fixe Auflösung eingestellt werden,

Zoom ist, besonders, wenn man sich auf einem hochauflösenden Bildschirm befindet, auch hilfreich.
Tightvnc zum Beispiel unterstützt überhaupt gar keine Änderung der Auflösung nach dem Start, mittels vnc4server kann diese immerhin per xrandr (Kommandozeile) geändert werden.

Full HD, Firefox, smooth-scrolling deaktiviert, läuft super. Sogar Youtube Videos laufen ruckelfrei in HD (>8 Mbit/s) (Auflösung normale Ansicht, kein Vollbild).
Das finde ich beachtlich, zumal alles auf meinem kleinen HTPC läuft.

Tastenkombinationen für den Client:
Ctrl+Alt+Shift+F - Vollbild
Ctrl+Alt+Shift+L - Lossless refresh
F8 - Toolbar


Zu beachten ist, VNC funktiniert nur bare metal! Keine VMs, kein Docker, kein LXC - es laggt alles fürchterlich.
GPU-Passthrough oder nvidia-docker wäre noch eine Option, doch leider sieht es mit AMD in dieser Richtung nicht sehr gut aus.


Von den Qualitätseinstellungen gibt es hauptsächlich drei: Low, Medium, High.
Low für WAN (Internet), ist zu verpixelt. High, verlustfrei, optimal für's (100 Mbit/s +) LAN.
Mindestens Medium muss es sein. Das wären dann ca. 10 Mbit/s.
10 Mbit/s aufwärts.

Serverkonfiguration
Neue X-Sessions/Displays für jedermann erlauben:

sed -i "s/allowed_users=.*/allowed_users=anybody/g" /etc/X11/Xwrapper.config
reboot


Soll eine andere Desktopumgebung als die Standard-Desktopumgebung festgelegt werden (unter Debian update-alternatives --config x-session-manager), so kann die entsprechende Session in die Datei ~/.xsession eingetragen werden, für XFCE4 z.B.:
xfce4-session

Verfügbare Sessions siehe unter: /usr/share/xsessions/
Eine xstartup Datei muss nicht angelegt werden, dies macht TurboVNC automatisch.

Zwischenzeitlich hatt ich mal Cinnamon 3 zum Laufen bekommen, später lief nur noch XFCE.

VNC-Sessions starten:

export TVNC_MT=1 # multithreading on
su -c "/opt/TurboVNC/bin/vncserver :1 -localhost -nohttpd -noauth" vncuser1 # Port 5901
su -c "/opt/TurboVNC/bin/vncserver :2 -localhost -nohttpd -noauth" vncuser2 # Port 5902
su -c "/opt/TurboVNC/bin/vncserver :3 -localhost -nohttpd -noauth" vncuser3 # Port 5903
################################## :display ##################### user ##### Port

Und so weiter...
Vorsicht, der VNC-Server öffnet noch weitere Ports.

Jeder User bekommt somit ein eigenes virtuelles Display zugewiesen (:DISPLAY), welches unter dem Port zur Verbindung bereit steht.

Fazit
VNC als portable Entwicklungsumgebung taugt leider außerhalb eines LANs nicht für den Produktiveinsatz.
Alleine schon wegen der Latenz.
Eine Linux VM auf externer Festplatte mitzuschleppen wäre eine Option, aber warum einfach, wenn es auch kompliziert geht?

Terminal-Server Lösungen wie z.B. Citrix oder das Linux Terminal Server Project, kombiniert mit Virtualisierungstechnologien, ermöglichen die zentrale Verwaltung, Absicherung, Wartung von IT-Systemen. Kostenersparnis in der IT garantiert.
Hauptsächlich der sichere Zugriff von Überall stehen bei mir im Vordergrund.
Unterbrechungsfrei.
Im Falle einer Nichtnutzung kann benutzter RAM immer noch auf einer HDD "geparkt" werden.
Nie wieder neu starten müssen? Man kann leider nicht alles haben...

Quellen:
https://docs.oracle.com/cd/E19279-01/820-3257-12/turbovnc.html
http://askubuntu.com/questions/581979/ubuntu-14-10-multiple-simultaneous-independent-remote-desktop-like-connection
https://www.howtoforge.com/how-to-install-vnc-server-on-ubuntu-14.04
https://edulab.unitn.it/tecnici/how-to-install-vnc-server-on-debian-8/
http://www.stuartellis.eu/articles/vnc-on-linux/#running-persistent-desktops
https://www.suse.com/documentation/sled11/book_sle_admin/data/sec_vnc_persistent.html
http://stackoverflow.com/questions/15816/changing-the-resolution-of-a-vnc-session-in-linux/1083668#1083668