Stop wasting money on idle cloud resources! CloudNap is a 100% self-hosted, open-source AWS scheduler. Define sleep windows for EC2 & RDS, set temporary resource lease TTLs, and track your accumulated savings in real-time with a premium Dark/Light dashboard. Runs in a single Docker container with live AWS Pricing API integration.
No reviews yetBe the first to leave a review for CloudNap
Maker
📌
Hey Product Hunt! 👋
I’m Amir, the creator of CloudNap.
Like many developers, I’ve experienced the pain of checking my AWS bill only to realize a high-performance database or staging environment ran all weekend completely idle.
AWS has its own scheduler, but deploying it requires complex CloudFormation templates, DynamoDB setups, Lambdas, and continuous maintenance. On the other hand, commercial SaaS alternatives require monthly subscriptions and broad AWS IAM write permissions, which poses security risks.
I wanted something lightweight, visual, 100% self-hosted, and free. So, I built CloudNap.
Key features:
1. 🐳 **Single Container**: Up and running in less than 60 seconds with Docker Compose.
2. 🕒 **Flexible Sleep Windows**: One-time or recurring (daily/weekly) schedules entirely in UTC.
3. ⏳ **TTL Leases**: Set automatic expiry times for staging environments so they terminate themselves.
4. 💰 **Real-Time Savings Engine**: Automatic integration with the free AWS Pricing API to calculate your exact financial savings.
5. 🔔 **Slack & Telegram Integrations**: Get notified instantly when systems sleep, wake, or manual holds are applied.
CloudNap is 100% free and open-source under the MIT license. I’d love to hear your feedback, feature ideas, and suggestions in the comments below!
Happy saving! 😴☁️
Report
How does the live AWS Pricing API integration actually work in a self-hosted setup, are you making outbound calls from my container or is there some other mechanism?
Report
Maker
@kapkac87971 "Hi! Yes, the container makes secure outbound HTTPS calls directly to the official AWS Pricing API (via the pricing service client in us-east-1) using your own local AWS credentials/IAM role. Because it’s fully self-hosted, your data and queries never leave your network. To optimize performance and avoid throttling, we also cache these price queries locally. Thanks for asking!"
Report
This is right up my alley, I’m into self-hosting for exactly this reason. One thing I’m curious about: you mention the SaaS options needing broad IAM write access as a risk, but CloudNap still has to start and stop EC2/RDS, so it needs write perms too. How do you keep that footprint minimal? Is there a scoped IAM policy you ship, or a way to lock it to specific resource tags?
Report
Maker
@lucency "That’s a great question! Here is how we keep the security footprint minimal:
Zero External Sharing: Unlike SaaS solutions, your IAM credentials never leave your own server/VPC.
Scoped IAM Policy: We ship a minimal IAM policy in our README. It only requests start/stop permissions for EC2/RDS (no delete or admin permissions).
Tag-Based Lockdown: You can easily restrict the IAM role's policy using AWS IAM Condition keys (e.g., StringEquals: aws:ResourceTag/CloudNap: "true"). This ensures CloudNap can only stop/start resources explicitly tagged for sleep schedules, minimizing the blast radius to zero.
Let me know if you need help setting up the tag-scoped policy!"
Report
Spun it up over the weekend and the Docker setup took maybe five minutes, which I appreciated. The real-time savings counter is oddly satisfying to watch tick up overnight.
Report
Maker
@nimet3paw "Thank you so much! We put a lot of effort into making the Docker setup zero-config and lightning-fast. Glad to hear you enjoyed the real-time savings counter—watching those dollars saved tick up is definitely the most satisfying part of the dashboard! Let us know if you have any feature requests!"
How does the live AWS Pricing API integration actually work in a self-hosted setup, are you making outbound calls from my container or is there some other mechanism?
@kapkac87971 "Hi! Yes, the container makes secure outbound HTTPS calls directly to the official AWS Pricing API (via the pricing service client in us-east-1) using your own local AWS credentials/IAM role. Because it’s fully self-hosted, your data and queries never leave your network. To optimize performance and avoid throttling, we also cache these price queries locally. Thanks for asking!"
This is right up my alley, I’m into self-hosting for exactly this reason. One thing I’m curious about: you mention the SaaS options needing broad IAM write access as a risk, but CloudNap still has to start and stop EC2/RDS, so it needs write perms too. How do you keep that footprint minimal? Is there a scoped IAM policy you ship, or a way to lock it to specific resource tags?
@lucency "That’s a great question! Here is how we keep the security footprint minimal:
Zero External Sharing: Unlike SaaS solutions, your IAM credentials never leave your own server/VPC.
Scoped IAM Policy: We ship a minimal IAM policy in our README. It only requests start/stop permissions for EC2/RDS (no delete or admin permissions).
Tag-Based Lockdown: You can easily restrict the IAM role's policy using AWS IAM Condition keys (e.g., StringEquals: aws:ResourceTag/CloudNap: "true"). This ensures CloudNap can only stop/start resources explicitly tagged for sleep schedules, minimizing the blast radius to zero.
Let me know if you need help setting up the tag-scoped policy!"
Spun it up over the weekend and the Docker setup took maybe five minutes, which I appreciated. The real-time savings counter is oddly satisfying to watch tick up overnight.
@nimet3paw "Thank you so much! We put a lot of effort into making the Docker setup zero-config and lightning-fast. Glad to hear you enjoyed the real-time savings counter—watching those dollars saved tick up is definitely the most satisfying part of the dashboard! Let us know if you have any feature requests!"