# Linux 入门

这份指南带你从一无所装到连接成功。它涵盖两段式安装、登录、连接，以及去哪里获得帮助。每个屏幕和设置的完整讲解见 [Linux 导览](/docs/tour-linux)。

URnetwork 使用成员运行的出口设备。在中继路径上，提供者收不到你的来源 IP。原生应用还默认把发往提供者的流量加密。完整模型见 [URnetwork 的工作原理](/docs/overview)。

## 你需要什么

URnetwork 的 Linux 版是一个原生 GTK4 桌面应用，配一个掌管隧道的系统守护进程。它面向 **Ubuntu 22.04 或更新版本**及同级的 Debian 系发行版，支持 **amd64 和 arm64**，需要 systemd 和 `/dev/net/tun`。普通的桌面或服务器安装都满足这些条件。

## 安装

应用分两件安装，因为隧道需要特权，而 GUI 绝不该拥有特权：

- **`urnetworkd`** — systemd 下的一个小型 root 守护进程。它掌管 `/dev/net/tun`、路由和 DNS。它完全没有 GUI 依赖，所以在无界面的机器上也装得好好的。
- **URnetwork 应用** — 一个以 AppImage 形式发行的 GTK4/libadwaita 桌面应用，以你的普通用户身份运行。它永远不需要 root。

