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,51 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Rathole (server)</title>
<style>
body { font-family: -apple-system, "Segoe UI", Roboto, sans-serif; background: #14171c; color: #d8dee6; margin: 0; display: flex; min-height: 100vh; align-items: center; justify-content: center; }
main { max-width: 640px; padding: 2rem; }
h1 { color: #ffffff; font-size: 1.6rem; margin-bottom: 0.25rem; }
p.tagline { color: #7f8c9b; margin-top: 0; }
code { background: #1f242c; border: 1px solid #2d3440; border-radius: 4px; padding: 0.1rem 0.35rem; font-size: 0.85rem; color: #9ecbff; }
table { border-collapse: collapse; width: 100%; margin: 1rem 0; font-size: 0.9rem; }
th, td { text-align: left; padding: 0.5rem 0.75rem; border-bottom: 1px solid #2d3440; }
th { color: #7f8c9b; font-weight: 600; }
pre { background: #1f242c; border: 1px solid #2d3440; border-radius: 6px; padding: 1rem; overflow-x: auto; font-size: 0.8rem; line-height: 1.5; }
.ok { color: #6bc46d; }
</style>
</head>
<body>
<main>
<h1>Rathole <span class="ok">&#9650; server running</span></h1>
<p class="tagline">Secure, high-performance reverse-tunnel server for NAT traversal</p>
<p>Rathole is headless &mdash; this page exists so Cloudron has a health
endpoint and you have a landing spot. Configuration is file-based and
<strong>hot-reloads on save</strong>: edit
<code>/app/data/server.toml</code> with the Cloudron file manager to add
or remove tunnel services. A random <code>default_token</code> was
generated on first start; copy it from that file.</p>
<table>
<tr><th>Port</th><th>Purpose</th></tr>
<tr><td>2333</td><td>Control channel &mdash; rathole clients connect here</td></tr>
<tr><td>5200&ndash;5299</td><td>Tunnel exit ports &mdash; one per <code>[server.services.*]</code> block</td></tr>
<tr><td>HTTP (this page)</td><td>Status/health only, gated by the Cloudron auth proxy</td></tr>
</table>
<p>Client side (on the machine behind NAT), with a matching service block on the server:</p>
<pre>[client]
remote_addr = "your-cloudron.example.com:2333"
[client.services.my_nas_ssh]
token = "&lt;same token as the server&gt;"
local_addr = "127.0.0.1:22"</pre>
<p style="color:#7f8c9b;font-size:0.85rem;">Upstream docs:
<a style="color:#9ecbff" href="https://github.com/rathole-org/rathole">github.com/rathole-org/rathole</a></p>
</main>
</body>
</html>