Update README.md
This commit is contained in:
parent
b1c9f31d5a
commit
6a19eb14f2
193
README.md
193
README.md
|
@ -1,3 +1,192 @@
|
|||
# collabore-tunnel
|
||||
|
||||
Make your local services accessible to all on the public Internet
|
||||
<h2 align="center">collabore tunnel</h2>
|
||||
<p align="center">Make your local services accessible to all on the public Internet</p>
|
||||
<p align="center">
|
||||
<a href="#about">About</a> •
|
||||
<a href="#features">Features</a> •
|
||||
<a href="#usage">Usage</a> •
|
||||
<a href="#demo">Demo</a> •
|
||||
<a href="#deploy">Deploy</a> •
|
||||
<a href="#configuration">Configuration</a> •
|
||||
<a href="#license">License</a>
|
||||
</p>
|
||||
|
||||
## About
|
||||
|
||||
collabore tunnel is a free and open source service offered as part of the [club elec collabore platform](https://collabore.fr) operated by [club elec](https://clubelec.insset.fr) that allows you to expose your local services on the public Internet.
|
||||
Showing your friends or colleagues your work on your next website (for example) has never been easier!
|
||||
|
||||
collabore tunnel works with two software parts:
|
||||
|
||||
- A SSH server developed in Python that allows clients to connect to it and expose their local services to the public Internet by creating a tunnel between the client and the server. The server transmits traffic between the public Internet and the remote local service via a UNIX domain socket on the server.
|
||||
- A NGINX web server that makes available on the public Internet the service that has been forwarded with a subdomain based on the UNIX socket name.
|
||||
|
||||
## Features
|
||||
|
||||
- ✅ **Easy** to use
|
||||
- ✅ **No download** and **no signup**
|
||||
- ✅ Use the **SSH client** already installed on your device
|
||||
- ✅ Generates a random **link** that **can be shared with anyone**
|
||||
- ✅ **TLS** and **non-TLS** terminaisons
|
||||
- ✅ **Compatible** with any protocol
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
ssh -R /:host:port ssh.tunnel.collabore.fr
|
||||
```
|
||||
|
||||
## Demo
|
||||
|
||||
```
|
||||
$ ssh -R /:localhost:8000 ssh.tunnel.collabore.fr
|
||||
===============================================================================
|
||||
Welcome to collabore tunnel!
|
||||
collabore tunnel is a free and open source service offered as part of the
|
||||
club elec collabore platform (https://collabore.fr) operated by club elec that
|
||||
allows you to expose your local services on the public Internet.
|
||||
To learn more about collabore tunnel,
|
||||
visit the documentation website: https://tunnel.collabore.fr/
|
||||
club elec (https://clubelec.insset.fr) is a french not-for-profit
|
||||
student organisation.
|
||||
===============================================================================
|
||||
|
||||
Your local service has been exposed to the public Internet address: hivs5g9l739ywr2n.tnl.clb.re
|
||||
TLS termination: https://hivs5g9l739ywr2n.tnl.clb.re
|
||||
```
|
||||
|
||||
## Deploy
|
||||
|
||||
We have deployed collabore tunnel on a server running Ubuntu Server 22.04.
|
||||
|
||||
**Please adapt these steps to your configuration, ...**
|
||||
*We do not describe the usual server configuration steps or how to link a domain to a server.*
|
||||
|
||||
### Install required packages
|
||||
|
||||
```
|
||||
apt install python3-pip nginx
|
||||
```
|
||||
|
||||
### Retrieve sources
|
||||
|
||||
```
|
||||
mkdir /opt/collabore-tunnel
|
||||
```
|
||||
|
||||
```
|
||||
cd /opt/collabore-tunnel
|
||||
```
|
||||
|
||||
```
|
||||
git clone https://github.com/ClubElecINSSET/collabore-tunnel .
|
||||
```
|
||||
|
||||
### Install Python dependencies
|
||||
|
||||
```
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### Install NGINX virtualhosts
|
||||
|
||||
```
|
||||
rm /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
|
||||
```
|
||||
|
||||
```
|
||||
cp tnl.clb.re ssh.tunnel.collabore.fr /etc/nginx/sites-available/
|
||||
```
|
||||
|
||||
```
|
||||
ln -s /etc/nginx/sites-available/tnl.clb.re /etc/nginx/sites-enabled/tnl.clb.re
|
||||
```
|
||||
|
||||
```
|
||||
ln -s /etc/nginx/sites-available/ssh.tunnel.collabore.fr /etc/nginx/sites-enabled/ssh.tunnel.collabore.fr
|
||||
```
|
||||
|
||||
### Install systemd service
|
||||
|
||||
```
|
||||
cp collabore-tunnel.service /etc/systemd/system/
|
||||
```
|
||||
|
||||
### Install Let's Encrypt certificate
|
||||
|
||||
#### Install acme.sh
|
||||
|
||||
```
|
||||
curl https://get.acme.sh | sh -s email=clubelec.insset@gmail.com
|
||||
```
|
||||
|
||||
#### Edit the acme.sh account configuration file
|
||||
|
||||
Create access to the OVH API by [clicking here](https://api.ovh.com/createToken/?GET=/domain/zone/clb.re/*&POST=/domain/zone/clb.re/*&PUT=/domain/zone/clb.re/*&GET=/domain/zone/clb.re&DELETE=/domain/zone/clb.re/record/*).
|
||||
This is necessary for the generation of a wildcard certificate.
|
||||
|
||||
```
|
||||
nano /root/.acme.sh/account.conf
|
||||
```
|
||||
|
||||
And add at the end of the file:
|
||||
|
||||
```
|
||||
SAVED_OVH_AK='application key'
|
||||
SAVED_OVH_AS='application secret'
|
||||
SAVED_OVH_CK='consumer key'
|
||||
```
|
||||
|
||||
#### Generate certificates
|
||||
|
||||
```
|
||||
/root/.acme.sh/acme.sh --issue --keylength 4096 -d tnl.clb.re -d '*.tnl.clb.re' --dns dns_ovh --server letsencrypt
|
||||
```
|
||||
|
||||
```
|
||||
/root/.acme.sh/acme.sh --issue --keylength 4096 -d ssh.tunnel.collabore.fr --nginx --server letsencrypt
|
||||
```
|
||||
|
||||
#### Install certificates
|
||||
|
||||
```
|
||||
mkdir -p /etc/nginx/ssl/certs
|
||||
```
|
||||
|
||||
```
|
||||
/root/.acme.sh/acme.sh --install-cert -d tnl.clb.re -d '*.tnl.clb.re' --key-file /etc/nginx/ssl/certs/tnl.clb.re.key --fullchain-file /etc/nginx/ssl/certs/tnl.clb.re.pem --reloadcmd "service nginx force-reload"
|
||||
```
|
||||
|
||||
```
|
||||
/root/.acme.sh/acme.sh --install-cert -d ssh.tunnel.collabore.fr --key-file /etc/nginx/ssl/certs/ssh.tunnel.collabore.fr.key --fullchain-file /etc/nginx/ssl/certs/ssh.tunnel.collabore.fr.pem --reloadcmd "service nginx force-reload"
|
||||
```
|
||||
|
||||
### Edit and reload NGINX configuration
|
||||
|
||||
Please remove the #'s in the files `/etc/nginx/sites-available/tnl.clb.re` and `/etc/nginx/sites-available/ssh.tunnel.collabore.fr`.
|
||||
|
||||
```
|
||||
systemctl reload nginx
|
||||
```
|
||||
|
||||
### Enable and start systemd service
|
||||
|
||||
```
|
||||
systemctl enable collabore-tunnel
|
||||
```
|
||||
|
||||
```
|
||||
systemctl start collabore-tunnel
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
To configure the collabore tunnel, please modify the configurations of the NGINX virtualhosts and the systemd service according to your needs.
|
||||
|
||||
## License
|
||||
|
||||
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.
|
Loading…
Reference in New Issue
Block a user