All apps · 0 apps
Launch-Alert
Docker app from hmallen's Repository
Overview
Readme
View on GitHubLaunch Alert for Unraid
This directory packages Launch Alert for Unraid's Docker manager and Community Applications. The app runs in the background and sends ntfy notifications 30 minutes before eligible rocket launches with livestreams. It has no web interface or published ports.
Public images are available at ghcr.io/hmallen/launch-alert:latest and ghcr.io/hmallen/launch-alert:1.0.0. You can install the template manually using the steps below. Availability in Community Applications requires submission and approval through its portal.
Install and test on your Unraid server
Enable Docker in Unraid's Settings → Docker. Keep the server running and its clock synchronized, with outbound HTTPS access to
ll.thespacedevs.comand your ntfy server.Download launch-alert.xml to
/boot/config/plugins/dockerMan/templates-user/my-launch-alert.xmlon the server. Create thetemplates-userdirectory if necessary. For an unpublished checkout, copy itstemplates/launch-alert.xmlto that path instead.In Docker → Add Container, select the
Launch-Alertuser template. Enable Advanced View to inspect all settings.Set Private ntfy topic to a long, random value from a password manager. Subscribe your devices to that same topic in the ntfy app or at
https://ntfy.sh/YOUR_TOPIC, then enable notification permissions and background delivery. Keep this topic private: anyone who knows an unprotected topic can subscribe and publish to it.Review the appdata path, notification server, lead time, and display timezone. Leave Display time zone blank to use your Unraid server's timezone, or enter an IANA timezone such as
Europe/Londonfor local times in messages.Apply the template, enable the container's Autostart switch, and inspect its logs. After the first successful schedule refresh, Docker health should become healthy.
From the Unraid terminal, send a real test notification:
docker exec Launch-Alert python -m launch_alert test-notification docker exec Launch-Alert python -m launch_alert statusVerify receipt on every device while locked or idle. The container name in these commands must match the name in your template.
If the image has not been published yet, build a local image from a checkout on the Unraid server:
docker build -t launch-alert:local .
In the template, temporarily set Repository to launch-alert:local and install it using the steps above. This validates your local build; repeat the installation with the published GHCR image before submission.
Settings and persistent data
| Template setting | Default | Purpose |
|---|---|---|
| Appdata | /mnt/user/appdata/launch-alert |
Maps to /config; contains the SQLite state and delivery history. |
| ntfy server | https://ntfy.sh |
Server used by both the service and your devices. |
| Private ntfy topic | Required; blank | Private random topic shared with your devices. |
| ntfy access token | Empty | Optional bearer token for authenticated publishing. |
| Reminder lead time (minutes) | 30 |
Minutes before the latest scheduled launch time. |
| Schedule refresh interval (seconds) | 300 |
Interval between launch schedule refreshes. |
| Display time zone | Empty | Uses Unraid's timezone; set explicitly to override. Scheduling uses UTC. |
| Maximum data age (seconds) | 900 |
Stops reminders when schedule data becomes stale. |
Advanced settings include an optional Launch Library API token. Masked token fields hide their display in the form; Unraid still stores the values in its container configuration. Protect the flash drive, appdata backups, and server access accordingly.
The template's --user=99:100 runs the process as Unraid's nobody:users. Unraid creates new appdata directories with the appropriate ownership; an existing directory must also be writable by that identity. If permissions need repair, stop the container and correct ownership on this app's directory only. There are no PUID or PGID variables.
When installing through Community Applications, Unraid may replace the declared appdata path with your configured appdata root plus the container name (for example, /mnt/user/appdata/Launch-Alert). Check the path shown before applying the template. A local user-template installation can retain the declared lowercase path.
Updates preserve the appdata directory. Stop the container before backing it up; retain its SQLite database to preserve reminder history and pending retries. Use one instance per database. Unraid's normal image update controls work once the image is public. Restart or recreate the container after changing its configuration.
The app's health endpoint stays inside the container; use Docker health and the status command above. An unhealthy status does not itself restart a container. Host outages and device push settings can prevent alerts; see device setup and reliability details, including Android background delivery and self-hosted ntfy's iOS requirements.
Tested compatibility
Release v1.0.0 was tested on Unraid 7.3.3 with Docker 29.8.2 on 2026-10-16, using the public latest image. Verification covered installation as UID 99/GID 100, read-only container operation, persistent appdata after restart, Docker health, live schedule refreshes, and ntfy publishing. Android notification delivery was confirmed while the device was locked after correcting its subscription settings.
Publish and submit to Community Applications
Keep the source repository public at hmallen/launch-alert, including its MIT license, icon,
ca_profile.xml, and template. Update the repository, maintainer, support, icon, and registry URLs together if publishing under another account.In GitHub Actions → Publish image → Run workflow, enter a version such as
v1.0.0, or push a matching release tag. The workflow buildslinux/amd64andlinux/arm64images after verification. Stable versions updatelatest; prereleases such asv1.1.0-rc.1publish only their full version tag. If the GHCR package is private after its first publication, set its visibility to Public in GitHub's package settings; a public source repository alone does not make its package public.Verify the release can be pulled without registry credentials. On a machine without saved GHCR credentials, run:
docker pull ghcr.io/hmallen/launch-alert:latestTest each advertised architecture on suitable hardware. Install the published image through the template on a current Unraid release, confirm appdata permissions, restart persistence, health status, and delivery to locked devices, and record the Unraid version tested.
Run the repository checks before submission:
python3 tools/validate_unraid.py python3 -m unittest discover -s tests -v python3 tools/integration_smoke.py docker build -t launch-alert:unraid . python3 tools/unraid_smoke.pyUse the Community Applications submission portal. Submit
https://github.com/hmallen/launch-alertas the repository, follow the portal's Validate and Scan checks, address reported issues, then submit for review. Approval and availability in Apps are controlled by Community Applications. Follow the current official starter instructions if requirements change.
Suggested description for the submission:
Launch Alert sends ntfy notifications to phones and computers shortly before rocket launches that have a livestream. It follows Launch Library 2 schedule changes, persists delivery state in appdata, and retries temporary notification failures. The default lead time is 30 minutes. Requires a configured ntfy topic and an always-on server; no web interface or inbound ports are needed.
Use GitHub Issues for app support. Publishing the image, completing a real Unraid installation, and submitting the repository are release steps; they are not performed by the local validation scripts.
The template's beta flag was removed after the real Unraid installation and locked-device delivery tests passed. Local container smoke checks exercise permissions, appdata persistence, and health with fixtures; they do not contact the launch API or send real notifications.
Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/hmallen/launch-alert:latestRuntime arguments
- Network
bridge- Shell
sh- Privileged
- false
- Extra Params
--user=99:100 --restart=unless-stopped --read-only --cap-drop=ALL --security-opt=no-new-privileges --tmpfs=/tmp:rw,noexec,nosuid,size=16m
Template configuration
Persistent reminder history and retry state. Keep this folder across container updates.
- Target
- /config
- Default
- /mnt/user/appdata/launch-alert
HTTPS ntfy server. The default supports Android, iPhone, and desktop clients.
- Target
- NTFY_SERVER
- Default
- https://ntfy.sh
Required: enter your own long random topic and subscribe every device to it. Anyone who knows an unreserved public topic can read and publish to it. Do not reuse an example topic.
- Target
- NTFY_TOPIC
Send reminders this many minutes before the published launch time (1-1440).
- Target
- LEAD_MINUTES
- Default
- 30
Optional IANA time zone, such as America/Chicago. Leave blank to use the Unraid server's time zone.
- Target
- DISPLAY_TIMEZONE
Optional bearer token for an authenticated ntfy server. Masking hides this value in the form; Unraid still stores it in the container configuration.
- Target
- NTFY_TOKEN
Keep 300 for the free Launch Library API (15 requests/hour per IP). Must be shorter than the maximum data age.
- Target
- POLL_SECONDS
- Default
- 300
Suppress notifications when schedule data is older than this. Must exceed the refresh interval (60-3600).
- Target
- MAX_DATA_AGE_SECONDS
- Default
- 900
Optional Launch Library 2 API token for a paid account.
- Target
- LL2_TOKEN
SQLite database in the persistent appdata mount.
- Target
- DB_PATH
- Default
- /config/launch-alert.sqlite3
Unraid supplies settings as environment variables.
- Target
- ENV_FILE
- Default
- /dev/null