Sign inSign up

awkto/do-cron

By awkto

•Updated 8 months ago

Auto-delete DigitalOcean droplets based on schedule tags

Image
0

1.5K

awkto/do-cron repository overview

⁠do-cron

Auto-deletes DigitalOcean droplets based on schedule tags. Supports multiple DO teams/tokens.

⁠Tags

TagBehavior
delete-6pmDelete at/after 6 PM Brisbane time
delete-10pmDelete at/after 10 PM Brisbane time
delete-fridayDelete on Fridays
keepNever delete (safety override)

Untagged droplets are never touched.

⁠Timing logic

  • Daily tags: If a droplet was created after the target hour today, it's skipped until tomorrow.
  • Weekly tags: If a droplet was created today (the target day), it's skipped until next week.
  • Container checks every hour (configurable via CHECK_INTERVAL).

⁠Quick start

# Create config directory and .env file
mkdir -p ~/configs/do-cron-data

cat > ~/configs/do-cron-data/.env <<EOF
DO_TEAMS=[{"name":"team1","token":"dop_v1_xxx"},{"name":"team2","token":"dop_v1_yyy"}]
DRY_RUN=true
CHECK_INTERVAL=3600
EOF

# Run the container
docker run -d --restart=always --name do-cron \
  --env-file ~/configs/do-cron-data/.env \
  -v ~/configs/do-cron-data/logs:/app/logs \
  awkto/do-cron:latest

# Check logs
docker logs do-cron

# Once verified, set DRY_RUN=false in .env and restart

⁠Adding new schedule tags

Edit SCHEDULE_TAGS in auto_delete_droplets.py:

SCHEDULE_TAGS = {
    "delete-6pm":    {"type": "daily", "hour": 18},
    "delete-10pm":   {"type": "daily", "hour": 22},
    "delete-friday": {"type": "weekly", "weekday": 4},  # Monday=0
}

Tag summary

Content type

Image

Digest

sha256:1e5e290a4…

Size

17.2 MB

Last updated

8 months ago

docker pull awkto/do-cron