rapiz1 / rathole
A lightweight and high-performance reverse proxy for NAT traversal, written in Rust. An alternative to frp and ngrok.
ngrok
network
proxy
rust
tunnel
http
firewall
frp
nat
noise
noise-protocol
Rathole: A Lightweight and High-Performance Reverse Proxy
Rathole is a lightweight, high-performance, and easy-to-use reverse proxy written in Rust. It is designed to provide a secure and reliable way to access services running on private networks from the public internet. Rathole is an ideal solution for developers who need to expose their local development environments to the outside world or for system administrators who need to provide remote access to servers behind a firewall.
Features
- Lightweight and efficient: Rathole is written in Rust, a high-performance systems programming language, making it extremely lightweight and efficient. It has a small memory footprint and low CPU usage, making it suitable for use on resource-constrained devices.
- High-performance: Rathole is designed to be high-performing, even under heavy load. It uses a non-blocking I/O model and a highly optimized event loop to handle thousands of concurrent connections with minimal latency.
- Secure: Rathole uses TLS to encrypt all traffic between the client and the proxy, ensuring the confidentiality and integrity of the data being transferred. It also supports HTTP/2, which provides additional security benefits such as header compression and multiplexing.
- Easy to use: Rathole is designed to be easy to use and configure. It comes with a simple and intuitive command-line interface (CLI) that makes it easy to set up and manage reverse proxies.
- Cross-platform: Rathole is cross-platform and can be used on Windows, macOS, Linux, and other Unix-like operating systems.
Use Cases
Rathole is a versatile tool that can be used in a variety of scenarios, including:
- Remote development: Rathole can be used to expose a local development environment to the outside world, allowing developers to collaborate with others or share their work with clients.
- Remote access: Rathole can be used to provide remote access to servers behind a firewall. This is useful for system administrators who need to manage servers remotely or for users who need to access their home computers from a remote location.
- Load balancing: Rathole can be used to load balance traffic across multiple servers, improving performance and reliability.
- WebSockets: Rathole supports WebSockets, making it ideal for building real-time applications.
Comparison to Other Reverse Proxies
Rathole is a lightweight and high-performance reverse proxy that compares favorably to other popular reverse proxies such as frp and ngrok.
Feature |
Rathole |
frp |
ngrok |
Lightweight |
Yes |
No |
No |
High-performance |
Yes |
Yes |
No |
Secure |
Yes |
Yes |
Yes |
Easy to use |
Yes |
Yes |
No |
Cross-platform |
Yes |
Yes |
Yes |
Getting Started
To get started with Rathole, install it using the following command:
cargo install rathole
Once Rathole is installed, you can start using it by running the following command:
rathole
This will start the Rathole server on port 8080. You can then use the Rathole CLI to create and manage reverse proxies. For more information on how to use Rathole, please refer to the Rathole documentation.
Conclusion
Rathole is a lightweight, high-performance, and easy-to-use reverse proxy that is ideal for a variety of use cases. It is secure, reliable, and cross-platform, making it a great choice for developers and system administrators alike.