mirror of
https://github.com/chaitin/SafeLine.git
synced 2026-02-07 17:23:24 +08:00
修改了安装脚本
This commit is contained in:
203
setup.sh
203
setup.sh
@@ -1,11 +1,4 @@
|
||||
#! /bin/bash
|
||||
set -eE
|
||||
|
||||
abort()
|
||||
{
|
||||
echo $1
|
||||
exit 1
|
||||
}
|
||||
#!/bin/bash
|
||||
|
||||
echo "
|
||||
____ __ _ _
|
||||
@@ -15,32 +8,188 @@ echo "
|
||||
|____/ \__,_| |_| \___| |_____| |_| |_| |_| \___|
|
||||
"
|
||||
|
||||
if [[ "$#" -ne "0" ]]; then
|
||||
echo "Usage: run "$0" to set up Safeline CE at current working directory."
|
||||
exit 0
|
||||
fi
|
||||
qrcode() {
|
||||
echo
|
||||
echo "█████████████████████████████████████████"
|
||||
echo "█████████████████████████████████████████"
|
||||
echo "████ ▄▄▄▄▄ █▀█ █▄█▀▀ ██▄▀▄▀▄██ ▄▄▄▄▄ ████"
|
||||
echo "████ █ █ █▀▀▀█ ▀▄ █▀█▄ ▄ ▀█ █ █ ████"
|
||||
echo "████ █▄▄▄█ █▀ █▀▀▀▄▀ ▀ ▄▀▀▀▄▄█ █▄▄▄█ ████"
|
||||
echo "████▄▄▄▄▄▄▄█▄▀ ▀▄█ ▀ █ ▀▄▀ █▄█▄▄▄▄▄▄▄████"
|
||||
echo "████▄ ▄ ▀▄ ▄▀▄▀▄▀▄▄▄▄▀▀██ ▄▄▀▄█▄▀ ▀████"
|
||||
echo "████▄▄▄▄▀█▄▄▄█▄█▀██▄▄▄ ██▀ ▀█▀▄██▄▀▄█████"
|
||||
echo "████ ▄█▄▄ ▄▄ ▄▄█▄▀█▄▀▄▀▀▄▀▀ ▄ ▀▄▄▄█▀▀████"
|
||||
echo "█████▄████▄█▀ ▄ ▄▄█ █▄██ ▀▀█▄█▄█▀▄█████"
|
||||
echo "██████ █▀▄▄█▄▄ ▄▀▀█▄▄▄▀▀▄▀▄▀▄▄▀█▄▀█ ▀████"
|
||||
echo "████▀▄██▀ ▄▄ ▀█▀ ▄ █▄▀█ ▀▄▀▄▀▄▄ ▄▀▄█████"
|
||||
echo "████ ▄▄█▀ ▄█▀ ██▄█▄▄▄▄▀▀▄▀▀ ▄▀ ▄▀█ ▀████"
|
||||
echo "████ █ ██▄▄█▄█▄ ▄█▀ ▀███▄ ██▀▄ ▀ ▀▄█████"
|
||||
echo "████▄██▄▄█▄█ ▀▄▀▀▀▄▄▄▄▀▀▀▀▀ ▄▄▄ ▀█ ████"
|
||||
echo "████ ▄▄▄▄▄ █▄ ▄█▀ ▄ ▀█▀▀█ ▀ █▄█ ▀ ▀████"
|
||||
echo "████ █ █ █ ▀▄█▄█▄▄▀▄▀▀▄▀▀▀ ▄▄ ▀█ ████"
|
||||
echo "████ █▄▄▄█ █ █ ▄█▀ ▄█▀█▀ █▀▄▀ ▀▀ ▀██████"
|
||||
echo "████▄▄▄▄▄▄▄█▄▄█▄███▄█▄████▄▄▄█▄▄█▄█▄█████"
|
||||
echo "█████████████████████████████████████████"
|
||||
echo "█████████████████████████████████████████"
|
||||
echo
|
||||
echo "微信扫描上方二维码加入雷池项目讨论组"
|
||||
}
|
||||
|
||||
command_exists() {
|
||||
command -v "$1" 2>&1
|
||||
}
|
||||
|
||||
space_left() {
|
||||
dir="$1"
|
||||
while [ ! -d "$dir" ]; do
|
||||
dir=`dirname "$dir"`;
|
||||
done
|
||||
echo `df -h "$dir" --output='avail' | tail -n 1`
|
||||
}
|
||||
|
||||
confirm() {
|
||||
echo -e -n "\033[34m[SafeLine] $* \033[1;36m(Y/n)\033[0m"
|
||||
read -n 1 -s opt
|
||||
|
||||
[[ "$opt" == $'\n' ]] || echo
|
||||
|
||||
case "$opt" in
|
||||
'y' | 'Y' ) return 0;;
|
||||
'n' | 'N' ) return 1;;
|
||||
*) confirm "$1";;
|
||||
esac
|
||||
}
|
||||
|
||||
info() {
|
||||
echo -e "\033[37m[SafeLine] $*\033[0m"
|
||||
}
|
||||
|
||||
warning() {
|
||||
echo -e "\033[33m[SafeLine] $*\033[0m"
|
||||
}
|
||||
|
||||
abort() {
|
||||
qrcode
|
||||
echo -e "\033[31m[SafeLine] $*\033[0m"
|
||||
exit 1
|
||||
}
|
||||
|
||||
safeline_path='/data/safeline'
|
||||
|
||||
if [[ "$#" -ne "0" ]]; then
|
||||
abort "当前脚本无需任何参数, 直接运行即可"
|
||||
fi
|
||||
info "运行参数确认正常"
|
||||
|
||||
if [ "$EUID" -ne "0" ]; then
|
||||
abort "请以 root 权限运行"
|
||||
fi
|
||||
info "运行权限确认正常"
|
||||
|
||||
if [ -z `command_exists docker` ]; then
|
||||
warning "缺少 Docker 环境"
|
||||
if confirm "是否需要自动安装 Docker"; then
|
||||
curl -sSLk https://get.docker.com/ | bash
|
||||
if [ $? -ne "0" ]; then
|
||||
abort "Docker 安装失败"
|
||||
fi
|
||||
info "Docker 安装完成"
|
||||
else
|
||||
abort "中止安装"
|
||||
fi
|
||||
fi
|
||||
info "发现 Docker 环境: '`command -v docker`'"
|
||||
|
||||
docker version > /dev/null 2>&1
|
||||
if [ $? -ne "0" ]; then
|
||||
abort "Docker 服务工作异常"
|
||||
fi
|
||||
info "Docker 工作状态正常"
|
||||
|
||||
command -v docker > /dev/null || abort "docker not found, unable to deploy"
|
||||
compose_plugin=true
|
||||
compose_command="docker compose"
|
||||
docker --help | grep compose | grep v2 > /dev/null || compose_plugin=false || compose_command="docker-compose"
|
||||
docker compose version > /dev/null 2>&1 || compose_plugin=false || compose_command="docker-compose"
|
||||
|
||||
if [[ "x${compose_plugin}" = "xfalse" ]]; then
|
||||
command -v docker-compose > /dev/null && docker-compose --version | grep v2 > /dev/null || abort "docker compose v2 not found, unable to deploy"
|
||||
warning "未发现 Docker Compose Plugin"
|
||||
if [ -z `command_exists "docker-compose"` ]; then
|
||||
warning "未发现 docker-compose 组件"
|
||||
if confirm "是否需要自动安装 Docker Compose Plugin"; then
|
||||
curl -sSLk https://get.docker.com/ | bash
|
||||
if [ $? -ne "0" ]; then
|
||||
abort "Docker Compose Plugin 安装失败"
|
||||
fi
|
||||
info "Docker Compose Plugin 安装完成"
|
||||
compose_plugin=true
|
||||
compose_command="docker compose"
|
||||
else
|
||||
abort "中止安装"
|
||||
fi
|
||||
else
|
||||
info "发现 docker-compose 组件: '`command -v docker-compose`'"
|
||||
fi
|
||||
else
|
||||
info "发现 Docker Compose Plugin"
|
||||
fi
|
||||
|
||||
COMPOSE_YAML="compose.yaml"
|
||||
wget https://waf-ce.chaitin.cn/release/latest/compose.yaml --no-check-certificate -O ${COMPOSE_YAML}
|
||||
while true; do
|
||||
echo -e -n "\033[34m[SafeLine] 雷池安装目录 (留空则为 '$safeline_path'): \033[0m"
|
||||
read input_path
|
||||
[[ -z "$input_path" ]] && input_path=$safeline_path
|
||||
|
||||
ENV_FILE=".env"
|
||||
if [[ ! -f ${ENV_FILE} ]]; then
|
||||
echo "SAFELINE_DIR=$(pwd)" >> .env
|
||||
echo "IMAGE_TAG=latest" >> .env
|
||||
echo "MGT_PORT=9443" >> .env
|
||||
echo "POSTGRES_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)" >> .env
|
||||
echo "SUBNET_PREFIX=169.254.0" >> .env
|
||||
if [[ ! $input_path == /* ]]; then
|
||||
warning "'$input_path' 不是合法的绝对路径"
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ -f "$input_path" ] || [ -d "$input_path" ]; then
|
||||
warning "'$input_path' 路径已经存在, 请换一个"
|
||||
continue
|
||||
fi
|
||||
|
||||
safeline_path=$input_path
|
||||
|
||||
if confirm "目录 '$safeline_path' 当前剩余存储空间为 `space_left \"$safeline_path\"` , 雷池至少需要 5G, 是否确定"; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
mkdir -p "$safeline_path"
|
||||
if [ $? -ne "0" ]; then
|
||||
abort "创建安装目录 '$safeline_path' 失败"
|
||||
fi
|
||||
info "创建安装目录 '$safeline_path' 成功"
|
||||
cd "$safeline_path"
|
||||
|
||||
wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml" --no-check-certificate -O compose.yaml
|
||||
if [ $? -ne "0" ]; then
|
||||
abort "下载 compose.yaml 脚本失败"
|
||||
fi
|
||||
info "下载 compose.yaml 脚本成功"
|
||||
|
||||
touch ".env"
|
||||
if [ $? -ne "0" ]; then
|
||||
abort "创建 .env 脚本失败"
|
||||
fi
|
||||
info "创建 .env 脚本成功"
|
||||
|
||||
echo "SAFELINE_DIR=$safeline_path" >> .env
|
||||
echo "IMAGE_TAG=latest" >> .env
|
||||
echo "MGT_PORT=9443" >> .env
|
||||
echo "POSTGRES_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)" >> .env
|
||||
echo "REDIS_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)" >> .env
|
||||
echo "SUBNET_PREFIX=169.254.0" >> .env
|
||||
|
||||
info "即将开始下载 Docker 镜像"
|
||||
|
||||
$compose_command up -d
|
||||
|
||||
if [ $? -ne "0" ]; then
|
||||
abort "启动 Docker 容器失败"
|
||||
fi
|
||||
|
||||
echo "Setup success!"
|
||||
echo "Run '$compose_command up -d' to start SafeLine."
|
||||
echo "And then visit https://<SafeLine-IP>:9443."
|
||||
qrcode
|
||||
|
||||
warning "雷池 WAF 社区版安装成功, 请访问以下地址访问控制台"
|
||||
warning "https://0.0.0.0:9443/"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user