Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .vitepress/config/cn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ export const cn = defineConfig({
{ text: '改善 P2P', link: '/guide/network/p2p-optimize' },
{ text: '魔法 DNS', link: '/guide/network/magic-dns' },
{ text: 'ACL', link: '/guide/config/acl' },
{ text: '服务管理与混合模式', link: '/guide/network/service-mode' },
] },
{ text: '开机自启(注册服务)', collapsed: true, items: [
{ text: '一键安装服务', link: '/guide/network/oneclick-install-as-service' },
Expand All @@ -49,6 +50,9 @@ export const cn = defineConfig({
text: '图形界面 GUI 组网',
link: 'guide/gui/index',
items: [
{ text: '运行模式', link: '/guide/gui/modes' },
{ text: '公共服务器组网', link: '/guide/gui/basic' },
{ text: '使用 Web 控制台组网', link: '/guide/gui/web-console' },
{ text: '手动组网', link: '/guide/gui/manual' },
{ text: 'WireGuard 接入', link: '/guide/gui/vpn_portal' },
{ text: '子网代理', link: '/guide/gui/subnet_proxy' },
Expand Down
4 changes: 4 additions & 0 deletions .vitepress/config/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ export const en = defineConfig({
{ text: 'P2P Optimization', link: '/en/guide/network/p2p-optimize' },
{ text: 'Magic DNS', link: '/en/guide/network/magic-dns' },
{ text: 'ACL', link: '/en/guide/config/acl' },
{ text: 'Service Management & Hybrid Mode', link: '/en/guide/network/service-mode' },
] },
{ text: 'Autostart (Register Service)', collapsed: true, items: [
{ text: 'One-Click Install Service', link: '/en/guide/network/oneclick-install-as-service' },
Expand All @@ -49,6 +50,9 @@ export const en = defineConfig({
text: 'GUI Networking',
link: '/en/guide/gui/index',
items: [
{ text: 'Running Modes', link: '/en/guide/gui/modes' },
{ text: 'Public Server Networking', link: '/en/guide/gui/basic' },
{ text: 'Networking with Web Console', link: '/en/guide/gui/web-console' },
{ text: 'Manual Networking', link: '/en/guide/gui/manual' },
{ text: 'WireGuard Access', link: '/en/guide/gui/vpn_portal' },
{ text: 'Subnet Proxy', link: '/en/guide/gui/subnet_proxy' },
Expand Down
Binary file added assets/cn/mode_switcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 15 additions & 0 deletions en/guide/gui/basic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Public Server Networking

The GUI defaults to using official shared nodes for networking, which is convenient for friends without public IPs. In most cases, P2P tunneling can be successful. If P2P tunneling fails, the bandwidth between nodes may be relatively low.

The configuration method is shown in the figure.

![Configuration Interface](/assets/cn/config.png)

After the configuration is complete, click the Run Network button. The interface after the network runs successfully is shown in the figure.

![Running](/assets/cn/running.png)

## Running Modes

Starting from version v2.5.0, the GUI supports multiple running modes (Normal, Service, Remote). If you want the network to remain connected after exiting the GUI, or to manage remote servers, please refer to [GUI Running Modes](/en/guide/gui/modes).
62 changes: 62 additions & 0 deletions en/guide/gui/easytier-harmonyos.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# [EasyTier HarmonyOS Version](https://appgallery.huawei.com/app/detail?id=top.frankhan.easytier&channelId=SHARE&source=appshare)

## Download

<div align="left">
<a href="https://appgallery.huawei.com/app/detail?id=top.frankhan.easytier&channelId=SHARE&source=appshare" target="_blank">
<img src="/assets/HomoTier_AppGallery.png" width="204" height="51" />
</a>
</div>

## Usage Tutorial

- 1. New Button

If you have already configured it on another device, you only need to copy the configuration from the other device and click the paste button here.

If not, you need to give the configuration file you want to add a name for identification.

<img src="/assets/harmonyos-add.jpg" width="50%" />

- 2. Configuration Page

Most configurations are aligned with the original configuration items, except for the credentials. Credentials are merged from the network name and network password to facilitate reuse across multiple configurations.

[Original Configuration Items](https://easytier.cn/guide/network/configurations.html)

<img src="/assets/harmonyos-edit.jpg" width="50%" />

- 3. Share Button and Air Capture

The left side of p2 is Air Capture, and the right side is the window pulled up after clicking [System Share (Touch-to-Share available)]. You can share it with your other devices. Once listed, other devices will automatically install EasyTier and import the configuration you shared.

<img src="/assets/harmonyos-share.jpg" width="50%" />
<img src="/assets/harmonyos-share_gesture.jpg" width="50%" />

- 4. Sidebar

Here you can switch configuration files. Swiping left on a configuration file will reveal a delete button to remove the configuration. Below are the EasyTier official group and the App communication group; feel free to join.

<img src="/assets/harmonyos-sidebar.jpg" width="50%" />

- 5. Community Shared Nodes

These are the community shared nodes obtained, provided entirely by the community for public welfare. Please do not use them for illegal or criminal activities that cause trouble for others.

<img src="/assets/harmonyos-shared_peers.jpg" width="50%" />

- 6. Important Tips

#### Whether it is a Peer, a credential, or other configuration items, you need to click them to light them up to indicate they are enabled; otherwise, you have only added the configuration item.

## Introduction

EasyTier HarmonyOS Version is a HarmonyOS native application developed based on EasyTier. It uses ArkTS to implement a modern UI, provides VPN services and configuration management, allows for quick importing of community shared nodes, and supports new HarmonyOS features such as Touch-to-Share.

## Bug Feedback & Suggestions

Please jump directly via the App feedback group in the sidebar.

## System Support

Currently supports HarmonyOS 5 and above; HarmonyOS 5 may be deprecated in the future.
46 changes: 46 additions & 0 deletions en/guide/gui/modes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# GUI Running Modes

EasyTier GUI supports three running modes, allowing users to flexibly deploy and manage the EasyTier core according to different scenarios.

## Introduction to Running Modes

At the bottom of the GUI interface, you can see the mode switcher.

![Mode Switcher](/assets/cn/mode_switcher.png)

### 1. Normal Mode
* **Description**: This is the default mode. The EasyTier core runs as a child process of the GUI.
* **Behavior**: When you close the GUI, the EasyTier network connection will also be disconnected.
* **Use Case**: Temporary networking, open and use as needed.

### 2. Service Mode
* **Description**: Installs EasyTier as a native system service (Windows Service, systemd, etc.).
* **Behavior**: EasyTier will run persistently in the background. Even if you close the GUI or log out, the network remains connected. Supports auto-start on boot.
* **Use Case**: Servers or personal computers that need to be online stably for a long time.
* **Note**: On Windows, if Service Mode is running, you may need to stop the service in the GUI before updating the software.

### 3. Remote Mode
* **Description**: The GUI acts only as a management terminal, connecting to an EasyTier instance on a remote machine via RPC.
* **Behavior**: You can manage EasyTier on headless servers, view status, or modify configurations.
* **Configuration**: Requires entering the IP address and RPC port (default 15713) of the remote node.

## Configuration Server (Web Console)

In addition to the three core management modes mentioned above, the EasyTier GUI also supports unified configuration management through a **Configuration Server** (Web Console).

* **Centralized Management**: In both Normal and Service modes, you can fill in the "Configuration Server" information.
* **Configuration Deployment**: Once connected successfully, the GUI will automatically synchronize configurations from the Web Console and start or stop the network based on server instructions.
* **Use Case**: Scenarios where multiple nodes need to be managed and you want to control all node configurations uniformly from a web page.

> For more details, please refer to [Networking with Web Console (GUI)](/en/guide/gui/web-console).

## Service Management

In **Service Mode**, you can easily manage system services through the GUI:

* **Install Service**: Writes the current configuration to the system service and starts it.
* **Uninstall Service**: Stops and removes the EasyTier service from the system.
* **Stop/Start**: Temporarily controls the running status of the background service.

> [!TIP]
> It is recommended to click "Uninstall Service" in the GUI before uninstalling the EasyTier software to ensure the system is cleaned up.
25 changes: 25 additions & 0 deletions en/guide/gui/web-console.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Networking with Web Console (GUI)

In addition to manual configuration and using public servers, the EasyTier GUI supports centralized management of nodes through the [Web Console](https://easytier.cn/web#/). This allows you to remotely deploy configurations and manage a large number of nodes uniformly.

## Register an Account

If you don't have a Web Console account yet, please visit the [Registration Link](https://easytier.cn/web#/auth/register) to register.

## Configuring in the GUI

In the EasyTier GUI main interface, you can see the "Configuration Server" option:

1. **Enter Server Address/Username**:
- If you are using the official Web Console, simply enter your **Username**.
- If you are using a self-hosted console, enter the full server address, such as `udp://<server_ip>:22020/<your_username>`.

2. **Connection Status**:
- After filling it in, click "Connect" or "Start".
- The GUI will attempt to connect to the configuration server. Once connected successfully, the interface will typically show a "Connected" status and automatically synchronize the configuration assigned to the device on the server.

## Benefits

- **Remote Deployment**: No need to manually enter complex subnet, peer, and other information on each device; simply connect to the console to retrieve it.
- **Status Monitoring**: View the online status and topology of all GUI nodes in real-time on the Web Console web page.
- **Automatic Application**: When you modify configurations on the web page, all online GUI nodes will automatically receive and apply the new configuration without requiring a manual restart.
30 changes: 30 additions & 0 deletions en/guide/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,33 @@ This section only introduces installation methods.
```

Source installation requires Rust environment and LLVM installation.

***

## Command Line Management Tool (easytier-cli)

`easytier-cli` is used to manage a running `easytier-core` process. It connects to `127.0.0.1:15888` by default.

### Basic Usage

```bash
# View node info
easytier-cli node
# List peers
easytier-cli peer list
# List route table
easytier-cli route list
```

### Multi-instance Management

If multiple network instances are running in a single `easytier-core` process (e.g., by loading multiple configuration files), you can use the `-n` or `-i` parameters to specify the target:

```bash
# Manage via instance name (specified with -m in config or command line)
easytier-cli -n my_net_1 node
# Manage via instance ID
easytier-cli -i <UUID> node
```

If only one instance is running in the process, `easytier-cli` will automatically select that instance.
47 changes: 47 additions & 0 deletions en/guide/network/config-file.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,47 @@ Running with parameters can generate a configuration file with the corresponding

Running `easytier-core` directly without parameters will generate the minimal configuration file.

## Environment Variables in Configuration File

EasyTier supports parsing environment variable placeholders in configuration files. This allows you to separate sensitive information (such as network secrets) from configuration files, making it easier to commit configuration files to version control systems.

### Syntax Rules

Standard Shell-style syntax is supported:
- `${VAR}` or `$VAR`: Use the value of the environment variable `VAR`.
- `${VAR:-default}`: If the environment variable `VAR` is not set, use `default` as the default value.
- `$$`: Escape sequence used to represent a literal `$`. For example, `$$VAR` will be parsed as `$VAR` and will not trigger environment variable replacement.

### Usage Example

Suppose your configuration file `config.toml` looks like this:

```toml
[network_identity]
network_name = "my-network"
network_secret = "${ET_SECRET}"

[[peer]]
uri = "tcp://1.1.1.1:${ET_PORT:-11010}"
```

Set the corresponding environment variables at startup:

```bash
export ET_SECRET="my-secret-key"
export ET_PORT="12345"
easytier-core -c config.toml
```

### Security and Limitations

::: warning Security Notes
1. **Read-only Protection**: Configuration instances that use environment variables are marked as **read-only**. You cannot remotely modify or delete these configurations through the Web Console or GUI.
2. **RPC Leakage Prevention**: To prevent sensitive information leakage, the content of read-only configurations cannot be retrieved through RPC APIs (such as `get_instance_config`).
3. **Applicability**: Environment variable parsing **only takes effect for configurations loaded from the local filesystem**. Configurations delivered remotely via Web or GUI will not parse environment variables.
4. **Disable Feature**: If you need to completely disable this feature, you can use the command-line argument `--disable-env-parsing`.
:::

## Multiple Configuration Files Startup

You can specify multiple configuration files through the `-c` parameter. EasyTier will load multiple configuration files in one process and start multiple virtual networks.
Expand All @@ -22,6 +63,12 @@ You can specify multiple configuration files through the `-c` parameter. EasyTie
easytier-core -c ./config1.yaml -c ./config2.yaml
```

::: tip Note
When starting multiple virtual networks using multiple configuration files, the RPC service is shared globally. Settings such as the RPC listening port should be specified via command-line arguments (e.g., `-r`) or environment variables, rather than in individual `.toml` configuration files.
:::

If you need more flexible configuration directory management or real-time management of multiple configurations via the Web, please refer to [Service Management & Hybrid Mode](service-mode.md).

## Configuration File Generator

The official website provides a configuration file generator, which you can access via <a target="_blank" href="https://easytier.cn/web/index.html#config_generator">Configuration File Generator</a> to generate configuration files.
11 changes: 8 additions & 3 deletions en/guide/network/configurations.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@ You can use `easytier-core --help` to view all configuration options.
| | - Username only: `--config-server admin`, will use the official server |
| | [env: ET_CONFIG_SERVER=] |
| `--machine-id` | Web configuration server identifies machines through machine id, used for configuration recovery after disconnection and reconnection, must be unique and fixed. Default obtained from system. [env: ET_MACHINE_ID=] |
| `-c, --config-file` | Configuration file path, note: options configured in command line will override options in configuration file [env: ET_CONFIG_FILE=] |
| `-c, --config-file` | Configuration file path. Supports specifying multiple configuration files (separated by commas or by using this parameter multiple times). Options configured in command line will override options in configuration file [env: ET_CONFIG_FILE=] |
| `--config-dir` | Load all .toml files in the directory to start network instances, and store the received configurations in this directory. [env: ET_CONFIG_DIR=] |
| `--disable-env-parsing` | Disable environment variable parsing in config file [env: ET_DISABLE_ENV_PARSING=] |
| `--daemon` | Run in daemon mode. The process will not exit automatically even if no network instances are running. [env: ET_DAEMON=] |
| `--disable-env-parsing` | Disable environment variable parsing in the configuration file. Useful when the configuration contains many `$` symbols and you do not wish to use escape sequences. [env: ET_DISABLE_ENV_PARSING=] |

### Network Settings

Expand All @@ -30,7 +31,11 @@ You can use `easytier-core --help` to view all configuration options.
| `-e, --external-node` | Use public shared nodes to discover peer nodes [env: ET_EXTERNAL_NODE=] |
| `-n, --proxy-networks` | Export local network to other peer nodes in VPN, e.g.: `10.0.0.0/24`. Supports mapping to other CIDR, e.g.: `10.0.0.0/24->192.168.0.0/24` [env: ET_PROXY_NETWORKS=] |

### RPC Settings
### RPC Settings (Global Parameters)

::: tip Note
RPC settings are global and apply to the entire `easytier-core` process. When running multiple network instances in a single process, all instances share the same RPC portal. These parameters can generally only be set via command-line arguments or environment variables.
:::

| Parameter | Description |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
Expand Down
6 changes: 6 additions & 0 deletions en/guide/network/install-as-a-macos-service.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Install as a macOS Service

::: tip Recommended Method
Starting from v2.5.0, it is recommended to use the `easytier-cli service install` command to register the service with one click. See [One-Click Register Service](./oneclick-install-as-service) for details.
:::

The following is the manual installation method using the third-party tool `serviceman`:

Download and install [serviceman](https://webinstall.dev/serviceman).

Open Terminal and run the following commands to register the service:
Expand Down
2 changes: 1 addition & 1 deletion en/guide/network/networking-without-public-ip.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@ After successful execution, Node A can access Node B via the virtual IP `10.144.

`--ipv4 x.x.x.x` can be replaced with `-d` to enable DHCP functionality, allowing EasyTier to automatically allocate the IP address of this node based on other existing virtual IPs within the virtual network.

Nodes can connect to multiple public servers. If one public server fails, nodes can still communicate using other active public servers. Simply specify multiple `-p` parameters, such as `-p tcp://1.1.1.1:11010 -p udp://1.1.1.2:11011`. Note that each node in the virtual network must specify the same list of public servers; otherwise, networking may not function properly.
Nodes can connect to multiple public servers. If one public server fails, nodes can still communicate using other active public servers. Simply specify multiple `-p` parameters, such as `-p tcp://1.1.1.1:11010 -p udp://1.1.1.2:11010`. Note that each node in the virtual network must specify the same list of public servers; otherwise, networking may not function properly.

---
Loading