Files
o11pro-unpacked/setup.sh
T

104 lines
3.5 KiB
Bash
Raw Normal View History

2026-06-26 07:07:13 +08:00
#!/usr/bin/env bash
# setup.sh Fully automatic environment setup + launcher
#
# Fixed for src/ layout: binary, configs, and RunMe.sh live under src/
# This script creates the venv at the project root and delegates to src/RunMe.sh
#
# Usage:
# ./setup.sh # o11pro + hls_proxy (default)
# MONITOR=true ./setup.sh # o11pro + hls_proxy + security monitor
# HLS_PROXY=false ./setup.sh # o11pro only
# MONITOR=true HLS_PROXY=false ./setup.sh # o11pro + security monitor only
# ./setup.sh 8080 # custom port
# ./setup.sh 8080 4 # custom port + verbose=4
#
# Environment variables (pass before or alongside):
# MONITOR=true Enable security monitoring proxy (port 19998)
# MONITOR_PORT=19998 Monitor proxy port
# HLS_PROXY=true Enable HLS rewrite proxy (port 9999)
# HLS_PROXY_PORT=9999 HLS proxy port
# GOMEMLIMIT=4G Override Go memory limit
# MAX_STREAMS=8 Limit concurrent streams
# ADMIN_USER=admin Static admin username
# ADMIN_PASS=secret Static admin password
set -euo pipefail
SETUP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SRC_DIR="$SETUP_DIR/src"
echo "=========================================="
echo " Automatic setup and launch"
echo " Project root: $SETUP_DIR"
echo " Source dir: $SRC_DIR"
echo "=========================================="
if ! command -v python3 &> /dev/null; then
echo "Python 3 not found. Installing..."
if command -v apt-get &> /dev/null; then
sudo apt-get update
sudo apt-get install -y python3 python3-venv python3-pip
elif command -v yum &> /dev/null; then
sudo yum install -y python3 python3-pip
else
echo "ERROR: No supported package manager. Please install Python 3 manually."
exit 1
fi
else
echo "Python 3 is installed: $(python3 --version)"
fi
VENV_DIR="$SETUP_DIR/venv"
if [ ! -d "$VENV_DIR" ]; then
echo "Creating virtual environment in $VENV_DIR ..."
python3 -m venv "$VENV_DIR"
echo "Virtual environment created."
else
echo "Virtual environment already exists."
fi
echo "Installing / updating requirements from requirements.txt ..."
"$VENV_DIR/bin/pip" install --upgrade pip -q 2>&1 | tail -1
if [ -f "$SETUP_DIR/requirements.txt" ]; then
"$VENV_DIR/bin/pip" install -r "$SETUP_DIR/requirements.txt" -q 2>&1 | tail -3
echo "Dependencies installed."
else
echo "Warning: requirements.txt not found skipping package installation."
fi
RUNME="$SRC_DIR/RunMe.sh"
if [ -f "$RUNME" ]; then
# Make it executable
chmod +x "$RUNME"
2026-06-27 06:33:49 +08:00
echo "RunMe.sh PATH is configured dynamically."
2026-06-26 07:07:13 +08:00
else
echo "ERROR: RunMe.sh not found at $RUNME"
exit 1
fi
echo "Checking required files in $SRC_DIR ..."
2026-06-27 06:33:49 +08:00
if [ ! -f "$SRC_DIR/o11pro" ]; then
echo "ERROR: Required file 'src/o11pro' not found."
echo "Please place o11pro binary under src/."
2026-06-26 07:07:13 +08:00
exit 1
fi
echo "All required files present."
echo ""
MODE_PARTS=("o11pro :${1:-19999}") # FIX: was $1 (unbound when no args)
if [ "${HLS_PROXY:-true}" = "true" ]; then
MODE_PARTS+=("hls_proxy :${HLS_PROXY_PORT:-9999}")
fi
if [ "${MONITOR:-false}" = "true" ]; then
MODE_PARTS+=("monitoring :${MONITOR_PORT:-19998}")
fi
echo "Launch mode: ${MODE_PARTS[*]}"
echo ""
echo "=========================================="
echo " Launching RunMe.sh with venv Python"
echo "=========================================="
# cd into src/ so RunMe.sh finds its binary and configs
cd "$SRC_DIR"
exec ./RunMe.sh "$@"