Hoe u een Terminal Direct naar de Browser Doorstuurt met WeTTY
Stel u voor: u moet dringend toegang krijgen tot een thuisserver of werk-VM vanaf een tablet, iemands anders zijn laptop of een werkcomputer met strikte beveiligingsbeleid waar poort 22 volledig geblokkeerd is en u geen SSH-client kunt installeren. U opent een browser, typt een adres in en krijgt een volledig uitgeruste opdrachtregel met uw vertrouwde shell.
Dit is precies waar het WeTTY-project (Web + TTY) voor is gemaakt.

Onder de motorkap
Oudere oplossingen zoals Ajaxterm of Anyterm waren pijnlijk langzaam omdat ze afhankelijk waren van reguliere HTTP-verzoeken heen en weer. WeTTY werkt anders. De backend is gebouwd met TypeScript en Node.js, communicatie met de browser vindt plaats via WebSockets en rendering wordt afgehandeld door de xterm.js-terminalemulator (dezelfde die VS Code aandrijft).
Dankzij de combinatie van xterm.js en WebSockets is de invoerlatentie nauwelijks merkbaar als u een stabiele internetverbinding heeft. Hulpprogramma's met pseudo-graphics werken zonder problemen in het browservenster: htop, tmux, mc, vim en nano. Muisondersteuning, sneltoetsen en terminalkleuren werken allemaal zoals verwacht.
Hoe te Starten
U kunt de tool op twee snelle manieren implementeren: via npm of in een Docker-container.
Optie 1. Installatie via npm
Als de machine al Node.js versie 20 of hoger heeft, samen met build-tools (make, python, build-essential), kan de tool met één commando worden geïnstalleerd:
npm -g i wetty
Na de installatie start u de service:
wetty --port 3000
Navigeer nu naar http://localhost:3000 en meld u aan met de gewenste gebruiker. Als WeTTY als gewone gebruiker wordt uitgevoerd, wordt er standaard een SSH-sessie naar localhost tot stand gebracht. Uitvoeren als root roept /bin/login aan.
Optie 2. Uitvoeren in Docker
Ik persoonlijk vind het het gemakkelijkst om dit soort tools in containers te houden om te voorkomen dat de host wordt volgepropt met onnodige globale Node.js-pakketten:
docker run --rm -p 3000:3000 wettyoss/wetty --ssh-host=192.168.1.50
Vervang 192.168.1.50 door het IP-adres van de host waarmee u via SSH wilt verbinden.
Nuttige Startparameters
De tool biedt flexibele configuratie via opdrachtregelparameters:
--ssh-hosten--ssh-portsturen de verbinding om naar een aparte externe server.--ssh-userstelt een standaardgebruiker in zodat u niet elke keer de aanmelding hoeft te typen.--ssl-keyen--ssl-certmaken directe verkeersversleuteling mogelijk.--allow-iframemaakt het mogelijk de terminal in iframes op andere sites in te sluiten (bijvoorbeeld in dashboards of monitoringpanelen).
Als u niet elke keer dat u start parameters wilt opgeven, kunt u ze bundelen in een configuratiebestand en dit doorgeven via 19.
Beveiliging en Productiegebruik
Het blootstellen van een onbeschermde HTTP-poort van WeTTY aan het internet is absoluut niet aan te raden. Elke aanvaller zou kunnen proberen wachtwoorden te brute-forcen of onversleuteld verkeer te onderscheppen.
In de praktijk wordt er meestal een reverse proxy (NGINX, Traefik of Caddy) voor WeTTY geplaatst om meerdere verantwoordelijkheden te verwerken:
- Het uitgeven en vernieuwen van gratis SSL-certificaten van Let's Encrypt.
- Het proxyen van WebSocket-verbindingen.
- Een extra autorisatielaag via Basic Auth of Authelia.
- Toegang beperken op basis van IP-adres-whitelists.
Hier is een typisch NGINX-configuratievoorbeeld:
location /wetty/ {
proxy_pass http://127.0.0.1:3000/wetty/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 43200000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
}
Vergeet niet om WeTTY zelf uit te voeren met de --base /wetty/ vlag zodat de routeringspaden correct uitlijnen.
Voor Wie Dit Project Is
WeTTY pakt specifieke praktische behoeften aan:
- Snelle administratie van thuisservers (Home Lab) en routers rechtstreeks vanaf een mobiele telefoon of iPad.
- Het opzetten van demo-omgevingen en trainingssandboxes waar studenten shell-toegang nodig hebben zonder SSH-clients te configureren.
- Een terminalvenster insluiten in interne webgebaseerde infrastructuurbeheerpanelen.
- Toegang tot servers vanuit geïsoleerde bedrijfsnetwerken waar alleen poorten 80 en 443 open zijn.
Als u een lichtgewicht manier nodig hebt om een terminal in de browser te starten zonder zware webinterfaces zoals Cockpit of Proxmox, kan WeTTY dit in slechts een paar minuten afhandelen. Start gewoon de container achter een reverse proxy en voeg authenticatie toe.
Gerelateerde projecten