-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
executable file
·91 lines (72 loc) · 2.42 KB
/
deploy.sh
File metadata and controls
executable file
·91 lines (72 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/bin/bash
# ==============================================================================
# 代理服务部署脚本 (Sing-box 原生版本)
#
# 此脚本只负责部署,版本管理由 CD 处理
# ==============================================================================
set -e
# 获取脚本目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SCRIPTS_DIR="${SCRIPT_DIR}/scripts"
# 加载通用库
source "${SCRIPTS_DIR}/lib/common.sh"
source "${SCRIPTS_DIR}/lib/os.sh"
source "${SCRIPTS_DIR}/lib/docker.sh"
# 加载子模块
source "${SCRIPTS_DIR}/deploy/validate-env.sh"
source "${SCRIPTS_DIR}/deploy/init-env.sh"
source "${SCRIPTS_DIR}/deploy/init-data-dir.sh"
source "${SCRIPTS_DIR}/deploy/enable-bbr.sh"
source "${SCRIPTS_DIR}/deploy/install-docker.sh"
source "${SCRIPTS_DIR}/deploy/install-dependencies.sh"
source "${SCRIPTS_DIR}/deploy/generate-certs.sh"
source "${SCRIPTS_DIR}/deploy/build-config.sh"
source "${SCRIPTS_DIR}/deploy/start-services.sh"
source "${SCRIPTS_DIR}/deploy/health-check.sh"
# ==============================================================================
# 主流程
# ==============================================================================
main() {
local start_time=$(date +%s)
print_header "部署 Sing-box 代理服务"
# 1. 初始化完整环境 (补充默认路径并写入 .env)
init_env "${SCRIPT_DIR}/.env"
# 2. 验证基础配置 (REALITY_PRIVATE_KEY 等核心参数)
validate_env "${SCRIPT_DIR}/.env"
# Step 1: 初始化数据目录
init_data_dir
echo ""
# Step 2: 检查并安装依赖 (jq, openssl 等,后续步骤需要)
check_dependencies
echo ""
# Step 3: 启用 BBR
enable_bbr
echo ""
# Step 4: 检查并安装 Docker
check_docker
echo ""
# Step 5: 生成自签名证书
generate_certs "${SING_BOX_DATA_DIR}/cert"
echo ""
# Step 6: 生成最终的 config.json
build_config
echo ""
# Step 7: 启动服务
start_services "docker-compose.yml"
echo ""
# Step 8: 健康检查
if health_check 5; then
local end_time=$(date +%s)
local duration=$((end_time - start_time))
echo ""
print_separator
log_success "部署成功!耗时: ${duration}s"
print_separator
exit 0
else
echo ""
log_error "健康检查失败"
exit 1
fi
}
main "$@"