feat(unraid): publish container to GHCR and add Community Applications app - #253
Merged
Conversation
…s template - add docker-publish workflow: build build/Dockerfile and push ghcr.io/stemdeckapp/stemdeck on release + manual dispatch (linux/amd64) - add templates/stemdeck.xml: Unraid Docker template (port 8000, /app/jobs + /cache volumes, persistent library default, optional NVIDIA runtime vars) - add ca_profile.xml at repo root for the CA submission scan - document the GHCR image and Unraid install in README The published image keeps the default Linux x86_64 (CUDA) torch wheel, so a single image runs on CPU by default and uses the GPU when started with --runtime=nvidia; _detect_device() auto-selects CUDA.
Drop the workflow_dispatch version input and compute it with git describe (hatch-vcs style) so manual builds carry a real dev version. Fetch full history + tags on checkout so git describe resolves.
Add a push trigger on main so every merge builds and pushes ghcr.io/stemdeckapp/stemdeck:edge. :edge never moves :latest, which stays reserved for stable releases.
…n the run example
Align DEFAULT_PORT (app/core/settings.py) and the desktop launcher's configured_port() fallback (desktop/src-tauri/src/main.rs) from 8080 to 8000 so every path -- container, run.sh, and desktop -- shares one default. Update the settings comment and the port-default test accordingly.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Makes StemDeck installable on Unraid via Community Applications (CA), and publishes the server container to GHCR so any self-hosted deployment can pull it.
No application code changes: the existing server container (
build/Dockerfile) already runs the same FastAPI app. This is purely distribution.Changes
.github/workflows/docker-publish.yml- buildsbuild/Dockerfileand pushesghcr.io/stemdeckapp/stemdeckonrelease: published(and manualworkflow_dispatch). linux/amd64, GHCR login viaGITHUB_TOKEN, action SHAs pinned.templates/stemdeck.xml- Unraid Docker template: port 8000,/app/jobs+/cachevolumes mapped to appdata,STEMDECK_PERSIST_LIBRARY=1default, optional NVIDIA runtime vars, 1024x1024 icon fromdesktop/src-tauri/icons/icon.png.ca_profile.xml(repo root) - author profile read by the CA submission scan.README.md- GHCRdocker runsnippet + an Unraid install subsection.Why one image covers CPU and GPU
The image keeps the default Linux x86_64 torch wheel, which is the CUDA build (the desktop tarballs swap it to CPU in
scripts/linux/make-portable.sh, but the container does not)._detect_device()inapp/core/config.pyauto-selects CUDA whentorch.cuda.is_available(). So the same image runs on CPU by default and uses the GPU when started with--runtime=nvidia.Validation
xmllint --nooutpasses on both XML files.Manual follow-ups (not in this PR)
Support/Forumat it (currently GitHub issues).Known limitation
RTX 50-series (Blackwell / sm_120) may fall back to CPU: torch 2.6 + cu124 predates sm_120, and the project pins away from torch 2.7+ due to the torchaudio writer removal. Noted in the template Overview.