Initial commit
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
#!/bin/bash
|
||||
|
||||
# HLS Transcoding Setup Script
|
||||
# This script initializes the HLS transcoding infrastructure
|
||||
|
||||
set -e
|
||||
|
||||
echo "==========================================="
|
||||
echo "HLS Transcoding Setup Script"
|
||||
echo "==========================================="
|
||||
echo ""
|
||||
|
||||
# Colors for output
|
||||
GREEN='\033[0;32m'
|
||||
BLUE='\033[0;34m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Check if .env file exists
|
||||
if [ ! -f .env ]; then
|
||||
echo -e "${YELLOW}⚠ .env file not found${NC}"
|
||||
echo "Creating .env from .env.example..."
|
||||
cp .env.example .env
|
||||
echo -e "${GREEN}✓ .env file created${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}Please edit .env and configure your settings before proceeding${NC}"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echo -e "${BLUE}Step 1: Checking prerequisites${NC}"
|
||||
|
||||
# Check if Docker is installed
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo -e "${YELLOW}✗ Docker is not installed${NC}"
|
||||
echo "Please install Docker from https://www.docker.com/products/docker-desktop"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}✓ Docker is installed${NC}"
|
||||
|
||||
# Check if Docker Compose is installed
|
||||
if ! command -v docker-compose &> /dev/null; then
|
||||
echo -e "${YELLOW}✗ Docker Compose is not installed${NC}"
|
||||
echo "Please install Docker Compose or use 'docker compose'"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}✓ Docker Compose is installed${NC}"
|
||||
|
||||
# Check if Node.js is installed
|
||||
if ! command -v node &> /dev/null; then
|
||||
echo -e "${YELLOW}⚠ Node.js is not installed (optional for dev mode)${NC}"
|
||||
else
|
||||
echo -e "${GREEN}✓ Node.js is installed ($(node --version))${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${BLUE}Step 2: Creating required directories${NC}"
|
||||
|
||||
# Create uploads directory structure
|
||||
if [ -n "$UPLOADS_PATH" ]; then
|
||||
UPLOADS_DIR="$UPLOADS_PATH"
|
||||
else
|
||||
UPLOADS_DIR="/mnt/tank/apps/college-platform/uploads"
|
||||
fi
|
||||
|
||||
mkdir -p "$UPLOADS_DIR/videos"
|
||||
mkdir -p "$UPLOADS_DIR/hls"
|
||||
sudo chown -R 1000:1000 "$UPLOADS_DIR" 2>/dev/null || true
|
||||
chmod -R 755 "$UPLOADS_DIR"
|
||||
|
||||
echo -e "${GREEN}✓ Created $UPLOADS_DIR/videos${NC}"
|
||||
echo -e "${GREEN}✓ Created $UPLOADS_DIR/hls${NC}"
|
||||
|
||||
# Create PostgreSQL data directory
|
||||
if [ -n "$POSTGRES_DATA_PATH" ]; then
|
||||
PG_DIR="$POSTGRES_DATA_PATH"
|
||||
else
|
||||
PG_DIR="/mnt/tank/apps/college-platform/postgres_data"
|
||||
fi
|
||||
|
||||
mkdir -p "$PG_DIR"
|
||||
chmod 700 "$PG_DIR"
|
||||
|
||||
echo -e "${GREEN}✓ Created PostgreSQL data directory${NC}"
|
||||
|
||||
echo ""
|
||||
echo -e "${BLUE}Step 3: Building Docker images${NC}"
|
||||
|
||||
# Build the transcoder image
|
||||
docker-compose build transcoder 2>&1 | tail -20
|
||||
echo -e "${GREEN}✓ Transcoder image built${NC}"
|
||||
|
||||
echo ""
|
||||
echo -e "${BLUE}Step 4: Starting services${NC}"
|
||||
|
||||
# Start all services
|
||||
docker-compose up -d
|
||||
|
||||
echo -e "${GREEN}✓ Services started${NC}"
|
||||
|
||||
echo ""
|
||||
echo -e "${BLUE}Step 5: Waiting for services to be ready${NC}"
|
||||
|
||||
# Wait for PostgreSQL
|
||||
echo "Waiting for PostgreSQL..."
|
||||
for i in {1..30}; do
|
||||
if docker-compose exec -T postgres pg_isready -U cms_user &> /dev/null; then
|
||||
echo -e "${GREEN}✓ PostgreSQL is ready${NC}"
|
||||
break
|
||||
fi
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Wait for CMS
|
||||
echo "Waiting for CMS application..."
|
||||
for i in {1..60}; do
|
||||
if docker-compose exec -T cms wget --quiet --spider http://localhost:3000 2>/dev/null; then
|
||||
echo -e "${GREEN}✓ CMS is ready${NC}"
|
||||
break
|
||||
fi
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Run Prisma migration
|
||||
echo ""
|
||||
echo -e "${BLUE}Step 6: Running database migration${NC}"
|
||||
|
||||
docker-compose exec -T cms npx prisma migrate deploy
|
||||
|
||||
echo -e "${GREEN}✓ Database migration completed${NC}"
|
||||
|
||||
echo ""
|
||||
echo "==========================================="
|
||||
echo -e "${GREEN}Setup Complete!${NC}"
|
||||
echo "==========================================="
|
||||
echo ""
|
||||
echo "Services are now running:"
|
||||
echo " • CMS: http://localhost:3000"
|
||||
echo " • PostgreSQL: localhost:5432"
|
||||
echo " • Transcoder: (background service)"
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo " 1. Visit http://localhost:3000 and sign in"
|
||||
echo " 2. Upload MP4 files as an admin user"
|
||||
echo " 3. Watch the transcoder logs: docker-compose logs -f transcoder"
|
||||
echo " 4. Check HLS files: ls -la $UPLOADS_DIR/hls/{video_id}/"
|
||||
echo ""
|
||||
echo "For more information, see TRANSCODING.md"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user