Unofficial Unraid-ready fork of kennym/find-my-timeline.
Find My Timeline polls devices available through Apple's Find My service at configurable intervals and stores their historical positions in a local SQLite database. The WebUI displays devices, routes and timelines on an interactive map.
This project is not affiliated with or endorsed by Apple or Lime Technology.
Install the app from Community Applications once published, or use the template directly:
https://raw.githubusercontent.com/heckpiet/find-my-timeline-unraid/master/templates/find-my-timeline.xml
The Docker image is published through GitHub Container Registry:
ghcr.io/heckpiet/find-my-timeline-unraid:latest
- Install the container and set
ICLOUD_USERNAMEto your Apple ID email address. - Keep both persistent paths enabled:
/app/data/root/.find-my-timeline
- Open the container console in Unraid.
- Run:
find-my-timeline auth- Enter your Apple ID password and the newly requested two-factor authentication code.
- Restart the container.
The Apple session is stored in the persistent session path. Re-run the command when Apple expires the session.
| Variable | Default | Description |
|---|---|---|
ICLOUD_USERNAME |
— | Apple ID email address |
ICLOUD_PASSWORD |
unset | Optional; entering the password interactively is recommended |
POLL_MIN_INTERVAL |
7 |
Minimum interval between requests in minutes |
POLL_MAX_INTERVAL |
10 |
Maximum interval between requests in minutes |
DATABASE_PATH |
/app/data/locations.db |
SQLite database path |
WEB_HOST |
0.0.0.0 |
Web server binding inside the container |
WEB_PORT |
5000 |
Internal WebUI port |
TZ |
Europe/Berlin in the Unraid template |
Container timezone |
| Container path | Purpose |
|---|---|
/app/data |
SQLite database containing device and location history |
/root/.find-my-timeline |
Apple session and cookie files |
Back up both paths, especially /app/data.
The current WebUI does not provide its own authentication. Do not expose port 5000 directly to the internet. Access it through your trusted local network, a VPN such as WireGuard or Tailscale, or a reverse proxy with authentication.
Location data is sensitive personal information. Protect the appdata directory and its backups accordingly.
mkdir -p data session
docker run -d \
--name find-my-timeline \
--restart unless-stopped \
-p 5000:5000 \
-e ICLOUD_USERNAME=your-apple-id@example.com \
-e POLL_MIN_INTERVAL=7 \
-e POLL_MAX_INTERVAL=10 \
-v "$(pwd)/data:/app/data" \
-v "$(pwd)/session:/root/.find-my-timeline" \
ghcr.io/heckpiet/find-my-timeline-unraid:latestAuthenticate interactively afterward:
docker exec -it find-my-timeline find-my-timeline auth
docker restart find-my-timeline| Command | Description |
|---|---|
find-my-timeline auth |
Authenticate with iCloud and handle 2FA |
find-my-timeline poll |
Start location polling only |
find-my-timeline web |
Start the WebUI only |
find-my-timeline start |
Start polling and the WebUI |
find-my-timeline stats |
Show database statistics |
find-my-timeline devices |
List tracked devices |
- Merge the Unraid preparation branch into
master. - Confirm the GitHub Actions Docker workflow succeeds.
- Open the package settings for
ghcr.io/heckpiet/find-my-timeline-unraidand set the package visibility to Public. - Pull and test
ghcr.io/heckpiet/find-my-timeline-unraid:lateston Unraid. - Validate and scan the repository at the Unraid Community Applications submission portal.
- Submit the repository for review once all checks pass.
The application remains licensed under the MIT License. Original copyright notices and attribution are retained in LICENSE.


