Running AWS ECS Anywhere on a Proxmox Homelab

Feb 15, 2026 · 2 min read
post

My side projects need real infrastructure — APIs, scheduled scrapers, background workers — but paying for EC2 to run workloads that fit comfortably on hardware I already own never sat right with me. ECS Anywhere is the compromise I settled on: AWS owns the control plane, my Proxmox server owns the compute.

The setup

The homelab runs Proxmox VE on a 12-core, 32 GB machine. One VM is dedicated to ECS: it runs the amazon-ecs-agent registered as an external instance in a regular ECS cluster. From the AWS console it looks like any other container instance — task definitions, services, deployments, CloudWatch — but the tasks execute at home.

Registration is a one-time SSM activation:

aws ssm create-activation --iam-role ecsAnywhereRole
curl -o ecs-anywhere-install.sh https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh
sudo bash ecs-anywhere-install.sh \
  --cluster homelab \
  --activation-id "$ACTIVATION_ID" \
  --activation-code "$ACTIVATION_CODE" \
  --region us-east-1

After that, deploying to my house is identical to deploying to Fargate: push an image to ECR, update the task definition, and the agent pulls and swaps containers. My CI pipeline doesn’t know or care that the target is a VM under my desk.

What runs on it

Right now the external instance runs the production API and scraper for Qanto, my personal finance app. The scraper is exactly the kind of workload this shines for: long-running, bursty, and completely indifferent to latency — but expensive to keep on a cloud instance 24/7.

The honest trade-offs

  • You are the datacenter. Power outage, ISP hiccup, dead disk — that’s your pager. I mitigate with Proxmox snapshots and a monitoring VM (Prometheus + Grafana + Loki) that alerts me before users notice.
  • ECS Anywhere still costs money — about $0.01/hour per registered instance. For one instance that's ~$7/month, far below the EC2 equivalent for the same cores and RAM.
  • No ALB integration on-prem. Ingress is my own problem; I solve it with Cloudflare Tunnel, which also means zero open ports on my router.

Why not just Docker Compose?

I ran plain Compose for years. What ECS Anywhere buys me is the deployment story: immutable task definitions, rollbacks, the same aws ecs update-service muscle memory I use professionally, and one console showing every environment. The homelab stopped being a snowflake and became just another cluster.

Sergio Saucedo
Authors
Software Engineer
Software Engineer currently contracting for enterprise clients in the automotive sector, leading legacy-to-modern platform migrations with Python, React, Azure, and Kubernetes. Also the founder of ClinicNet, a B2B SaaS serving 120+ dental clinics in Mexico. Previously at IBM, contributing to the Ansible for IBM Z ecosystem and delivering automation workshops to enterprise clients. I like building things that solve real problems — whether that’s a manufacturing system or a WhatsApp appointment reminder.