Cliente HTML para o encaminhamento do ssh X11?

6

Não totalmente certo se este é o lugar certo, mas aqui vai.

Eu entendo que você é capaz de usar o X11 para o ssh para GUIs e visualizá-las, sem que o servidor tenha um sistema GUI completo rodando / instalado como o gnome ou algo assim.

Meu objetivo final é poder "transmitir" minhas sessões de codificação on-line, para que as pessoas possam visualizá-las on-line.

Agora eu o configurei para que uma sessão tmux restrita basicamente sempre espelhe minha própria janela de sessão de codificação tmux pessoal. Então, se você fizer um ssh no servidor em uma conta restrita, você pode pular para a sessão restrita e seguir minha codificação.

No entanto, quero permitir que as pessoas assistam a isso no navegador. Eu suspeito que a melhor maneira é ter algum emulador de terminal no x11 em execução no meu servidor conectado à sessão do tmux ... e, em seguida, de alguma forma, o navegador ver esse emulador de terminal?

Não estou muito familiarizado com esse domínio, então alguém sabe se isso é possível? Ou há uma abordagem melhor que eu deveria estar tomando?

Observe que codifico inteiramente em um servidor remoto sem cabeçalho no qual eu ssh.

    
por Justin L. 08.12.2013 / 23:13

4 respostas

5

Depende realmente do que exatamente deseja terminar.

Se quiser que várias pessoas se conectem ao seu computador observando o que você está fazendo, a exportação da sessão X pelo VNC deve ser feita. Você pode executar um servidor "headless" separado (renderizando no buffer de quadros da RAM em vez de uma memória gráfica) ou até exportar sua sessão atual com x11vnc . Para x11vnc (o que você pode fazer, é claro, mesmo com o servidor sem cabeçalho), a opção -viewonly é sua amiga, já que você não quer que outras pessoas possam interferir no que você faz lá. Parece haver soluções para conexão ao servidor VNC de um navegador da Web, por exemplo noVNC ou realvnc

Para transmitir o vídeo (e opcionalmente áudio), para que possa ser visto sem qualquer software "especial" ou reproduzido mais tarde, você pode usar por exemplo ffmpeg , que é capaz de pegar dados X11 (procure por x11grab em docs) e transformá-lo em um vídeo. Claro que você pode adicionar um fluxo de áudio de você comentando. Você pode transmitir a saída e, dependendo do formato e dos codecs, pode ser possível assisti-lo diretamente em um navegador. No entanto, a menos que você esteja no meio acadêmico (ou fazendo isso como uma atividade privada e não comercial), é provável que você não consiga usar legalmente alguns codecs por causa de sua patente.

    
por 08.12.2013 / 23:48
1

Ainda não fiz nenhum screencasting, mas, no seu caso, vejo duas possibilidades:

screencasting ao vivo em vídeo

Isso realmente usa fluxos de vídeo. A vantagem é que você pode mostrar toda a sua sessão X, usando vários programas, também gráficos, e que é possível incluir áudio no mesmo canal, como comentários sobre o que você está apenas codificando. No lado negativo, se tudo o que você deseja é mostrar uma sessão de terminal, os codecs de vídeo podem não ser ideais para os requisitos de largura de banda e para a qualidade da imagem.

Emuladores de terminal da Web

Isso pode funcionar de maneira semelhante à sua configuração atual. A ideia básica é ter algo como o xterm em um navegador. Nesta categoria, encontrei várias soluções, principalmente:

  • O GateOne apresenta um cliente ssh que você provavelmente poderia usar com sua configuração atual.
  • O shellinabox está vinculado a programas específicos no servidor. Em vez de um shell que poderia ser seu "player tmux"
por 09.12.2013 / 10:25
1

O Xpra tem um cliente html5 que funciona muito bem, mesmo estando em fase inicial de desenvolvimento. Eu o uso pessoalmente como um substituto de encaminhamento do X11, pois ele gera uma sessão do X11 e exibe apenas aplicativos únicos, exatamente como você descreveu. Ele tem também uma opção 'shadow' que permite se conectar a uma sessão existente também.

    
por 22.03.2015 / 10:20
0

Acho que ficaria tentado a analisar as ofertas / métodos de programação em pares para ver o que pode atender às suas necessidades aqui. Eu sei que você poderia usar o X11vnc, como outros já mencionaram. Funciona razoavelmente bem, não tem certeza de quão bem seria a escala de sua intenção de que duas ou mais pessoas assistam à sua sessão.

Floobits

Existe este serviço, Floobits . Parece livre para pelo menos começar, não sabe os detalhes.

trecho

We currently support Sublime Text, Vim, and Emacs. We also have a browser-based editor.

As we’ve built these plugins, we’ve learned that real-time collaboration requires more than sharing code. We wanted to share shells, so we built Flootty. We wanted to ship changes to a test server as we typed, so we built a headless diff-shipper. We wanted to voice chat and screen-share, so we added Google+ Hangouts to our web-based editor.

Sign up and try us out for free.

Google Hangouts

Eu provavelmente seguiria esse caminho. Você pode criar um Hangout do Google e, em seguida, ser o piloto da sessão, enquanto outros "assistem". Deverá dimensionar muito bem e resolveu a maioria dos obstáculos técnicos para você em termos de passar pelos firewalls das pessoas, compartilhar ferramentas e fornecer uma boa experiência geral.

Acho que a única desvantagem é que os outros precisariam ter contas do Google+. Mas isso deve ser um bom negócio.

Outras opções?

Por último, eu aprovo este StackOverflow Q & A intitulado: link . Embora essa questão tenha sido encerrada como fora do tópico, como é frequentemente o caso, há muitas boas indicações de métodos para solucionar as necessidades específicas do seu problema, examinando esses tipos de perguntas e avaliando as várias tecnologias.

    
por 09.12.2013 / 01:29