# VIMS Deployment Guide ## System Requirements ### Minimum - CPU: 4 cores - RAM: 8 GB - Storage: 100 GB SSD - Network: 100 Mbps ### Recommended - CPU: 8+ cores - RAM: 16 GB - Storage: 500 GB SSD - Network: 1 Gbps - GPU: NVIDIA T4 or better (for AI inference) ## Deployment Options ### 1. Docker Compose (Recommended for single server) ```bash # Clone repository git clone https://github.com/landvex/vims-backend.git cd vims-backend # Create environment file cp .env.example .env nano .env # Start services docker-compose up -d # Check status docker-compose ps docker-compose logs -f vims-api ``` ### 2. Kubernetes (Production) ```bash # Apply configurations kubectl apply -f k8s/namespace.yaml kubectl apply -f k8s/configmap.yaml kubectl apply -f k8s/secret.yaml kubectl apply -f k8s/postgres.yaml kubectl apply -f k8s/redis.yaml kubectl apply -f k8s/vims-api.yaml kubectl apply -f k8s/vims-worker.yaml kubectl apply -f k8s/ingress.yaml # Check status kubectl get pods -n vims kubectl logs -f deployment/vims-api -n vims ``` ### 3. AWS Deployment #### Using ECS ```bash # Create cluster aws ecs create-cluster --cluster-name vims # Register task definitions aws ecs register-task-definition --cli-input-json file://ecs/api-task.json aws ecs register-task-definition --cli-input-json file://ecs/worker-task.json # Create service aws ecs create-service \ --cluster vims \ --service-name vims-api \ --task-definition vims-api \ --desired-count 2 ``` #### Using EKS ```bash # Create EKS cluster eksctl create cluster --name vims --region eu-north-1 # Deploy kubectl apply -f k8s/ ``` ## Configuration ### Environment Variables | Variable | Required | Default | Description | |----------|----------|---------|-------------| | `NODE_ENV` | Yes | development | Environment mode | | `PORT` | No | 3450 | API port | | `DB_HOST` | Yes | - | PostgreSQL host | | `DB_PASSWORD` | Yes | - | Database password | | `REDIS_HOST` | Yes | - | Redis host | | `JWT_SECRET` | Yes | - | Secret for JWT tokens | | `S3_BUCKET` | Yes | - | S3 bucket for images | | `AWS_ACCESS_KEY_ID` | Yes | - | AWS access key | | `AWS_SECRET_ACCESS_KEY` | Yes | - | AWS secret key | ### SSL/TLS #### Using Let's Encrypt ```bash # Install certbot docker run -it --rm \ -v vims_certs:/etc/letsencrypt \ certbot/certbot certonly \ --standalone \ -d vims.landvex.com ``` #### Using AWS ACM ```bash # Request certificate aws acm request-certificate \ --domain-name vims.landvex.com \ --validation-method DNS ``` ## Monitoring ### Prometheus Metrics Endpoint: `/metrics` Key metrics: - `vims_observations_total` - Total observations processed - `vims_alerts_total` - Total alerts generated - `vims_detection_duration_seconds` - AI detection duration - `vims_queue_size` - Current queue size ### Health Checks - Liveness: `GET /health/live` - Readiness: `GET /health/ready` ### Logging Structured JSON logs to stdout. Configure aggregation with: - ELK Stack - Datadog - CloudWatch ## Backup ### Database ```bash # Automated backup script #!/bin/bash BACKUP_DIR="/backups/vims" TIMESTAMP=$(date +%Y%m%d_%H%M%S) docker exec vims_postgres_1 pg_dump -U vims vims > \ $BACKUP_DIR/vims_$TIMESTAMP.sql # Upload to S3 aws s3 cp $BACKUP_DIR/vims_$TIMESTAMP.sql \ s3://vims-backups/database/ # Keep last 30 days find $BACKUP_DIR -name "vims_*.sql" -mtime +30 -delete ``` ### Images ```bash # Sync to S3 aws s3 sync /data/reference-images s3://vims-images/reference/ aws s3 sync /data/observations s3://vims-images/observations/ ``` ## Scaling ### Horizontal Scaling ```yaml # docker-compose.yml services: vims-worker: deploy: replicas: 5 ``` ### Vertical Scaling ```yaml # docker-compose.yml services: vims-api: deploy: resources: limits: cpus: '4' memory: 8G ``` ## Security ### Network Security - Use private subnets for database - Security groups for API access - WAF for DDoS protection ### Data Security - Encrypt data at rest (S3, RDS) - Encrypt data in transit (TLS 1.3) - Regular security audits ### Access Control - Role-based access control (RBAC) - API key rotation every 90 days - Audit logging ## Troubleshooting ### Common Issues #### Database Connection Failed ```bash # Check PostgreSQL docker-compose logs postgres # Verify credentials docker exec -it vims_postgres_1 psql -U vims -c "\l" ``` #### Queue Not Processing ```bash # Check Redis docker-compose exec redis redis-cli ping # Check workers docker-compose logs -f vims-worker ``` #### AI Model Not Loading ```bash # Verify model files ls -la data/models/ # Check logs docker-compose logs vims-worker | grep -i "model" ``` ## Maintenance ### Updates ```bash # Pull latest git pull origin main # Rebuild docker-compose build # Rolling update docker-compose up -d ``` ### Cleanup ```bash # Remove old images docker image prune -a # Clean logs docker-compose exec vims-api find /app/logs -name "*.log" -mtime +7 -delete ``` ## Support - Documentation: https://docs.landvex.com/vims - Issues: https://github.com/landvex/vims/issues - Email: support@landvex.com