Docker application that automatically checks PERM case status daily and sends notifications to your phone via Pushover.
- ✅ Runs automatically once daily (configurable time via
.env) - ✅ Sends Pushover notifications to your phone
- ✅ Headless browser for free CAPTCHA solving (no API costs)
- ✅ Runs immediately on startup, then daily via cron
- Sign up at https://pushover.net
- Create an application to get your API Token
- Note your User Key
cp .env.example .envEdit .env with your credentials:
PUSHOVER_USER_KEY=your_pushover_user_key_here
PUSHOVER_API_TOKEN=your_pushover_api_token_here
CASE_ID=X-YYY-DDDDD-AAAAAA
TZ=America/Chicago
CRON_SCHEDULE=0 10 * * *
docker compose up -d| Variable | Description | Default | Example |
|---|---|---|---|
PUSHOVER_USER_KEY |
Your Pushover user key | required | asdawdawsdawdawdawawd |
PUSHOVER_API_TOKEN |
Your Pushover API token | required | asdasdjasdjhqwodqwdoubqwdo |
CASE_ID |
PERM case number to check | required | X-YYY-DDDDD-AAAAAA |
TZ |
Timezone for the check | America/Chicago |
America/New_York |
CRON_SCHEDULE |
Cron schedule format | 0 10 * * * |
0 10 * * * (10 AM daily) |
minute hour day month weekday
Examples:
0 10 * * *- 10:00 AM daily30 14 * * *- 2:30 PM daily0 */6 * * *- Every 6 hours0 8 * * 1-5- 8 AM weekdays only15 9 * * 1- 9:15 AM every Monday
# Edit .env file
vim .env
# Restart container
docker compose up -d- Opens headless Chromium browser
- Navigates to PERM website, invisible reCAPTCHA auto-solves
- Uses token to query PERM case status
- Sends result via Pushover notification
- Repeats daily
# Docker Compose v2
docker compose run --rm perm-check python check.py
# Docker Compose v1 (older versions)
docker-compose run --rm perm-check python check.py# All logs (live)
docker compose logs -f
# Last 50 lines
docker compose logs --tail 50
# Cron-specific logs
docker exec perm-check cat /var/log/cron.logcheck.py- Main scriptDockerfile- Docker imagedocker-compose.yml- Docker Compose configentrypoint.sh- Startup script with dynamic cron setuprequirements.txt- Python dependencies.env.example- Configuration template.env- Your actual configuration (not in git)