Rustunnel is an open-source tunnel service written in Rust, designed to securely expose local services through a public server. It mimics the core functions of ngrok and includes features like encrypted WebSocket connections, HTTP/TCP proxying, and a live dashboard. Self-host or choose a managed service option.
Rustunnel is an open-source tunnel service developed in Rust, designed to replicate the core features of ngrok. It enables users to expose local services that reside behind NAT/firewalls to the public internet through a relay server, which can be either self-hosted or connected to a managed service.
Key Features
- Secure Tunneling: Rustunnel uses encrypted WebSocket connections with TLS termination, ensuring safe and secure data transmission.
- Protocol Support: It supports both HTTP and TCP proxying, making it versatile for various applications.
- Live Dashboard: A user-friendly dashboard offers real-time visibility of active tunnels and their metrics.
- Prometheus Metrics: Integrate with Prometheus for monitoring performance and resource usage.
- Audit Logging: Keep track of all operations and tunnel activity for enhanced security and compliance.
Usage Overview
Rustunnel simplifies exposing local services with a straightforward command-line interface. For instance, to set up an HTTP tunnel, the following command can be executed:
rustunnel http 3000
This command will provide a public HTTPS URL that forwards requests to your local service running on port 3000. Additional features such as custom subdomains and TCP tunnels can also be easily configured, enhancing flexibility to meet different user needs.
Hosted Service Option
For those who prefer not to run their own servers, Rustunnel offers a hosted edge service at edge.rustunnel.com, allowing for immediate usage. Users must obtain an authentication token to connect, which can be requested through a simple GitHub issue process.
Architecture Overview
Rustunnel is architected to ensure high availability and reliability. The diagram below illustrates the service's architecture, highlighting various components and their interactions:
- HTTP Edge: Handles incoming requests, redirecting them as necessary.
- Control Plane WebSocket: Manages connections from clients.
- Dashboard UI and Metrics Endpoint: Facilitates user interaction and monitoring.
Installation Requirements
Rustunnel has a set of requirements for building and running, including the Rust toolchain and necessary libraries. Detailed guidance is provided in the README to assist with setup.
Development and Contribution
The project welcomes contributions. Developers are encouraged to fork the repository, create a feature branch, and submit pull requests following established coding guidelines. This collaborative approach aims to enhance Rustunnel’s functionality and performance continuously.
Conclusion
With its robust features and user-centered design, Rustunnel offers developers an effective way to expose local services securely and efficiently. Its open-source nature invites contributors to help build and refine this critical tool for web development and service tunneling.
No comments yet.
Sign in to be the first to comment.