tinyrelayfile
tinyrelay/docs/personal-relay.md/

docs/personal-relay.md raw
1# Personal relay deployment
2
3The personal relay runs on a Linux Docker host. Tailnet devices reach it at [https://tiny.tailbe516a.ts.net](https://tiny.tailbe516a.ts.net); everyone else reaches it through the Fly edge at `https://012.run`. The relay, Caddy and Tailscale containers share one network namespace, so nothing on the host itself listens publicly.
4
5## Public domain through a Fly edge
6
7The public address is `https://012.run`, with sites on `*.012.run`. A small Fly machine, `deploy/edge`, terminates TLS at Fly's edge, joins the tailnet in userspace mode, and forwards plain HTTP over the tailnet to a listener on the relay host that only the tailnet can reach. Fly's proxy has no request body cap and passes WebSockets.
8
9```sh
10cd deploy/edge
11fly deploy
12fly logs --no-tail # first boot prints a Tailscale login link; open it to approve the machine
13fly certs check 012.run
14fly certs check "*.012.run"
15```
16
17DNS at the registrar, all DNS-only records with Cloudflare's Universal SSL turned off so its challenge records do not shadow Fly's: A and AAAA for `012.run` and `*.012.run` pointing at the app's addresses from `fly ips list`, and a `_acme-challenge.012.run` CNAME from `fly certs setup "*.012.run"` for the wildcard certificate. The relay host's Caddyfile, `deploy/tiny.Caddyfile`, serves `012.run:8080` and `*.012.run:8080` over plain HTTP for the edge. After the certificates issue, set `--public-url https://012.run` on the relay so signed requests, NIP-11 and site hosts use the public name. The ts.net name stays tailnet only.
18
19## Repository hosting
20
21The relay hosts Git repositories over GRASP. Use [ngit](https://ngit.dev) so the owner signs the announcement, the ref state and each push with a remote signer. `ngit account login` shows a QR code to scan with Amber; the key stays on the phone.
22
23```sh
24ngit account login
25ngit init --name tiny --identifier tinyrelay --grasp-server 012.run \
26 --description "self-hosted, multitenant Nostr relay"
27git remote add tiny nostr://<owner npub>/012.run/tinyrelay
28git push tiny main --tags
29```
30
31Later pushes are plain `git push tiny`. `ngit init` rewrites `origin` to the nostr address each time it runs; set it back to GitHub afterwards. Anyone can clone the repository with `git clone nostr://<owner npub>/012.run/tinyrelay`, or with plain Git from `https://012.run/<owner npub>/tinyrelay.git`.
32
33## Web operations
34
35Sign in at the relay URL with a Nostr signer before using owner controls. The Manage pages provide relay configuration, jobs, connections, backups, and file operations. Use Manage data or the browser tools page to start and inspect backups. The [WebMCP guide](webmcp.md) describes native browser-agent controls and their existing signer authorization path.
36
37Download backups from **Manage > Data** and keep a copy on another device.

About

ownerc01503e8035f
visibilitypublic
headd730679639bf

Maintainers

  • c01503e8035f owner
  • ba1b5beed5b5 agent hermes

Clone

  • https://012.run/npub1cq2s86qrtadf36eqq3epm38wmhdynrrcwxf84eldk3f94dkv7ttsrulrz5/tinyrelay.git

Refs