Skip to content

Releases: EasyXrayTeam/EasyXray

EasyXray 1.0.3

Choose a tag to compare

@github-actions github-actions released this 14 Oct 07:12
6b48653

Two things: the second upstream 3x-ui sync, and the rename of the IP-limit
Fail2ban names to this project's own.

The rename is the part that needed care. Upstream called the jail 3x-ipl and
the panel's ban log 3xipl.log; they are now easyxray-ipl and
easyxray-ipl.log, and the iptables chain follows the jail to
f2b-easyxray-ipl. The panel and the jail have to name the same file — the panel
appends a ban line, the jail tails it — so the renamed path is compiled into the
binary, and the renamed jail is installed by the same release that ships it.

A host that already carries the old jail is converted by the update: the old jail
is stopped first, which is what runs its actionstop and takes the old chain
down, and then its four config files are removed and each log file is moved to
its new name. Moving rather than recreating keeps the inode, so a panel that
already holds the log open keeps writing into the file Fail2ban now reads.
Running the update twice is a no-op. Containers make the same conversion at
start, and also drop a stale f2b-3x-ipl chain, which under --network=host
sits in the host netns and would otherwise outlive a daemon that died without
running its actionstop.

The rest of the diff is the upstream sync merged this cycle, through f8b72de9;
its behaviour change is that the node traffic merge now writes only the client
rows that changed.

Upgrading from 1.0.0 through 1.0.2 needs no manual step — the conversion runs
with the update.

Install (Linux):
bash <(curl -Ls https://raw.githubusercontent.com/EasyXrayTeam/EasyXray/main/install.sh)

Docker:
docker run -d --network=host --cap-add=NET_ADMIN --cap-add=NET_RAW
-v $PWD/db/:/etc/easyxray/ -v $PWD/cert/:/root/cert/
ghcr.io/easyxrayteam/easyxray:latest

Per-architecture archives and their sha256 checksums are attached below.

EasyXray 1.0.2

Choose a tag to compare

@github-actions github-actions released this 14 Oct 01:32
6afa62b

A one-line release. When the sidebar sits in its 72px rail — the state it starts
in on a fresh install, before you hover or pin it — the wordmark does not fit, so
it falls back to two letters. Those two letters were still the upstream brand in
both binaries this project has shipped: the rail read 3X in 1.0.0 and in 1.0.1.

It now reads EX, the wordmark's own initials, and a test pins it — syncing from
upstream is exactly how an old-brand string could come back, so the guard earns
its place rather than being a one-off edit.

Nothing else changed. 1.0.1 is otherwise fine, but anyone on it should upgrade to
get the corrected mark. Hosts on 1.0.0 should go straight to 1.0.2.

Install (Linux):
bash <(curl -Ls https://raw.githubusercontent.com/EasyXrayTeam/EasyXray/main/install.sh)

Docker:
docker run -d --network=host --cap-add=NET_ADMIN --cap-add=NET_RAW
-v $PWD/db/:/etc/easyxray/ -v $PWD/cert/:/root/cert/
ghcr.io/easyxrayteam/easyxray:latest

Per-architecture archives and their sha256 checksums are attached below.

Dev build 22625f58

Dev build 22625f58 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 13 Oct 14:49
22625f5

Rolling development build — installs via the panel's Dev update channel.

commit=22625f58180ce02d19192e72903981b32cdcc89f
built=2026-10-14T17:58:39Z

Automated per-commit build from main. Not a stable release.

EasyXray 1.0.1

Choose a tag to compare

@github-actions github-actions released this 13 Oct 17:01
9ae4de1

EasyXray 1.0.1.

A release-hygiene fix for the 1.0.0 line. Two version floors inherited from the
upstream 3.x numbering were compared against tags that only exist in that
numbering, so they refused this project's own releases:

  • install.sh v1.0.0 was rejected outright. The floor lived in install.sh
    itself, and the documented install command fetches that script from main
    rather than from the release — so it broke every release at once, and only a
    fix on main could clear it.
  • MTProto, AmneziaWG, TUIC and MASQUE inbounds were gated on 3.x node releases,
    which made all four unassignable to every node. Retargeted at v1.0.0, the
    line they actually ship in.
  • Three user-facing statements in the docs corrected to match.

Anyone on 1.0.0 should upgrade: sub-node protocol assignment needs 1.0.1 or newer.
The full audit trail is in docs/branding-migration.md §3.10.

Install (Linux):
bash <(curl -Ls https://raw.githubusercontent.com/EasyXrayTeam/EasyXray/main/install.sh)

Docker:
docker run -d --network=host --cap-add=NET_ADMIN --cap-add=NET_RAW
-v $PWD/db/:/etc/easyxray/ -v $PWD/cert/:/root/cert/
ghcr.io/easyxrayteam/easyxray:latest

Per-architecture archives and their sha256 checksums are attached below.

EasyXray 1.0.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 14:58

EasyXray 1.0.0 — first release.

Derived from the upstream 3x-ui 3.10.0 line (base commit 74c3cc3). See NOTICE
for attribution; the panel, CLI, install/service scripts and API namespace are
rebranded to EasyXray (/easyxray/api/v1/...).

Install (Linux):
bash <(curl -Ls https://raw.githubusercontent.com/EasyXrayTeam/EasyXray/main/install.sh)

Docker:
docker run -d --network=host --cap-add=NET_ADMIN --cap-add=NET_RAW
-v $PWD/db/:/etc/easyxray/ -v $PWD/cert/:/root/cert/
ghcr.io/easyxrayteam/easyxray:latest

Per-architecture archives and their sha256 checksums are attached below.