--- title: "Docker" description: "Deploy Dograh AI using Docker for local development and remote server environments" --- Dograh AI can be deployed using Docker in two main configurations. Choose the option that best fits your needs: - **Option 1**: For local development and testing on your own machine - **Option 2**: For remote server deployment with HTTPS (using IP address) ## Option 1: Local Docker Deployment For local development and testing, you can run Dograh AI directly on your machine using Docker with a single command. ### Quick Start Run this single command to download and start Dograh AI: ```bash curl -o docker-compose.yaml https://raw.githubusercontent.com/dograh-hq/dograh/main/docker-compose.yaml && REGISTRY=ghcr.io/dograh-hq ENABLE_TELEMETRY=true docker compose up --pull always ``` This command: - Downloads the latest docker-compose.yaml - Starts all required services including PostgreSQL, Redis, MinIO, API, and UI - Pulls the latest images automatically ### Access the Application Once running (first startup takes 2-3 minutes), open: ``` http://localhost:3010 ``` You can disable telemetry by setting `ENABLE_TELEMETRY=false` in the command above. ## Option 2: Remote Server Deployment Deploy Dograh AI on a remote server to make it accessible from anywhere using your server's IP address. This setup includes HTTPS support via nginx reverse proxy with self-signed certificates. ### Prerequisites - A server with Docker and Docker Compose installed - Public IP address for your server - Ports 80 and 443 accessible from the internet ### Step 1: Create Project Directory Open your terminal and create a directory for Dograh: ```bash mkdir dograh cd dograh ``` ### Step 2: Download Docker Compose File Download the docker-compose.yaml file: ```bash curl -o docker-compose.yaml https://raw.githubusercontent.com/dograh-hq/dograh/main/docker-compose.yaml ``` ### Step 3: Generate SSL Certificates Create a script to generate self-signed certificates for HTTPS: ```bash nano generate_certificate.sh ``` Copy the following content into the file: ```bash mkdir -p certs openssl req -x509 -nodes -newkey rsa:2048 \ -keyout certs/local.key \ -out certs/local.crt \ -days 365 \ -subj "/CN=YOUR_SERVER_IP" ``` Replace `YOUR_SERVER_IP` with your server's public IP address. Make the script executable and run it: ```bash chmod +x generate_certificate.sh ./generate_certificate.sh ``` ### Step 4: Configure nginx Create an nginx configuration file: ```bash nano nginx.conf ``` Copy the following content into the file: ```nginx server { listen 80; server_name YOUR_SERVER_IP; # Optional: redirect all HTTP to HTTPS return 301 https://$host$request_uri; } server { listen 443 ssl; server_name YOUR_SERVER_IP; ssl_certificate /etc/nginx/certs/local.crt; ssl_certificate_key /etc/nginx/certs/local.key; # Basic TLS settings for dev ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; location / { proxy_pass http://ui:3010; proxy_http_version 1.1; # Important for WebSockets / hot reload etc. proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; # Rewrite localhost MinIO URLs in API responses to use current domain sub_filter 'http://localhost:9000/voice-audio/' 'https://$host/voice-audio/'; sub_filter_once off; sub_filter_types application/json text/html; } location /voice-audio/ { proxy_pass http://minio:9000/voice-audio/; proxy_http_version 1.1; # Headers for file downloads from MinIO proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; # Allow large file downloads proxy_buffering off; client_max_body_size 100M; } } ``` Replace `YOUR_SERVER_IP` with your server's public IP address in both locations (lines 3 and 11). ### Step 5: Deploy with Remote Profile Start the application with the remote profile to include nginx: ```bash docker compose --profile remote up -d ``` This command starts all services including the nginx reverse proxy with HTTPS support. ### Step 6: Access Your Application Your application will be available at: ``` https://YOUR_SERVER_IP ``` Replace `YOUR_SERVER_IP` with your actual server IP address. ### Configuration Notes - The remote deployment includes an nginx reverse proxy for HTTPS termination - File downloads (transcripts, recordings) are automatically routed through nginx - WebSocket connections for real-time features are properly proxied - The setup uses self-signed certificates - browsers will show a security warning that you can safely accept for testing - For production deployments with proper SSL and domain names, see the [Custom Domain](custom-domain) documentation