# Deployment Instructions for AWS EC2 This guide will help you deploy the **WonderSheets** application to your EC2 instance using Docker. ## Prerequisites 1. **AWS EC2 Instance**: A running instance (e.g., Amazon Linux 2 or Ubuntu). 2. **Security Group Rules**: Ensure your EC2 Security Group allows: - **Inbound HTTP (Port 80)**: For the web interface. - **Inbound SSH (Port 22)**: For you to connect. 3. **API Key**: Your Google Gemini API Key. ## Step 1: Connect to your EC2 Instance Open your terminal and SSH into your server: ```bash ssh -i /path/to/your-key.pem user@your-ec2-public-ip ``` ## Step 2: Install Docker and Docker Compose (if not installed) **For Amazon Linux 2023 / Amazon Linux 2:** ```bash sudo yum update -y sudo yum install -y docker sudo service docker start sudo usermod -a -G docker ec2-user # Logout and log back in to apply group changes exit # ssh again... ``` **Install Docker Compose:** ```bash sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` *(If you are using Ubuntu, use `sudo apt update && sudo apt install docker.io docker-compose -y`)* ## Step 3: Get the Code You can either clone the repository or upload your files. **Option A: Git Clone (Recommended)** If your code is on Gitea/GitHub: ```bash git clone cd wondersheets ``` **Option B: Upload Files** If you want to copy local files: ```bash scp -i /path/to/key.pem -r . user@your-ec2-ip:~/wondersheets ``` ## Step 4: Configure Environment Create a `.env` file in the project directory: ```bash nano .env ``` Paste your API key: ``` GEMINI_API_KEY=your_actual_api_key_here ``` Save and exit (`Ctrl+O`, `Enter`, `Ctrl+X`). ## Step 5: Start the Application Run the application in the background: ```bash docker-compose up -d --build ``` ## Step 6: Verify Open your browser and visit your EC2 Public IP: `http://your-ec2-public-ip/` The app should be running! --- ### Troubleshooting - **Check logs**: `docker-compose logs -f` - **Restart**: `docker-compose restart` - **Stop**: `docker-compose down`