← back to Dave Share

README.md

54 lines

# dave-share

A read-only **drop-folder web server** for sharing pages and files with Dave across
**separate Tailscale tailnets** — without merging the two networks.

## The model (how this stays private)

- Steve's tailnet (`designerwallcoverings.com`) and Dave's tailnet stay fully separate.
- We expose **one machine** (this Mac Studio) and **one URL** to Dave via Tailscale's
  **node-sharing** feature. Dave sees only this node — not LeBron, Kobe, the phone, etc.
- That URL is published with **`tailscale serve`** (tailnet-only HTTPS, real cert, NOT
  `funnel` — so it's never on the public internet).
- This server is the only thing behind that URL. It serves the `shared/` folder, read-only.

## What's where

| Thing | Value |
|---|---|
| Local server | `http://127.0.0.1:9930` (loopback only) |
| Tailnet URL | `https://stevestudio2s-mac-studio.tail79cb8e.ts.net:8444` |
| Share folder | `shared/` — drop files / `.html` pages here |
| Keep-alive | launchd `com.steve.dave-share` (RunAtLoad + KeepAlive) |

## Sharing something

Just drop it into `shared/`:

```sh
cp ~/Desktop/some-page.html ~/Projects/dave-share/shared/
```

It appears in the index immediately. A folder with an `index.html` renders that page;
otherwise you get an auto directory listing.

## Security notes

- **GET/HEAD only.** No writes, no exec, no dynamic routes. Path traversal is blocked.
- `tailscale serve` proxies from `127.0.0.1`, so requests look local. That's exactly why
  this server trusts *nothing* about localhost — the only access control is the node-share
  (only Dave's node can resolve/reach the URL).
- Tailscale injects `Tailscale-User-Login` for shared-in peers; the page shows it so you
  can see who's connected. It is informational, not a gate.

## The one manual step (yours to do — it grants an external person access)

Generate the share invite for Dave in the Tailscale admin console:

1. https://login.tailscale.com/admin/machines
2. `stevestudio2s-mac-studio` → ⋯ → **Share…**
3. Send Dave the invite link. He accepts with his own Tailscale account.
4. Dave opens: `https://stevestudio2s-mac-studio.tail79cb8e.ts.net:8444`

To stop sharing later: same menu → **un-share**, or `tailscale serve --https=8444 off`.