šŸ“– Looking for karrio's legacy docs? Visit docs.karrio.io

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

  1. Log into AWS Management Console
  2. Navigate to EC2 service
  3. Click ā€œLaunch Instanceā€
  4. Choose AMI: Amazon Linux 2023 or Ubuntu 22.04 LTS
  5. Select instance type:
    • Production: t3.medium (2 vCPU, 4 GB RAM)
    • Development: t3.small (2 vCPU, 2 GB RAM)
  6. Configure security group:
    • Allow HTTP (port 80)
    • Allow HTTPS (port 443)
    • Allow SSH (port 22) from your IP
  7. Add storage: At least 20 GB EBS
  8. 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

  1. Navigate to EC2 > Elastic IPs
  2. Click ā€œAllocate Elastic IP addressā€
  3. Select ā€œAmazon’s pool of IPv4 addressesā€
  4. Click ā€œAllocateā€
  5. Select the Elastic IP, click ā€œActionsā€ > ā€œAssociate Elastic IP addressā€
  6. Select your Karrio instance
  7. Click ā€œAssociateā€

Update DNS records to point to this Elastic IP.

Setting Up a Load Balancer (Optional)

  1. Create an Application Load Balancer
  2. Configure HTTPS listeners (port 443)
  3. Set up target groups pointing to your EC2 instance(s)
  4. Update DNS records to point to the load balancer’s DNS name

Backup and Restore

AWS Backup

  1. Navigate to AWS Backup
  2. Create a backup plan
  3. 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.