Transforme seu terminal em uma página da Web compartilhável usando ttyd

Transforme seu terminal em uma página da Web compartilhável usando ttyd

Você já precisou demonstrar suas atividades de terminal em tempo real, seja solucionando um problema de servidor com um colega ou mostrando um comando complexo para um amigo? Em vez de tirar capturas de tela ou gravar sua tela, imagine a conveniência de compartilhar sua sessão de terminal ao vivo por meio de um simples link da web. Esse método não só aprimora a colaboração, como também permite visibilidade em tempo real de suas atividades.

O Linux oferece vários métodos para compartilhamento de terminais, incluindo opções tradicionais como SSH, ferramentas como tmux e screen, além de utilitários de gravação de tela como asciinema. Embora essas opções possam ser eficazes, elas geralmente envolvem complexidade desnecessária e dependências adicionais que podem atrapalhar seu fluxo de trabalho.

Insira a ferramenta de linha de comando ttyd. O ttyd simplifica o compartilhamento do seu terminal, transformando-o em uma interface web, permitindo que qualquer pessoa com o link acesse e até mesmo interaja com sua sessão sem a necessidade de instalar software adicional ou definir configurações.

Principais recursos do ttyd

  • Utiliza Libwebsockets e libuv para desempenho excepcional.
  • Utiliza WebSockets para uma experiência perfeita, mesmo com conectividade limitada.
  • Suporta ZMODEM gráfico para transferências de arquivos, permitindo que os usuários arrastem e soltem arquivos diretamente pelo navegador da web.
  • Inclui criptografia SSL/TLS para garantir sessões seguras, com opções de autenticação.
  • Executa em qualquer porta designada e oferece compatibilidade para implantação em dispositivos como o Raspberry Pi.
  • Possui funcionalidade de copiar/colar integrada entre o terminal e a interface web.
  • Capacidade de restringir conexões simultâneas para gerenciamento de sessão.
  • Abre automaticamente sessões no navegador da web padrão.
  • Permite restrições de acesso de cliente único para maior segurança.

Como instalar o ttyd no Linux

Usuários do Debian ou Ubuntu podem descobrir que o ttyd não está presente nos repositórios padrão. No entanto, a instalação continua simples por meio de métodos alternativos, como compilar a partir do código-fonte.

Comece garantindo que seu sistema esteja totalmente atualizado:

sudo apt update && sudo apt upgrade -y

Em seguida, instale as dependências necessárias para compilar o ttyd:

sudo apt install -y build-essential cmake git libjson-c-dev libwebsockets-dev

Instalação da ferramenta Ttyd

Clone o repositório ttyd do GitHub e compile-o usando os seguintes comandos:

git clone https://github.com/tsl0922/ttyd.git cd ttyd mkdir build && cd build cmake..make sudo make install

Pronto! Agora você tem o ttyd instalado no seu sistema.

Para outras distribuições Linux, você pode seguir diretrizes de compilação semelhantes ou, alternativamente, baixar um binário pré-compilado da página de lançamentos do ttyd no GitHub. Para baixá-lo rapidamente, use o seguinte comando wget:

wget https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.x86_64

Torne o binário baixado executável:

chmod +x ttyd.x86_64

Usar este método fornece uma das maneiras mais rápidas de tornar o ttyd operacional em diversas distribuições Linux. Você também pode utilizar um gerenciador de pacotes universal, como o Snap, para instalar o ttyd:

sudo snap install ttyd --classic

Depois que o ttyd for instalado, verifique sua instalação digitando ttyd --version.

Transformando seu terminal em uma interface web compartilhável

A maneira mais simples de aproveitar o ttyd é compartilhando sua sessão de shell padrão. Execute o seguinte comando:

ttyd bash

Este comando iniciará um servidor web na porta 7681 por padrão. Para acessá-lo, basta abrir seu navegador e navegar até http://localhost:7681 ou http://seu-endereço-ip:7681.

Página da Web compartilhável criada usando Ttyd

Seu terminal agora deve estar visível em uma página da web, e qualquer usuário da rede local pode acessá-lo substituindo “localhost” pelo endereço IP da sua máquina. Você pode encontrar seu IP usando ip addr showou hostname -Ipara compartilhar com outras pessoas.

Além de compartilhar um shell, o ttyd permite que você exponha outros aplicativos de linha de comando no navegador. Por exemplo, o comando ttyd htopiniciará diretamente o htopgerenciador de processos, enquanto ttyd vimou ttyd topcompartilhará as respectivas ferramentas.

Abrindo a saída da ferramenta de linha de comando superior na página da Web

Se desejar personalizar o número da porta da sua sessão, você pode fazer isso facilmente usando o -psinalizador:

ttyd -p 8080 bash

Isso torna seu terminal disponível na porta 8080 em vez da porta padrão 7681.

Para evitar acesso não autorizado, o ttyd também suporta autenticação por meio da -copção:

ttyd -c username:password bash

Opção de login para sessão de terminal usando Ttyd

Esta configuração solicita autenticação HTTP básica, garantindo que qualquer pessoa que tente acessar seu terminal insira as credenciais designadas. Embora uma autenticação mais sofisticada seja preferível para ambientes de produção, este método é eficaz para demonstrações informais ou redes confiáveis.

Além disso, você pode criar uma sessão somente leitura, proibindo qualquer entrada de usuários:

ttyd -R bash

Isso pode ser particularmente vantajoso para apresentações ou ambientes educacionais onde você deseja manter o controle. Por outro lado, utilize a -Wsinalização para uma sessão interativa e gravável:

ttyd -W bash

Compartilhamento seguro pela Internet

Ao compartilhar seu terminal pela internet, implementar criptografia é crucial. O ttyd oferece suporte a HTTPS usando seu próprio certificado SSL. Se você não tiver um certificado SSL, pode criar um autoassinado com o OpenSSL para fins de teste. No entanto, para uso em produção, é recomendável utilizar uma Autoridade Certificadora confiável, como a Let’s Encrypt.

Embora o ttyd seja acessível por padrão apenas na sua rede local, muitas vezes é necessário estender esse acesso externamente. Você pode fazer isso com segurança por meio de diversas abordagens. Um dos métodos mais simples é integrar o ttyd a um serviço de tunelamento como o Tailscale ou o Cloudflare Tunnel, que disponibiliza sua porta local na internet com segurança por meio de uma URL pública temporária. Como alternativa, você pode hospedar o ttyd em um VPS ou servidor em nuvem com um nome de domínio, permitindo acesso HTTPS permanente.

Para configurações mais avançadas, você pode vincular o ttyd exclusivamente ao localhost e colocá-lo atrás de um proxy reverso, como Nginx ou Caddy. Essa configuração permite o processamento de terminação SSL, autenticação e controle de acesso detalhado.

Conclusão

Com o ttyd, o complexo processo de compartilhamento de terminal se transforma em uma tarefa simples, semelhante ao compartilhamento de um hiperlink.

Fonte e Imagens

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *