2cf0d63ef0
Taken from https://github.com/elisescu/tty-server/pull/16 This was applied to the now defunct tty-server project, but the changes were never moved accross to the hosting functionality given by this project. Changes made to new patch (these changes were commited & squashed): * Update webpack font publicPath to relative * Update paths to source files within patch * Move fonts to CDN, and reference font stylesheet via external `<style> tag` * Remove actual font files from project (they're heavyweight) * Remove introduced frontend dependencies from package.json, package-lock.json, & webpack.config.js as per review [comment](https://github.com/elisescu/tty-share/pull/26#discussion_r546345850) & [comment](https://github.com/elisescu/tty-share/pull/26#discussion_r546345899). * These were required to bundle/serve the font assets, and are now redundant as these assets are fetched externally. Changes made in original PR: Patch taken from this commit, paths updated & conflicts fixed * Squashed commit of the following ( Squash performed for tty-server#16 ): (Done for a cleaner merge) commit 3f2ef96c66a23a6afe043ccc54a4911373eec730 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Fri Sep 25 05:23:23 2020 +0000 Completely remove devDependencies commit 5b7b34c86c8faec9cc99c2f6f548f650b43878f5 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Fri Sep 25 05:22:05 2020 +0000 Change install deps from dev to production commit 2b23f00d7d621df32b9c00a776d3bf176aba2d31 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Fri Sep 25 05:08:30 2020 +0000 Oops add more detail to Sauce Code Pro provenance commit 56696b2bcbc9594bee0bb39f155b7024456b8ea0 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Fri Sep 25 05:07:54 2020 +0000 Acknowledge SauceCodePro provenence/license commit bfb93f49826843f2c4f0e2a8325cc660b272f41c Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Fri Sep 25 05:00:53 2020 +0000 Revert "Regen assets_bundle.go" This reverts commit 51f189421b26078367c8354de6ee0a43e3def32b. This is because I don't want this diff in the squash just yet commit ac15b25af6270ff22a43281639f3870b572c243b Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Fri Sep 25 04:57:49 2020 +0000 Resolve unnecessary diffs commit 8a274365dcfb83952ab211e6fd185701ad0b8649 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Fri Sep 25 04:50:07 2020 +0000 Add some fallback fonts if SauceCodePro is loading commit 8ff2901bc79a0d3eec452f5a945ec5d3bb6a0cab Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Fri Sep 25 04:30:36 2020 +0000 Remove SO comment ( wasnt relevant ) commit aa29bf232e3faf3c277df2ad5b62d33405d79604 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Fri Sep 25 04:29:47 2020 +0000 Finally fix font pathing commit 86a5ec20cdf8f98b57854849a29d047387e64a4f Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 10:38:48 2020 +0000 Use publicPath ? commit d225edb5f9c8e5e8ddbbe7d2de38ba0703b61995 Merge: 492a835 81295b8 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 10:28:19 2020 +0000 Merge branch 'fonts' of https://github.com/mstr3336/tty-server into fonts commit 492a83589d672c3922a8bdf94813af7df096a5ea Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 10:26:59 2020 +0000 Comment stack overflow link in webpack config commit 81295b8689f218f695a6e214cb4f2d7d1f31b269 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 20:26:22 2020 +1000 Move stuff to static i guess? commit a3a2238d3548f95dc9ddcf71d18f90f8f16f0c74 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 19:49:58 2020 +1000 Specify esmodule false for font loader commit be7cc94ade9bd7e8d247148ac8f09111899c677e Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 19:39:03 2020 +1000 Hopefully make webpack load fonts? commit 97e76cee0be5d29fa796a7fb239410b1d915dd98 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 19:31:28 2020 +1000 Add file-loader npm module commit 913ce076fb41146f37a98296fbdb8cee5b14d044 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 19:25:40 2020 +1000 Change font setting in tty-reciever.ts to new font commit 2387c0132b5fb4f61d7a7b3f3fa70d0b6f07c2b4 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 19:24:44 2020 +1000 Add nerd font rules commit 622d834bf9f0025ea3c03380e904a1a7c9ec5147 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 19:23:43 2020 +1000 Fix format spec for fonts commit 6df46eacf7da99ad2eba2c56ad8d36209bdd616c Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 19:20:50 2020 +1000 Finish script for building stylesheet commit e47d0de28b7becc2f16d6ba4814fd1307282710f Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 19:15:58 2020 +1000 Add python script for building css commit b38526cca7eda401ff49a42f2646bde4fe64c841 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 18:35:54 2020 +1000 Remove _Nerd_Font suffix commit cfd461ad7e331b1a25894c1513197c422b338422 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 18:34:40 2020 +1000 Remove _Complete_Mono_Windows_Compatible suffix from new fonts commit 2333f1bf61e0a2672e87f2b5687bf179f41832b2 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 24 18:28:48 2020 +1000 Add sauce code pro fonts from nerdfonts commit 778f2194c975a7fdd99dda4ab33eba8864420933 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 17 22:20:32 2020 +1000 Remove unnessary css rule commit c86e17f9ed55cf0901a81133c30d8c65a5a4fc52 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 17 12:11:44 2020 +0000 Remove vagrantfile for clean feature branch commit 51f189421b26078367c8354de6ee0a43e3def32b Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 17 12:07:03 2020 +0000 Regen assets_bundle.go commit 3e0462604b49af18df1f52c0129ea177db74302e Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 17 12:06:39 2020 +0000 Set the fontFamily of the tty-reciever to SourceCodePro commit cd06e4b0135ce73a4469ed4f7c06e7494bf5a0b7 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 17 12:04:18 2020 +0000 Rename font family string for source code pro commit 87a50edcafb35ef5363d0048bf48e14d4ba91266 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 17 20:46:07 2020 +1000 Update css to include source code pro for font family commit a036043573330da5d8792416543570c0204e3f38 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 17 19:59:51 2020 +1000 Finally fixed env escapes commit ed7dc41c466ad803ca00358531c67d0848fce7f5 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 17 19:24:27 2020 +1000 Fix heredoc commit a9ad5583162430e98e6b821871b64e2fd3ec4bf5 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 17 18:56:25 2020 +1000 Add serve script to vagrantfile commit 433353c70f964ea1749cfb316e7ffe191a432fc3 Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au> Date: Thu Sep 17 18:33:11 2020 +1000 added vagrantfile * Regen server/frontend/package-lock.json after merging upstream into feature |
3 years ago | |
---|---|---|
doc | 4 years ago | |
proxy | 4 years ago | |
scripts | 4 years ago | |
server | 3 years ago | |
vendor | 4 years ago | |
.dockerignore | 4 years ago | |
.gitignore | 4 years ago | |
.travis.yml | 4 years ago | |
Dockerfile | 4 years ago | |
LICENSE | 5 years ago | |
README.md | 4 years ago | |
client.go | 4 years ago | |
go.mod | 4 years ago | |
go.sum | 4 years ago | |
main.go | 3 years ago | |
pty_master.go | 3 years ago | |
rw_combiner.go | 4 years ago |
README.md
tty-share
tty-share is a very simple tool used to share your Linux/OSX terminal over the Internet. It is written in GO, results in a static cross-platform binary with no dependencies, and therefore will also work on your Raspberry Pi.
The remote participant needs not setup, and they can join the session from the browser or from the terminal (tty-share <secret URL>
). The session can be shared either over the Internet, or only in the local network. When sharing it over the Internet (outside your NAT), tty-share
will connect to proxy server that will mediate the communication between the participants. An instance of this server runs at tty-share.com, but you can run your own.
Demos
Join a session from another terminal
Installing and running
Docker
If you only want to try it out, there's a Docker image you can use:
docker run -it elisescu/tty-share --public
Brew
If you are on OSX and use brew, then you can simply do a brew install tty-share
.
Binary releases
Otherwise, download the latest tty-share
binary release, and run it:
Running it
~ $ tty-share --public
public session: https://on.tty-share.com/s/L8d2ECvHLhU8CXEBaEF5WKV8O3jsZkS5sXwG1__--2_jnFSlGonzXBe0qxd7tZeRvQM/
local session: http://localhost:8000/s/local/
Press Enter to continue!
~ $
Sessions can be created as read only, with the --readonly
flag. See --help
for more.
Join a session
You can join a session by opening the session URLs in the browser, or with another tty-share
command:
~ $ tty-share https://on.tty-share.com/s/L8d2ECvHLhU8CXEBaEF5WKV8O3jsZkS5sXwG1__--2_jnFSlGonzXBe0qxd7tZeRvQM/
Building
Simply run
go get github.com/elisescu/tty-share
The frontend code (the code that runs in the browser session) lives under server/frontend
, and it is compiled into server/assets_bundle.go
go file, committed to this git repo. To rebuild this bundle of web resources, make sure you have node
and npm
installed, and then run: make -C server frontend
. Unless you change the browser/frontend code, you don't need to do this - the code is already precompiled and bundled in assets_bundle.go
.
For cross-compilation you can use the GO building environment variables. For example, to build the tty-share
for raspberrypi, you can do GOOS=linux GOARCH=arm GOARM=6 go build
(check your raspberrypi arch with uname -a
).
Security
tty-share
connects over a TLS connection to the server, which uses a proxy for the SSL termination, and the browser terminal is served over HTTPS. The communication on both sides is encrypted and secured, in the same way as other similar tools are doing it (e.g. tmate, VSC, etc).
However, end-to-end encryption is on the TODO list. Otherwise, if you don't trust my tty-proxy installation, you can run your own.
Similar solutions
VSC (Visual Studio Code) Live Share
I've tried Visual Studio Code sharing, and it seems to work relatively well. One big advantage is that both persons in the session can write code, and navigate independently of each other. It also supports terminal sharing.
However, the two disadvantages with this tool are the need of logging in with a Github (or Microsoft) account, and having to install Visual Studio Code on the remote side too. I don't want to force the remote person to install VSC just for them to get access to a terminal session. Visual Studio Code might be popular in the web development circles, but it is not popular in the other development corners.
tmate.io
This is a great tool, and I used it quite a few times before. At the time I started my project, tmate.io didn't have the option to join the session from the browser, and one had to use ssh
. In most cases, ssh
is not a problem at all - in fact it's even preferred, but there are cases when you just don't have easy access to an ssh
client, e.g.: joining from a Windows machine, or from your smartphone. In the meantime, the project added some support for joining a terminal session in the browser too.
Perhaps one downside with tmate is that it comes with quite a few dependencies which can make your life complicated if you want to compile it for ARM, for example. Running it on a raspberry pi might not be as simple as you want it, unless you use Debian.
Credits
- xterm.js - used in the browser receiver.
- gotty - used for inspiration and motivation.
- tmate - inspiration and motivation.
- https://codepen.io/chiaren/pen/ALwnI - for the free 404 page.