OpenEMR on EKS - Production-Ready AWS Deployment on EKS Auto Mode

Hello OpenEMR Community! :wave:

I’m excited to share a project I’ve been working on for several months: OpenEMR on EKS with Auto Mode - a complete, production-ready deployment solution for running OpenEMR on AWS.

:dart: What This Solves

Many healthcare organizations want to use OpenEMR but struggle with:

  • Complex deployment and infrastructure management
  • Scaling issues during peak hours
  • Disaster recovery and backup strategies
  • Security and compliance requirements
  • High operational overhead

This solution addresses all of these challenges with a single, comprehensive deployment.

:rocket: Key Features

Streamlined Deployment

  • Complete infrastructure and application deployment in ~60 minutes
  • No Kubernetes expertise required - AWS EKS Auto Mode handles all node management
  • Includes everything: SSL certificates, monitoring, backups, security policies

Enterprise-Ready from Day One

  • High Availability: Multi-AZ deployment with automatic failover
  • Auto-scaling: Scales from small clinics to large hospitals automatically
  • Disaster Recovery: Cross-region backup and restore capabilities built-in
  • Security: WAFv2, 6 KMS encryption keys, network policies, RBAC, Pod Security Standards
  • Compliance: Extensive app and audit logs, VPC flow logs, CloudTrail integration

Cost-Optimized

  • Small clinic: ~$385/month
  • Mid-size practice: ~$816/month
  • Large hospital: ~$2,636/month
  • Automatic scaling means you only pay for what you use

Comprehensive Monitoring

  • CloudWatch integration included by default
  • Optional Prometheus/Grafana stack with one-command installation
  • Distributed tracing with Jaeger
  • Log aggregation with Loki

:hammer_and_wrench: Technical Architecture

Infrastructure Stack:

  • Compute: EKS with Auto Mode (Kubernetes 1.33, Bottlerocket OS)
  • Database: Aurora Serverless V2 (MySQL 8.0)
  • Cache: Valkey Serverless (Redis-compatible)
  • Storage: EFS with encryption
  • Security: WAFv2, KMS, Private subnets

What’s Included:

  • Complete Terraform modules (modular structure)
  • All Kubernetes manifests
  • 15+ operational scripts (backup, restore, SSL management, security, etc.)
  • Comprehensive documentation
  • Troubleshooting guides

:open_book: Documentation Highlights

The repository includes extensive documentation:

  • Step-by-step deployment guide
  • Architecture deep-dive
  • Cost analysis and optimization strategies
  • Backup and disaster recovery procedures
  • Troubleshooting guide
  • Security best practices including jumpbox architecture

:handshake: How This Complements Existing OpenEMR Deployments

This isn’t meant to replace existing deployment methods but to provide another option for organizations that:

  • Want to leverage AWS cloud services
  • Need enterprise-grade infrastructure
  • Require automatic scaling and high availability
  • Want managed infrastructure without operational overhead

:link: Links

GitHub Repository: GitHub - Jmevorach/openemr-on-eks: Run OpenEMR on EKS!

Quick Start:

bash

# Clone the repository
git clone https://github.com/Jmevorach/openemr-on-eks
cd openemr-on-eks

# Deploy infrastructure (Terraform)
cd terraform
terraform init
terraform apply

# Deploy OpenEMR (Kubernetes)
cd ../k8s
./deploy.sh

:thought_balloon: Feedback Welcome!

I’d love to hear from the community:

  • What features would you like to see added?
  • Any issues or questions about the deployment?
  • Ideas for making this even more accessible?

I’m also happy to transfer this project to the official OpenEMR organization if that would benefit the community - just let me know!

:pray: Acknowledgments

Thanks to the entire OpenEMR community for building such amazing software. This deployment solution is my contribution back to help make OpenEMR even more accessible to healthcare organizations worldwide.

Special thanks to those who’ve already started testing and providing feedback in the Slack channels!

5 Likes

Totally cool! Thank you! How do I connect with your Slack?

Thanks really appreciate it! And no problem happy to help!

You can integrate AlertManager with Slack by specifying the SLACK_WEBHOOK_URL and SLACK_CHANNEL environment variables before running install-monitoring.sh. You can also set up a file named openemr-monitoring.conf (who’s structure is detailed openemr-monitoring.conf.example in the “monitoring” folder) where you define SLACK_WEBHOOK_URL and SLACK_CHANNEL too. Either approach will work.

You can find documentation from Slack for generating the webhook URL for a Slack channel here: Sending messages using incoming webhooks | Slack.

The integration will get built on line 592 in install-monitoring.sh and you can also see there the template for the slack messages as well which you should be able to edit and customize further should you want to.