HTML-Client für X11 SSH-Weiterleitung?

9

Ich bin mir nicht ganz sicher, ob dies der richtige Ort ist, aber hier geht es weiter.

Ich verstehe, dass Sie X11 verwenden können, um auf GUIs zu sshen und diese anzuzeigen, ohne dass auf dem Server ein volles GUI-System wie gnome oder so ausgeführt / installiert wird.

Mein Endziel ist es, meine Codierungssitzungen online "übertragen" zu können, damit die Leute sie online anzeigen können.

Im Moment habe ich es so eingerichtet, dass eine eingeschränkte tmux-Sitzung im Grunde immer mein persönliches tmux-Codierungssitzungsfenster spiegelt. Wenn Sie also mit einem eingeschränkten Konto auf den Server ssh, können Sie auf die eingeschränkte Sitzung springen und meiner Codierung folgen.

Ich möchte jedoch in der Lage sein, die Leute dies von ihrem Browser aus sehen zu lassen. Ich vermute, dass der beste Weg ist, einen Terminalemulator auf x11 auf meinem Server laufen zu lassen, der an die tmux-Sitzung angeschlossen ist. Und dann hat der Browser diesen Terminalemulator irgendwie angezeigt?

Ich bin mit dieser Domain nicht wirklich vertraut. Weiß jemand, ob dies möglich ist? Oder gibt es einen besseren Ansatz, den ich verfolgen sollte?

Beachten Sie, dass ich vollständig auf einem Remote-Headless-Server codiere, auf den ich ssh.

Justin L.
quelle

Antworten:

6

Es kommt wirklich darauf an, was genau Sie am Ende haben wollen.

Wenn Sie möchten, dass mehrere Personen eine Verbindung zu Ihrem Computer herstellen und beobachten, was Sie gerade tun, sollten Sie die X-Sitzung über VNC exportieren. Sie können entweder einen separaten "Headless" -Server ausführen (Rendern in den RAM-Frame-Puffer anstelle eines Grafikkartenspeichers) oder sogar Ihre aktuelle Sitzung mit exportieren x11vnc. Für x11vnc(was Sie natürlich auch mit dem Headless-Server tun können) ist die -viewonlyOption Ihr Freund, da Sie nicht möchten, dass andere in der Lage sind, sich in das einzumischen, was Sie dort tun. Es scheint Lösungen für die Verbindung zum VNC-Server über einen Webbrowser zu geben, zum Beispiel noVNC oder realvnc

Um das Video (und optional Audio) zu senden, damit es ohne "spezielle" Software angezeigt oder später wiedergegeben werden kann, können Sie beispielsweise ffmpegX11-Daten erfassen ( x11grabin Dokumenten suchen ) und in eine verwandeln Video. Natürlich können Sie einen Audiostream hinzufügen, in dem Sie ihn kommentieren. Sie können die Ausgabe dann streamen und je nach Format und Codecs kann sie möglicherweise direkt in einem Browser angezeigt werden. Wenn Sie sich jedoch nicht im akademischen Bereich befinden (oder dies als private, nicht kommerzielle Aktivität durchführen), können Sie einige Codecs aufgrund ihrer Patentbelastung wahrscheinlich rechtlich nicht verwenden.

Peterph
quelle
1
Ja, VLC Readonly ist der richtige Weg.
David
Wenn ich vnc mache, muss ich dann irgendwie einen Weg finden, vnc in einen Webbrowser einzubetten? Die ffmpeg-Idee klingt tatsächlich nach einer guten, weil ich sie so einstellen kann, dass sie auf jede dieser Streaming-Video-Broadcast-Sites gestreamt wird, oder?
Justin L.
@ JustinL. Siehe aktualisierte Antwort für vnc über den Browser.
Peterph
3

Ich habe bisher noch kein Screencasting durchgeführt, aber für Ihren Fall sehe ich zwei Möglichkeiten:

Videobasiertes Live-Screencasting

Dies verwendet tatsächlich Videostreams. Der Vorteil ist, dass Sie Ihre gesamte X-Sitzung mit mehreren Programmen anzeigen können, auch mit grafischen, und dass Sie Audio auf demselben Kanal einfügen können, z. B. Kommentare zu dem, was Sie gerade codieren. Wenn Sie lediglich eine Terminalsitzung anzeigen möchten, sind Video-Codecs möglicherweise nicht ideal, was die Bandbreitenanforderungen und die Bildqualität betrifft.

