You notice the bottle is empty on a Sunday night. The pharmacy opens at 9am. That gap is where people miss doses.
Most refill reminders come from pharmacy apps. Those apps know exactly which medications you take, and they sell or share that data more often than you'd guess. You can get the reminder without handing over your health history. Host it yourself.
Here's a simple weekend build.
What you need
- Any always-on machine: an old laptop, a Raspberry Pi, or a mini PC.
- Docker installed (one command on most systems).
- A note app called Grocy. It's built for pantry tracking, but it counts pills just as well.
Step 1: Run Grocy in Docker
Create a folder and drop in a docker-compose.yml:
services:
grocy:
image: lscr.io/linuxserver/grocy:latest
container_name: grocy
ports:
- 9283:80
volumes:
- ./config:/config
restart: unless-stopped
Then run:
docker compose up -d
Open http://your-server-ip:9283. Log in with the default admin / admin and change the password immediately.
Step 2: Add each medication as a product
Go to Stock > Products > New. Add one entry per medication. Give it a name you'll recognize, not the full prescription label. Set the quantity unit to "pill."
No real drug names required if you'd rather stay vague. "Morning blue" works fine. Your server, your labels.
Step 3: Enter your pill count
When you pick up a bottle, open the product and click Add to stock. Enter the number of pills. Set the "best before" date to the day the supply runs out — count the days yourself, or let Grocy calculate it if you set a daily consumption.
Step 4: Turn on the warning
Grocy has a built-in "due soon" list. Set the warning window to 3 days. Now the dashboard shows any medication running low before you're stuck.
Want it to nag you? Grocy sends reminders through its API. Pair it with a simple notification tool like ntfy (also self-hosted) to ping your phone each morning.
Step 5: Keep it off the internet
Don't expose this to the open web. Reach it from home only, or use a private connection like Tailscale when you're out. Medication data deserves the strongest privacy setting: nobody but you can see it.
Why this beats the pharmacy app
The pharmacy app profits from knowing you. This runs on a $40 box in your closet and answers to no one. Same reminder, zero data trade.
Today's takeaway: Spin up Grocy, add your most important medication, and set a 3-day warning. Next time a bottle runs low, your server tells you on a Thursday — not a Sunday at midnight.