两者都来自
[github.com/urnetwork/build/releases](https://github.com/urnetwork/build/releases)。

### 1. 安装守护进程

在 Debian、Ubuntu 及其衍生版上用 **`.deb`**：

```
sudo apt install ./urnetwork-daemon_<version>_<arch>.deb
```

或在没有 dpkg 的发行版上用**安装 tarball**：

```
tar xf urnetwork-daemon-<version>-<arch>.install.tar.gz
sudo urnetwork-daemon/install.sh
```

安装器运行预检（systemd、glibc、`/dev/net/tun`）并打印它将要做什么；`install.sh --dry-run` 只展示计划，不碰任何东西。它创建一个名为 `urnetwork` 的系统组，安装守护进程、它的 systemd 单元、桌面条目、图标和一个 `/usr/bin/urnetwork` 启动器，然后启用并启动服务。装完即启动是安全的：守护进程以空闲状态启动。在有经过认证的桌面客户端发出请求之前，它绝不会拉起隧道。

### 2. 把应用放在它能自我更新的地方

GUI 的 AppImage 是有意不随软件包安装的。它住在你的主目录里，这样它不用 root 就能替换自己：

```
mkdir -p ~/.local/lib/urnetwork
cp URnetwork-<version>-<arch>.AppImage ~/.local/lib/urnetwork/URnetwork.AppImage
chmod +x ~/.local/lib/urnetwork/URnetwork.AppImage
```

`/usr/bin/urnetwork` 会在那里找到并运行它，所以桌面条目、应用菜单和 `urnetwork://` 链接在应用更新之后照常工作。AppImage 需要 `libfuse2`；`.deb` 已替你声明了这个依赖。

### 3. 把自己加进 `urnetwork` 组

只有 root 和 `urnetwork` 组的成员能指挥守护进程，所以你自己的用户必须加入：

```
sudo usermod -aG urnetwork "$USER"
```

登出再登录；组成员身份在登录时生效。跳过这一步，应用会告诉你它连不上服务。

第三方安全评估及其局限在[威胁模型](/docs/threat-model)里有说明。

## 登录

从应用菜单启动 URnetwork，或运行 `urnetwork`。应用打开后是登录选项。挑一个你放心的身份模型：

- **邮箱或手机号。** 输入并继续。应用找到你的账户，或提议创建一个，用一次性验证码核验。
- **创建账户（Create account）。** 网络名、邮箱或手机号、密码，外加可选的推荐码。
- **用验证码登录（Sign in with code）。** 已经在另一台设备上登录了？在任何 URnetwork 应用里或在 [ur.io](https://ur.io) 生成一个一次性授权码，粘贴进来。
- **试用访客模式（Try Guest Mode）。** 一次点击创建一个什么都不用交出的真实、永久网络。这个按钮早于当前的注册流程：那个账户的恢复短语被直接丢弃而不是展示给你，所以没有任何办法从另一台机器回到它里面。把它当作评估用的一次性账户。要依赖它之前，先补一个邮箱、手机号或钱包。
- **用 Bittensor 登录（Sign in with Bittensor）。** 你的浏览器打开一个钱包桥，你的钱包签署一条消息，应用接手余下的事。
- **用 Solana 登录（Sign in with Solana）。** 同一套流程，经 Phantom 或 Solflare。

Linux 上没有 Google 或 Apple 登录。如果你想要一个能长期保留的免邮箱账户，手机和 Mac 应用提供一键的**创建即时账户**（Create Instant Account），它会把恢复短语展示给你。在那边创建，再用授权码把它带到这台机器。

每个网络都从免费档开始，一份每天刷新的每日流量额度。Pro（每月 $5 或每年 $40）用一份大额月度额度取而代之，在应用里从**获取 UR Pro**（Get UR Pro）购买。当前数字见 [ur.io/products](https://ur.io/products)。

## 隧道权限

连接时不会出现任何同意对话框，因为特权在安装时就已授予。守护进程以 root 运行并掌管隧道设备；应用以你的身份运行，经它的控制套接字向守护进程发出请求。那个套接字由内核核验的对端凭证把守：root，或 `urnetwork` 组的成员。系统上的其他任何东西都无法启动隧道。

关于 URnetwork 对你的连接记录什么，见[威胁模型](/docs/threat-model)。

## 连接

1. 在应用里点**连接**（Connect）。
2. 隧道建立。没有权限弹窗，因为打开隧道设备的是守护进程，不是应用。
3. 地球和状态行活跃起来，如果你的桌面支持，还会出现一个托盘图标。

### 选择位置

默认是**最佳可用**（best available）。网络持续为你挑选快而可靠的提供者。对大多数会话来说这是正确的选择。

要选择流量从哪里出网：

1. 点位置行打开选择器。
2. 滚动浏览国家，或输入搜索。地区、城市和设备出现在搜索结果里，所以要找某个城市就输入它的名字。
3. 挑一个位置。应用经那里的提供者重新连接。

每个条目带着此刻在那里在线的提供者实时数量。提供者是成员设备，不是数据中心，所以数量随一天中的时段起落。[概览](/docs/overview)讲解你的流量走的路径。[导览](/docs/tour-linux)讲解连接设置及其取舍。

## 确认生效

访问任意"我的 IP 是什么"网站。你应该看到某个提供者的地址和城市，而不是你的。之后，应用的地球和状态行，以及桌面支持时的托盘图标，都会告诉你隧道在线。

## 如果出了问题

如果应用报告服务不可达、过期，或与应用是不同的构建，那是一个真实的状态，有真实的修法：见导览里的[疑难解答](/docs/tour-linux#troubleshooting)。两半是有意做成版本配对的，所以升级了一半的安装会明确告诉你，而不是莫名其妙地失败。遇到隧道问题，`journalctl -u urnetworkd -f` 是第一个要看的地方。[feedback.ur.io](https://feedback.ur.io) 可以联系到团队，[FAQ](/docs/faq) 回答常见问题。

## 接下来做什么

- **走一遍[导览](/docs/tour-linux)。** 每个屏幕和设置：守护进程的拆分、路由和 DNS 行为及其局限、各个面板（自定义 DNS、分流规则、实时合同）、设备位置覆盖、断网保护（kill switch，默认关闭），以及疑难解答。
- **共享你的连接。** 共享连接在应用的主屏控制区：**自动**（Auto）、**始终**（Always）、**网络**（Network，只对你自己账户的设备，永不面向公众）或**永不**（Never），出厂在**永不**。一台上行良好的 Linux 桌面机或服务器正是网络想要的节点；[概览](/docs/overview)讲了流量离开你的机器之前在本机运行的滥用过滤。对无界面的机器，
  [github.com/urnetwork/build/releases](https://github.com/urnetwork/build/releases)
  上的独立提供者 CLI 干同一件事：先用任一应用给的验证码执行 `urnetwork auth`，再执行 `urnetwork provide`。提供者参与 UR protocol；[ur.xyz](https://ur.xyz) 记录了奖励的运作方式。
- **试试其他平台：**[Android](/docs/getting-started-android)、
  [iOS](/docs/getting-started-ios)、[macOS](/docs/getting-started-macos)、
  [Windows](/docs/getting-started-windows)，以及
  [浏览器](/docs/getting-started-browser)。
