HTS(1)
π HTS(1) β General Commands Manual π
okay bestie, welcome to the HTS(1) page, the one and only manual for hts, the httptunnel server. grab a snack, this is gonna be quick but cute.
β¨ NAME β¨
hts β the httptunnel server. she serves. literally. π
π¦ SYNOPSIS π¦
hts [options] [host:][port]
πΈ DESCRIPTION πΈ
okay so real talk, this manual page is the brief rundown of the hts command. not the whole novel, just the vibe. π
hts listens for incoming httptunnel connections at PORT β and heads up, the default port is 8888 β and if you want, she'll optionally bind to the ip address HOST. main character behavior honestly.
the moment a connection is made? the I/O gets redirected to wherever you pointed her with the --device, --forward-port or --stdin-stdout switch. that's the whole plot twist. β¨
π OPTIONS π
she follows the usual GNU command line syntax, meaning the long options start with two dashes (-). a summary of options is right down here, no gatekeeping. π«Ά
-h,--helpβ show the summary of options. your lil cheat sheet. π-c,--content-length BYTESβ use HTTP PUT requests of BYTES size. and yes,k,M, andGpostfixes are recognized, so go off with the units. π-d,--device DEVICEβ use DEVICE for input and output. she's talking to a device now, iconic.-F,--forward-port HOST:PORTβ connect to PORT at HOST and use it for input and output. the classic move.-k,--keep-alive SECONDSβ send keepalive bytes every SECONDS seconds. the default is5, no cap. π-M,--max-connection-age SECβ the maximum time a connection will stay open is SEC seconds. default is300, so five whole minutes of commitment. β³-s,--stdin-stdoutβ use stdin/stdout for communication. note that this implies--no-daemon, bestie, keep that in mind. π-S,--strict-content-lengthβ always write Content-Length bytes in requests. always. no skipping. π-V,--versionβ output version information and exit. quick lil flex then bye. π-w,--no-daemonβ don't fork into the background. she stays right here with you. π«-p,--pid-file LOCATIONβ write a PID file to LOCATION. receipts, but for processes. π§Ύ-C,--chroot LOCATIONβ chroot to LOCATION before serving clients. locking it down before the party starts. π-u,--user USERβ change user and group identities before serving clients. glow-up via privilege drop, we love to see it. π
π₯ EXAMPLES π₯
Start httptunnel server
hts -F localhost:22 8888
so at host REMOTE, you set up the httptunnel server to listen on port 8888 and forward to localhost:22. chef's kiss. π
Start httptunnel client
htc -F 2222 -P PROXY_ADDRESS:8000 REMOTE_IP:8888
at host LOCAL, you set up the httptunnel client to forward localhost:2222 to REMOTE_IP:8888 via a local proxy at PROXY_ADDRESS:8000. the way that just works?? π
Or, if using a buffering HTTP proxy
htc -F 2222 -P PROXY_ADDRESS:8000 -B 48K REMOTE_IP:8888
Now you can connect through the tunnel on host LOCAL
ssh ssh://localhost:2222
go forth and tunnel, bestie. π¦
π AUTHOR π
this manual page was contributed by Teemu Hukkanen <tjhukkan@iki.fi>, and it was originally written for the Debian GNU/Linux system. respect the origin story. π
π SEE ALSO π
and that's the whole HTS(1) page from the General Commands Manual, periodt. πβ¨ go forth, tunnel responsibly, and remember: she's the server, she's serving. bye bestie!! ππ¦πΈ
π¦ where this page comes from
- debian trixie: httptunnel 3.3+dfsg-5 Β· GPL-2+-lars
- ubuntu noble: httptunnel 3.3+dfsg-5 Β· GPL-2+-lars
- ubuntu questing: httptunnel 3.3+dfsg-6
- ubuntu resolute: httptunnel 3.3+dfsg-6build1 Β· GPL-2+-lars
- ubuntu stonking: httptunnel 3.3+dfsg-6build1 Β· GPL-2+-lars
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms