I got tired of paying for servers just to run simple scheduled scripts. Cron jobs on a VPS? $5-20/month. AWS Lambda? Complexity overhead and surprise bills.
Then I realized: GitHub Actions gives you 2,000 free minutes/month on the free tier. That's enough to run a script every 2 hours, 24/7, for $0.
The Setup (5 Minutes)
Create .github/workflows/automation.yml:
name: 24/7 Automation
on:
schedule:
- cron: '0 */2 * * *' # Every 2 hours
workflow_dispatch: # Manual trigger
jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install requests
- run: python your_script.py
env:
API_KEY: ${{ secrets.API_KEY }}
What I Automate
- Price monitoring - Track competitor prices, get alerts
- Content aggregation - Pull data from APIs, compile reports
- Health checks - Ping my services, alert on failures
- Data backups - Export from one service, push to another
The Limits (And How to Work Around Them)
| Limit | Free Tier | Workaround |
|---|---|---|
| Minutes/month | 2,000 | Keep scripts under 5 min each |
| Concurrent jobs | 20 | Queue with workflow_dispatch |
| Cron minimum | 5 min | Acceptable for most monitoring |
| Repo must be active | 60 days | Add a keep-alive workflow |
Notifications with ntfy.sh
I use ntfy.sh for free push notifications:
import requests
def alert(message):
requests.post(
"https://ntfy.sh/your-topic",
data=message,
headers={"Priority": "high"}
)
Now I get mobile alerts whenever my automations detect something important.
Full Template Pack
I packaged my production-tested workflows into a template pack:
- FREE starter (1 workflow + guide): gumroad.com/l/zheyl
- Full pack ($79 - 3 workflows + Python scripts): gumroad.com/l/nvwulz
The free version is enough to get started. Grab it, modify it, ship it.
Questions? Drop them in the comments. I've been running this setup for months and happy to help troubleshoot.
Top comments (1)
This is a solid, practical setup that actually solves a real ops problem!!
Using GitHub Actions as a zero cost scheduler is smart and realistic for small but constant workloads...
The example workflow is clean and easy to reason about, which matters when automations fail at 3am?!
Calling out the limits and real workarounds shows you have run this in production, not just tested it once...
ntfy.sh is a good choice here, simple, fast, and it fits the “no infra” philosophy nicely!
Overall this is good DevOps thinking, minimize moving parts, accept constraints, and still ship something reliable!!!