This commit is contained in:
iCodex
2024-07-30 14:30:12 +08:00
parent 6eb2410733
commit 9893df5bdd
13 changed files with 459 additions and 43 deletions

10
.env
View File

@@ -1,14 +1,8 @@
#!/usr/bin/env sh
# See https://docs.docker.com/compose/environment-variables/#the-env-file
# edge-admin
VERSION=1.3.3
# edge-node
VERSION=1.3.3
ENDPOINTS=http://xxx.com:8001
CLUSTERID=xxx
SECRET=xxx
# GoEdge
VERSION=latest
# MySQL
MYSQL_VERSION=8

View File

@@ -108,6 +108,8 @@ services:
- CLUSTERID=xxx
- SECRET=xxx
network_mode: host
cap_add:
- NET_ADMIN
volumes:
- ./data/edge-node/cache:/opt/cache
- ./data/edge-node/configs:/usr/local/goedge/edge-node/configs

View File

@@ -1,5 +1,3 @@
version: "3"
networks:
goedge:
external: false
@@ -12,6 +10,8 @@ services:
- .env
networks:
- goedge
command:
- '--skip-log-bin'
volumes:
- ./data/db/mysql:/var/lib/mysql:rw
restart: always
@@ -22,26 +22,81 @@ services:
ports:
- 7788:7788/tcp
- 8001:8001/tcp
env_file:
- .env
networks:
- goedge
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./data/edge-admin/configs:/usr/local/goedge/edge-admin/configs
- ./data/edge-api/configs:/usr/local/goedge/edge-admin/edge-api/configs
restart: always
depends_on:
- mysqld
edge-user:
image: icodex/edge-user:${VERSION}
container_name: edge-user
environment:
- ENDPOINTS=http://xxx.com:8001
- NODEID=xxx
- SECRET=xxx
ports:
- 8080:80/tcp
networks:
- goedge
cap_add:
- NET_ADMIN
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./data/edge-user/configs:/usr/local/goedge/edge-user/configs
restart: always
depends_on:
- edge-admin
- mysqld
edge-node:
image: icodex/edge-node:${VERSION}
container_name: edge-node
environment:
- ENDPOINTS=http://xxx.com:8001
- CLUSTERID=xxx
- SECRET=xxx
ports:
- 80:80/tcp
- 443:443/tcp
env_file:
- .env
networks:
- goedge
cap_add:
- NET_ADMIN
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./data/edge-node/cache:/opt/cache
- ./data/edge-node/configs:/usr/local/goedge/edge-node/configs
restart: always
depends_on:
- edge-admin
- mysqld
edge-dns:
image: icodex/edge-dns:${VERSION}
container_name: edge-dns
environment:
- ENDPOINTS=http://xxx.com:8001
- NODEID=xxx
- SECRET=xxx
ports:
- 53:53/udp
networks:
- goedge
cap_add:
- NET_ADMIN
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./data/edge-dns/configs:/usr/local/goedge/edge-dns/configs
restart: always
depends_on:
- edge-admin
- mysqld

View File

@@ -1,7 +1,10 @@
FROM alpine:latest
LABEL maintainer="icodex@msn.com"
ENV TZ "Asia/Shanghai"
ENV ROOT_DIR /usr/local/goedge
ENV TZ="Asia/Shanghai"
ENV ROOT_DIR=/usr/local/goedge
ARG RUN_TYPE
ENV RUN_TYPE=${RUN_TYPE}
ARG VERSION
ENV VERSION=${VERSION}
@@ -9,9 +12,7 @@ ENV VERSION=${VERSION}
COPY build /build/
RUN /build/base.sh \
&& /build/install.sh admin
EXPOSE 7788 8001
&& /build/install.sh ${RUN_TYPE}
WORKDIR /usr/local/goedge
ENTRYPOINT [ "/usr/local/goedge/run.sh" ]

View File

@@ -1,17 +0,0 @@
FROM alpine:latest
LABEL maintainer="icodex@msn.com"
ENV TZ "Asia/Shanghai"
ENV ROOT_DIR /usr/local/goedge
ARG VERSION
ENV VERSION=${VERSION}
COPY build /build/
RUN /build/base.sh \
&& /build/install.sh node
EXPOSE 80 443
WORKDIR /usr/local/goedge
ENTRYPOINT [ "/usr/local/goedge/run.sh" ]

View File

