OverviewFilesCommitsIssuesDocsReleasesPeers

7rnx-proxy commits / 6420355

README: the repo had none
Written from the source: commands and options come from the CLI's own usage text, paths from the code that builds them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
6420355417de6bbda53d8e7ee954dd91f6dad2fb
by plankatron <fleeky@gmail.com> · 2026-09-10T15:42:19.000Z

Changed files (1) +84 -0

README.md +84 -0
……@@ -0,0 +1,84 @@
1# 7rnx-proxy
2
3Reverse proxy management CLI for the 7rnx.net Apache2 server, over the VPN.
4
5Keeps a registry of nodes and the services they run, generates the Apache config from it, and
6deploys that config to 7rnx.net. Services are reachable at a path prefix under `7rnx.net/`;
7hosts get their own subdomain vhost at the URL root, which is what an atproto PDS needs.
8
9## Install
10
11```sh
12npm install -g 7rnx-proxy # provides the `7rnx` command
13```
14
15Nodes are addressed by their VPN IP, so the VPN must be up for `deploy` and `status` to reach
167rnx.net.
17
18## Usage
19
20```sh
217rnx node add tabertron --ip 10.0.0.2
227rnx service add tabertron git --port 5005 --prefix /git
237rnx deploy --dry-run # inspect the generated config
247rnx deploy # write it to 7rnx.net and reload Apache
25```
26
27## Commands
28
29**Nodes**
30
31```sh
327rnx node add <petname> --ip <vpn-ip> [--keet-ident <key>]
337rnx node list
347rnx node remove <petname>
35```
36
37**Services** — a port on a node, published at a path prefix
38
39```sh
407rnx service add <node> <name> --port <port> [--prefix <path>] [--root-path <path>]
417rnx service add-backend <service> --node <petname> --port <port> [--mode active|standby]
427rnx service remove-backend <service> --node <petname>
437rnx service list [node]
447rnx service remove <node> <name>
457rnx service status [node] # which services are actually listening
46```
47
48Multiple backends behind one service is how load balancing is expressed — one `active`, the
49rest `standby`. Anything a backend serves from **local disk** only reaches the public URL if it
50exists on the *active* backend.
51
52**Hosts** — a subdomain vhost at the URL root
53
54```sh
557rnx host add <name> <node> --port <port> --server-name <fqdn>
567rnx host list
577rnx host remove <name>
58```
59
60**Deploy and inspect**
61
62```sh
637rnx deploy [--dry-run] # generate config, push to 7rnx.net, reload Apache
647rnx status # Apache status on 7rnx.net
657rnx remote config [path] # fetch the live config (default: the SSL vhost)
667rnx remote ls # list sites-enabled
677rnx ui [port] [--network] # dashboard, default port 7777
68```
69
70## Registry
71
72State lives in `~/.config/7rnx-proxy/registry.json` — the single source the generated Apache
73config is derived from, and the file to read when you need to know which backend is currently
74active. Edit through the CLI rather than by hand, then `7rnx deploy --dry-run` to see what it
75would produce.
76
77```sh
787rnx config # show the registry
797rnx config set-server --host <ip> --user <user>
80```
81
82## License
83
84Not yet declared.