# Tailscale Serve/Funnel 端口冲突（2026-07-28）

## 症状

HTTP 服务器启动时报 `OSError: [Errno 48] Address already in use`，但 `lsof -i :8765` 不显示任何进程。

## 根因

Tailscale 的 `serve` 或 `funnel` 命令可能绑定到常用端口（如 8765）。
Tailscale 绑定的端口在普通 `lsof` 中不显示进程名，需用 `netstat` 才能看到。

## 诊断

```bash
# 普通 lsof 可能空
lsof -i :8765

# 用 netstat 查看——Tailscale 会显示为 io.tailscale.ipn
netstat -anv | grep 8765

# 检查 Tailscale serve 配置
tailscale serve status
```

示例输出：
```
https://macbook-air-2.tail6864e8.ts.net:8765 (tailnet only)
|-- / proxy http://127.0.0.1:8000
```

## 修复

```bash
# 重置所有 Tailscale serve 配置
tailscale serve reset

# 如需重新配置 funnel，用其他端口
tailscale funnel --bg --https=443 http://127.0.0.1:8765
```

## 预防

- 避免将 Tailscale serve/funnel 绑定到常用服务端口
- 工作台服务器建议用 8765，Tailscale tunnel 用其他端口
