Files
dashgradio_tunnel/README.MD
T

3.2 KiB

Gradio Tunnel Dashboard

Dashboard web per un server Linux che individua le porte in ascolto, permette di avviare e fermare tunnel tramite gradio-tunneling e mostra l'URL generato, tutto dal browser.

Funzionalità principali

  • Scanner portale intelligente con caching TTL, riconoscimento del protocollo, utente, comando completo e link al container Docker quando disponibile.
  • Dashboard unificata: la sezione Porte mostra lo stato di ciascun port, mentre la tabella Tunnel permette di leggere l'output, aprire i log e interrompere i tunnel attivi.
  • Controllo dei tunnel: pulsanti Avvia/Ferma sincronizzati con lo stato del tunnel, badge visivi per sapere se una porta è occupata e aggiornamenti automatici ogni 4 secondi.
  • Debug integrato: pannello log per ogni tunnel con pulsante dedicato, e l'URL pubblico viene estratto dai log del processo.

Scanner porte e metadati

Il modulo app/services.py utilizza psutil per enumerare le connessioni LISTEN, deduce protocollo/utente/processo/comando e abbina i PID ai container Docker tramite /proc/<pid>/cgroup. I risultati vengono memorizzati per 2 secondi per ridurre la pressione sulla CPU.

La risposta /api/ports include ora:

  • port, protocol, service, user, pid, command, container, local_address

Questi campi alimentano la tabella Porte e aiutano nelle decisioni manuali prima di aprire un tunnel.

Interfaccia web

  • La tabella Porte mostra metadati completi e un badge Tunnel che indica se la porta è già in uso. Il pulsante Avvia tunnel rimane disabilitato quando un tunnel è presente.
  • La tabella Tunnel mostra il PID, lo stato, l'URL pubblico, l'ultimo log e il comando invocato. I pulsanti Log e Ferma permettono debug e cleanup rapidi.
  • Il pannello inferiore espone i log del tunnel selezionato per trovare errori di connessione o capire quando viene stampato l'URL pubblico.

Avvio rapido

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8000

Apri http://localhost:8000.

Configurazione

Il comando usato per avviare i tunnel è configurabile con la variabile d'ambiente TUNNEL_COMMAND.

Esempio:

export TUNNEL_COMMAND="python -m gradio_tunneling --port {port}"

Se il comando python -m gradio_tunneling non funziona, usa la CLI installata dal pacchetto:

export TUNNEL_COMMAND="gradio-tunneling --port {port}"

L'URL viene rilevato dalla prima stringa che contiene un link HTTP/HTTPS nel log del tunnel.

La dashboard aggiorna automaticamente lo stato dei tunnel e mostra l'ultimo log per aiutare il debug quando l'URL non è disponibile.

Debug

Nella sezione dei tunnel puoi aprire il pannello Log per vedere le ultime righe prodotte dal processo gradio_tunneling. Questo aiuta a capire se il tunnel non parte o se l'URL non viene stampato.

Rilevamento servizi Docker

La tabella delle porte mostra anche il nome del container Docker quando disponibile. Questo richiede che il processo abbia accesso al socket Docker locale.

Dipendenze tunneling

Il progetto usa gradio-tunneling (installato da GitHub tramite requirements.txt). Se stai usando un ambiente offline, installa manualmente il pacchetto nella venv prima di avviare il servizio.