@@ -1,13 +1,15 @@
#!/usr/bin/env bash
case "$1" in
"admin"|"node")
"admin"|"node"|"user"|"dns")
RUN_TYPE=$1
;;
*)
echo "USAGE: $0 from to"
echo " e.g.: $0 admin"
echo " e.g.: $0 node"
echo " e.g.: $0 user"
echo " e.g.: $0 dns"
exit
;;
esac
@@ -17,8 +19,8 @@ LATEST=$3
if [ $# -lt 2 ] ; then
echo "USAGE: $0 from to"
echo " e.g.: $0 $1 1.3.3"
echo " e.g.: $0 $1 1.3.3 latest"
echo " e.g.: $0 $1 1.3.9"
echo " e.g.: $0 $1 1.3.9 latest"
exit 1;
fi
@@ -31,4 +33,4 @@ fi
docker buildx create --use --platform=linux/arm64,linux/amd64 --name multi-platform-builder
docker buildx inspect --bootstrap
docker buildx build -f Dockerfile.${RUN_TYPE} -t icodex/edge-${RUN_TYPE}:${IMG_VERSION} --build-arg VERSION=${VERSION} --build-arg RUN_TYPE=${RUN_TYPE} --platform=linux/arm64,linux/amd64 . --push
docker buildx build -f Dockerfile -t icodex/edge-${RUN_TYPE}:${IMG_VERSION} --build-arg RUN_TYPE=${RUN_TYPE} --build-arg VERSION=${VERSION} --platform=linux/arm64,linux/amd64 . --push

View File

@@ -24,18 +24,30 @@ function install_edges() {
case "$1" in
"admin")
TAR_URL="https://dl.goedge.cn/edge/v${VERSION}/edge-admin-linux-${GOARCH}-plus-v${VERSION}.zip"
TAR_URL="https://static-file-global.353355.xyz/goedge/edge-admin-linux-${GOARCH}-plus-v${VERSION}.zip"
TAR_FILE="edge-admin-linux-${GOARCH}-plus-v${VERSION}.zip"
mv /build/run_admin.sh ${ROOT_DIR}/run.sh
;;
"node")
apk add --no-cache nftables
TAR_URL="https://dl.goedge.cn/edge-node/v${VERSION}/edge-node-linux-${GOARCH}-plus-v${VERSION}.zip"
TAR_URL="https://static-file-global.353355.xyz/goedge/edge-node-linux-${GOARCH}-plus-v${VERSION}.zip"
TAR_FILE="edge-node-linux-${GOARCH}-plus-v${VERSION}.zip"
mv /build/run_node.sh ${ROOT_DIR}/run.sh
;;
"user")
TAR_URL="https://static-file-global.353355.xyz/goedge/edge-user-linux-${GOARCH}-v${VERSION}.zip"
TAR_FILE="edge-user-linux-${GOARCH}-v${VERSION}.zip"
mv /build/run_user.sh ${ROOT_DIR}/run.sh
;;
"dns")
TAR_URL="https://static-file-global.353355.xyz/goedge/edge-dns-linux-${GOARCH}-v${VERSION}.zip"
TAR_FILE="edge-dns-linux-${GOARCH}-v${VERSION}.zip"
mv /build/run_dns.sh ${ROOT_DIR}/run.sh
;;
*)
echo "unknown type: ${1}"
exit

View File

@@ -1,4 +1,16 @@
#!/usr/bin/env sh
. /build/set_hosts.sh
cat <<EOF
"开心版激活方式"
"浏览器访问管理平台,依次点击「系统设置」,「商业版本」,「激活」,直接粘贴下方提供的旗舰版注册码即可完成离线激活,终身有效;"
"或者参考此篇提供的五种获取注册码的方式https://www.nodeseek.com/post-138160-1"
"F4BuVYEKSDWV+I13ISd5NUyBcWOlH0af4/ow9obzYBS3XvYC9IsK86k5UDyyBv9vqJWN2/FQTDbPyuAO0zxYlkLDC0c8rrShs+7PAkqM0O8wBIGknzForgidDZahky5Lo/ZWaPZ1dVFUxmV29ykb0I0b4tv7Q3OtnTylOuzf//MYrlvyw6VJQMGnsttmeHzsNL/r0yDONOEXZoGoLZsuBKnkfXt+qt6bZF+kM1ncbh+sY42BrPTWQ12sXqJS3qHlzU0FFl9lTNzLGYYhq5vi/4sJuPVE50/uLCtslTJdb9zOGR915hnM+jHYsR+jUk0QxOqtreaHpsvNuLkexXbkmA==")
EOF
set_hosts
ROOT_DIR='/usr/local/goedge'
${ROOT_DIR}/edge-admin/bin/edge-admin

