Files
xray_docker/install.sh
T
2026-07-20 15:48:35 +08:00

147 lines
3.3 KiB
Bash

#!/bin/bash
# 导入依赖脚本文件
BASE_DIR="$(cd "$(dirname "$0")" && pwd)"
for f in "$BASE_DIR"/bin/utils/*.sh; do
[ -f "$f" ] && source "$f"
done
for f in "$BASE_DIR"/bin/*.sh; do
[ -f "$f" ] && source "$f"
done
# 安装依赖
install_dependencies(){
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/bin" # 脚本文件夹路径
source "${script_dir}/utils/base.sh"
if ! command -v curl >/dev/null 2>&1; then
install_package curl
fi
if ! command -v wget >/dev/null 2>&1; then
install_package wget
fi
if ! command -v jq >/dev/null 2>&1; then
echo 安装jq...
install_package jq
fi
if ! command -v openssl >/dev/null 2>&1; then
echo 安装openssl...
install_package openssl
fi
if ! command -v docker >/dev/null 2>&1; then
echo 安装docker...
curl -fsSL https://get.docker.com | bash -s docker
fi
}
# 查询运行状态
check_container_status(){
local COMPOSE_FILE="./docker-compose.yml"
local GREEN='\033[0;32m'
local RED='\033[0;31m'
local RESET='\033[0m'
local STATUS
STATUS=$(docker compose -f "$COMPOSE_FILE" ps --status running --quiet 2>/dev/null)
if [ -n "$STATUS" ]; then
echo -e "${GREEN}运行中${RESET}"
else
echo -e "${RED}未运行${RESET}"
fi
}
main(){
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/bin" # 脚本文件夹路径
source "${script_dir}/utils/base.sh"
local container_status=$(check_container_status)
# 显示菜单
echo ""
echo 运行状态: $container_status
echo "=============================="
echo "请选择一个操作:"
echo "1. 一键部署"
echo "2. 创建配置 / 重置配置"
echo "3. 查看分享链接"
echo "4. 启动容器"
echo "5. 停止容器"
echo "6. 更新镜像"
echo "7. 修改端口"
echo "8. 修改Reality目标域名"
echo "9. 更新脚本"
# 读取用户选择
local choice
read -p "输入您的选择: " choice
# 根据用户选择执行相应的操作
case $choice in
1)
# 一键部署
install_dependencies
create_config
run
print_share_link
;;
2)
# 创建配置 / 重置配置
create_config
print_share_link
;;
3)
# 查看分享链接
check_config
print_share_link
;;
4)
# 启动容器
check_config
run
print_share_link
;;
5)
# 停止容器
stop_docker
;;
6)
# 更新镜像
update_docker_images
;;
7)
# 修改端口
check_config
ask_update_port
restart_docker
print_share_link
;;
8)
# 修改Reality目标域名
check_config
update_reality_dest
restart_docker
print_share_link
;;
9)
# 更新脚本
git pull
;;
*)
echo "无效的选择, 请重新选择."
;;
esac
}
main