tailscale docs
This commit is contained in:
parent
bf14ba4ba1
commit
c49cc2e078
149
docs/TAILSCALE.md
Normal file
149
docs/TAILSCALE.md
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
# Tailscale
|
||||
|
||||
Connect your Toes appliance to your Tailscale network for secure access from anywhere.
|
||||
|
||||
Tailscale is pre-installed on the appliance but not configured. The user authenticates through the dashboard or CLI — no SSH required.
|
||||
|
||||
## how it works
|
||||
|
||||
1. User clicks "Connect to Tailscale" in the dashboard (or runs `toes tailscale connect`)
|
||||
2. Toes runs `tailscale login` and captures the auth URL
|
||||
3. Dashboard shows the URL and a QR code
|
||||
4. User visits the URL and authenticates with Tailscale
|
||||
5. Toes detects the connection, runs `tailscale serve --bg 80`
|
||||
6. Appliance is now accessible at `https://<hostname>.<tailnet>.ts.net`
|
||||
|
||||
## dashboard
|
||||
|
||||
Settings area shows one of three states:
|
||||
|
||||
**Not connected:**
|
||||
- "Connect to Tailscale" button
|
||||
|
||||
**Connecting:**
|
||||
- Auth URL as a clickable link
|
||||
- QR code for mobile
|
||||
- Polls `tailscale status` until authenticated
|
||||
|
||||
**Connected:**
|
||||
- Tailnet URL (clickable)
|
||||
- Tailnet name
|
||||
- Device hostname
|
||||
- `tailscale serve` toggle
|
||||
- "Disconnect" button
|
||||
|
||||
## cli
|
||||
|
||||
```bash
|
||||
toes tailscale # show status
|
||||
toes tailscale connect # start auth flow, print URL, wait
|
||||
toes tailscale disconnect # log out of tailnet
|
||||
toes tailscale serve # toggle tailscale serve on/off
|
||||
```
|
||||
|
||||
### `toes tailscale`
|
||||
|
||||
```
|
||||
Tailscale: connected
|
||||
Tailnet: user@github
|
||||
Hostname: toes.tail1234.ts.net
|
||||
IP: 100.64.0.1
|
||||
Serve: on (port 80)
|
||||
```
|
||||
|
||||
Or when not connected:
|
||||
|
||||
```
|
||||
Tailscale: not connected
|
||||
|
||||
Run `toes tailscale connect` to get started.
|
||||
```
|
||||
|
||||
### `toes tailscale connect`
|
||||
|
||||
```
|
||||
Visit this URL to authenticate:
|
||||
https://login.tailscale.com/a/abc123
|
||||
|
||||
Waiting for authentication... done!
|
||||
Connected to tailnet user@github
|
||||
https://toes.tail1234.ts.net
|
||||
```
|
||||
|
||||
## server api
|
||||
|
||||
All endpoints shell out to the `tailscale` CLI and parse output.
|
||||
|
||||
### `GET /api/tailscale`
|
||||
|
||||
Returns current status.
|
||||
|
||||
```json
|
||||
{
|
||||
"installed": true,
|
||||
"connected": true,
|
||||
"hostname": "toes",
|
||||
"tailnetName": "user@github",
|
||||
"url": "https://toes.tail1234.ts.net",
|
||||
"ip": "100.64.0.1",
|
||||
"serving": true
|
||||
}
|
||||
```
|
||||
|
||||
When not connected:
|
||||
|
||||
```json
|
||||
{
|
||||
"installed": true,
|
||||
"connected": false
|
||||
}
|
||||
```
|
||||
|
||||
When tailscale isn't installed:
|
||||
|
||||
```json
|
||||
{
|
||||
"installed": false
|
||||
}
|
||||
```
|
||||
|
||||
### `POST /api/tailscale/connect`
|
||||
|
||||
Runs `tailscale login`. Returns the auth URL.
|
||||
|
||||
```json
|
||||
{
|
||||
"authUrl": "https://login.tailscale.com/a/abc123"
|
||||
}
|
||||
```
|
||||
|
||||
### `POST /api/tailscale/disconnect`
|
||||
|
||||
Runs `tailscale logout`.
|
||||
|
||||
### `POST /api/tailscale/serve`
|
||||
|
||||
Toggles `tailscale serve`. Body:
|
||||
|
||||
```json
|
||||
{ "enabled": true }
|
||||
```
|
||||
|
||||
## install
|
||||
|
||||
`scripts/install.sh` installs tailscale and enables the daemon, but does not authenticate:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://tailscale.com/install.sh | sh
|
||||
sudo systemctl enable tailscaled
|
||||
```
|
||||
|
||||
## permissions
|
||||
|
||||
The `toes` user needs passwordless sudo for tailscale commands. Add to sudoers during install:
|
||||
|
||||
```
|
||||
toes ALL=(ALL) NOPASSWD: /usr/bin/tailscale
|
||||
```
|
||||
|
||||
This lets the server run `sudo tailscale login`, `sudo tailscale serve`, etc. without a password prompt.
|
||||
Loading…
Reference in New Issue
Block a user