20
docker/build/run_dns.sh Executable file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/env sh
. /build/set_hosts.sh
function pre_config() {
if [ ! -e ${ROOT_DIR}/edge-dns/configs/api_dns.yaml ]; then
touch ${ROOT_DIR}/edge-dns/configs/api_dns.yaml
cat >> ${ROOT_DIR}/edge-dns/configs/api_dns.yaml << EOF
rpc.endpoints: [ "${ENDPOINTS}" ]
clusterId: "${CLUSTERID}"
secret: "${SECRET}"
EOF
fi
}
ROOT_DIR='/usr/local/goedge'
set_hosts
pre_config
${ROOT_DIR}/edge-dns/bin/edge-dns

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env sh
ROOT_DIR='/usr/local/goedge'
. /build/set_hosts.sh
function pre_config() {
if [ ! -e ${ROOT_DIR}/edge-node/configs/api_cluster.yaml ]; then
@@ -13,8 +13,11 @@ EOF
fi
}
ROOT_DIR='/usr/local/goedge'
mkdir -p /opt/cache
chmod 777 /opt/cache
set_hosts
pre_config
${ROOT_DIR}/edge-node/bin/edge-node

20
docker/build/run_user.sh Executable file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/env sh
. /build/set_hosts.sh
function pre_config() {
if [ ! -e ${ROOT_DIR}/edge-user/configs/api_user.yaml ]; then
touch ${ROOT_DIR}/edge-user/configs/api_user.yaml
cat >> ${ROOT_DIR}/edge-user/configs/api_user.yaml << EOF
rpc.endpoints: [ "${ENDPOINTS}" ]
nodeId: "${NODEID}"
secret: "${SECRET}"
EOF
fi
}
ROOT_DIR='/usr/local/goedge'
set_hosts
pre_config
${ROOT_DIR}/edge-user/bin/edge-user

13
docker/build/set_hosts.sh Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env sh
function set_hosts() {
cat > /etc/hosts <<END
127.0.0.1 goedge.cn
127.0.0.1 goedge.cloud
127.0.0.1 dl.goedge.cloud
127.0.0.1 dl.goedge.cn
127.0.0.1 global.dl.goedge.cloud
127.0.0.1 global.dl.goedge.cn
END
}

299
开心版.md Normal file
View File

