How I Run 24/7 Automations for FREE Using GitHub Actions (No Servers Needed)
Source: Dev.to
Introduction
I was tired of paying for servers just to run simple scheduled scripts. A VPS cron job can cost $5–20 /month, and AWS Lambda adds complexity and occasional surprise bills. GitHub Actions provides 2,000 free minutes per month on the free tier—enough to run a script every 2 hours, 24/7, for $0.
GitHub Actions workflow
Create the file .github/workflows/automation.yml in your repository:
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 }}
Common use cases
- Price monitoring – Track competitor prices and receive alerts.
- Content aggregation – Pull data from APIs and compile reports.
- Health checks – Ping services and alert on failures.
- Data backups – Export from one service and push to another.
Limits on the free tier
| Feature | Free tier limit | Notes |
|---|---|---|
| Minutes per month | 2,000 | Keep individual scripts under ~5 minutes each. |
| Concurrent jobs | 20 | Use workflow_dispatch to queue additional runs. |
| Minimum cron interval | 5 minutes | Sufficient for most monitoring tasks. |
| Repository activity | Must be active within the last 60 days | Add a lightweight “keep‑alive” workflow if needed. |
Push notifications with ntfy.sh
You can send free push notifications to your phone using ntfy.sh:
import requests
def alert(message):
requests.post(
"https://ntfy.sh/your-topic",
data=message,
headers={"Priority": "high"}
)
Now you’ll receive mobile alerts whenever your automations detect something important.
Workflow templates
- FREE starter – 1 workflow + guide:
- Full pack – $79 for 3 workflows + Python scripts:
The free version is enough to get started. Grab it, modify it, and ship it.
Questions
If you have any questions, drop them in the comments. I’ve been running this setup for months and am happy to help troubleshoot.