[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5486":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":24,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":15,"starSnapshotCount":15,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},5486,"EasyTier","EasyTier\u002FEasyTier","A simple, decentralized mesh VPN with WireGuard support.","https:\u002F\u002Feasytier.cn",null,"Rust",11941,1177,53,372,0,12,149,666,81,44.21,"GNU Lesser General Public License v3.0",false,"main",true,[26,27,28,29,30,31],"nat-traversal","p2p","rust","tailscale","vpn","zerotier","2026-06-12 02:01:10","# EasyTier\n\n[![Github release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Ftag\u002FEasyTier\u002FEasyTier)](https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Freleases)\n[![GitHub](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FEasyTier\u002FEasyTier)](https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Fblob\u002Fmain\u002FLICENSE)\n[![GitHub last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002FEasyTier\u002FEasyTier)](https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Fcommits\u002Fmain)\n[![GitHub issues](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002FEasyTier\u002FEasyTier)](https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Fissues)\n[![GitHub Core Actions](https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Factions\u002Fworkflows\u002Fcore.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Factions\u002Fworkflows\u002Fcore.yml)\n[![GitHub GUI Actions](https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Factions\u002Fworkflows\u002Fgui.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Factions\u002Fworkflows\u002Fgui.yml)\n[![GitHub Test Actions](https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Factions\u002Fworkflows\u002Ftest.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Factions\u002Fworkflows\u002Ftest.yml)\n[![Ask DeepWiki](https:\u002F\u002Fdeepwiki.com\u002Fbadge.svg)](https:\u002F\u002Fdeepwiki.com\u002FEasyTier\u002FEasyTier)\n\n[简体中文](\u002FREADME_CN.md) | [English](\u002FREADME.md)\n\n> ✨ A simple, secure, decentralized virtual private network solution powered by Rust and Tokio\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"assets\u002Fconfig-page.png\" width=\"300\" alt=\"config page\">\n\u003Cimg src=\"assets\u002Frunning-page.png\" width=\"300\" alt=\"running page\">\n\u003C\u002Fp>\n\n📚 **[Full Documentation](https:\u002F\u002Feasytier.cn\u002Fen\u002F)** | 🖥️ **[Web Console](https:\u002F\u002Feasytier.cn\u002Fweb)** | 📝 **[Download Releases](https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Freleases)** | 🧩 **[Third Party Tools](https:\u002F\u002Feasytier.cn\u002Fen\u002Fguide\u002Finstallation_gui.html#third-party-graphical-interfaces)** | ❤️ **[Sponsor](#sponsor)**\n\n## Features\n\n### Core Features\n\n- 🔒 **Decentralized**: Nodes are equal and independent, no centralized services required  \n- 🚀 **Easy to Use**: Multiple operation methods via web, client, and command line  \n- 🌍 **Cross-Platform**: Supports Win\u002FMacOS\u002FLinux\u002FFreeBSD\u002FAndroid and X86\u002FARM\u002FMIPS architectures  \n- 🔐 **Secure**: AES-GCM or WireGuard encryption, prevents man-in-the-middle attacks  \n\n### Advanced Capabilities\n\n- 🔌 **Efficient NAT Traversal**: Supports UDP and IPv6 traversal, works with NAT4-NAT4 networks  \n- 🌐 **Subnet Proxy**: Nodes can share subnets for other nodes to access  \n- 🔄 **Intelligent Routing**: Latency priority and automatic route selection for best network experience  \n- ⚡ **High Performance**: Zero-copy throughout the entire link, supports TCP\u002FUDP\u002FWSS\u002FWG protocols  \n\n### Network Optimization\n\n- 📊 **UDP Loss Resistance**: KCP\u002FQUIC proxy optimizes latency and bandwidth in high packet loss environments  \n- 🔧 **Web Management**: Easy configuration and monitoring through web interface  \n- 🛠️ **Zero Config**: Simple deployment with statically linked executables  \n\n## Quick Start\n\n### 📥 Installation\n\nChoose the installation method that best suits your needs:\n\nLinux (Recommended):\n```bash\ncurl -fsSL \"https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Fblob\u002Fmain\u002Fscript\u002Finstall.sh?raw=true\" | sudo bash -s install\n```\n\nHomebrew (MacOS\u002FLinux):\n```bash\nbrew tap brewforge\u002Fchinese\nbrew install --cask easytier-gui\n```\n\nWindows (Recommended, run with administrator privileges):\n```powershell\nirm \"https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Fblob\u002Fmain\u002Fscript\u002Finstall.ps1?raw=true\" | iex\n```\n\nInstall via cargo (Latest development version): \n```bash\ncargo install --git https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier.git easytier\n```\n\n[Install pre-built binary](https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Freleases) (Recommended, All platforms supported)\n\n[Install via Docker](https:\u002F\u002Feasytier.cn\u002Fen\u002Fguide\u002Finstallation.html#installation-methods)\n\n[Install OpenWrt ipk package](https:\u002F\u002Fgithub.com\u002FEasyTier\u002Fluci-app-easytier)\n\nAdditional steps:\n\n[One-Click Register Service](https:\u002F\u002Feasytier.cn\u002Fen\u002Fguide\u002Fnetwork\u002Foneclick-install-as-service.html) (Automatically start when the system boots and run in the background)\n\n### 🚀 Basic Usage\n\n#### Quick Networking with Shared Nodes\n\nEasyTier supports quick networking using shared public nodes. When you don't have a public IP, you can use the free shared nodes provided by the EasyTier community. Nodes will automatically attempt NAT traversal and establish P2P connections. When P2P fails, data will be relayed through shared nodes.\n\nWhen using shared nodes, each node entering the network needs to provide the same `--network-name` and `--network-secret` parameters as the unique identifier of the network.\n\nTaking two nodes as an example (Please use more complex network name to avoid conflicts):\n\n1. Run on Node A:\n\n```bash\n# Run with administrator privileges\nsudo easytier-core -d --network-name abc --network-secret abc -p tcp:\u002F\u002F\u003CSharedNodeIP>:11010\n```\n\n2. Run on Node B:\n\n```bash\n# Run with administrator privileges\nsudo easytier-core -d --network-name abc --network-secret abc -p tcp:\u002F\u002F\u003CSharedNodeIP>:11010\n```\n\nAfter successful execution, you can check the network status using `easytier-cli`:\n\n```text\n| ipv4         | hostname       | cost  | lat_ms | loss_rate | rx_bytes | tx_bytes | tunnel_proto | nat_type | id         | version         |\n| ------------ | -------------- | ----- | ------ | --------- | -------- | -------- | ------------ | -------- | ---------- | --------------- |\n| 10.126.126.1 | abc-1          | Local | *      | *         | *        | *        | udp          | FullCone | 439804259  | 2.6.2-70e69a38~ |\n| 10.126.126.2 | abc-2          | p2p   | 3.452  | 0         | 17.33 kB | 20.42 kB | udp          | FullCone | 390879727  | 2.6.2-70e69a38~ |\n|              | PublicServer_a | p2p   | 27.796 | 0.000     | 50.01 kB | 67.46 kB | tcp          | Unknown  | 3771642457 | 2.6.2-70e69a38~ |\n```\n\nYou can test connectivity between nodes:\n\n```bash\n# Test connectivity\nping 10.126.126.1\nping 10.126.126.2\n```\n\nNote: If you cannot ping through, it may be that the firewall is blocking incoming traffic. Please turn off the firewall or add allow rules.\n\nTo improve availability, you can connect to multiple shared nodes simultaneously:\n\n```bash\n# Connect to multiple shared nodes\nsudo easytier-core -d --network-name abc --network-secret abc -p tcp:\u002F\u002F\u003CSharedNodeIP1>:11010 -p udp:\u002F\u002F\u003CSharedNodeIP2>:11010\n```\n\nOnce your network is set up successfully, you can easily configure it to start automatically on system boot. Refer to the [One-Click Register Service guide](https:\u002F\u002Feasytier.cn\u002Fen\u002Fguide\u002Fnetwork\u002Foneclick-install-as-service.html) for step-by-step instructions on registering EasyTier as a system service.\n\n#### Decentralized Networking\n\nEasyTier is fundamentally decentralized, with no distinction between server and client. As long as one device can communicate with any node in the virtual network, it can join the virtual network. Here's how to set up a decentralized network:\n\n1. Start First Node (Node A):\n\n```bash\n# Start the first node\nsudo easytier-core -i 10.144.144.1\n```\n\nAfter startup, this node will listen on the following ports by default:\n- TCP: 11010\n- UDP: 11010\n- WebSocket: 11011\n- WebSocket SSL: 11012\n- WireGuard: 11013\n\n2. Connect Second Node (Node B):\n\n```bash\n# Connect to the first node using its public IP\nsudo easytier-core -i 10.144.144.2 -p udp:\u002F\u002FFIRST_NODE_PUBLIC_IP:11010\n```\n\n3. Verify Connection:\n\n```bash\n# Test connectivity\nping 10.144.144.2\n\n# View connected peers\neasytier-cli peer\n\n# View routing information\neasytier-cli route\n\n# View local node information\neasytier-cli node\n```\n\nFor more nodes to join the network, they can connect to any existing node in the network using the `-p` parameter:\n\n```bash\n# Connect to any existing node using its public IP\nsudo easytier-core -i 10.144.144.3 -p udp:\u002F\u002FANY_EXISTING_NODE_PUBLIC_IP:11010\n```\n\n### 🔍 Advanced Features\n\n#### Subnet Proxy\n\nAssuming the network topology is as follows, Node B wants to share its accessible subnet 10.1.1.0\u002F24 with other nodes:\n\n```mermaid\nflowchart LR\n\nsubgraph Node A Public IP 22.1.1.1\nnodea[EasyTier\u003Cbr\u002F>10.144.144.1]\nend\n\nsubgraph Node B\nnodeb[EasyTier\u003Cbr\u002F>10.144.144.2]\nend\n\nid1[[10.1.1.0\u002F24]]\n\nnodea \u003C--> nodeb \u003C-.-> id1\n```\n\nTo share a subnet, add the `-n` parameter when starting EasyTier:\n\n```bash\n# Share subnet 10.1.1.0\u002F24 with other nodes\nsudo easytier-core -i 10.144.144.2 -n 10.1.1.0\u002F24\n```\n\nSubnet proxy information will automatically sync to each node in the virtual network, and each node will automatically configure the corresponding route. You can verify the subnet proxy setup:\n\n1. Check if the routing information has been synchronized (the proxy_cidrs column shows the proxied subnets):\n\n```bash\n# View routing information\neasytier-cli route\n```\n\n![Routing Information](\u002Fassets\u002Fimage-3.png)\n\n2. Test if you can access nodes in the proxied subnet:\n\n```bash\n# Test connectivity to proxied subnet\nping 10.1.1.2\n```\n\n#### WireGuard Integration\n\nEasyTier can act as a WireGuard server, allowing any device with a WireGuard client (including iOS and Android) to access the EasyTier network. Here's an example setup:\n\n```mermaid\nflowchart LR\n\nios[[iPhone\u003Cbr\u002F>WireGuard Installed]]\n\nsubgraph Node A Public IP 22.1.1.1\nnodea[EasyTier\u003Cbr\u002F>10.144.144.1]\nend\n\nsubgraph Node B\nnodeb[EasyTier\u003Cbr\u002F>10.144.144.2]\nend\n\nid1[[10.1.1.0\u002F24]]\n\nios \u003C-.-> nodea \u003C--> nodeb \u003C-.-> id1\n```\n\n1. Start EasyTier with WireGuard portal enabled:\n\n```bash\n# Listen on 0.0.0.0:11013 and use 10.14.14.0\u002F24 subnet for WireGuard clients\nsudo easytier-core -i 10.144.144.1 --vpn-portal wg:\u002F\u002F0.0.0.0:11013\u002F10.14.14.0\u002F24\n```\n\n2. Get WireGuard client configuration:\n\n```bash\n# Get WireGuard client configuration\neasytier-cli vpn-portal\n```\n\n3. In the output configuration:\n   - Set `Interface.Address` to an available IP from the WireGuard subnet\n   - Set `Peer.Endpoint` to the public IP\u002Fdomain of your EasyTier node\n   - Import the modified configuration into your WireGuard client\n\n#### Self-Hosted Public Shared Node\n\nYou can run your own public shared node to help other nodes discover each other. A public shared node is just a regular EasyTier network (with same network name and secret) that other networks can connect to.\n\nTo run a public shared node:\n\n```bash\n# No need to specify IPv4 address for public shared nodes\nsudo easytier-core --network-name mysharednode --network-secret mysharednode\n```\n\n## Related Projects\n\n- [ZeroTier](https:\u002F\u002Fwww.zerotier.com\u002F): A global virtual network for connecting devices.\n- [TailScale](https:\u002F\u002Ftailscale.com\u002F): A VPN solution aimed at simplifying network configuration.\n\n### Contact Us\n\n- 💬 **[Telegram Group](https:\u002F\u002Ft.me\u002Feasytier)**\n- 👥 **[QQ Group]**\n  - No.1 [949700262](https:\u002F\u002Fqm.qq.com\u002Fq\u002FwFoTUChqZW)\n  - No.2 [837676408](https:\u002F\u002Fqm.qq.com\u002Fq\u002F4V33DrfgHe)\n  - No.3 [957189589](https:\u002F\u002Fqm.qq.com\u002Fq\u002FYNyTQjwlai)\n\n## License\n\nEasyTier is released under the [LGPL-3.0](https:\u002F\u002Fgithub.com\u002FEasyTier\u002FEasyTier\u002Fblob\u002Fmain\u002FLICENSE).\n\n## Sponsor\n\nCDN acceleration and security protection for this project are sponsored by Tencent EdgeOne.\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fedgeone.ai\u002F?from=github\" target=\"_blank\">\n    \u003Cimg src=\"assets\u002Fedgeone.png\" width=\"200\" alt=\"EdgeOne Logo\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\nSpecial thanks to [Langlang Cloud](https:\u002F\u002Flanglangy.cn\u002F?i26c5a5)  and [RainCloud](https:\u002F\u002Fwww.rainyun.com\u002FNjM0NzQ1_) for sponsoring our public servers.\n\n\u003Cp align=\"center\">\n\u003Ca href=\"https:\u002F\u002Flanglangy.cn\u002F?i26c5a5\" target=\"_blank\">\n\u003Cimg src=\"assets\u002Flanglang.png\" width=\"200\">\n\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Flanglangy.cn\u002F?i26c5a5\" target=\"_blank\">\n\u003Cimg src=\"assets\u002Fraincloud.png\" width=\"200\">\n\u003C\u002Fa>\n\u003C\u002Fp>\n\n\nIf you find EasyTier helpful, please consider sponsoring us. Software development and maintenance require a lot of time and effort, and your sponsorship will help us better maintain and improve EasyTier.\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"assets\u002Fwechat.png\" width=\"200\">\n\u003Cimg src=\"assets\u002Falipay.png\" width=\"200\">\n\u003C\u002Fp>\n","EasyTier 是一个基于 Rust 语言开发的简单、去中心化的网格 VPN，支持 WireGuard。其核心功能包括去中心化节点架构、易于使用的多操作方式（网页、客户端及命令行）、跨平台支持以及强大的安全加密特性。该项目特别适合需要构建安全且无需依赖中央服务器的私有网络场景，如企业内部网络或分布式团队协作。此外，EasyTier 还具备高效的 NAT 穿透能力、智能路由选择和高性能数据传输等高级功能，确保在各种网络环境下都能提供稳定可靠的连接服务。",2,"2026-06-11 03:03:36","top_language"]