EasyTier 发布新版本时,自动构建并发布 Docker 镜像
本项目提供三种镜像变体,适用于不同的部署场景:
- 标签:
latest,<version>(如 v2.4.5) - 特点: 同时包含 Core 和 Web 控制台,一站式解决方案
- 适用场景: 个人用户、小型团队、单机部署
- 镜像:
wuhins/easytier:latest
- 标签:
core-latest,<version>-core(如 v2.4.5-core) - 特点: 仅包含 EasyTier Core,需要连接到远程 Web 控制台
- 适用场景: 多节点分布式部署、集中化管理
- 镜像:
wuhins/easytier:core-latest
- 标签:
web-latest,<version>-web(如 v2.4.5-web) - 特点: 仅包含 Web 控制台,用于管理多个远程 Core 节点
- 适用场景: 中央管理节点、控制面板独立部署
- 镜像:
wuhins/easytier:web-latest
- Release (稳定版):
latest,core-latest,web-latest,<version>,<version>-core,<version>-web - Pre-release (预览版):
pre,core-pre,web-pre,<version-number>,<version-number>-core,<version-number>-web - CI (开发版):
ci,core-ci,web-ci(自动更新,稳定性不保证)
适合个人用户或小型团队,所有功能在一个容器中运行。
docker run -d \
--name easytier \
--restart always \
--network host \
--cap-add NET_ADMIN --cap-add NET_RAW \
--device /dev/net/tun:/dev/net/tun \
-v ./data:/app/data \
-e TZ=Asia/Shanghai \
-e WEB_ENABLE=true \
-e WEB_USERNAME=admin \
wuhins/easytier:latest一个中央 Web 控制台管理多个 Core 节点。
中央 Web 节点:
docker run -d \
--name easytier-web \
--restart always \
-p 11211:11211 \
-p 22020:22020/udp \
-v ./data-web:/app/data \
-e TZ=Asia/Shanghai \
-e WEB_PORT=11211 \
-e WEB_SERVER_PORT=22020 \
-e WEB_DEFAULT_API_HOST=http://your-server-ip:11211 \
wuhins/easytier:web-latestCore 节点 1:
docker run -d \
--name easytier-core-node1 \
--restart always \
--network host \
--cap-add NET_ADMIN --cap-add NET_RAW \
--device /dev/net/tun:/dev/net/tun \
-v ./data-core1:/app/data \
-e TZ=Asia/Shanghai \
-e HOSTNAME=node1 \
-e WEB_REMOTE_API=udp://web-server-ip:22020/admin \
wuhins/easytier:core-latestCore 节点 2:
docker run -d \
--name easytier-core-node2 \
--restart always \
--network host \
--cap-add NET_ADMIN --cap-add NET_RAW \
--device /dev/net/tun:/dev/net/tun \
-v ./data-core2:/app/data \
-e TZ=Asia/Shanghai \
-e HOSTNAME=node2 \
-e WEB_REMOTE_API=udp://web-server-ip:22020/admin \
wuhins/easytier:core-latest查看 compose/docker-compose.yaml 获取完整的 Compose 配置示例,包括三种场景的详细配置。
# ============================================
# EasyTier Docker Compose 配置示例
# ============================================
# 镜像选择:
# wuhins/easytier:latest - 混合版 (Core + Web) - 推荐单机部署
# wuhins/easytier:core-latest - 纯 Core 版 (需要单独部署 Web)
# wuhins/easytier:web-latest - 纯 Web 版 (连接到远程 Core)
#
# 版本标签:
# - Release: latest, core-latest, web-latest, <version>, <version>-core, <version>-web
# - Pre-release: pre, core-pre, web-pre, <version-number>, <version-number>-core, <version-number>-web
# - CI: ci, core-ci, web-ci
# ============================================
# -------------------------------------------
# 场景 1: 混合版 - 单机部署 (Core + Web)
# 适合个人用户或小型团队,一站式解决方案
# -------------------------------------------
services:
easytier:
# wuhins/easytier:latest 最新 Release 正式版
# wuhins/easytier:pre 最新 Pre-release 预览版
# wuhins/easytier:ci 最新 Action 构建版 (合并主线的版本, 自动更新, 稳定性不保证)
image: wuhins/easytier:latest
container_name: easytier
restart: always
# 限制容器输出日志的大小和数量, 建议启用
logging:
driver: "json-file"
options:
# 单个日志文件的最大大小
max-size: "10m"
# 最多保留的日志文件数量
max-file: "3"
network_mode: host
environment:
- TZ=Asia/Shanghai
# -------------------------------------------
# 自定义节点主机名, 可用于 Web 控制台显示和区分不同节点
# 默认: 无
# - HOSTNAME=node1
# -------------------------------------------
# 连接其他远程 Web 控制台
# 设置后会忽略 WEB_USERNAME, 不可同时连接多个 Web, 但仍可启用本地控制台
# 示例: udp://api.web.com:22020/username
# 默认: 无
# - WEB_REMOTE_API=协议://主机:端口/用户名
# -------------------------------------------
# 是否启用 Web 管理界面
# 默认: false
- WEB_ENABLE=false
# -------------------------------------------
# 是否允许注册新用户 (内置用户: admin, 密码: admin, 登录后右上角可修改密码)
# 默认: false
- WEB_ENABLE_REGISTRATION=false
# -------------------------------------------
# Web 管理用户名; 设置 WEB_REMOTE_API 时此项无效
# 启用 Web 且提供用户名时将自动连接本地控制台
# 自定义用户名,需要先手动注册对应用户名才行
# 默认: 无
- WEB_USERNAME=admin
# -------------------------------------------
# 主机物理IP地址 (公网 / 内网)
# 默认: http://127.0.0.1:11211
- WEB_DEFAULT_API_HOST=http://修改为你的主机:11211
# -------------------------------------------
# Web 访问端口
# 默认: 11211
- WEB_PORT=11211
# -------------------------------------------
# Web 管理服务 (RPC) 监听端口, Core 将通过此端口连接
# 默认: 22020
- WEB_SERVER_PORT=22020
# -------------------------------------------
# Web 管理服务 (RPC) 协议, 可与其他节点的 -w 参数保持一致
# 默认: udp - 可选: [udp | tcp | ws]
- WEB_SERVER_PROTOCOL=udp
# -------------------------------------------
# Web 服务日志级别
# 默认: error - 可选: [off | error | warn | info | debug | trace]
- WEB_LOG_LEVEL=error
# -------------------------------------------
# Core 服务日志级别
# 默认: error - 可选: [ error | warn | info | debug | trace]
- CORE_LOG_LEVEL=error
# -------------------------------------------
# GeoIP 数据库文件路径 (可在 Web 控制台显示地理位置信息)
# 推荐: https://github.com/P3TERX/GeoLite.mmdb/releases (建议放到放到映射的目录 ./data/web 下, 记得更改对应文件名称/路径)
# 默认: 无
# - WEB_GEOIP_PATH=/app/data/web/GeoLite2-City.mmdb
# -------------------------------------------
# 允许为未知的心跳 Token 自动创建本地用户
# 默认: false
# - ALLOW_AUTO_CREATE_USER=false
# -------------------------------------------
# OIDC 单点登录配置 (用于对接 Keycloak, Authentik, Okta, Azure AD 等身份提供商)
# OIDC 发行者 URL, 用于自动发现配置, 示例: https://auth.example.com/realms/myrealm
# 默认: 无
# - OIDC_ISSUER_URL=
# OIDC 客户端 ID
# 默认: 无
# - OIDC_CLIENT_ID=
# OIDC 客户端密钥 (推荐使用环境变量而非命令行传递)
# 默认: 无
# - OIDC_CLIENT_SECRET=
# OIDC 回调 URL, 必须与 IdP 配置完全一致, 示例: https://easytier.example.com/api/v1/auth/oidc/callback
# 默认: 无
# - OIDC_REDIRECT_URL=
# 用于提取用户名的 Claim, 默认: preferred_username
# 默认: preferred_username
# - OIDC_USERNAME_CLAIM=preferred_username
# 请求的权限范围, 默认: openid,profile
# 默认: openid,profile
# - OIDC_SCOPES=openid,profile
# 为不支持 PKCE 的旧版 IdP 禁用 PKCE
# 默认: false
# - OIDC_DISABLE_PKCE=false
# 前后端分离部署模式下的前端基础 URL, 示例: https://easytier.example.com
# 默认: 无 (使用相对路径)
# - OIDC_FRONTEND_BASE_URL=
cap_add:
- NET_ADMIN
- NET_RAW
devices:
- /dev/net/tun:/dev/net/tun
volumes:
- ./data:/app/data
# 将写好的配置文件放在 ./data/config 下每个文件都是一个实例(.toml格式), 会跟着容器一起启动/运行
# -------------------------------------------
# 场景 2: 纯 Core 版 - 分布式部署
# 多个 Core 节点连接到一个中央 Web 控制台
# 适用于多节点集中管理场景
# -------------------------------------------
# services:
# easytier-core:
# image: wuhins/easytier:core-latest
# container_name: easytier-core
# restart: always
# logging:
# driver: "json-file"
# options:
# max-size: "10m"
# max-file: "3"
# network_mode: host
# environment:
# - TZ=Asia/Shanghai
# - HOSTNAME=node1 # 节点名称,用于在 Web 控制台区分
# - CORE_LOG_LEVEL=error
# # 连接到远程 Web 控制台 (必须设置)
# - WEB_REMOTE_API=udp://web-server-ip:22020/admin
# cap_add:
# - NET_ADMIN
# - NET_RAW
# devices:
# - /dev/net/tun:/dev/net/tun
# volumes:
# - ./data-core:/app/data
# -------------------------------------------
# 场景 3: 纯 Web 版 - 中央管理节点
# 单独部署 Web 控制台,管理多个远程 Core 节点
# 适用于集中化管理场景
# -------------------------------------------
# services:
# easytier-web:
# image: wuhins/easytier:web-latest
# container_name: easytier-web
# restart: always
# logging:
# driver: "json-file"
# options:
# max-size: "10m"
# max-file: "3"
# ports:
# - "11211:11211" # Web 访问端口
# - "22020:22020/udp" # RPC 服务端口 (Core 连接用)
# environment:
# - TZ=Asia/Shanghai
# - WEB_PORT=11211
# - WEB_SERVER_PORT=22020
# - WEB_SERVER_PROTOCOL=udp
# - WEB_DEFAULT_API_HOST=http://your-server-ip:11211
# - WEB_ENABLE_REGISTRATION=false
# - WEB_LOG_LEVEL=error
# # OIDC 配置 (可选)
# # - OIDC_ISSUER_URL=
# # - OIDC_CLIENT_ID=
# # - OIDC_CLIENT_SECRET=
# # - OIDC_REDIRECT_URL=
# volumes:
# - ./data-web:/app/data