Web-Terminal-Emulatoren

Dies könnte ähnlich wie bei Ihrem aktuellen Setup funktionieren. Grundidee ist, so etwas wie xterm in einem Browser zu haben. In dieser Kategorie habe ich verschiedene Lösungen gefunden, insbesondere:

  • GateOne verfügt über einen SSH- Client, den Sie wahrscheinlich mit Ihrem aktuellen Setup verwenden könnten.
  • Shellinabox ist an bestimmte Programme auf dem Server gebunden. Anstelle einer Shell, die Ihr "tmux player" sein könnte
zpea
quelle
Wow, ich wusste nicht, dass Shellinabox an bestimmte Programme binden kann. Ich werde das überprüfen.
Justin L.
Ich werde am Ende mit der Shellinabox-Lösung arbeiten, ich werde nur die andere Antwort akzeptieren, weil es eine etwas direktere Antwort auf das eigentliche Problem war, nach dem ich gefragt habe :) Ich hoffe, Sie verstehen.
Justin L.
3

Xpra hat einen HTML5-Client, der wirklich gut funktioniert, obwohl er sich in einer frühen Entwicklungsphase befindet. Ich persönlich verwende es als Ersatz für die X11-Weiterleitung, da es eine X11-Sitzung erzeugt und nur einzelne Anwendungen anzeigt, wie Sie es beschrieben haben. Es gibt auch eine "Schatten" -Option, mit der Sie auch eine Verbindung zu einer vorhandenen Sitzung herstellen können.

Muffel
quelle
2
Xpra hat jetzt einen HTML5-Client - xpra.org/trac/wiki/Clients/HTML5 - den wir jetzt in CoCalc.com für die webbasierte X11-Unterstützung verwenden ( blog.sagemath.com/cocalc/2018/11/). 05 / x11.html )
William Stein
0

Ich denke, ich wäre versucht, in die Paarprogrammierungsangebote / -methoden zu schauen, um herauszufinden, was hier Ihren Anforderungen entsprechen könnte. Ich weiß, dass Sie X11vnc verwenden können, wie andere bereits erwähnt haben. Es funktioniert ziemlich gut, nicht sicher, wie gut es skalieren würde, wenn Sie beabsichtigen, dass zwei oder mehr Personen Ihre Sitzung sehen.

Floobits

Es gibt diesen Service, Floobits . Sieht frei aus, um zumindest anzufangen, kenne die Einzelheiten nicht.

Auszug

Wir unterstützen derzeit Sublime Text, Vim und Emacs. Wir haben auch einen browserbasierten Editor.

Während wir diese Plugins erstellt haben, haben wir gelernt, dass die Zusammenarbeit in Echtzeit mehr erfordert als das Teilen von Code. Wir wollten Muscheln teilen, also haben wir Flootty gebaut. Wir wollten Änderungen während der Eingabe an einen Testserver senden, deshalb haben wir einen kopflosen Diff-Shipper gebaut. Wir wollten Voice-Chat und Bildschirmfreigabe, deshalb haben wir unserem webbasierten Editor Google+ Hangouts hinzugefügt.

Melden Sie sich an und probieren Sie uns kostenlos aus.

Google Hangouts

Ich würde wahrscheinlich diesen Weg gehen. Sie können einen Google Hangout erstellen und dann der Treiber der Sitzung sein, während andere "zuschauen". Sollte sich sehr gut skalieren lassen und hat die meisten technischen Hürden für Sie gelöst, um durch die Firewalls der Leute zu kommen, Tools auszutauschen und insgesamt eine gute Erfahrung zu bieten.

Ich denke, der einzige Nachteil ist, dass andere Google+ Konten benötigen. Aber das sollte ein Deal Breaker sein.

Andere Optionen?

Zuletzt würde ich diese Fragen und Antworten zu StackOverflow mit dem Titel http://www.google.com/+/learnmore/hangouts/ durchgehen . Obwohl diese Frage wie so oft als nicht thematisch geschlossen wurde, gibt es viele gute Anhaltspunkte für Methoden zur Lösung der Anforderungen Ihres speziellen Problems, indem Sie diese Art von Fragen durchkämmen und die verschiedenen Technologien bewerten.

slm
quelle