whatisgithub

What is rathole?

alerque/rathole — explained in plain English

Analysis updated 2026-07-17 · repo last pushed 2024-07-06

Audience · ops devopsComplexity · 3/5DormantSetup · moderate

In one sentence

A lightweight tunneling tool that exposes private-network services to the public internet through a server you control, without changing router settings. Built in Rust for low memory and high performance.

Mindmap

mindmap
  root((repo))
    What it does
      Exposes private services
      Tunnels through public server
      No router changes needed
    How it works
      Public server piece
      Private device piece
      Shared secret tokens
    Security
      Mandatory tokens
      Noise Protocol encryption
      Optional TLS
    Tech stack
      Rust
      Small binary size
      Low memory usage
    Use cases
      Remote SSH to home
      Home lab access
      Game server hosting
    Audience
      Self-hosters
      Home lab owners
      Embedded device users

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

SSH into a home server or NAS from anywhere without changing router settings.

USE CASE 2

Run a game server from your living room and make it reachable to friends online.

USE CASE 3

Access a development environment on a private network from a different location.

USE CASE 4

Expose a home lab service to the internet through a public server you control.

What is it built with?

RustNoise ProtocolTLS

How does it compare?

alerque/rathole0verflowme/alarm-clock0xhassaan/nn-from-scratch
Stars0
LanguageCSSPython
Last pushed2024-07-062022-10-03
MaintenanceDormantDormant
Setup difficultymoderateeasymoderate
Complexity3/52/54/5
Audienceops devopsvibe coderdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires a server with a public IP address and editing config files on both the public server and private device, plus generating shared secret tokens.

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

So what is it?

Rathole lets you expose a service running on a private network (like your home Wi-Fi) to the public internet, even when that network sits behind a router that blocks incoming connections. The classic example: you have a NAS or a home server at home and want to SSH into it from anywhere, but your home internet doesn't allow inbound connections. Rathole creates a tunnel so people can reach that home machine through a public server you control. It works as a pair: you run one piece on a server with a public IP address, and another piece on the private device. The private device reaches out to the public server and maintains an active connection. When someone connects to a specific port on your public server, the traffic gets tunneled through that existing connection back to your private device. You configure both sides with simple text files that specify addresses, ports, and shared secret tokens. Tokens are mandatory, and the project supports optional encryption so traffic between the two endpoints stays protected. This is useful for anyone who needs to expose a private service without changing router settings or paying for a VPN. Examples include accessing a home lab, running a game server from your living room, or reaching a development environment from a different location. The README notes that the project aims to be lighter on resources than similar tools like frp or ngrok, with a binary that can be made small enough for embedded devices like routers. It also supports hot-reloading the configuration so services can be added or removed without restarting. Notably, the project is built in Rust and emphasizes both performance and low memory consumption. The README is transparent that real-world gains depend on your network: if your internet connection is the bottleneck, the main benefit is lower resource usage rather than dramatically faster speeds. Encryption can be configured using the Noise Protocol or TLS, with no need for self-signed certificates in the Noise case. An HTTP API for configuration is listed as work in progress.

Copy-paste prompts

Prompt 1
Set up rathole so I can SSH into my home server from anywhere. I have a public VPS and a home machine behind a router that blocks incoming connections. Walk me through the server and client config files.
Prompt 2
Configure rathole with Noise Protocol encryption to securely tunnel HTTP traffic from a private home lab to my public server without self-signed certificates.
Prompt 3
Use rathole to expose a Minecraft server running on my home PC to friends through my cloud VPS. Show me the config for both sides and explain the token setup.
Prompt 4
Set up rathole with hot-reloading so I can add and remove tunneled services without restarting the tunnel.

Frequently asked questions

What is rathole?

A lightweight tunneling tool that exposes private-network services to the public internet through a server you control, without changing router settings. Built in Rust for low memory and high performance.

Is rathole actively maintained?

Dormant — no commits in 2+ years (last push 2024-07-06).

What license does rathole use?

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

How hard is rathole to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is rathole for?

Mainly ops devops.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.