From 923fb3b8e6d4de7f9dd153f86cc1e4eb441d0d44 Mon Sep 17 00:00:00 2001 From: wulabing Date: Mon, 17 Apr 2023 19:22:56 +0800 Subject: [PATCH] 0.0.12 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [add] 添加订阅链接及二维码 [fix] 更新详细使用文档,添加暴露端口变量,方便生成订阅信息 --- reality/Dockerfile | 2 +- reality/README.MD | 47 +++++++++++++++++++++++++++++++++++++------ reality/entrypoint.sh | 20 ++++++++++++++++++ 3 files changed, 62 insertions(+), 7 deletions(-) diff --git a/reality/Dockerfile b/reality/Dockerfile index 45f57df..204a709 100644 --- a/reality/Dockerfile +++ b/reality/Dockerfile @@ -6,7 +6,7 @@ LABEL maintainer="wulabing " #ENV GOPROXY=https://goproxy.cn,direct WORKDIR /app -RUN apk add --no-cache git && git clone https://github.com/XTLS/Xray-core.git . && \ +RUN apk add --no-cache git libqrencode && git clone https://github.com/XTLS/Xray-core.git . && \ go mod download && \ go build -o xray /app/main/ diff --git a/reality/README.MD b/reality/README.MD index 525bafd..2581d7c 100644 --- a/reality/README.MD +++ b/reality/README.MD @@ -3,24 +3,59 @@ xray reality docker 镜像 [![xray_docker_reality_docker_image_build](https://github.com/wulabing/xray_docker/actions/workflows/xray_docker_reality.yml/badge.svg)](https://github.com/wulabing/xray_docker/actions/workflows/xray_docker_reality.yml) -## 使用方法 +## 基础使用方法 如果你没有安装 docker 请先安装docker ``` curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh ``` -如果你已经安装docker,可以直接使用下面的命令 - +如果你已经安装docker,可以直接使用下面的命令,运行后会自动下载镜像并启动容器, +EXTERNAL_PORT 为你想要使用的端口,如下所示,你将使用443端口 ``` -docker run -d --name xray_reality --restart=always -p 443:443 wulabing/xray_docker_reality:latest +EXTERNAL_PORT=443 +docker run -d --name xray_reality --restart=always -p $EXTERNAL_PORT:443 -e EXTERNAL_PORT=$EXTERNAL_PORT wulabing/xray_docker_reality:latest ``` -查看日志获取配置信息 +查看日志获取配置信息,如下所示,按照提示配置客户端即可, ``` -docker logs -f xray_reality +docker logs -f xray_reality +``` + +## 进阶使用方法 + +如果你不想使用443端口,你可以自定义端口,例如使用8443端口,如下所示 + +``` +EXTERNAL_PORT=8443 +docker run -d --name xray_reality --restart=always -p $EXTERNAL_PORT:443 -e EXTERNAL_PORT=$EXTERNAL_PORT wulabing/xray_docker_reality:latest +``` + +如果你想启动多个reality服务,你可以使用不同的容器名,并注意端口不要冲突,如下所示你将启动两个reality服务,分别使用444和445端口 + +``` +EXTERNAL_PORT=444 +docker run -d --name xray_reality_1 --restart=always -p $EXTERNAL_PORT:443 -e EXTERNAL_PORT=$EXTERNAL_PORT wulabing/xray_docker_reality:latest +EXTERNAL_PORT=445 +docker run -d --name xray_reality_2 --restart=always -p $EXTERNAL_PORT:443 -e EXTERNAL_PORT=$EXTERNAL_PORT wulabing/xray_docker_reality:latest +``` + +如果你不想使用默认参数,你可以自定义参数,例如使用自定义的UUID,以及自定义目标地址和服务器名称,如下所示,**支持的自定义参数请参考下方环境变量说明** + +存在多个SERVERNAMES时使用空格分开,例如:www.apple.com images.apple.com + +请注意,如果你使用自定义参数,你需要自己保证参数的正确性,否则可能会导致容器无法启动 +``` +EXTERNAL_PORT=443 +docker run -d --name xray_reality --restart=always -p $EXTERNAL_PORT:443 -e EXTERNAL_PORT=$EXTERNAL_PORT -e UUID="XXX" -e SERVERNAMES="www.apple.com images.apple.com" -e DEST="www.apple.com:443" -e PRIVATEKEY="XXX" wulabing/xray_docker_reality:latest +``` + +使用以下命令删除已经创建的容器,如下所示,需要将xray_reality替换为你自己的容器名 (--name 所设置的名称) + +``` +docker rm -f xray_reality ``` diff --git a/reality/entrypoint.sh b/reality/entrypoint.sh index 88cccc8..12b1f02 100644 --- a/reality/entrypoint.sh +++ b/reality/entrypoint.sh @@ -10,6 +10,11 @@ else echo "UUID: $UUID" fi + if [ -z "$EXTERNAL_PORT" ]; then + echo "EXTERNAL_PORT is not set, use default value 443" + EXTERNAL_PORT=443 + fi + if [ -z "$DEST" ]; then echo "DEST is not set. default value www.apple.com:443" DEST="www.apple.com:443" @@ -43,17 +48,32 @@ else jq ".inbounds[0].streamSettings.realitySettings.privateKey=\"$PRIVATEKEY\"" /config.json >/config.json_tmp && mv /config.json_tmp /config.json jq ".inbounds[0].streamSettings.network=\"$NETWORK\"" /config.json >/config.json_tmp && mv /config.json_tmp /config.json + FIRST_SERVERNAME=$(echo $SERVERNAMES | awk '{print $1}') # config info with green color echo -e "\033[32m" >/config_info.txt echo "IPV6: $IPV6" >>/config_info.txt echo "IPV4: $IPV4" >>/config_info.txt echo "UUID: $UUID" >>/config_info.txt echo "DEST: $DEST" >>/config_info.txt + echo "PORT: $EXTERNAL_PORT" >>/config_info.txt echo "SERVERNAMES: $SERVERNAMES (任选其一)" >>/config_info.txt echo "PRIVATEKEY: $PRIVATEKEY" >>/config_info.txt echo "PUBLICKEY: $PUBLICKEY" >>/config_info.txt echo "NETWORK: $NETWORK" >>/config_info.txt + if [ "$IPV4" != "null" ]; then + SUB_IPV4="vless://$UUID@$IPV4:$EXTERNAL_PORT?encryption=none&security=reality&type=$NETWORK&sni=$FIRST_SERVERNAME&fp=chrome&pbk=$PUBLICKEY&flow=xtls-rprx-vision#wulabing_docker_vless_reality_vision" + echo "IPV4 订阅连接: $SUB_IPV4" >>/config_info.txt + echo "IPV4 订阅二维码: echo $SUB_IPV4 | qrencode -o - -t UTF8" >>/config_info.txt + fi + if [ "$IPV6" != "null" ];then + SUB_IPV6="vless://$UUID@$IPV6:$EXTERNAL_PORT?encryption=none&security=reality&type=$NETWORK&sni=$FIRST_SERVERNAME&fp=chrome&pbk=$PUBLICKEY&flow=xtls-rprx-vision#wulabing_docker_vless_reality_vision" + echo "IPV6 订阅连接: $SUB_IPV6" >>/config_info.txt + echo "IPV6 订阅二维码: echo $SUB_IPV6 | qrencode -o - -t UTF8" >>/config_info.txt + fi + + echo -e "\033[0m" >>/config_info.txt + fi # show config info