新增适配hy2后端的v2b的后端脚本
This commit is contained in:
parent
5b7a0bb12f
commit
602f47fbbe
136
vpn/set_hy2_backend/add_hy2_backend.sh
Normal file
136
vpn/set_hy2_backend/add_hy2_backend.sh
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 检查是否提供了必要的参数
|
||||||
|
if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] || [ -z "$5" ] || [ -z "$6" ] || [ -z "$7" ]; then
|
||||||
|
echo "Usage: $0 --doname <DONAME> --cfemail <CF_Email> --cfken <CF_Key> --apihost <API_HOST> --apikey <API_KEY> --nodeid <NODE_ID> --nodeport <NODE_PORT>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 解析命令行参数
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
--doname)
|
||||||
|
DONAME="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--cfemail)
|
||||||
|
CF_Email="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--cfken)
|
||||||
|
CF_Key="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--apihost)
|
||||||
|
API_HOST="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--apikey)
|
||||||
|
API_KEY="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--nodeid)
|
||||||
|
NODE_ID="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--nodeport)
|
||||||
|
NODE_PORT="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown parameter: $1"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# 更新系统并安装必要的软件包
|
||||||
|
sudo apt update && sudo apt upgrade -y && sudo apt install vim wget curl net-tools socat -y
|
||||||
|
|
||||||
|
# 设置主机名
|
||||||
|
sudo hostnamectl set-hostname "$DONAME"
|
||||||
|
|
||||||
|
# 运行acme脚本安装acme
|
||||||
|
curl https://get.acme.sh | sh -s email="$DONAME@randallanjie.com"
|
||||||
|
|
||||||
|
# 添加或更新环境变量到.acme.sh/acme.sh.env文件
|
||||||
|
ENV_FILE="$HOME/.acme.sh/acme.sh.env"
|
||||||
|
grep -q '^export CF_Key=' $ENV_FILE && sed -i "s/^export CF_Key=.*/export CF_Key=\"$CF_Key\"/" $ENV_FILE || echo "export CF_Key=\"$CF_Key\"" >> $ENV_FILE
|
||||||
|
grep -q '^export CF_Email=' $ENV_FILE && sed -i "s/^export CF_Email=.*/export CF_Email=\"$CF_Email\"/" $ENV_FILE || echo "export CF_Email=\"$CF_Email\"" >> $ENV_FILE
|
||||||
|
|
||||||
|
# 直接导出环境变量到当前会话
|
||||||
|
export CF_Key="$CF_Key"
|
||||||
|
export CF_Email="$CF_Email"
|
||||||
|
|
||||||
|
# 设置acme并申请证书
|
||||||
|
~/.acme.sh/acme.sh --upgrade --auto-upgrade
|
||||||
|
~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
|
||||||
|
~/.acme.sh/acme.sh --issue -d "$DONAME" --dns dns_cf --dnssleep
|
||||||
|
|
||||||
|
# 创建必要的目录
|
||||||
|
sudo mkdir -p /etc/hysteria/cert
|
||||||
|
|
||||||
|
# 安装证书
|
||||||
|
~/.acme.sh/acme.sh --installcert -d "$DONAME" --key-file /etc/hysteria/cert/cert.key --fullchain-file /etc/hysteria/cert/fullchain.cer
|
||||||
|
|
||||||
|
# 创建server.yaml配置文件
|
||||||
|
sudo tee /etc/hysteria/server.yaml > /dev/null << EOF
|
||||||
|
v2board:
|
||||||
|
apiHost: $API_HOST
|
||||||
|
apiKey: $API_KEY
|
||||||
|
nodeID: $NODE_ID
|
||||||
|
tls:
|
||||||
|
type: tls
|
||||||
|
cert: /etc/hysteria/cert/fullchain.cer
|
||||||
|
key: /etc/hysteria/cert/cert.key
|
||||||
|
auth:
|
||||||
|
type: v2board
|
||||||
|
trafficStats:
|
||||||
|
listen: 0.0.0.0:$NODE_PORT
|
||||||
|
acl:
|
||||||
|
inline:
|
||||||
|
- reject(10.0.0.0/8)
|
||||||
|
- reject(172.16.0.0/12)
|
||||||
|
- reject(192.168.0.0/16)
|
||||||
|
- reject(127.0.0.0/8)
|
||||||
|
- reject(fc00::/7)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 检测系统架构
|
||||||
|
ARCH=$(uname -m)
|
||||||
|
if [ "$ARCH" = "x86_64" ]; then
|
||||||
|
HYSTERIA_URL="https://github.com/cedar2025/hysteria/releases/download/app%2Fv1.0.3/hysteria-linux-amd64"
|
||||||
|
elif [ "$ARCH" = "aarch64" ]; then
|
||||||
|
HYSTERIA_URL="https://github.com/cedar2025/hysteria/releases/download/app%2Fv1.0.3/hysteria-linux-arm64"
|
||||||
|
else
|
||||||
|
echo "Unsupported architecture: $ARCH"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 下载hysteria
|
||||||
|
sudo wget -O /etc/hysteria/hysteriabackend "$HYSTERIA_URL"
|
||||||
|
sudo chmod +x /etc/hysteria/hysteriabackend
|
||||||
|
|
||||||
|
# 创建systemd服务文件
|
||||||
|
sudo tee /lib/systemd/system/hy2backend.service > /dev/null << EOF
|
||||||
|
[Unit]
|
||||||
|
Description = v2board hy2 backend
|
||||||
|
After = network.target syslog.target
|
||||||
|
Wants = network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type = simple
|
||||||
|
WorkingDirectory = /etc/hysteria/
|
||||||
|
ExecStart = /etc/hysteria/hysteriabackend server -c /etc/hysteria/server.yaml
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy = multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 重新加载systemd并启动服务
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable hy2backend
|
||||||
|
sudo systemctl start hy2backend
|
||||||
|
|
||||||
|
echo "Setup complete for $DONAME"
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user