All posts

The simplest way to make Caddy EC2 Systems Manager work like it should

Your EC2 instance is running Caddy, everything looks fine until credentials expire or a teammate needs quick remote access. Then you are knee-deep in SSH keys, security groups, and scripts that never behave. This is where using Caddy with AWS Systems Manager quietly changes the story from chaos to control. Caddy is loved for its automatic HTTPS and clean config syntax. AWS Systems Manager is the stealth operations suite for EC2 lifecycle management, secure shell access, and parameter storage. W

Free White Paper

GCP Access Context Manager + End-to-End Encryption: The Complete Guide

Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.

Free. No spam. Unsubscribe anytime.

Your EC2 instance is running Caddy, everything looks fine until credentials expire or a teammate needs quick remote access. Then you are knee-deep in SSH keys, security groups, and scripts that never behave. This is where using Caddy with AWS Systems Manager quietly changes the story from chaos to control.

Caddy is loved for its automatic HTTPS and clean config syntax. AWS Systems Manager is the stealth operations suite for EC2 lifecycle management, secure shell access, and parameter storage. When they are combined, you get a web server that drives secure automation right into your infrastructure layer. The goal: drop manual provisioning entirely and keep runtime secrets invisible to humans.

Here’s how the pairing actually works.
Systems Manager gives you identity and remote session control through IAM. Caddy serves requests locally, using environment variables or parameters fetched by SSM when starting up. Instead of copying certificates or secrets between hosts, you attach permissions through instance profiles. Each EC2 node can auto-fetch keys, configs, or tokens at boot under strict IAM policies. Caddy never touches the raw credentials beyond reading what’s allowed. The result is zero hard-coded secrets and consistent deployments.

If you run Caddy behind Systems Manager Session Manager, access no longer needs port opens or bastion hosts. Your engineers use the AWS console (or CLI) to start sessions linked by IAM roles. That means audit trails, keyless login, and far less exposure. Rotate roles once, and every host follows suit. Clean, durable, and no guesswork.

Best practices to keep this solid:

Continue reading? Get the full guide.

GCP Access Context Manager + End-to-End Encryption: Architecture Patterns & Best Practices

Free. No spam. Unsubscribe anytime.
  • Map IAM roles tightly to instance profiles that limit fetch scopes.
  • Use SSM Parameter Store with KMS encryption for TLS secrets.
  • Log SSM actions to CloudTrail for traceable access.
  • Keep policy definitions versioned with your infrastructure code.

Benefits of this approach:

  • Faster rollouts with no manual cert or key copies.
  • Full audit visibility through CloudTrail and Systems Manager logs.
  • Reduced risk of credentials leaks.
  • Easier onboarding—developers just inherit IAM access.
  • Simplified configuration drift tracking through SSM documents.

For developers, this integration means less toil and fewer “where’s my SSH key” moments. You configure once, deploy everywhere. Debugging goes faster. Onboarding feels human again because access is automatic, not bureaucratic.

Platforms like hoop.dev turn those access rules into guardrails that enforce policy automatically. Combine your identity provider, wrap it around your EC2 web stack, and you get the same certainty across regions or runtime environments. No extra YAML, no guesswork.

Common question: How do I connect Caddy and Systems Manager easily?
Attach an IAM instance profile to your EC2 node that grants read access to your SSM parameters. Start Caddy pointing to those parameters for configs or cert data. This way, your web server always boots with secure context under AWS identity control.

Caddy EC2 Systems Manager gives you instant operational maturity without extra tooling. Once identity replaces keys, the system runs on trust enforced by policy instead of human memory.

See an Environment Agnostic Identity-Aware Proxy in action with hoop.dev. Deploy it, connect your identity provider, and watch it protect your endpoints everywhere—live in minutes.

Get started

See hoop.dev in action

One gateway for every database, container, and AI agent. Deploy in minutes.

Get a demoMore posts