#!/bin/bash # 脚本出现错误时立即退出 set -e # 定义变量 (可选,但方便维护) HYSTERIA_VERSION="v2.6.1" HYSTERIA_BINARY_NAME="hysteria-linux-amd64" HYSTERIA_DOWNLOAD_URL="https://gh-proxy.com/github.com/apernet/hysteria/releases/download/app/${HYSTERIA_VERSION}/${HYSTERIA_BINARY_NAME}" HYSTERIA_INSTALL_SCRIPT_URL="https://get.hy2.sh/" HYSTERIA_CONFIG_DIR="/etc/hysteria" HYSTERIA_KEY_FILE="${HYSTERIA_CONFIG_DIR}/server.key" HYSTERIA_CERT_FILE="${HYSTERIA_CONFIG_DIR}/server.crt" HYSTERIA_CERT_SUBJ="/CN=bing.com" # 你可以按需修改这个CN CONFIG_DOWNLOAD_URL="http://23.27.28.64:8080/config.yaml" LOCAL_CONFIG_FILE="config.yaml" # 下载的配置文件名 HYSTERIA_SERVER_CONFIG_FILE="${HYSTERIA_CONFIG_DIR}/config.yaml" # 检查是否以 root 权限运行 if [ "$(id -u)" -ne 0 ]; then echo "错误:此脚本需要以 root 权限运行。" exit 1 fi echo "===== 1. 下载 Hysteria 二进制文件 =====" wget -O "${HYSTERIA_BINARY_NAME}" "${HYSTERIA_DOWNLOAD_URL}" if [ ! -f "${HYSTERIA_BINARY_NAME}" ]; then echo "错误:下载 Hysteria 二进制文件失败。" exit 1 fi chmod +x "${HYSTERIA_BINARY_NAME}" echo "Hysteria 二进制文件下载并设置可执行权限完成。" echo echo "===== 2. 使用官方脚本安装 Hysteria (本地模式) =====" bash <(curl -fsSL "${HYSTERIA_INSTALL_SCRIPT_URL}") --local "./${HYSTERIA_BINARY_NAME}" echo "Hysteria 安装完成。" echo echo "===== 3. 启用 Hysteria 服务 =====" systemctl enable hysteria-server.service echo "Hysteria 服务已设置为开机自启。" echo echo "===== 4. 生成自签名证书和密钥 =====" # 确保配置目录存在 mkdir -p "${HYSTERIA_CONFIG_DIR}" openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) \ -keyout "${HYSTERIA_KEY_FILE}" \ -out "${HYSTERIA_CERT_FILE}" \ -subj "${HYSTERIA_CERT_SUBJ}" \ -days 36500 if [ ! -f "${HYSTERIA_KEY_FILE}" ] || [ ! -f "${HYSTERIA_CERT_FILE}" ]; then echo "错误:生成证书或密钥失败。" exit 1 fi # 等待 hysteria 用户/组创建完毕 (安装脚本可能会异步创建) # 可以加一个简单的延时或者更复杂的检查 echo "等待 hysteria 用户/组创建..." sleep 2 # 简单延时,如果安装脚本创建用户较慢,可能需要调整或用更健壮的方法 if id "hysteria" &>/dev/null; then chown hysteria:hysteria "${HYSTERIA_KEY_FILE}" chown hysteria:hysteria "${HYSTERIA_CERT_FILE}" echo "证书和密钥所有权已设置为 hysteria 用户。" else echo "警告:hysteria 用户不存在,无法设置证书所有权。请手动检查。" fi echo echo "===== 5. 下载配置文件 =====" wget -O "${LOCAL_CONFIG_FILE}" "${CONFIG_DOWNLOAD_URL}" if [ ! -f "${LOCAL_CONFIG_FILE}" ]; then echo "错误:下载配置文件失败。" exit 1 fi echo "配置文件下载完成。" echo echo "===== 6. 复制配置文件到 Hysteria 配置目录 =====" cp -f "${LOCAL_CONFIG_FILE}" "${HYSTERIA_SERVER_CONFIG_FILE}" echo "配置文件已复制到 ${HYSTERIA_SERVER_CONFIG_FILE}" echo echo "===== 7. 重启 Hysteria 服务 =====" systemctl restart hysteria-server.service echo "Hysteria 服务已重启。" echo echo "===== 8. 检查 Hysteria 服务状态 =====" # 等待服务启动一会儿 sleep 2 systemctl status hysteria-server.service --no-pager -l echo echo "===== 清理下载的临时文件 =====" rm -f "./${HYSTERIA_BINARY_NAME}" rm -f "./${LOCAL_CONFIG_FILE}" echo "临时文件已清理。" echo echo "Hysteria 安装和配置脚本执行完毕。"