https://github.com/kokseen1/toori-server
Server for a minimal layer 3 tunnel over http(s).
https://github.com/kokseen1/toori-server
cplusplus cpp http http-proxy https ip lan libtins long-polling nat polling proxy pybind11 python sanic scapy socket-io tunnel vpn websocket
Last synced: about 2 months ago
JSON representation
Server for a minimal layer 3 tunnel over http(s).
- Host: GitHub
- URL: https://github.com/kokseen1/toori-server
- Owner: kokseen1
- Created: 2023-01-18T03:00:14.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-01-12T05:21:12.000Z (over 1 year ago)
- Last Synced: 2025-04-14T23:12:15.152Z (about 2 months ago)
- Topics: cplusplus, cpp, http, http-proxy, https, ip, lan, libtins, long-polling, nat, polling, proxy, pybind11, python, sanic, scapy, socket-io, tunnel, vpn, websocket
- Language: Python
- Homepage:
- Size: 43.9 KB
- Stars: 5
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Iro
[](https://github.com/kokseen1/toori-server/actions/workflows/ghcr.yml)
[](https://github.com/kokseen1/toori-server/actions/workflows/release.yml)
[](https://pypi.python.org/pypi/toori-server/)Server for a minimal layer 3 tunnel over http(s).
## Deploying with Docker
Instead of installing toori-server on the host, it can be deployed as a Docker container with much convenience.
Pull from GHCR:
```shell
sudo docker pull ghcr.io/kokseen1/toori-server:latest
```Run the container:
```shell
sudo docker run -d --cap-add=NET_ADMIN -p 80:80 ghcr.io/kokseen1/toori-server
```#### HTTPS
To deploy with HTTPS, run the container with a bind mount and pass the port and certs directory as arguments:
```shell
sudo docker run -d -v /etc/letsencrypt:/etc/letsencrypt --cap-add=NET_ADMIN -p 443:443 ghcr.io/kokseen1/toori-server 443 /etc/letsencrypt/live/toori.server/
```## Installation
```shell
pip3 install toori-server --no-binary :all:
```## Prerequisites
- [Libtins](http://libtins.github.io/download/) (optional, will fallback to Scapy (slow) if not installed)
### RST Packets
Because the Linux kernel sends a `RST` to connections it did not establish, use the following command to ensure that outgoing packets are sent successfully:
```shell
sudo iptables -A OUTPUT -p tcp --tcp-flags RST RST -s -j DROP
```[See here](https://stackoverflow.com/questions/9058052/unwanted-rst-tcp-packet-with-scapy) for more information.
## Usage
Run with root permissions:
```shell
iro
```Example with HTTPS:
```shell
iro 443 -c "/etc/letsencrypt/live/toori.server/"
```