AWS Deployment
Deploy Karrio on Amazon Web Services (AWS).
Prerequisites
- Active AWS account
 - Basic knowledge of Docker and Docker Compose
 
Step 1: Create an EC2 Instance
- Log into AWS Management Console
 - Navigate to EC2 service
 - Click āLaunch Instanceā
 - Choose AMI: Amazon Linux 2023 or Ubuntu 22.04 LTS
 - Select instance type:
- Production: t3.medium (2 vCPU, 4 GB RAM)
 - Development: t3.small (2 vCPU, 2 GB RAM)
 
 - Configure security group:
- Allow HTTP (port 80)
 - Allow HTTPS (port 443)
 - Allow SSH (port 22) from your IP
 
 - Add storage: At least 20 GB EBS
 - Launch instance and create/select key pair
 
Step 2: Connect to Your Instance
Amazon Linux:
1ssh -i /path/to/your-key.pem ec2-user@your-instance-public-ip
Ubuntu:
1ssh -i /path/to/your-key.pem ubuntu@your-instance-public-ip
Step 3: Install Docker and Docker Compose
Amazon Linux 2023:
1sudo yum update -y 2sudo yum install -y docker 3sudo systemctl enable docker 4sudo systemctl start docker 5sudo usermod -aG docker $USER 6sudo curl -L "https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 7sudo chmod +x /usr/local/bin/docker-compose 8exit
Ubuntu:
1sudo apt update && sudo apt upgrade -y 2sudo apt install -y apt-transport-https ca-certificates curl software-properties-common 3curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 4sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 5sudo apt update 6sudo apt install -y docker-ce 7sudo systemctl enable docker 8sudo systemctl start docker 9sudo usermod -aG docker $USER 10sudo curl -L "https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 11sudo chmod +x /usr/local/bin/docker-compose 12exit
Step 4: Deploy Karrio
Reconnect to your instance after logging out.
Option 1: One-Click Hobby Deployment
1/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/karrioapi/karrio/HEAD/bin/deploy-hobby)"
When prompted, enter your domain name.
Option 2: Manual Deployment
1mkdir -p ~/karrio 2cd ~/karrio 3curl -O https://raw.githubusercontent.com/karrioapi/karrio/HEAD/docker/docker-compose.yml 4curl -O https://raw.githubusercontent.com/karrioapi/karrio/HEAD/docker/.env 5docker-compose up -d
Edit .env with your configuration. Set up your preferred webserver for HTTPS and domain routing.
Step 5: Configure DNS
Add DNS records:
- Type: 
A, Name:api, Value: Your EC2 instanceās public IP - Type: 
A, Name:app, Value: Your EC2 instanceās public IP 
Step 6: Access Your Karrio Instance
- Dashboard: 
https://app.your-domain.com - API: 
https://api.your-domain.com 
Default login: admin@example.com / demo
Setting Up an Elastic IP (Recommended)
- Navigate to EC2 > Elastic IPs
 - Click āAllocate Elastic IP addressā
 - Select āAmazonās pool of IPv4 addressesā
 - Click āAllocateā
 - Select the Elastic IP, click āActionsā > āAssociate Elastic IP addressā
 - Select your Karrio instance
 - Click āAssociateā
 
Update DNS records to point to this Elastic IP.
Setting Up a Load Balancer (Optional)
- Create an Application Load Balancer
 - Configure HTTPS listeners (port 443)
 - Set up target groups pointing to your EC2 instance(s)
 - Update DNS records to point to the load balancerās DNS name
 
Backup and Restore
AWS Backup
- Navigate to AWS Backup
 - Create a backup plan
 - Assign your EC2 instance and EBS volume
 
Manual Database Backup
1cd ~/karrio 2docker-compose exec db pg_dump -U postgres -d db > karrio_backup_$(date +%Y%m%d).sql 3aws s3 cp karrio_backup_$(date +%Y%m%d).sql s3://your-backup-bucket/
Monitoring
- AWS CloudWatch for instance metrics
 - Container logs: 
cd ~/karrio && docker-compose logs -f 
Updating
1cd ~/karrio 2/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/karrioapi/karrio/HEAD/bin/upgrade-hobby)"
Troubleshooting
SSL Certificate Issues
1cd ~/karrio 2docker-compose logs caddy
Check: DNS records, ports 80/443 open in security group
Container Issues
1cd ~/karrio 2docker-compose ps 3docker-compose logs <service_name>
Instance Resources
Check usage with top or htop. Upgrade instance type in AWS console if needed.
