| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | # Telebit Relay
 | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | Friends don't let friends localhost™ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | A server that works in combination with [Telebit Remote](https://git.coolaj86.com/coolaj86/telebit.js) | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | to allow you to serve http and https from any computer, anywhere through a secure tunnel. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | | Sponsored by [ppl](https://ppl.family) | **Telebit Relay** | [Telebit Remote](https://git.coolaj86.com/coolaj86/telebit.js) | | 
					
						
							| 
									
										
										
										
											2018-05-15 07:49:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | Features | 
					
						
							|  |  |  | ======== | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | * [x] Expose your bits even in the harshest of network environments | 
					
						
							|  |  |  |   * [x] NAT, Home Routers | 
					
						
							|  |  |  |   * [x] College Dorms, HOAs | 
					
						
							|  |  |  |   * [x] Corporate Firewalls, Public libraries, Airports | 
					
						
							|  |  |  |   * [x] and even Airplanes, yep | 
					
						
							|  |  |  | * [x] Automated HTTPS (Free SSL) | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | Install | 
					
						
							|  |  |  | ======= | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Mac & Linux | 
					
						
							|  |  |  | ----------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Open Terminal and run this install script: | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```bash | 
					
						
							| 
									
										
										
										
											2018-05-25 09:02:04 +00:00
										 |  |  | curl -fsSL https://get.telebit.cloud/relay | bash | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-25 09:02:04 +00:00
										 |  |  | Of course, feel free to inspect the install script before you run it. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | This will install Telebit Relay to `/opt/telebitd` and | 
					
						
							|  |  |  | put a symlink to `/opt/telebitd/bin/telebitd` in `/usr/local/bin/telebitd` | 
					
						
							|  |  |  | for convenience. | 
					
						
							| 
									
										
										
										
											2017-10-04 17:37:07 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | You can customize the installation: | 
					
						
							| 
									
										
										
										
											2017-10-04 17:37:07 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | ```bash | 
					
						
							| 
									
										
										
										
											2018-05-25 09:02:04 +00:00
										 |  |  | export NODEJS_VER=v10.2 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | export TELEBITD_PATH=/opt/telebitd | 
					
						
							| 
									
										
										
										
											2018-05-25 09:02:04 +00:00
										 |  |  | curl -fsSL https://get.telebit.cloud/relay | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2018-04-24 01:49:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-25 09:02:04 +00:00
										 |  |  | That will change the bundled version of node.js is bundled with Telebit Relay | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | and the path to which Telebit Relay installs. | 
					
						
							| 
									
										
										
										
											2018-04-24 01:49:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-25 09:02:04 +00:00
										 |  |  | You can get rid of the tos + email and server domain name prompts by providing them right away: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```bash | 
					
						
							|  |  |  | curl -fsSL https://get.telebit.cloud/relay | bash -- jon@example.com telebit.example.com | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | Windows & Node.js | 
					
						
							|  |  |  | ----------------- | 
					
						
							| 
									
										
										
										
											2018-04-24 01:49:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | 1. Install [node.js](https://nodejs.org) | 
					
						
							|  |  |  | 2. Open _Node.js_ | 
					
						
							|  |  |  | 2. Run the command `npm install -g telebitd` | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | **Note**: Use node.js v8.x or v10.x | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | There is [a bug](https://github.com/nodejs/node/issues/20241) in node v9.x that causes telebitd to crash. | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | Usage | 
					
						
							|  |  |  | ==== | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | ```bash | 
					
						
							|  |  |  | telebitd --config /etc/telebit/telebitd.yml | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | Options | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | `/etc/telebit/telebitd.yml:` | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2018-05-25 09:02:04 +00:00
										 |  |  | email: 'jon@example.com'   # must be valid (for certificate recovery and security alerts) | 
					
						
							|  |  |  | agree_tos: true            # agree to the Telebit, Greenlock, and Let's Encrypt TOSes | 
					
						
							|  |  |  | community_member: true     # receive infrequent relevant but non-critical updates | 
					
						
							|  |  |  | telemetry: true            # contribute to project telemetric data | 
					
						
							|  |  |  | secret: ''                 # JWT authorization secret. Generate like so: | 
					
						
							|  |  |  |                            # node -e "console.log(crypto.randomBytes(16).toString('hex'))" | 
					
						
							|  |  |  | servernames:               # hostnames that direct to the Telebit Relay admin console | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  |   - telebit.example.com | 
					
						
							|  |  |  |   - telebit.example.net | 
					
						
							| 
									
										
										
										
											2018-05-25 09:02:04 +00:00
										 |  |  | vhost: /srv/www/:hostname  # securely serve local sites from this path (or false) | 
					
						
							|  |  |  |                            # (uses template string, i.e. /var/www/:hostname/public) | 
					
						
							|  |  |  | greenlock: | 
					
						
							|  |  |  |   store: le-store-certbot  # certificate storage plugin | 
					
						
							|  |  |  |   config_dir: /etc/acme    # directory for ssl certificates | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | Security | 
					
						
							|  |  |  | ======== | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The bottom line: As with everything in life, there is no such thing as anonymity | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | or absolute security. Only use Telebit Relays that you trust or self-host. :D | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | Even though the traffic is encrypted end-to-end, you can't just trust any Telebit Relay | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | willy-nilly. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | A man-in-the-middle attack is possible using Let's Encrypt since an evil Telebit Relay | 
					
						
							| 
									
										
										
										
											2018-05-31 20:17:58 +00:00
										 |  |  | would be able to complete the http-01 challenges without a problem | 
					
						
							| 
									
										
										
										
											2016-09-30 18:49:08 -04:00
										 |  |  | (since that's where your DNS is pointed when you use the service). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Also, the traffic could still be copied and stored for decryption is some era when quantum | 
					
						
							|  |  |  | computers exist (probably never). | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Why? | 
					
						
							|  |  |  | ==== | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | We created this for anyone to use on their own server or VPS, | 
					
						
							|  |  |  | but those generally cost $5 - $20 / month and so it's probably | 
					
						
							| 
									
										
										
										
											2018-05-25 09:02:04 +00:00
										 |  |  | cheaper to purchase data transfer, which is only $1/month for | 
					
						
							|  |  |  | most people. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In keeping with our no lock-in policy, we release a version of | 
					
						
							|  |  |  | the server for anyone to use independently. | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | TODO show how to do on  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	* Node WS Tunnel (zero setup) | 
					
						
							|  |  |  | 	* Heroku (zero cost) | 
					
						
							|  |  |  | 	* Chunk Host (best deal per TB/month) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-25 09:02:04 +00:00
										 |  |  | Useful Tidbits | 
					
						
							|  |  |  | === | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## As a systemd service
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | `./dist/etc/systemd/system/telebitd.service` should be copied to `/etc/systemd/system/telebitd.service`. | 
					
						
							| 
									
										
										
										
											2018-05-23 11:12:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-25 09:02:04 +00:00
										 |  |  | The user and group `telebit` should be created. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Use privileged ports without sudo
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```bash | 
					
						
							|  |  |  | # Linux
 | 
					
						
							|  |  |  | sudo setcap 'cap_net_bind_service=+ep' $(which node) | 
					
						
							|  |  |  | ``` |