anytermd(1)

πŸ“¦ version 1.2.3, in fedora 43, fedora 44

✨ anytermd(1) β€” the Gen Z Manual ✨

πŸ’– NAME

okay bestie, anytermd is a terminal-emulating HTTP daemon πŸ¦‹ β€” it puts a whole terminal window on a web page so you can run command-line programs even when HTTP is literally the only door you've got πŸšͺ✨

🌸 SYNOPSIS

anytermd [--command arg] [--device arg] [--baudrate arg] [--port arg]
[--user arg] [--auth arg] [--charset arg] [--foreground] [--diff]
[--nodiff] [--max-sessions arg] [--max-http-connections arg]
[--local-only] [--name arg]

anytermd --help

πŸ’… DESCRIPTION

okay so Anyterm gives you a terminal window right on a web page πŸ–₯οΈπŸ’œ the vibe is you can run command-line programs on a machine even when HTTP is the only way in. main character energy, no cap πŸ‘‘

here's how the whole thing fits together 🧚: you've got some Javascript on a web page, an XmlHttpRequest channel on standard ports talking back to the server, an HTTP proxy (like Apache's mod_proxy) 🌐, and the Anyterm daemon itself. the daemon, anytermd, uses a pseudo-terminal to chat with a shell or other app, and it does the terminal emulation too πŸŽ€. key presses get picked up by the Javascript and sent to the daemon πŸ“, and changes to the emulated screen go from the daemon back to the Javascript, which updates the display ✨

performance is lowkey pretty reasonable 🫢, and you can use SSL to lock the connection down πŸ”’

⚠️ bestie, for security reasons it is highly recommended that anytermd NOT be exposed directly to the Internet! do not do it 😭 see the SECURITY section below.

πŸŽ€ OPTIONS

default values are shown in parentheses () ✨

  • -c, --command arg (=/bin/bash) β€” the command you want to run inside the terminal πŸ’»
  • -d, --device arg β€” the device to connect to, like a serial port πŸ”Œ
  • -b, --baudrate arg (=9600) β€” baud rate for the serial port device πŸ“‘
  • -p, --port arg (=8080) β€” the port number it listens on πŸ¦‹
  • -u, --user arg β€” the user to run as πŸ§‘β€πŸ’»
  • -a, --auth arg (=none) β€” authorisation, which is none, null, or trivial πŸ”
  • -s, --charset arg (=ascii) β€” the character set πŸ”€
  • -f, --foreground β€” run in the foreground instead of backgrounding πŸ‘€
  • --diff β€” only send the differences to the browser πŸ’œ
  • -n, --nodiff β€” send the whole screen to the browser every single time πŸ“Ί
  • -m, --max-sessions arg (=20) β€” max number of simultaneous sessions 🌈
  • --max-http-connections arg (=25) β€” max number of simultaneous HTTP connections πŸ§ƒ
  • --local-only β€” only accept connections from localhost 🏠
  • --name arg (=anyterm) β€” the name used for logging and the pid file πŸ“
  • --help β€” show the help message πŸ†˜

πŸ”’ SECURITY

okay this section is SO important, bestie 😭

🚫 do not run anytermd as root. ever. not even once.

anyterm's code has not been audited for security πŸ’€. it is almost certainly possible to crash it by sending it invalid input, and experience suggests this sort of weakness can also be exploited to allow arbitrary code execution. yikes πŸ™ˆ

all CGI applications and similar programs deal with this same kind of problem, though some are better written than others 🧐. the Anyterm code doesn't need to run with a higher privilege level than any other web application, so weaknesses in Anyterm don't put your system at any higher risk than weaknesses in any other web application would 🫢

🚫 avoid exposing anytermd directly to the Internet.

anytermd should only be used as a backend service, reachable only through a frontend HTTPS proxy, such as Apache, that requires authentication πŸ”. the install guide at http://anyterm.org/1.1/install.html has examples of how to set this up πŸ“–

a more complete and up-to-date discussion of security issues in anytermd lives at http://anyterm.org/security.html πŸ’–

🧚 EXAMPLES

if you just wanna test Anyterm, you can do:

anytermd --local-only

and then connect to http://localhost:8080 with your Javascript-enabled web browser 🌐. the browser should display a terminal window with a bash command prompt owned by whoever started anytermd ✨

if you want SSH-over-HTTP access on localhost:8022, you might run it like this πŸ¦‹:

anytermd --command "/usr/bin/ssh -o your-username@localhost" --port 8022
--user nobody --charset utf-8 --local-only

🌈 SEE ALSO

Anyterm is more fully documented on its web site, http://anyterm.org/. the web site may be more up-to-date than this man page πŸ’œ

πŸ‘‘ AUTHOR

Anyterm is written by Phil Endecott. This man page was contributed by Eric Rossen 🫢


bestie, this manual is from Phil Endecott, version 1.1.something πŸ’– you're literally so ready to go, slay πŸ’…βœ¨

πŸ“¦ where this page comes from