Stream and send data, terminal to web and vice versa.
- Stream your terminal to anyone without installing anything.
- Originally created this to quickly share data and files between devices.
- Path names map to channels.
- Anyone in the same channel can view what's streamed.
- Easily self-host your own streamhut server.
Streamhut allows you to stream (pipe) realtime data from your terminal stdout/stderr to a web xterm UI or even to another terminal.
As long as you have netcat
which comes pre-installed in most *nix systems than you can use streamhut! If you can't install netcat, you may also use the streamhut CLI client.
$ go get github.com/streamhut/streamhut/cmd/streamhut
One-liner to self-host using Docker:
docker run -p 8080:8080 -p 1337:1337 streamhut/streamhut
One liner to stream your terminal:
$ exec > >(nc stream.ht 1337) 2>&1
Example of streaming tail of file:
# terminal 1
$ cat >data.txt
# terminal 2
$ tail -F data.txt | nc streamhut.io 1337
Stream the current date every second:
$ while true; do date; sleep 1; done | nc stream.ht 1337
Stream output of a program (delay is required to see share url):
$ (sleep 5; htop) | nc stream.ht 1337
# waits 5 seconds, and then send contents of program.
Example of piping to both stdout and netcat:
$ (echo -n; sleep 5; htop) | tee >(nc stream.ht 1337)
Don't have netcat available? Pipe to a file descriptor with an open TCP connection:
$ exec 3<>/dev/tcp/stream.ht/1337 && head -1 <&3 && exec &> >(tee >(cat >&3))
$ streamhut --help
Streamhut lets you stream and share your terminal.
For more info, visit: https://github.com/streamhut/streamhut
Usage:
streamhut [flags]
streamhut [command]
Available Commands:
help Help about any command
listen Listen on a channel
server Start server
Flags:
--help Show help
Use "streamhut [command] --help" for more information about a command.
$ streamhut server
Starting server...
HTTP/WebSocket port: 8080
TCP port: 1337
Stream to your server:
$ exec > >(nc localhost 1337) 2>&1
For more options, run streamhut server --help
# terminal 1
$ streamhut listen -h localhost -p 8080 -i -c yo
# terminal 2
$ exec > >(nc localhost 1337) 2>&1;echo \#yo
For more options, run streamhut listen --help
You can run streamhut as a Docker container:
$ docker pull streamhut/streamhut
$ docker run -e PORT=8080 -e TCP_PORT=1337 -p 8080:8080 -p 1337:1337 --restart unless-stopped streamhut/streamhut:latest
make test
Start server:
make start
Run migrations:
make migrate
-
Q: How is the stream log data stored?
- A: Currently it's stored in a local sqlite3 database. More robust and scalable options are in the works.
-
Q: What happened to the streamhut NPM module?
- A: The node.js implementation of streamhut is now deprecated in favor of this Golang implementation.
-
Q: Can the same channel be used more than once?
-
A: Yes! send
#{channel}
(ie#mychannel
) as the first stream text to use that channel.Example:
exec > >(nc stream.ht 1337) 2>&1;echo \#mychannel
-
-
Q: What's the difference between stream.ht and streamhut.io?
- A: The domain stream.ht is an alias for streamhut.io, meaning you can type stream.ht as the domain for convenience. Other aliases are streamhut.net and streamhut.org
Released under the Apache 2.0 license.