#!/bin/bash # Ubuntu Installation Script for PDF Renamer Flask App # This script sets up the PDF renamer application with reverse proxy on Ubuntu set -e echo "Starting installation of PDF Renamer Flask App..." # Update system packages echo "Updating system packages..." sudo apt update && sudo apt upgrade -y # Install required packages echo "Installing required packages..." sudo apt install -y python3 python3-pip python3-venv nginx git # Clone the repository (replace with your actual repo URL if different) echo "Cloning the repository..." git clone https://gitlab.com/trbc-dev/pdf-rename-sort.git cd pdf-rename-sort # Create virtual environment and install dependencies echo "Setting up Python virtual environment..." python3 -m venv venv source venv/bin/activate pip install --upgrade pip pip install -r requirements.txt pip install gunicorn # Create application directory structure echo "Setting up application directory..." mkdir -p static # Copy logo if it exists in repo, otherwise you'll need to add it # cp path/to/trbc-logo-full.png static/ # Uncomment and adjust if needed # Create systemd service file echo "Creating systemd service..." sudo tee /etc/systemd/system/pdf-renamer.service > /dev/null < /dev/null </dev/null || true # Don't remove default nginx site - let existing apps continue working # sudo rm -f /etc/nginx/sites-enabled/default # Test nginx configuration echo "Testing Nginx configuration..." sudo nginx -t # Reload nginx echo "Reloading Nginx..." sudo systemctl reload nginx # Configure firewall (UFW) echo "Configuring firewall..." sudo ufw allow ssh sudo ufw allow 'Nginx Full' sudo ufw --force enable echo "" echo "Installation completed successfully!" echo "" echo "IMPORTANT: Configure Microsoft Entra ID authentication:" echo "1. Go to Azure Portal > Microsoft Entra ID > App registrations" echo "2. Create a new registration or use existing one" echo "3. Note the Application (client) ID and Directory (tenant) ID" echo "4. Add a client secret under Certificates & secrets" echo "5. Add redirect URI: https://pdf-renamer.your-domain.com/auth/microsoft/callback" echo "6. Grant appropriate permissions if needed" echo "" echo "Next steps:" echo "1. Update the environment variables in /etc/systemd/system/pdf-renamer.service:" echo " - SECRET_KEY: Set a secure random key (use: openssl rand -hex 32)" echo " - TENANT_ID: Your Microsoft Entra tenant ID" echo " - CLIENT_ID: Your Microsoft Entra application ID" echo " - CLIENT_SECRET: Your Microsoft Entra client secret" echo " - ADMIN_USERNAME and ADMIN_PASSWORD: Set secure admin credentials" echo "" echo "2. Update the server_name in /etc/nginx/sites-available/pdf-renamer:" echo " - Change 'pdf-renamer.your-domain.com' to your actual subdomain" echo " - Point your DNS for this subdomain to this server's IP" echo "" echo "3. For SSL/HTTPS, install certbot:" echo " sudo apt install certbot python3-certbot-nginx" echo " sudo certbot --nginx -d pdf-renamer.your-domain.com" echo "" echo "4. Reload systemd after updating environment variables:" echo " sudo systemctl daemon-reload" echo " sudo systemctl restart pdf-renamer" echo "" echo "5. Check service status:" echo " sudo systemctl status pdf-renamer" echo " sudo systemctl status nginx" echo "" echo "NOTE: This setup runs alongside your existing app on port 5000." echo "The PDF Renamer will be accessible at your subdomain on port 80/443."