feat: Add comprehensive documentation suite and reorganize project structure

- Created complete documentation in docs/ directory
- Added PROJECT_OVERVIEW.md with feature highlights and getting started guide
- Added ARCHITECTURE.md with system design and technical details
- Added SECURITY.md with comprehensive security implementation guide
- Added DEVELOPMENT.md with development workflows and best practices
- Added DEPLOYMENT.md with production deployment instructions
- Added API.md with complete REST API documentation
- Added CONTRIBUTING.md with contribution guidelines
- Added CHANGELOG.md with version history and migration notes
- Reorganized all documentation files into docs/ directory for better organization
- Updated README.md with proper documentation links and quick navigation
- Enhanced project structure with professional documentation standards
This commit is contained in:
SamiAhmed7777
2025-10-21 00:39:45 -07:00
commit 0b7e2d0a5b
6080 changed files with 1332936 additions and 0 deletions

234
docker_setup_complete.sh Normal file
View File

@@ -0,0 +1,234 @@
#!/bin/bash
###############################################################################
# Docker EasyStream Complete Setup Script
# Fixes 404 issues and sets up the complete system in Docker containers
###############################################################################
echo "🐳 EasyStream Docker Complete Setup"
echo "===================================="
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Function to print colored output
print_status() {
echo -e "${GREEN}[INFO]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
print_step() {
echo -e "${BLUE}[STEP]${NC} $1"
}
# Check if Docker and Docker Compose are available
check_docker() {
print_step "Checking Docker environment..."
if ! command -v docker &> /dev/null; then
print_error "Docker is not installed or not in PATH"
exit 1
fi
if ! command -v docker-compose &> /dev/null; then
print_error "Docker Compose is not installed or not in PATH"
exit 1
fi
print_status "Docker environment OK"
}
# Stop existing containers
stop_containers() {
print_step "Stopping existing containers..."
docker-compose down
print_status "Containers stopped"
}
# Build and start containers
start_containers() {
print_step "Building and starting containers..."
docker-compose up -d --build
# Wait for containers to be ready
print_step "Waiting for containers to be ready..."
sleep 10
# Check container status
print_step "Checking container status..."
docker-compose ps
}
# Wait for database to be ready
wait_for_database() {
print_step "Waiting for database to be ready..."
local max_attempts=30
local attempt=1
while [ $attempt -le $max_attempts ]; do
if docker exec vs-db mysqladmin ping -h 127.0.0.1 -u root -proot --silent; then
print_status "Database is ready"
return 0
fi
echo -n "."
sleep 2
((attempt++))
done
print_error "Database failed to start within expected time"
return 1
}
# Setup database
setup_database() {
print_step "Setting up database..."
# Run database setup scripts
print_status "Running database initialization scripts..."
# Check if tables exist, if not create them
docker exec vs-db mysql -u easystream -peasystream easystream -e "SHOW TABLES;" > /dev/null 2>&1
if [ $? -ne 0 ]; then
print_warning "Database tables not found, creating..."
docker exec vs-db mysql -u easystream -peasystream easystream < deploy/create_missing_tables.sql
docker exec vs-db mysql -u easystream -peasystream easystream < deploy/init_settings.sql
fi
# Setup token system
print_status "Setting up token system..."
docker exec vs-php php -f /srv/easystream/deploy/create_token_system.sql 2>/dev/null || true
print_status "Database setup complete"
}
# Fix container routing and permissions
fix_container_routing() {
print_step "Fixing container routing and 404 issues..."
# Run the container diagnostic
print_status "Running container diagnostics..."
docker exec vs-php php /srv/easystream/docker_diagnose_404.php > container_diagnostic.html
# Apply container fixes
print_status "Applying container fixes..."
docker exec vs-php php /srv/easystream/docker_fix_404.php > container_fixes.html
# Fix file permissions
print_status "Fixing file permissions..."
docker exec vs-php chmod 644 /srv/easystream/*.php
docker exec vs-php chmod 755 /srv/easystream/f_*
docker exec vs-php chown -R www-data:www-data /srv/easystream 2>/dev/null || true
print_status "Container routing fixes applied"
}
# Test URLs
test_urls() {
print_step "Testing container URLs..."
# Wait a moment for services to restart
sleep 5
# Run URL tests
docker exec vs-php php /srv/easystream/docker_test_urls.php > container_url_tests.html
# Test main URLs
local main_url="http://localhost:8083"
print_status "Testing main URLs..."
echo "Testing: $main_url"
local urls=(
"$main_url"
"$main_url/browse"
"$main_url/search"
"$main_url/token_purchase"
"$main_url/admin"
"$main_url/health"
)
for url in "${urls[@]}"; do
local status_code=$(curl -s -o /dev/null -w "%{http_code}" "$url" 2>/dev/null || echo "000")
if [ "$status_code" = "200" ] || [ "$status_code" = "302" ]; then
print_status "$url - HTTP $status_code"
else
print_warning "⚠️ $url - HTTP $status_code"
fi
done
}
# Display final status
display_final_status() {
print_step "Final setup status..."
echo ""
echo "🎉 EasyStream Docker Setup Complete!"
echo "===================================="
echo ""
echo "📊 Container Status:"
docker-compose ps
echo ""
echo "🌐 Access URLs:"
echo " Main Site: http://localhost:8083"
echo " Browse: http://localhost:8083/browse"
echo " Token Purchase: http://localhost:8083/token_purchase"
echo " Admin Panel: http://localhost:8083/admin"
echo " Health Check: http://localhost:8083/health"
echo ""
echo "🔧 Management Commands:"
echo " View logs: docker-compose logs -f"
echo " Enter PHP container: docker exec -it vs-php bash"
echo " Restart services: docker-compose restart"
echo ""
echo "📋 Generated Reports:"
echo " Container Diagnostic: container_diagnostic.html"
echo " Applied Fixes: container_fixes.html"
echo " URL Test Results: container_url_tests.html"
echo ""
echo "🆘 Troubleshooting:"
echo " If URLs don't work, check: docker-compose logs php caddy"
echo " Re-run fixes: docker exec -it vs-php php docker_fix_404.php"
echo " Re-run diagnostics: docker exec -it vs-php php docker_diagnose_404.php"
}
# Main execution
main() {
echo "Starting EasyStream Docker setup..."
echo ""
check_docker
stop_containers
start_containers
if wait_for_database; then
setup_database
fix_container_routing
# Restart containers after fixes
print_step "Restarting containers after fixes..."
docker-compose restart php caddy
sleep 5
test_urls
display_final_status
else
print_error "Setup failed - database not ready"
exit 1
fi
}
# Run main function
main "$@"