2018-04-24 01:53:27 +00:00
|
|
|
| Sponsored by [ppl](https://ppl.family) | **tunnel-server.js** | [tunnel-client.js](https://git.coolaj86.com/coolaj86/tunnel-client.js) |
|
2016-09-30 22:49:08 +00:00
|
|
|
# stunneld.js
|
|
|
|
|
2018-02-15 06:22:23 +00:00
|
|
|
A server that works in combination with [stunnel.js](https://git.coolaj86.com/coolaj86/tunnel-client.js)
|
2016-09-30 22:49:08 +00:00
|
|
|
to allow you to serve http and https from any computer, anywhere through a secure tunnel.
|
|
|
|
|
|
|
|
CLI
|
|
|
|
===
|
|
|
|
|
|
|
|
Installs as `stunnel.js` with the alias `jstunnel`
|
|
|
|
(for those that regularly use `stunnel` but still like commandline completion).
|
|
|
|
|
|
|
|
### Install
|
|
|
|
|
|
|
|
```bash
|
2017-05-25 20:50:51 +00:00
|
|
|
npm install -g stunneld
|
2016-09-30 22:49:08 +00:00
|
|
|
```
|
|
|
|
|
2017-10-04 23:37:07 +00:00
|
|
|
Then `dist/etc/systemd/system/stunneld.service` should be copied to `/etc/systemd/system/stunneld.service` and
|
|
|
|
the ARGUMENTS, such as SECRET, MUST BE CHANGED.
|
|
|
|
|
|
|
|
*TODO*: make `--config /path/to/config` the only argument (and have the secret auto-generated on first run?)
|
|
|
|
|
2018-04-24 01:49:56 +00:00
|
|
|
## Note: Use node.js v8.x
|
|
|
|
|
|
|
|
There is a bug in node v9.x that causes stunneld to crash.
|
|
|
|
|
|
|
|
https://github.com/nodejs/node/issues/20241
|
|
|
|
|
2016-09-30 22:49:08 +00:00
|
|
|
### Advanced Usage
|
|
|
|
|
|
|
|
How to use `stunnel.js` with your own instance of `stunneld.js`:
|
|
|
|
|
|
|
|
```bash
|
2016-10-01 06:39:20 +00:00
|
|
|
stunneld.js --servernames tunnel.example.com --protocols wss --secret abc123
|
2016-09-30 22:49:08 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
Options
|
|
|
|
|
|
|
|
```
|
|
|
|
--secret the same secret used by stunnel client (used for authentication)
|
|
|
|
--serve comma separated list of <proto>:<servername>:<port> to which
|
|
|
|
incoming http and https should be forwarded
|
|
|
|
```
|
|
|
|
|
2016-10-01 06:39:20 +00:00
|
|
|
### Privileged Ports without sudo
|
|
|
|
|
|
|
|
```bash
|
|
|
|
# Linux
|
|
|
|
sudo setcap 'cap_net_bind_service=+ep' $(which node)
|
|
|
|
```
|
|
|
|
|
2016-09-30 22:49:08 +00:00
|
|
|
### Alterntive Methods
|
|
|
|
|
|
|
|
**NOT YET IMPLEMENTED**
|
|
|
|
|
|
|
|
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
|
|
|
|
cheaper to purchase data transfer (which we supply, obviously),
|
|
|
|
which is only $1/month for most people.
|
|
|
|
|
2018-02-15 06:22:23 +00:00
|
|
|
Just use the client ([stunnel.js](https://git.coolaj86.com/coolaj86/tunnel-client.js))
|
|
|
|
with this tunneling service (the default) and save yourself the monthly fee
|
2016-09-30 22:49:08 +00:00
|
|
|
by only paying for the data you need.
|
|
|
|
|
2018-02-15 06:22:23 +00:00
|
|
|
* Node WS Tunnel (zero setup)
|
2016-09-30 22:49:08 +00:00
|
|
|
* Heroku (zero cost)
|
|
|
|
* Chunk Host (best deal per TB/month)
|
|
|
|
|
|
|
|
Security
|
|
|
|
========
|
|
|
|
|
|
|
|
The bottom line: As with everything in life, there is no such thing as anonymity
|
|
|
|
or absolute security. Only use stunneld services that you trust. :D
|
|
|
|
|
|
|
|
Even though the traffic is encrypted end-to-end, you can't just trust any stunneld service
|
|
|
|
willy-nilly.
|
|
|
|
|
|
|
|
A man-in-the-middle attack is possible using Let's Encrypt since an evil stunneld service
|
|
|
|
would be able to complete the http-01 and tls-sni-01 challenges without a problem
|
|
|
|
(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).
|