---
title: "快速开始"
description: "把本地文件、目录或 HTTP 服务分享给另一台 tailnet 设备"
url: "https://tslink.md/zh/docs/quickstart"
locale: "zh"
product_version: "0.1.1"
source: "https://github.com/anydoor7/tslink/blob/v0.1.1/docs/getting-started.md"
---

> Documentation index: https://tslink.md/zh/llms.txt · Installed binary is authoritative: `tslink manifest`.

场景指南：[在手机上使用编程 agent 的 Web UI](https://tslink.md/zh/docs/agent-ui-phone.md)。

## 安装

macOS 或 Linux 上运行 `brew install --cask anydoor7/tap/tslink` 安装 TSLink。归档、Linux 软件包、Windows zip 和源码构建的步骤见[安装指南](https://tslink.md/zh/docs/installation.md)。接收设备需要 [Tailscale](https://tailscale.com/download)，并且 tailnet 策略允许它访问新节点。运行 TSLink 的主机不需要另装 Tailscale daemon。

## 第一次分享

分享已经生成的报告。单文件目标只提供该文件；目录目标会提供其中可浏览的内容。

```bash
tslink share ./report.html --name preview
```

默认路径不要求 API token、OAuth client secret 或 `tslink login`。`share` 注册服务，并确保后台网关运行。首次注册可能返回 Tailscale 授权 URL，而非就绪的服务 URL。节点注册与审批仍受你的 tailnet 策略约束。

agent 或脚本可以给同一命令加上 `--json`：

```bash
tslink share ./report.html --name preview --json
```

成功的授权交接如下（实际结果可能包含更多字段）：

```json
{"type":"tslink.result","ok":true,"schema_version":1,"command":"share","code":0,"data":{"status":"needs_login","auth_url":"https://login.tailscale.com/a/..."}}
```

`needs_login` 表示调用成功，但还需要人的操作。读取 `data.auth_url`；不要把它当作服务链接，也不要在未授权时无限重试。已经就绪时则读取 `data.url`。

## 授权并获取链接

打开返回的授权 URL，在策略允许的情况下批准节点，再获取准确的运行时 URL：

```bash
tslink url preview --wait
```

从手机或另一台 tailnet 设备打开返回的 HTTPS 链接。主机名来自运行时证据，不要用请求的服务名自行拼接。

```bash
tslink status
tslink list
```

授权交接、daemon 正在运行和准确 URL 是不同状态。哪些设备可连接仍由 Tailscale 网络策略决定。对于 proxy/file HTTP 服务，未设置 `--allow` 时允许通过 tailnet 策略的调用者；需要额外的 TSLink 身份检查时，请设置明确的 allow-list。

## 保留具名服务

已有的本地 Web 应用可以使用 `add`：

```bash
tslink add my-app --proxy localhost:3000
tslink url my-app --wait
```

`add` 默认也确保网关运行。若返回 `needs_login`，完成同样的授权交接。只有明确采用前台流程、先用 `--no-daemon-install` 注册，并且没有其它网关运行时，才直接执行 `serve`：

```bash
tslink add my-app --proxy localhost:3000 --no-daemon-install
tslink serve
```

`share` 默认使用 ephemeral tailnet 节点；`add` 默认使用持久节点。ephemeral 节点清理不会删除本地 registry 条目。用完后删除条目：

```bash
tslink remove preview
```

本地删除和远端 tailnet 设备清理分别报告；远端清理要求准确的所有权证明和 API client。

## 更多任务

```bash
# 只读分享目录
tslink share ./build --name docs

# 把 HTTP 服务限制给指定 tailnet 身份
tslink add internal --proxy localhost:9090 --allow you@example.com,tag:ops

# 转发原始 TCP；使用 tailnet 策略与后端自身认证保护
tslink add mydb --tcp localhost:5432

# 启用登录时自动启动
tslink install
```

公开访问是另一项选择。proxy 服务可使用 `--funnel --public`；Funnel 流量来自公共互联网，没有 TSLink 调用者身份执行，且拒绝与 `--allow` 同用。在显式确认公开的流程中，Funnel 策略自动配置默认开启；使用前请阅读[配置](https://tslink.md/zh/docs/configuration.md)。

## 可选的存储凭据

`tslink login` 是凭据录入菜单，并非浏览器 OAuth callback。只有需要带标签节点的自动化或 API 操作时，才加入 API token 或 OAuth client secret。脚本应选择一个明确的 stdin 来源：

```bash
printf %s "$TSLINK_API_KEY" | tslink login --api-key-stdin --json
# 或使用 OAuth 槽位，密钥由 secret manager 注入
printf %s "$TSLINK_CLIENT_SECRET" | tslink login --client-secret-stdin --json
```

在无头机器上使用前，阅读[凭据存储及其有条件的回退](https://tslink.md/zh/docs/installation.md#%E5%87%AD%E8%AF%81%E5%AD%98%E5%82%A8)。OAuth API 操作取决于 scopes。不要把 secret 写进 argv 或 MCP client 配置。

## 编程式访问

CLI 命令支持带版本的 `--json` 信封，但 `tslink mcp` 的 stdout 保留给 MCP frames，因此拒绝 `--json`。[owner 的 44 个 MCP 工具，精简会话更少](https://tslink.md/zh/docs/mcp-server.md)覆盖服务操作；daemon 生命周期、安装、login/logout 和配置仍仅通过 CLI 提供。

## 下一步

* [任务示例](https://tslink.md/zh/docs/use-cases.md)：报告分享、本地 Web 预览、远程 MCP 和 TCP 访问
* [命令参考](https://tslink.md/zh/docs/commands.md)：各命令的 flags、输出和错误
* [守护进程模式](https://tslink.md/zh/docs/daemon.md)：后台运行与日志
* [配置](https://tslink.md/zh/docs/configuration.md)：registry、凭据和策略变更
* [故障排除](https://tslink.md/zh/docs/troubleshooting.md)：节点授权与准确 URL 就绪
