diff --git a/reality/Dockerfile b/reality/Dockerfile index fc18d02..9121a20 100644 --- a/reality/Dockerfile +++ b/reality/Dockerfile @@ -20,6 +20,8 @@ ENV SERVERNAMES="" ENV PRIVATEKEY="" ENV SHORTIDS="" ENV NETWORK="" +ENV INTERNAL_PORT="" +ENV HOSTMODE_PORT="" ENV TZ=Asia/Shanghai WORKDIR / @@ -35,5 +37,6 @@ RUN apk add --no-cache tzdata ca-certificates jq curl libqrencode && \ wget -O /geoip.dat https://github.com/v2fly/geoip/releases/latest/download/geoip.dat && \ chmod +x /entrypoint.sh -EXPOSE 443 + ENTRYPOINT ["./entrypoint.sh"] +EXPOSE 443 \ No newline at end of file diff --git a/reality/README.MD b/reality/README.MD index 3c21747..6557cbd 100644 --- a/reality/README.MD +++ b/reality/README.MD @@ -1,16 +1,17 @@ ## xray_docker_reality -xray reality docker 镜像 +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 + +如果你没有安装 docker 请先安装 docker ``` curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh ``` - -如果你已经安装docker,可以直接使用下面的命令,运行后会自动下载镜像并启动容器, +### 端口映射模式 +如果你已经安装 docker,可以直接使用下面的命令,运行后会自动下载镜像并启动容器, EXTERNAL_PORT 为你想要使用的端口,如下所示,你将使用443端口 ``` @@ -19,6 +20,18 @@ 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 ``` +### host 模式 +如果你想使用 host 模式,你可以使用以下命令,运行后会自动下载镜像并启动容器, +HOSTMODE_PORT 为你想要使用的端口,如下所示,你将使用443端口 +>请注意,如果你使用 host 模式,EXTERNAL_PORT 变量将不会生效,请使用 HOSTMODE_PORT 变量 + +``` +docker pull wulabing/xray_docker_reality:latest +HOSTMODE_PORT=443 +docker run -d --name xray_reality --restart=always --network host -e HOSTMODE_PORT=$HOSTMODE_PORT wulabing/xray_docker_reality:latest +``` + + 查看日志获取配置信息,如下所示,按照提示配置客户端即可, ``` @@ -26,15 +39,14 @@ docker logs -f xray_reality ``` ## 进阶使用方法 - -如果你不想使用443端口,你可以自定义端口,例如使用8443端口,如下所示 +如果你不想使用 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端口 +如果你想启动多个 reality 服务,你可以使用不同的容器名,并注意端口不要冲突,如下所示你将启动两个 reality 服务,分别使用444和445端口 ``` EXTERNAL_PORT=444 @@ -43,9 +55,9 @@ 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,以及自定义目标地址和服务器名称,如下所示,**支持的自定义参数请参考下方环境变量说明** +如果你不想使用默认参数,你可以自定义参数,例如使用自定义的 UUID,以及自定义目标地址和服务器名称,如下所示,**支持的自定义参数请参考下方环境变量说明** -存在多个SERVERNAMES时使用空格分开,例如:www.apple.com images.apple.com +存在多个 SERVERNAMES 时使用空格分开,例如:www.apple.com images.apple.com 请注意,如果你使用自定义参数,你需要自己保证参数的正确性,否则可能会导致容器无法启动 ``` @@ -53,7 +65,7 @@ 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 所设置的名称) +使用以下命令删除已经创建的容器,如下所示,需要将 xray_reality 替换为你自己的容器名 (--name 所设置的名称) ``` docker rm -f xray_reality @@ -75,4 +87,25 @@ docker rm -f xray_reality ## 注意事项 请确保在使用前已正确安装和配置 XRay 客户端。 -为了保证安全和稳定,请勿将 UUID、私钥等敏感信息泄露给他人。 \ No newline at end of file +为了保证安全和稳定,请勿将 UUID、私钥等敏感信息泄露给他人。 + +## 捐赠 + +您可以使用我的 搬瓦工 AFF 购买 VPS + +https://bandwagonhost.com/aff.php?aff=63939 + +您可以使用我的 JustMySocks AFF 购买搬瓦工提供的代理 + +https://justmysocks.net/members/aff.php?aff=17621 + +您可以使用我的 DMIT AFF 购买 VPS + +https://www.dmit.io/aff.php?aff=3957 + +您可以使用我的 Vultr AFF 创建新的 Vultr 账号并使用 + +https://www.vultr.com/?ref=6881279 + +您可以通过 USDT 支持我,感谢您的支持 +TRC20:TFannfnajNGYsMTuVDcXfZXXPbcaxAEffa \ No newline at end of file diff --git a/reality/entrypoint.sh b/reality/entrypoint.sh index a723e57..b7c227f 100644 --- a/reality/entrypoint.sh +++ b/reality/entrypoint.sh @@ -15,6 +15,11 @@ else EXTERNAL_PORT=443 fi + if [ -n "$HOSTMODE_PORT" ];then + EXTERNAL_PORT=$HOSTMODE_PORT + jq ".inbounds[0].port=$HOSTMODE_PORT" /config.json >/config.json_tmp && mv /config.json_tmp /config.json + fi + if [ -z "$DEST" ]; then echo "DEST is not set. default value www.apple.com:443" DEST="www.apple.com:443" @@ -38,6 +43,7 @@ else echo "NETWORK is not set,set default value tcp" NETWORK="tcp" fi + # change config jq ".inbounds[0].settings.clients[0].id=\"$UUID\"" /config.json >/config.json_tmp && mv /config.json_tmp /config.json jq ".inbounds[0].streamSettings.realitySettings.dest=\"$DEST\"" /config.json >/config.json_tmp && mv /config.json_tmp /config.json @@ -48,6 +54,9 @@ 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