# Clone repository
git clone https://github.com/your-org/codegenie.git
cd codegenie
# Run installation script
./scripts/install.shThe installation script will:
- Check Python and Ollama installation
- Install required models
- Create virtual environment
- Install CodeGenie
- Create default configuration
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Install CodeGenie
pip install -e .
# Start Ollama
ollama serve &
# Pull models
ollama pull llama3.1:8b
ollama pull codellama:7b
# Start CodeGenie
codegenie# Clone repository
git clone https://github.com/your-org/codegenie.git
cd codegenie
# Start services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down# Build image
docker build -t codegenie:latest .
# Run container
docker run -d \
--name codegenie \
-p 8000:8000 \
-p 11434:11434 \
-v $(pwd)/projects:/workspace \
-v codegenie-config:/root/.config/codegenie \
-v codegenie-cache:/root/.cache/codegenie \
-v ollama-models:/root/.ollama \
-e OLLAMA_MODELS="llama3.1:8b,codellama:7b" \
codegenie:latest
# View logs
docker logs -f codegenie
# Stop container
docker stop codegenieCreate a .env file:
# Environment
CODEGENIE_ENV=production
# Ollama
OLLAMA_HOST=http://localhost:11434
OLLAMA_MODELS=llama3.1:8b,codellama:7b
# Database
POSTGRES_HOST=postgres
POSTGRES_DB=codegenie
POSTGRES_USER=codegenie
POSTGRES_PASSWORD=secure_password
# Redis
REDIS_HOST=redis
REDIS_PORT=6379
# Resources
MAX_MEMORY=16G
MAX_CPU=4- Kubernetes cluster (1.20+)
- kubectl configured
- Persistent storage provisioner
- At least 100GB storage for models
# Create namespace
kubectl create namespace codegenie
# Create secrets
kubectl create secret generic codegenie-secrets \
--from-literal=postgres-password=secure_password \
-n codegenie
# Apply deployment
kubectl apply -f deploy/kubernetes/deployment.yaml -n codegenie
# Check status
kubectl get pods -n codegenie
kubectl get services -n codegenie
# View logs
kubectl logs -f deployment/codegenie -n codegenie# Scale to 3 replicas
kubectl scale deployment codegenie --replicas=3 -n codegenie
# Auto-scaling
kubectl autoscale deployment codegenie \
--min=2 \
--max=10 \
--cpu-percent=70 \
-n codegenie# Update image
kubectl set image deployment/codegenie \
codegenie=codegenie:v0.3.0 \
-n codegenie
# Rollback if needed
kubectl rollout undo deployment/codegenie -n codegenie
# Check rollout status
kubectl rollout status deployment/codegenie -n codegenie# Deploy stack
aws cloudformation create-stack \
--stack-name codegenie \
--template-body file://deploy/aws/cloudformation.yaml \
--parameters \
ParameterKey=InstanceType,ParameterValue=g4dn.xlarge \
ParameterKey=KeyName,ParameterValue=your-key-pair \
ParameterKey=VpcId,ParameterValue=vpc-xxxxx \
ParameterKey=SubnetId,ParameterValue=subnet-xxxxx \
--capabilities CAPABILITY_IAM
# Check status
aws cloudformation describe-stacks \
--stack-name codegenie \
--query 'Stacks[0].StackStatus'
# Get outputs
aws cloudformation describe-stacks \
--stack-name codegenie \
--query 'Stacks[0].Outputs'# Launch EC2 instance
aws ec2 run-instances \
--image-id ami-xxxxx \
--instance-type g4dn.xlarge \
--key-name your-key-pair \
--security-group-ids sg-xxxxx \
--subnet-id subnet-xxxxx \
--user-data file://scripts/ec2-userdata.sh
# SSH to instance
ssh -i your-key.pem ubuntu@<instance-ip>
# Install CodeGenie
curl -fsSL https://raw.githubusercontent.com/your-org/codegenie/main/scripts/install.sh | bash# Create ECS cluster
aws ecs create-cluster --cluster-name codegenie
# Register task definition
aws ecs register-task-definition \
--cli-input-json file://deploy/aws/ecs-task-definition.json
# Create service
aws ecs create-service \
--cluster codegenie \
--service-name codegenie-service \
--task-definition codegenie:1 \
--desired-count 2 \
--launch-type FARGATE- Use HTTPS
# Generate SSL certificate
certbot certonly --standalone -d codegenie.example.com
# Configure nginx
server {
listen 443 ssl;
server_name codegenie.example.com;
ssl_certificate /etc/letsencrypt/live/codegenie.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/codegenie.example.com/privkey.pem;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}- Enable Authentication
# config.yaml
security:
authentication:
enabled: true
type: "jwt"
secret_key: "${JWT_SECRET}"
rate_limiting:
enabled: true
requests_per_minute: 60- Use Secrets Management
# AWS Secrets Manager
aws secretsmanager create-secret \
--name codegenie/postgres-password \
--secret-string "secure_password"
# Kubernetes Secrets
kubectl create secret generic codegenie-secrets \
--from-literal=postgres-password=secure_password- Enable Caching
cache:
enabled: true
backend: "redis"
redis_url: "redis://localhost:6379"
ttl: 3600- Use GPU Acceleration
models:
use_gpu: true
gpu_memory_fraction: 0.8- Configure Resource Limits
resources:
max_memory: "16GB"
max_cpu: 4
max_concurrent_tasks: 10- Enable Logging
logging:
level: "INFO"
format: "json"
outputs:
- type: "file"
path: "/var/log/codegenie/app.log"
- type: "cloudwatch"
log_group: "/aws/codegenie"- Configure Metrics
monitoring:
enabled: true
prometheus:
enabled: true
port: 9090
cloudwatch:
enabled: true
namespace: "CodeGenie"- Set Up Alerts
alerts:
- name: "high_memory"
condition: "memory_usage > 90%"
action: "email"
recipients: ["admin@example.com"]
- name: "high_error_rate"
condition: "error_rate > 5%"
action: "slack"
webhook: "https://hooks.slack.com/..."- Automated Backups
# Create backup script
cat > /usr/local/bin/backup-codegenie.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/backups/codegenie/$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"
# Backup config
cp -r ~/.config/codegenie "$BACKUP_DIR/config"
# Backup sessions
cp -r ~/.codegenie/sessions "$BACKUP_DIR/sessions"
# Backup database
pg_dump codegenie > "$BACKUP_DIR/database.sql"
# Upload to S3
aws s3 sync "$BACKUP_DIR" s3://my-backups/codegenie/$(date +%Y%m%d)
EOF
chmod +x /usr/local/bin/backup-codegenie.sh
# Schedule with cron
echo "0 2 * * * /usr/local/bin/backup-codegenie.sh" | crontab -- Disaster Recovery
# Restore from backup
./scripts/restore.sh /backups/codegenie/20240101- Load Balancing
upstream codegenie {
least_conn;
server codegenie-1:8000;
server codegenie-2:8000;
server codegenie-3:8000;
}
server {
listen 80;
location / {
proxy_pass http://codegenie;
}
}- Database Replication
database:
primary:
host: "postgres-primary"
port: 5432
replicas:
- host: "postgres-replica-1"
port: 5432
- host: "postgres-replica-2"
port: 5432- Zero-Downtime Updates
# Rolling update
kubectl set image deployment/codegenie \
codegenie=codegenie:v0.3.0 \
--record
# Blue-green deployment
kubectl apply -f deploy/kubernetes/deployment-green.yaml
# Test green deployment
kubectl delete -f deploy/kubernetes/deployment-blue.yaml- Maintenance Mode
# Enable maintenance mode
codegenie maintenance enable
# Perform updates
./scripts/update.sh
# Disable maintenance mode
codegenie maintenance disable- Out of Memory
# Check memory usage
docker stats codegenie
# Increase memory limit
docker update --memory 16g codegenie- Model Download Failures
# Manual model download
docker exec -it codegenie ollama pull llama3.1:8b- Connection Issues
# Check Ollama service
docker exec -it codegenie curl http://localhost:11434/api/tags
# Check logs
docker logs codegenie# API health
curl http://localhost:8000/health
# Ollama health
curl http://localhost:11434/api/tags
# Database health
docker exec -it codegenie-postgres pg_isreadyFor deployment issues:
- Check Troubleshooting Guide
- Visit Community Forum
- Email: support@codegenie.dev