Skip to content
Download

Deploy a Personal Server

If you find public nodes less than satisfactory, consider deploying your own personal server node.

  • A server (computer) with an accessible public IP port. EasyTier has very low resource overhead and hardly affects normal server operation.

As mentioned earlier, EasyTier does not distinguish between server and client. Therefore, on a server with a graphical interface, you can directly use QtEasyTier to deploy an EasyTier server.

A node acting as a “personal server” should have the following characteristics:

  1. Reachable by other devices on your network and capable of relaying traffic.
  2. Not reachable by other people’s networks — for your own use only.
  3. (Optional) No virtual IP address assigned, effectively not participating in the virtual network.

Following this approach, we can easily configure a “server” node that meets the requirements.

Private Mode Configuration

  • Enable private mode and set the corresponding network name and password, so only devices using the same network name and password can connect to this node — satisfying conditions 1 and 2.
  • (Optional) In basic settings, turn off DHCP and do not assign an IP address, so no virtual IP is allocated to this node at runtime — satisfying condition 3.
    • Since it has a direct public connection and does not participate in the virtual network, most advanced settings are irrelevant and can be left at their default values.
    • However, the KCP and QUIC switches can be toggled as needed — they determine whether the server accepts traffic over KCP/QUIC protocols.

Listen Port Configuration

  • Choose an unused port in the listening port field, such as 11010, and enter the address in the following format:
protocol://0.0.0.0:port

The protocol can be tcp, udp, ws (WebSocket), wss (WebSocket over TLS), or wg (WireGuard). Choose based on your actual situation. If you’re unsure, keeping the defaults of tcp and udp is fine.

Once all the above settings are configured, click “Start” to run the “server” node. Others can then connect to this node using the server’s public IP + port.


The method described here involves directly downloading the official EasyTier binary and deploying via a configuration file, rather than using Docker.
This section uses Ubuntu 24.04.3 LTS as an example.

Downloading the EasyTier CLI (easytier-core)

Section titled “Downloading the EasyTier CLI (easytier-core)”

In the text below, * represents an arbitrary filename, and ** represents a different arbitrary filename.

  1. One-click install script

2.1. EasyTier Community Edition

Terminal window
wget -O /tmp/installer.sh "https://gitee.com/zyflypzlc/warehouse/raw/master/easytier_installer/installer.sh" && sudo bash /tmp/installer.sh

The community edition script does not include public servers in the generated config file. Please add them manually if needed.

2.2. EasyTier Official Script (currently only supports installing 2.4.5 stable) Note: The official one-click script requires unzip to be installed first.

Terminal window
# Install unzip
sudo apt update && sudo apt install unzip
# One-click install script
wget -O /tmp/easytier.sh "https://raw.githubusercontent.com/EasyTier/EasyTier/main/script/install.sh" && sudo bash /tmp/easytier.sh install --gh-proxy https://ghfast.top/

