Files
2025-11-25 00:42:27 +01:00

3.4 KiB

Deployment Guide - ASF TestArena

This guide explains how to deploy the ASF TestArena application on your local PC server using Nginx and Docker.

Prerequisites

  1. Git: To pull the repository.
  2. Docker & Docker Compose: To run the backend and database.
  3. Node.js & npm: To build the frontend.
  4. Nginx: To serve the frontend and proxy requests.
  5. Domain: asf-testarena.duckdns.org configured.

Quick Deployment

We have provided a script to automate the deployment process.

  1. Make the script executable:

    chmod +x deploy.sh
    
  2. Run the script:

    ./deploy.sh
    

assigne admin

docker-compose exec backend python scripts/reset_admin.py

Manual Deployment Steps

If you prefer to deploy manually, follow these steps:

1. Update Code

git pull origin main

2. Backend Setup

Start the backend services (API + Database):

docker-compose up -d --build

The backend will be available at http://localhost:8000.

3. Frontend Setup

Build the React application:

cd frontend
npm install
npm run build

This creates a dist folder with the static files.

Copy the build artifacts to your web server root:

sudo mkdir -p /var/www/testarena
sudo cp -r dist/* /var/www/testarena/

4. Nginx Configuration

Ensure your Nginx is configured to serve the app.

  1. Edit your Nginx config (e.g., /etc/nginx/sites-available/default):
    server {
        listen 80;
        server_name asf-testarena.duckdns.org;
    
        # Frontend
        location / {
            root /var/www/testarena;
            index index.html;
            try_files $uri $uri/ /index.html;
        }
    
        # Backend API
        location /api/ {
            proxy_pass http://localhost:8000/;
            proxy_set_header Host $host;
        }
    
        # Auth
        location /auth/ {
            proxy_pass http://localhost:8000/auth/;
            proxy_set_header Host $host;
        }
    
        # Admin
        location /admin/ {
            proxy_pass http://localhost:8000/admin/;
            proxy_set_header Host $host;
        }
    
        # Jobs
        location /jobs/ {
            proxy_pass http://localhost:8000/jobs/;
            proxy_set_header Host $host;
        }
    
        # WebSocket
        location /ws/ {
            proxy_pass http://localhost:8000/ws/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header Host $host;
        }
    
        # Results
        location /results/ {
            alias /path/to/your/project/testarena/results/;
            autoindex on;
        }
    }
    
  2. Test and Reload Nginx:
    sudo nginx -t
    sudo systemctl reload nginx
    

Troubleshooting

  • npm: command not found: You need to install Node.js and npm on your server.

    sudo apt update
    sudo apt install nodejs npm
    
  • Permission denied (Docker): The script tries to handle this by using sudo. If running manually, use sudo docker-compose ... or add your user to the docker group:

    sudo usermod -aG docker $USER
    newgrp docker
    
  • Backend not starting? Check logs: sudo docker-compose logs -f backend

  • Frontend 404s? Ensure try_files $uri $uri/ /index.html; is present in Nginx config.