2026-03-09 17:42:26 -05:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
# =============================================================================
|
|
|
|
|
# VideoPress — startup script
|
|
|
|
|
# Usage: ./start.sh [--prod] [PORT]
|
|
|
|
|
# =============================================================================
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
|
MODE="dev"
|
|
|
|
|
PORT=""
|
|
|
|
|
|
|
|
|
|
for arg in "$@"; do
|
|
|
|
|
case "$arg" in
|
|
|
|
|
--prod) MODE="prod" ;;
|
|
|
|
|
--help|-h)
|
|
|
|
|
echo "Usage: $0 [--prod] [PORT]"
|
|
|
|
|
echo " --prod Run via Gunicorn+gevent (production)"
|
|
|
|
|
echo " PORT Port number (default: 5000 dev / 8080 prod)"
|
|
|
|
|
exit 0 ;;
|
|
|
|
|
[0-9]*) PORT="$arg" ;;
|
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
[[ -z "$PORT" ]] && PORT=$( [[ "$MODE" == "prod" ]] && echo "8080" || echo "5000" )
|
|
|
|
|
|
|
|
|
|
echo ""
|
|
|
|
|
echo "============================================================"
|
|
|
|
|
echo " VideoPress | mode: $MODE | port: $PORT"
|
|
|
|
|
echo "============================================================"
|
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
|
|
check() { command -v "$1" &>/dev/null || { echo "ERROR: $1 not found. $2"; exit 1; }; }
|
|
|
|
|
check python3 "Install Python 3.8+"
|
|
|
|
|
check ffmpeg "sudo apt install ffmpeg"
|
|
|
|
|
check ffprobe "Bundled with ffmpeg"
|
|
|
|
|
python3 -c "import flask" 2>/dev/null || { echo "ERROR: Flask missing — pip install -r requirements.txt"; exit 1; }
|
|
|
|
|
|
|
|
|
|
echo " ✓ Python $(python3 --version)"
|
|
|
|
|
echo " ✓ Flask $(python3 -c 'import flask; print(flask.__version__)')"
|
|
|
|
|
echo " ✓ FFmpeg available"
|
|
|
|
|
echo " MEDIA_ROOT: ${MEDIA_ROOT:-/media (default)}"
|
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
|
|
cd "$SCRIPT_DIR"
|
|
|
|
|
|
|
|
|
|
if [[ "$MODE" == "prod" ]]; then
|
|
|
|
|
python3 -c "import gunicorn" 2>/dev/null || { echo "ERROR: gunicorn missing — pip install -r requirements.txt"; exit 1; }
|
|
|
|
|
python3 -c "import gevent" 2>/dev/null || { echo "ERROR: gevent missing — pip install -r requirements.txt"; exit 1; }
|
|
|
|
|
echo " Starting Gunicorn on http://0.0.0.0:${PORT}"
|
|
|
|
|
echo " Press Ctrl+C to stop."
|
|
|
|
|
echo "============================================================"
|
|
|
|
|
echo ""
|
2026-03-17 14:01:35 -05:00
|
|
|
PORT="$PORT" exec gunicorn -c gunicorn.conf.py wsgi:application
|
2026-03-09 17:42:26 -05:00
|
|
|
else
|
|
|
|
|
echo " WARNING: Dev server only — use --prod or Docker for production."
|
|
|
|
|
echo " Starting Flask on http://localhost:${PORT}"
|
|
|
|
|
echo "============================================================"
|
|
|
|
|
echo ""
|
2026-03-17 14:01:35 -05:00
|
|
|
exec python3 run.py "$PORT"
|
2026-03-09 17:42:26 -05:00
|
|
|
fi
|