Files
SafeLine/build/install_full.sh
T
Binbim f9c6bc221e feat: add official binaries with full FVM WAF functionality
- Extracted webserver (13.5MB) from safeline-mgt:9.3.9
- Extracted tcontrollerd (12MB) from safeline-tengine:9.3.9
- Extracted nginx from safeline-tengine:9.3.9
- Extracted libfusion.so (127MB) FVM engine from safeline-fvm:9.3.9
- Added musl libc for Alpine-based containers
- Created proper FVM C headers matching libfusion.so API
- Added install_full.sh for complete deployment
2026-07-05 03:41:41 +08:00

79 lines
2.0 KiB
Bash

#!/bin/bash
set -euo pipefail
# SafeLine WAF 完整版安装脚本
# 使用官方二进制,包含完整 FVM WAF 功能
INSTALL_DIR="${1:-/data/safeline}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'
info() { echo -e "${GREEN}[INFO]${NC} $*"; }
error() { echo -e "${RED}[ERROR]${NC} $*"; exit 1; }
if [ "$(id -u)" -ne 0 ]; then
error "需要 root 权限"
fi
if ! command -v docker &>/dev/null; then
error "Docker 未安装"
fi
info "安装到: $INSTALL_DIR"
# 创建目录
mkdir -p "$INSTALL_DIR"/{resources/{mgt,postgres/data,nginx,detector,chaos,cache,sock,luigi},logs/{nginx,detector},bin,lib}
# 复制二进制 (使用官方完整版)
cp "$SCRIPT_DIR/webserver_full" "$INSTALL_DIR/bin/webserver"
cp "$SCRIPT_DIR/tcontrollerd_full" "$INSTALL_DIR/bin/tcontrollerd"
cp "$SCRIPT_DIR/nginx" "$INSTALL_DIR/bin/nginx"
chmod +x "$INSTALL_DIR/bin/webserver" "$INSTALL_DIR/bin/tcontrollerd" "$INSTALL_DIR/bin/nginx"
# 复制 musl libc
cp "$SCRIPT_DIR/ld-musl-x86_64.so.1" "$INSTALL_DIR/lib/"
# 复制 FVM 动态库
if [ -f "$SCRIPT_DIR/libfvm.so" ]; then
cp "$SCRIPT_DIR/libfvm.so" "$INSTALL_DIR/lib/"
info "FVM 库已复制"
fi
info "二进制已复制 (完整版 - 包含 FVM WAF 功能)"
# 生成配置
if [ ! -f "$INSTALL_DIR/.env" ]; then
POSTGRES_PASSWORD=$(tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 20)
cat > "$INSTALL_DIR/.env" << EOF
SAFELINE_DIR=$INSTALL_DIR
POSTGRES_PASSWORD=$POSTGRES_PASSWORD
MGT_PORT=9443
RELEASE=
CHANNEL=
REGION=
IMAGE_PREFIX=chaitin
IMAGE_TAG=9.3.9
SUBNET_PREFIX=192.168.90
ARCH_SUFFIX=
EOF
info ".env 已生成"
fi
# 复制 compose
if [ -f "$SCRIPT_DIR/compose.yaml" ]; then
cp "$SCRIPT_DIR/compose.yaml" "$INSTALL_DIR/docker-compose.yaml"
info "compose.yaml 已复制"
fi
info "安装完成!"
info ""
info "启动方式:"
info " cd $INSTALL_DIR"
info " docker compose up -d"
info ""
info "管理面板: https://$(hostname -I | awk '{print $1}'):9443/"
info "获取密码: docker exec safeline-mgt /app/mgt-cli reset-admin --once"