2.3. After Script Execution Once the script completes successfully, the EasyTier binaries will be installed in /opt/easytier, with configuration files located at /opt/easytier/config/*.conf.

EasyTier will be registered as a system service. You can manage it with the following commands:
Terminal window
systemctl start easytier # Start
systemctl stop easytier # Stop
systemctl status easytier # Check status
systemctl restart easytier # Restart

For the official script, replace easytier with easytier@config-filename in management commands. It is not recommended to manually change the GitHub acceleration link in the one-click install script!
If the install script fails, delete the /opt/easytier folder before retrying!

  1. Manually Download the CLI

This section has been largely superseded by the community auto-install script and is kept only as a reference for troubleshooting script installation failures.

  • Download the appropriate easytier CLI version for your hardware architecture from the EasyTier download page.

For example, for a 64-bit AMD/Intel processor, choose easytier-linux-x86_64-v2.5.0.zip.

https://gh-proxy.org/https://github.com/EasyTier/EasyTier/releases/download/v2.5.0/easytier-linux-x86_64-v2.5.0.zip

You can also use curl to download:

Terminal window
# Install curl (Debian/Ubuntu)
sudo apt update && sudo apt install curl
# Download easytier archive to /tmp
curl -L https://gh-proxy.org/https://github.com/EasyTier/EasyTier/releases/download/v2.5.0/easytier-linux-x86_64-v2.5.0.zip -o /tmp/easytier_tmp_install.zip
  • Extract the archive and move the binary to /opt/easytier
Terminal window
# Install unzip
sudo apt update && sudo apt install unzip
# Extract to /opt/easytier
unzip -o /tmp/easytier_tmp_install.zip -d /opt/easytier
# Move binary files to /opt/easytier
mv /opt/easytier/easytier-linux-x86_64/* /opt/easytier/
  • (Optional) Create config directory and remove empty folder
Terminal window
mkdir /opt/easytier/config
rm -rf /opt/easytier/easytier-linux-x86_64/
  • Set execution permissions
Terminal window
sudo chmod +x /opt/easytier/easytier-core /opt/easytier/easytier-cli
  • Check the easytier-core version to verify installation:
Terminal window
/opt/easytier/easytier-core --version
  1. (Optional) Install Shell Auto-Completion
Terminal window
# Fish auto-completion
easytier-core --gen-autocomplete fish > ~/.config/fish/completions/easytier-core.fish
easytier-cli gen-autocomplete fish > ~/.config/fish/completions/easytier-core.fish

Next, write a TOML configuration file according to the EasyTier config format.

  • If you installed EasyTier using the one-click script, you can directly modify the /opt/easytier/config/*.conf config file.
    • You can also copy an existing *.conf and create a new **.conf in the same directory to modify.
    • It is recommended that script-installed ET use the config generator-generated config with caution, as there is a risk of config loading errors!
  • For manually downloaded ET, place the config file in a directory of your choice, preferably near the easytier-core binary.
  1. Config files can be generated using the Config Generator.

Temporary config generator: https://etgen.myqfeng.top/

  1. If the config generator is unavailable, you can also create a virtual network in QtEasyTier, configure it using the GUI steps, click “Run” once, then find the config content in the logs as shown in the screenshot below.

Config File Screenshot

  1. Here is a usable config file example:
hostname = "MingYueQingFeng" # Node name, customizable
dhcp = false
listeners = [
"tcp://0.0.0.0:11010",
"udp://0.0.0.0:11010",
] # Listening ports, customizable
[network_identity]
network_name = "your-network-name"
network_secret = "your-network-key"
[flags]
latency_first = true # Low-latency mode
private_mode = true # Private mode

For ET installed via one-click script, use the following commands to start the EasyTier node:

Terminal window
systemctl start easytier # Community Edition
systemctl start easytier@default # Official Edition

For ET using a custom **.conf config file, use the following commands:

Terminal window
# Stop the node running with the default config
systemctl disable easytier@* && systemctl stop easytier@*
# Enable and start the node with the custom config file
systemctl enable easytier@** && systemctl start easytier@**

For manually installed core, use the following command to start the EasyTier node:

Terminal window
./easytier-core -c /path/to/your/config.toml
# Launch with multiple config files
./easytier-core -c /path/to/your/config1.toml -c /path/to/your/config2.toml

When launching with multiple config files, each config’s listening port and RPC port must use different ports from other simultaneously launched configs!

However, once you close the terminal, EasyTier will be killed. Therefore, we need to register it as a system service so it can keep running.

This example uses a Linux system with systemctl.

  1. Create a systemd service file
Terminal window
sudo nano /etc/systemd/system/easytier.service
  1. Edit the service file
[Unit]
Description=EasyTier Service
# Ensure the network is fully online before starting
After=network.target network-online.target syslog.target
# Explicitly require network online
Wants=network.target network-online.target
[Service]
Type=simple
ExecStart=/path/to/your/easytier-core -c /path/to/your/config.toml
Restart=always
RestartSec=3s
StartLimitIntervalSec=0
[Install]
WantedBy=multi-user.target
  1. Set permissions and load the service
  • Save and exit the editor, then run the following to reload systemd service configuration:
Terminal window
sudo systemctl daemon-reload
  • Enable the service to start automatically on boot:
Terminal window
sudo systemctl enable easytier
  • Start the service:
Terminal window
sudo systemctl start easytier
  • You can check service status and logs with:
Terminal window
systemctl status easytier
journalctl -u easytier

At this point, if nothing went wrong, the EasyTier server node should be up and running.