docs: 新增 Tailscale (headscale 節點) 段落

This commit is contained in:
Timmy
2026-06-21 13:44:37 +08:00
parent d25c441c4a
commit 6f06b11261

View File

@@ -83,6 +83,64 @@ services:
```
然後 `cd /opt/echoip && docker compose up -d`。
## Tailscaleheadscale 節點)
以 Docker 方式部署,結構比照 CT102`/Users/timmy/dev/42_102`),檔案在 `/opt/tailscale`。
| 項目 | 值 |
|------|-----|
| Tailscale IP | `100.64.0.16`hostname `ct105`user `mainnet`|
| 控制平面 | `https://headscale.lotimmy.com`headscale 容器在 CT126|
| Image | `tailscale/tailscale:latest``restart: unless-stopped` |
```yaml
# /opt/tailscale/docker-compose.yml
services:
tailscale:
image: tailscale/tailscale:latest
container_name: tailscale
hostname: ct105
restart: unless-stopped
network_mode: host
environment:
- TS_AUTHKEY=${TS_AUTHKEY}
- TS_EXTRA_ARGS=--login-server ${TS_LOGIN_SERVER} --reset
- TS_USERSPACE=true # 無 /dev/net/tun → userspace 模式
- TS_STATE_DIR=/var/lib/tailscale
- TS_HOSTNAME=ct105
volumes:
- ./state:/var/lib/tailscale
labels:
- "com.centurylinklabs.watchtower.enable=true"
```
`.env` 放 `TS_AUTHKEY`headscale reusable preauth key與 `TS_LOGIN_SERVER`。
常用:
```sh
docker exec tailscale tailscale status
docker exec tailscale tailscale ip -4
cd /opt/tailscale && docker compose up -d # 改設定後重建
```
### 與 CT102 的差異CT105 無 `/dev/net/tun`
CT105 是無 TUN 的 LXC故與 CT102 的版本不同:
- `TS_USERSPACE=true`、不掛 `/dev/net/tun`、無 `cap_add` / `privileged`。
- 拿掉 `--advertise-routes` / exit-nodeuserspace 模式做不到)。
- ⚠️ 副作用:其他節點能 ping、能看到 CT105但**無法直接連到 CT105 本機服務**(如 echoip `:8080`——userspace 模式不轉發入站到 localhost。
- 升級路徑要完整功能subnet router / exit node / 入站到本機服務須在母機PVE node替此 LXC 開 TUN再把 compose 改成 CT102 那版(`TS_USERSPACE=false` + 掛 `/dev/net/tun` + `cap_add` + `--advertise-routes`)。
### preauth key 來源
headscale 容器在 CT126用 CLI 產生(公開端點的 API token 已失效):
```sh
ssh ct126 'docker exec headscale headscale preauthkeys create --user 1 --reusable --ephemeral=false --expiration 87600h'
```
## 其他
- 本機服務sshd:22、Postfix僅 `127.0.0.1:25`、systemd-resolved本機 DNS。對外僅 echoip:8080。