feat: add Rathole Cloudron package (Infrastructure) [#650]

Server-mode Rathole 0.5.0 as the 11th package: pinned upstream binary
(sha256 gate) on cloudron/base:4.0.0, control port 2333 plus a 100-port
tunnel exit range, hot-reloading config in /app/data, auth-proxy verdict
(no user concept). Verified end-to-end with a live client tunnel.
Docs gardened (STATUS/README/JOURNAL to 11 packages).

Ticket: https://projects.knownelement.com/issues/650
This commit is contained in:
2026-09-01 19:02:51 -05:00
parent 8d0b0f42f6
commit f918a90c3b
12 changed files with 415 additions and 13 deletions
@@ -0,0 +1,43 @@
{
"manifestVersion": 2,
"type": "app",
"id": "io.cloudron.rathole",
"title": "Rathole",
"description": "Rathole is a secure, stable and high-performance reverse proxy for NAT traversal, written in Rust. This package runs the server side: clients behind NAT connect to the control port with per-service token authentication (optionally Noise/TLS encrypted) and expose their local services through tunnels on the reserved port range. Configuration lives in /app/data/server.toml and hot-reloads on save. No database required.",
"author": "rapiz1 / rathole-org",
"website": "https://github.com/rathole-org/rathole",
"documentationUrl": "https://github.com/rathole-org/rathole/blob/main/README.md",
"contactEmail": "cloudron@tsys.dev",
"tagline": "Secure, high-performance reverse-tunnel server for NAT traversal",
"version": "0.5.0",
"upstreamVersion": "0.5.0",
"healthCheckPath": "/",
"httpPort": 8000,
"httpAuth": {
"type": "proxy"
},
"tcpPorts": {
"CONTROL_PORT": {
"title": "Control channel port",
"description": "TCP port that rathole clients connect to in order to establish tunnels. Change only if it collides with another exposed app on this Cloudron.",
"defaultValue": 2333,
"containerPort": 2333,
"portCount": 1
},
"SERVICE_PORT": {
"title": "Tunnel exit ports",
"description": "Start of the sequential port range reserved for tunneled services (100 ports by default: 5200-5299). Each [server.services.*] block in /app/data/server.toml binds one port from this range; the config hot-reloads, so services can be added without a restart.",
"defaultValue": 5200,
"containerPort": 5200,
"portCount": 100
}
},
"memoryLimit": 268435456,
"addons": {
"localstorage": {}
},
"postInstallMessage": "Rathole is headless: there is nothing to click through. Open the **file manager** and edit **/app/data/server.toml** to define tunnel services (a random default token was generated on first start). The config hot-reloads on save. The client-side setup is documented in the package README.",
"mediaLinks": [],
"changelog": "Initial Cloudron package for Rathole 0.5.0 (server mode). Pre-compiled upstream binary with sha256 pin, token-authenticated tunnels on control port 2333 plus a 100-port service range (5200-5299), config with hot reload at /app/data/server.toml, and an auth-proxied status page on the HTTP port.",
"icon": "file://logo.png"
}