elisescu / tty-proxy

The proxy used by the tty-share command for public facing sessions
https://tty-share.com/
MIT License
48 stars 14 forks source link
linux osx terminal terminal-sharing unix-terminal

tty-proxy

Build Status

This is the public facing service that allows tty-share command to create public sessions, in addition to local ones.

tty-proxy will listen to the address passed by the --back-address flag, and any connections to this address from tty-share will create a new session (<session-id> that will be used to proxy any requests from any url path of the form /s/<session-id>/ back over the corresponding tty-share connection. See more documentation on the tty-share project.

Note tty-proxy replaces a part of the old tty-server which has moved inside the actual tty-share command itself. Read more here

Building

Build the gobindata.go file

All files under assets/* are packed to the gobindata.go file which will be statically compiled within the final binary.

    go get github.com/go-bindata/go-bindata/...
    go-bindata --prefix static -o gobindata.go static/*

Build the final tty-proxy binary

go build

Docker

The tty-proxy can be built into a docker image as follows:

docker build -t tty-proxy .

To run the container, type:p

docker run \
  -p 3456:3456 -p 8080:8080 \
  -e URL=http://localhost:8080 \
  --cap-drop=all --rm \
  tty-proxy

where you can replace URL by whatever will be the publicly visible URL of the server.

After this, clients can be connected as follows:

tty-share --tty-proxy localhost:3456 --no-tls --public

In the above command, :3456 is the default port where tty-proxy listens for incoming back connections (i.e. tty-share clients), and 5000 is the port of the web interface through which remote users can connect. You can override the defaults by specifying a different port mapping on the command line, e.g. -p 4567:3456 -p 80:8080 to listen on 4567 and serve on 80.

nginx

Take a look at this snippet to see how I configured my nginx installation for TLS termination.