@@ -0,0 +1,299 @@
# GoEdge CDN v1.3.9 纯净开心版部署指南 --人人都有企业运营级CDN系统
## 前情提要
众所周知GoEdge是一套开源CDN系统包含开源免费的社区版及付费的商业版。前段时间爆出其已被原作者超哥转让给方能系黑产且在其边缘节点程序最新版本v1.4.1中投毒(**包括社区版及商业版在内的所有版本**即在客户创建的加速站点引入第三方方能系恶意JS脚本**导致客户网站将在某些特定情况下被重定向至违法网站**。
目前发现GoEdge v1.3.9存在两个发行版根据种种迹象表明v1.3.9(第一版)可能是原作者超哥维护的最后一个版本,较为安全;而第二版及后续版本则极有可能已不再安全,强烈不建议使用。
即使官方目前已经发表所谓“澄清声明”,且声称最新版本中已“修复”投毒问题,**但信任一旦崩塌就难以重建建议所有已经安装使用GoEdge v1.3.9以上版本(或安装/更新时间晚于2024年5月20日的用户回退到 v1.3.9 安全版本**,可参考奶昔制作的回退方案:[https://bbs.naixi.net/thread-110-1-1.html](https://www.nodeseek.com/jump?to=https%3A%2F%2Fbbs.naixi.net%2Fthread-110-1-1.html)
如果你还没有安装过GoEdge可根据本文档流程手动部署 v1.3.9 纯净版本(由 [@DigitalVirt](https://www.nodeseek.com/member?t=DigitalVirt) 提供的存档并轻易地通过离线激活GoEdge旗舰版终身授权实现人手一套企业运营级CDN真正让闲置小鸡发光发热。由于是官包+注册码离线激活,且屏蔽了官方域名通信,存在后门的概率不大。
## 管理平台安装(必要)
**安装unzip**
- 在CentOS5、6、7下可以使用
```
sudo yum -y install unzip
```
- RedHa/CentOS 8/CentOS 9/RockyLinux9/Fedora下可以使用
```
dnf -y install unzip
```
- 在Debian/Ubuntu下可以使用
```
sudo apt install unzip
```
- 在Freebsd下可以使用
```
pkg install unzip
```
**屏蔽官方域名**
```
echo "127.0.0.1 goedge.cloud" | sudo tee -a /etc/hosts &gt; /dev/null
echo "127.0.0.1 goedge.cn" | sudo tee -a /etc/hosts &gt; /dev/null
echo "127.0.0.1 dl.goedge.cloud" | sudo tee -a /etc/hosts &gt; /dev/null
echo "127.0.0.1 dl.goedge.cn" | sudo tee -a /etc/hosts &gt; /dev/null
echo "127.0.0.1 global.dl.goedge.cloud" | sudo tee -a /etc/hosts &gt; /dev/null
echo "127.0.0.1 global.dl.goedge.cn" | sudo tee -a /etc/hosts &gt; /dev/null
cat /etc/hosts
```
- 或手动修改hosts文件
```
vi /etc/hosts
```
```
127.0.0.1 goedge.cn
127.0.0.1 goedge.cloud
127.0.0.1 dl.goedge.cloud
127.0.0.1 dl.goedge.cn
127.0.0.1 global.dl.goedge.cloud
127.0.0.1 global.dl.goedge.cn
```
**创建安装目录**
```
mkdir /usr/local/goedge
cd /usr/local/goedge
```
**获取程序包并解压**
```
# X86_64
wget https://static-file-global.353355.xyz/goedge/edge-admin-linux-amd64-plus-v1.3.9.zip
# aarch64
wget https://static-file-global.353355.xyz/goedge/edge-admin-linux-arm64-plus-v1.3.9.zip
```
```
unzip -o ./edge-admin-linux-amd64-plus-v1.3.9.zip
```
**启动管理平台**
```
cd edge-admin/
bin/edge-admin start
```
如果没有意外的话,服务就正常启动了,并提示类似于以下的信息:
```
Edge Admin started ok, pid: 109053
```
可以使用ps命令来检查进程是否存在
```
ps ax|grep edge
```
可以看到类似于以下的进程信息:
```
31643 ? Sl 0:04 bin/edge-admin
```
就说明管理平台启动成功;可以在 logs/run.log 中查看启动的日志,方便我们诊断问题;
默认启动的端口是 7788确认进程已经启动的时候可以在浏览器上通过
```
http://IP地址:7788/
```
访问管理平台;如果你的服务器上已经设置了防火墙,需要在防火墙设置 7788 这个端口是通过的;如果能正常访问上述网址的话,系统会自动进入安装过程,按照界面提示填写各项选项即可。
**安装系统服务**
```
bin/edge-admin service
```
**安装MySQL**
```
sudo curl -s https://static-file-global.353355.xyz/goedge/mysql/install-mysql.sh | bash
```
**替换边缘节点包**
```
cd /usr/local/goedge/edge-admin/edge-api/deploy
rm -rf *.zip
wget -O edge-node-linux-amd64-v1.3.9.zip https://static-file-global.353355.xyz/goedge/edge-node-linux-amd64-plus-v1.3.9.zip
wget -O edge-node-linux-arm64-v1.3.9.zip https://static-file-global.353355.xyz/goedge/edge-node-linux-arm64-plus-v1.3.9.zip
```
**开心版激活**
浏览器访问管理平台,依次点击「系统设置」,「商业版本」,「激活」,直接粘贴下方提供的旗舰版注册码即可完成离线激活,终身有效;或者参考此篇提供的五种获取注册码的方式:[https://www.nodeseek.com/post-138160-1](https://www.nodeseek.com/post-138160-1)
```
F4BuVYEKSDWV+I13ISd5NUyBcWOlH0af4/ow9obzYBS3XvYC9IsK86k5UDyyBv9vqJWN2/FQTDbPyuAO0zxYlkLDC0c8rrShs+7PAkqM0O8wBIGknzForgidDZahky5Lo/ZWaPZ1dVFUxmV29ykb0I0b4tv7Q3OtnTylOuzf//MYrlvyw6VJQMGnsttmeHzsNL/r0yDONOEXZoGoLZsuBKnkfXt+qt6bZF+kM1ncbh+sY42BrPTWQ12sXqJS3qHlzU0FFl9lTNzLGYYhq5vi/4sJuPVE50/uLCtslTJdb9zOGR915hnM+jHYsR+jUk0QxOqtreaHpsvNuLkexXbkmA==
```
## 边缘节点安装安装在你的CDN节点上
浏览器访问管理平台依次点击「边缘节点」「创建节点」按要求填入节点名称、节点公网IP地址、SSH端口号添加SSH登录信息点击「远程安装」即可一键完成边缘节点安装部署。
由于上面的流程已经替换过/deploy目录下的边缘节点包故此处一键安装的边缘节点程序版本都是安全版本无需担忧。
**安装成功后建议参照安装管理平台时的操作前往已安装的节点手动修改hosts屏蔽与官方域名的通信**
## 用户平台安装(非必要,仅商业化运营需要)
**转到安装目录**
```
cd /usr/local/goedge
```
**获取程序包并解压**
```
# X86_64
wget https://static-file-global.353355.xyz/goedge/edge-user-linux-amd64-v1.3.9.zip
# aarch64
wget https://static-file-global.353355.xyz/goedge/edge-user-linux-arm64-v1.3.9.zip
```
```
unzip -o ./edge-user-linux-amd64-v1.3.9.zip
```
**管理平台添加用户节点**
浏览器访问管理平台依次点击「系统设置」「高级设置」「用户节点」「添加节点」节点名称任意填写进程监听端口及外部访问地址端口建议保持一致官方文档建议可填写80/443。
创建完毕后点击「安装节点」,可以看到配置文件内容信息,复制全部内容留作下步备用。
**创建配置文件**
```
vi /usr/local/goedge/edge-user/configs/api_user.yaml
```
粘贴上步获取到的配置文件内容信息,保存并退出。
**启动用户平台**
```
cd edge-user/
bin/edge-user start
```
**安装系统服务**
```
bin/edge-user service
```
**如果你的用户平台并非与管理平台安装在同一台服务器安装成功后建议参照安装管理平台时的操作前往已安装的节点手动修改hosts屏蔽与官方域名的通信**
## 智能DNS模块安装非必要
**转到安装目录**
```
cd /usr/local/goedge
```
**获取程序包并解压**
```
# X86_64
wget https://static-file-global.353355.xyz/goedge/edge-dns-linux-amd64-v1.3.9.zip
# aarch64
wget https://static-file-global.353355.xyz/goedge/edge-dns-linux-arm64-v1.3.9.zip
```
```
unzip -o ./edge-dns-linux-amd64-v1.3.9.zip
```
**管理平台添加DNS节点**
浏览器访问管理平台依次点击「智能DNS」「集群管理」首次需要先创建一个集群名称随意然后点击「创建节点」按要求填入节点名称、节点公网IP地址。
创建完毕后点击创建好的节点名称,点击「安装节点」,可以看到配置文件内容信息,复制全部内容留作下步备用。
**创建配置文件**
```
vi /usr/local/goedge/edge-dns/configs/api_dns.yaml
```
粘贴上步获取到的配置文件内容信息,保存并退出。
**启动用户平台**
```
cd edge-dns/
bin/edge-dns start
```
**安装系统服务**
```
bin/edge-dns service
```
**如果你的智能DNS模块并非与管理平台安装在同一台服务器安装成功后建议参照安装管理平台时的操作前往已安装的节点手动修改hosts屏蔽与官方域名的通信**
## 常用指令
**端口占用查询**
```
sudo netstat -tuln | grep :53
```
**解除53端口占用**
```
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
```
```
sudo rm /etc/resolv.conf
sudo touch /etc/resolv.conf
```
```
vi /etc/resolv.conf
```
```
nameserver 8.8.8.8
nameserver 8.8.4.4
```
## 本文档使用的GoEdge存档镜像
[https://drive.google.com/drive/folders/1-2JbKiNy-MWF7RLnIUIRXiT-AE37rUDx](https://www.nodeseek.com/jump?to=https%3A%2F%2Fdrive.google.com%2Fdrive%2Ffolders%2F1-2JbKiNy-MWF7RLnIUIRXiT-AE37rUDx)
感谢 [@DigitalVirt](https://www.nodeseek.com/member?t=DigitalVirt) 提供的存档,已与 [dl.naixi.net](https://www.nodeseek.com/jump?to=http%3A%2F%2Fdl.naixi.net) 等多个源提供的包进行MD5校验结果一致应该没有大问题。
## 官方文档
出现任何问题,可参考官方文档说明:[https://goedge.cloud/docs](https://www.nodeseek.com/jump?to=https%3A%2F%2Fgoedge.cloud%2Fdocs)