Projects

Infrastructure

OpenTofu
Terragrunt
DigitalOcean
IaC

OpenTofu and Terragrunt managing my DigitalOcean dev and prod droplets.

A rack of servers.

Problem

Rebuilding or changing a host by clicking through the DigitalOcean console is hard to review and easy to get wrong. I wanted the droplets and their volumes defined in code, so a change is a reviewed diff instead of a sequence of console clicks.

What I built

The servers behind my side projects are defined in code. I use OpenTofu, run through Terragrunt, to manage my DigitalOcean droplets, so rebuilding or changing a host is a reviewed change instead of clicking through a console.

  • Separate dev and prod droplets, AICDEV00 and AICPRD00, built from one shared module with a Terragrunt unit for each.
  • Each droplet’s persistent data volume is managed alongside it.
  • The servers are only reachable over my Tailscale tailnet, with Caddy as the reverse proxy for HTTPS.
  • Shion is the first service being deployed to them.

The repository is private for now while I keep working on it.

Server Plan Output

Stack

OpenTofu, Terragrunt, DigitalOcean, Tailscale and Caddy.