Trasforma il tuo terminale in una pagina Web condivisibile con ttyd

Ti sei mai trovato in una situazione in cui avevi bisogno di mostrare a qualcuno esattamente cosa stai facendo nel tuo terminale? Forse stai risolvendo un problema del server con un collega o stai dimostrando una sequenza di comandi complessa a un amico. Certo, potresti acquisire screenshot o registrare il tuo schermo, ma non sarebbe fantastico se potessi semplicemente condividere la tua sessione terminale live tramite un semplice collegamento web? Questo approccio semplifica la collaborazione e fornisce visibilità in tempo reale su ciò che accade sul tuo computer.

Linux ti offre già alcuni modi per condividere i terminali. Ad esempio, hai metodi tradizionali come SSH, strumenti come tmux e screen e strumenti di registrazione come asciinema. Sebbene questi metodi funzionino in alcuni casi, spesso aggiungono passaggi o dipendenze aggiuntivi che ti rallentano.

È lì chestrumento da riga di comando ttydentra. Invece di forzare gli altri a installare software o a fare confusione con le configurazioni, ttyd trasforma il tuo terminale in una pagina web. Ora chiunque abbia il collegamento può aprire il proprio browser e guardare o persino interagire con la tua sessione.

Cosa può fare ttyd?

  • ttyd sfrutta Libwebsockets e libuv per prestazioni incredibilmente veloci.
  • Utilizza WebSocket sotto il cofano, che mantiene l'esperienza fluida e reattiva anche con connessioni più deboli.
  • Supporta ZMODEM grafico per i trasferimenti di file e si integra con lrzsz per trascinare e rilasciare i file direttamente nel browser.
  • Include crittografia SSL/TLS per sicurezza e supporto per l'autenticazione.
  • ttyd può essere facilmente eseguito su qualsiasi porta tu voglia e, grazie alla compatibilità con la compilazione incrociata, puoi persino eseguirlo su un Raspberry Pi.
  • Fornire supporto copia/incolla integrato tra il browser e il terminale.
  • Può limitare il numero massimo di connessioni simultanee.
  • Sessioni ad apertura automatica nel tuo browser.
  • Limitare l'accesso a un singolo client alla volta.

Installa ttyd su Linux

Se utilizzi Debian o Ubuntu, ttyd potrebbe non essere disponibile nei repository predefiniti. Ma non preoccuparti, puoi comunque installarlo facilmente utilizzando altre opzioni, come la compilazione dal sorgente.

Innanzitutto, assicurati che il tuo sistema sia aggiornato:

sudo apt update && sudo apt upgrade -y

Installa le dipendenze richieste per creare ttyd:

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

Clona il codice sorgente ttyd da GitHub e compilalo con questi comandi:

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

E questo è tutto. Ora hai installato ttyd.

Per altre distribuzioni, puoi utilizzare la stessa opzione di creazione manuale. In alternativa, puoi prendere un file binario precompilato da ttydPagina delle versioni di GitHubper la tua architettura (come amd64 per la maggior parte). Oppure puoi scaricarlo con questo comando wget:

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

Rendilo eseguibile:

chmod +x ttyd.x86_64

Questo è probabilmente il modo più veloce per far funzionare ttyd su qualsiasi distribuzione Linux. Puoi anche utilizzare un gestore di pacchetti universale come snap per installare ttyd:

sudo snap install ttyd --classic

Una volta installato ttyd utilizzando uno di questi metodi, digitarettyd --versionper confermare che sia installato correttamente.

L'uso più basilare di ttyd è condividere la sessione di shell predefinita. Per fare questo, corri semplicementettydseguito dal comando che desideri condividere. In questo caso, è bash (o zsh, fish, ecc.):

ttyd bash

Per impostazione predefinita, questo comando avvia un server Web sulla porta 7681. Per verificare, apri il browser e visitahttps://localhost:7681Ohttps://tuo-indirizzo-ip:7681.

Ora vedrai il tuo terminale in esecuzione all'interno di una pagina web. Inoltre, chiunque sulla tua rete può accedere a questo terminale sostituendo localhost con l'indirizzo IP della tua macchina. Puoi trovare il tuo IP conip addr showOhostname -I, quindi condividilo con altri.

Inoltre, non sei limitato a condividere una shell. Qualsiasi programma da riga di comando può essere esposto nel browser. Ad esempio, correrettyd htopverrà avviato direttamente nelhtopresponsabile del processo, mentrettyd vimOttyd topcondividerà invece quegli strumenti.

Se non desideri utilizzare la porta predefinita, puoi anche specificarne una tua. Con il-pbandiera:

ttyd -p 8080 bash

Ora il tuo terminale è disponibile sulla porta 8080 anziché sulla porta 7681 predefinita.

Eseguire un terminale aperto accessibile a chiunque non è un'opzione saggia, quindi ttyd offre opzioni di autenticazione con il file-cbandiera:

ttyd -c username:password bash

Ciò crea una richiesta di autenticazione HTTP di base. Chiunque tenti di accedere al tuo terminale deve inserire le credenziali specificate. Per gli ambienti di produzione, ti servirà qualcosa di più robusto, ma per dimostrazioni rapide o reti affidabili, funziona perfettamente.

Puoi anche rendere la tua sessione di sola lettura, impedendo l'input dal browser:

ttyd -R bash

Ciò è utile per workshop o presentazioni in cui si desidera mantenere il controllo. D'altra parte, usa-Wse desideri esplicitamente una sessione interattiva e scrivibile.

ttyd -W bash

Condivisione su rete pubblica

Quando si condivide su Internet, la crittografia diventa essenziale. ttyd ti consente di abilitare HTTPS utilizzando il tuo certificato SSL. Se non disponi già di certificati, puoi crearne di autofirmati per i test con OpenSSL, anche se per la produzione è meglio utilizzare un provider affidabile come Let's Encrypt.

Per impostazione predefinita, ttyd è accessibile solo sulla tua rete locale, ma a volte vorrai condividerlo con qualcuno al di fuori della tua rete locale. Puoi raggiungere questo obiettivo in sicurezza in alcuni modi. L'approccio più semplice è associare ttyd a un servizio di tunneling come tailscale oTunnel di Cloudflare, che espone in modo sicuro la tua porta locale a Internet tramite un URL pubblico temporaneo. In alternativa, puoi eseguire ttyd su un VPS o un server cloud con un nome di dominio, rendendo il tuo terminale permanentemente accessibile tramite HTTPS.

Per configurazioni più avanzate, puoi associare ttyd solo a localhost e posizionarlo dietro un proxy inverso come nginx o Caddy, che può gestire la terminazione SSL, l'autenticazione e il controllo capillare degli accessi.

Lettura consigliata:Correggi Steam Impossibile caricare la pagina Web Errore sconosciuto 138/130

Considerazioni finali

ttyd prende il complicato compito di condividere il terminale e lo rende semplice come condividere un collegamento ipertestuale. Inoltre, se vuoi imparare come condividere la tua sessione Tmux in Linux, consulta questa guida.

Related Posts