ReTunnel - Securely expose local servers to the internet
Project description
ReTunnel Client
ReTunnel is a secure tunnel service that allows you to expose local servers to the internet. This is the official Python client library and CLI.
Features
- 🚀 Easy to use - Single command to expose your local server
- 🔒 Secure - All connections are encrypted
- 🌐 HTTP/HTTPS and TCP - Support for web and TCP services
- 🔑 Automatic registration - No sign-up required for basic usage
- ⚡ High performance - Built with asyncio for efficiency
- 🎛️ Professional CLI - Rich terminal interface with Typer
Installation
pip install retunnel
Requires Python 3.9 or higher.
Quick Start
HTTP Tunnel
Expose a local web server on port 8080:
retunnel http 8080
TCP Tunnel
Expose a local TCP service on port 22:
retunnel tcp 22
With Custom Subdomain
Request a specific subdomain (subject to availability):
retunnel http 8080 --subdomain myapp
With Authentication
Protect your tunnel with HTTP Basic Auth:
retunnel http 8080 --auth user:password
Configuration
Server Endpoint
By default, ReTunnel connects to localhost:6400. You can configure this using:
- Environment variable:
RETUNNEL_SERVER_ENDPOINT=your.server.com:port - Command-line option:
--server your.server.com:port - Configuration file:
server_addr: your.server.com:port
Save Authentication Token
Save your auth token for persistent access:
retunnel authtoken YOUR_AUTH_TOKEN
Configuration File
Create a retunnel.yml file to define multiple tunnels:
server_addr: ${RETUNNEL_SERVER_ENDPOINT:localhost:6400}
auth_token: ${RETUNNEL_AUTH_TOKEN}
log_level: INFO
tunnels:
- name: web
protocol: http
local_port: 8080
subdomain: myapp
- name: api
protocol: http
local_port: 3000
auth: user:pass
- name: ssh
protocol: tcp
local_port: 22
Then start all tunnels:
retunnel start retunnel.yml
Environment Variables
RETUNNEL_SERVER_ENDPOINT- Server endpoint (default:localhost:6400)RETUNNEL_AUTH_TOKEN- Authentication tokenRETUNNEL_LOG_LEVEL- Logging level (DEBUG, INFO, WARNING, ERROR)
Python API
import asyncio
from retunnel import ReTunnelClient, TunnelConfig
async def main():
# Create client
client = ReTunnelClient()
# Connect to server
await client.connect()
# Create HTTP tunnel
config = TunnelConfig(protocol="http", local_port=8080)
tunnel = await client.request_tunnel(config)
print(f"Tunnel URL: {tunnel.url}")
# Keep running
await asyncio.Event().wait()
asyncio.run(main())
Advanced Usage
Custom Server
Connect to a self-hosted ReTunnel server:
retunnel http 8080 --server your-server.com:8000
Multiple Tunnels
Use the configuration file to manage multiple tunnels simultaneously.
Logging
Set log level for debugging:
retunnel http 8080 --log-level DEBUG
CLI Commands
retunnel http PORT- Create HTTP tunnelretunnel tcp PORT- Create TCP tunnelretunnel start CONFIG- Start tunnels from config fileretunnel authtoken TOKEN- Save authentication tokenretunnel config- Manage configurationretunnel version- Show versionretunnel credits- Show open source credits
Development
Setup
# Clone repository
git clone https://github.com/retunnel/retunnel-client
cd retunnel-client
# Install with development dependencies
make install-dev
Testing
# Run tests
make test
# Run linting
make lint
# Run type checking
make typecheck
# Format code
make format
Building
make build
License
MIT License - see LICENSE file for details.
Credits
ReTunnel uses these excellent open source libraries:
- aiohttp - Async HTTP client/server
- websockets - WebSocket client/server
- msgpack - Efficient serialization
- typer - CLI framework
- rich - Terminal formatting
- pydantic - Data validation
Support
- Documentation: https://docs.retunnel.com
- Issues: https://github.com/retunnel/retunnel-client/issues
- Email: support@retunnel.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file retunnel-2.5.3.tar.gz.
File metadata
- Download URL: retunnel-2.5.3.tar.gz
- Upload date:
- Size: 47.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd4256b0dbbdceb5ad28cc509af0c81e7b4bce14704d157cd818d9b557ff3dbd
|
|
| MD5 |
261f809548ea282029687746b860fcfd
|
|
| BLAKE2b-256 |
0d31afe59194bee921330e6abb9c7187f81c595cbb965777edf6ca3a6579b7a7
|
File details
Details for the file retunnel-2.5.3-py3-none-any.whl.
File metadata
- Download URL: retunnel-2.5.3-py3-none-any.whl
- Upload date:
- Size: 38.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f33c5a72636d5b6f72c344fe96c4fd829526b0aaa0a3f37cbfacea9d21c88029
|
|
| MD5 |
937ca1715407900c89faa1ea2dbc82ca
|
|
| BLAKE2b-256 |
97239fc3a89da70aca3d590a6347b9d54d26b6cb9ac4b9df6cb9ffa95511efda
|