<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Proxmox | Sergio Saucedo</title><link>https://seulsale.com/tags/proxmox/</link><atom:link href="https://seulsale.com/tags/proxmox/index.xml" rel="self" type="application/rss+xml"/><description>Proxmox</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sun, 15 Feb 2026 00:00:00 +0000</lastBuildDate><image><url>https://seulsale.com/media/sharing.png</url><title>Proxmox</title><link>https://seulsale.com/tags/proxmox/</link></image><item><title>Running AWS ECS Anywhere on a Proxmox Homelab</title><link>https://seulsale.com/post/ecs-anywhere-on-proxmox/</link><pubDate>Sun, 15 Feb 2026 00:00:00 +0000</pubDate><guid>https://seulsale.com/post/ecs-anywhere-on-proxmox/</guid><description>&lt;p&gt;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.&lt;/p&gt;
&lt;h2 id="the-setup"&gt;The setup&lt;/h2&gt;
&lt;p&gt;The homelab runs Proxmox VE on a 12-core, 32 GB machine. One VM is dedicated to ECS: it runs the &lt;code&gt;amazon-ecs-agent&lt;/code&gt; registered as an &lt;em&gt;external instance&lt;/em&gt; 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.&lt;/p&gt;
&lt;p&gt;Registration is a one-time SSM activation:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws ssm create-activation --iam-role ecsAnywhereRole
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -o ecs-anywhere-install.sh https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo bash ecs-anywhere-install.sh &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --cluster homelab &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --activation-id &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$ACTIVATION_ID&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --activation-code &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$ACTIVATION_CODE&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --region us-east-1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;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&amp;rsquo;t know or care that the target is a VM under my desk.&lt;/p&gt;
&lt;h2 id="what-runs-on-it"&gt;What runs on it&lt;/h2&gt;
&lt;p&gt;Right now the external instance runs the production API and scraper for &lt;a href="https://qan.to" target="_blank" rel="noopener"&gt;Qanto&lt;/a&gt;, 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.&lt;/p&gt;
&lt;h2 id="the-honest-trade-offs"&gt;The honest trade-offs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;You are the datacenter.&lt;/strong&gt; Power outage, ISP hiccup, dead disk — that&amp;rsquo;s your pager. I mitigate with Proxmox snapshots and a monitoring VM (Prometheus + Grafana + Loki) that alerts me before users notice.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ECS Anywhere still costs money&lt;/strong&gt; — 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.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No ALB integration on-prem.&lt;/strong&gt; Ingress is my own problem; I solve it with Cloudflare Tunnel, which also means zero open ports on my router.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="why-not-just-docker-compose"&gt;Why not just Docker Compose?&lt;/h2&gt;
&lt;p&gt;I ran plain Compose for years. What ECS Anywhere buys me is the deployment story: immutable task definitions, rollbacks, the same &lt;code&gt;aws ecs update-service&lt;/code&gt; muscle memory I use professionally, and one console showing every environment. The homelab stopped being a snowflake and became just another cluster.&lt;/p&gt;</description></item><item><title>Hybrid Cloud Homelab</title><link>https://seulsale.com/projects/project-3/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://seulsale.com/projects/project-3/</guid><description>&lt;p&gt;Self-hosted infrastructure on Proxmox VE running AWS ECS Anywhere clusters on local hardware, blending cloud-native orchestration with on-prem servers. Hosts a full observability stack, containerized services, and automated deployments — all published through Cloudflare Tunnel with zero open ports.&lt;/p&gt;
&lt;h2 id="stack"&gt;Stack&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Proxmox VE&lt;/strong&gt; - Bare-metal hypervisor managing dedicated VMs for services, ingress, and monitoring&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AWS ECS Anywhere&lt;/strong&gt; - Hybrid cloud container orchestration running production SaaS workloads on local hardware&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker&lt;/strong&gt; - Container runtime for all self-hosted services&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grafana + Prometheus + Loki&lt;/strong&gt; - Metrics, logs, and alerting across the whole fleet, plus Beszel for lightweight per-host monitoring&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ollama&lt;/strong&gt; - LLM inference on a GPU node (Dell R630) powered on-demand via iDRAC Redfish automation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pi-hole&lt;/strong&gt; - Network-wide DNS ad blocking&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Caddy&lt;/strong&gt; - Static site hosting behind Cloudflare Tunnel&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Tunnel + Tailscale&lt;/strong&gt; - Zero-trust ingress and mesh VPN for secure remote access, with no ports exposed to the internet&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ansible&lt;/strong&gt; - Configuration management and automated deployments&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>