RNS-over-HTTP
This Reticulum Interface allows using HTTP POST requests as a bidirectional transport layer. It consists of two parts: a client and a server. The server must have a public IP address and be accessible via HTTP. The client only needs internet access. One server can serve any number of clients.
Features
- Bidirectional communication
- User-Agent check for security (optional)
- Automatic retry on connection failures
- Configurable polling interval
- MTU support for large data transfers
- Runs over standard HTTP ports (typically 80/443)
Setup
Install dependencies:
pip install requests
Configuration
-
Download http_interface.py to ~/.reticulum/interfaces/
-
Add a PipeInterface to your
~/.reticulum/configfile on both the server and the client.
Client Configuration
[[HTTP Interface]]
type = PipeInterface
enabled = True
command = python3 /path/to/your/http_interface.py client --url http://<server-host>:<port>
# Optional: delay before respawn in seconds
respawn_delay = 2
# Optional: adjust polling interval (default 0.1s)
# command = python3 /path/to/your/http_interface.py client --url http://<server-host>:<port> --poll-interval 0.5
name = HTTP Interface
Server Configuration
[[HTTP Interface]]
type = PipeInterface
enabled = True
command = python3 /path/to/your/http_interface.py server --host 0.0.0.0 --port 8080
# Optional: delay before respawn in seconds
respawn_delay = 2
name = HTTP Interface
Options
--mtu: Maximum transmission unit (default: 4096 bytes)--poll-interval: Client polling interval in seconds (default: 0.1)--verbose: Enable verbose logging--host: Server listen host (default: 0.0.0.0)--port: Server listen port (default: 8080)--disable-user-agent-check: Disable User-Agent validation (server mode only)
Security
By default, the server validates that incoming requests include the correct User-Agent header (RNS-HTTP-Tunnel/1.0) which can be changed but make sure the users that use your server have the correct User-Agent header in the interface. This helps prevent:
- Web crawlers and bots from accessing the tunnel
- Casual browsing attempts
- Unauthorized data collection
You can disable this check with --disable-user-agent-check