How giof71/audirvana-docker works
Purpose and Entry Points
This repository builds and runs self-built Docker images for proprietary Audirvana Studio or Audirvana Origin on Linux amd64 and arm64 hosts. It deliberately does not distribute images containing Audirvana binaries.
Primary operator entry points are build-origin.sh, build-studio.sh, and Compose startup through docker-compose.yaml. Builder-enabled alternatives are docker-compose-origin.yaml and docker-compose-studio.yaml.
Image Build Pipeline
The common image recipe is build/Dockerfile. Root build scripts select the desired Audirvana variant and invoke Docker image builds:
• build-origin.sh
• build-studio.sh
• build/Dockerfile
The build incorporates the current proprietary application binary into a locally produced image. Rebuilding is the intended update mechanism when Audirvana releases a new version.
Container Bootstrap and Application Installation
The image contains an application-management script set under build/app/bin/. Installation is separated from normal execution, reflecting the design choice to install binaries during image build rather than incur startup-time download/install latency.
Key stages are represented by:
• build/app/bin/install-dep.sh — installs runtime dependencies.
• build/app/bin/install-util.sh — installs supporting utilities.
• build/app/bin/install-app.sh — installs the selected Audirvana application.
• build/app/bin/cleanup.sh — removes build/install artifacts.
• build/app/bin/run.sh — container runtime launcher.
build/Dockerfile orchestrates these scripts into the final runtime image.
Variant Selection Boundary
Audirvana type is an explicit configuration boundary: BINARY_TYPE must identify studio or origin. Dedicated build scripts and Compose files provide ergonomic paths for each variant, while the generic Compose path expects the configured image/application selection.
Relevant paths:
• build-origin.sh
• build-studio.sh
• docker-compose-origin.yaml
• docker-compose-studio.yaml
• docker-compose.yaml
Runtime Configuration and Host Integration
Compose injects runtime settings from a local .env, seeded from sample.env. The principal boundary is between the containerized service and host-owned identity, audio devices, and music storage:
• PUID / PGID run the application under a host-compatible user.
• AUDIO_GID grants optional access to host ALSA/audio-group resources.
• MUSIC_DIRECTORY is mounted into the container at /music.
• ACCEPT_EULA is an explicit mandatory gate.
Paths: sample.env, docker-compose.yaml, music/.placeholder.
Infrastructure and External Dependencies
Docker and Docker Compose are required on the host; the repository targets Linux systems, including 64-bit Raspberry Pi environments. The container depends on Audirvana-provided binaries obtained during local build and may use host audio hardware through ALSA-related group access. At runtime, Audirvana can act as a music server/controller and can integrate with external UPnP renderers; renderer services are not implemented in this repository.
Operational Flow
1. Operator configures .env from sample.env, including EULA acceptance, app type, host IDs, and music mount.
2. Operator builds a Studio or Origin image via root scripts, or lets the variant-specific Compose file build it.
3. Docker executes build/Dockerfile, installs dependencies/utilities and the selected Audirvana binary, then cleans intermediate artifacts.
4. Compose starts the container; build/app/bin/run.sh launches Audirvana using mounted music and optional host audio access.
Main entry points: Dockerfile Image recipe · docker-compose.yaml Generic Compose · install-app.sh Install Audirvana · build-origin.sh Origin build
Components 20
Local image build
Builds a private image containing the selected Audirvana binary.
- Origin build
build-origin.sh - Studio build
build-studio.sh - Image recipe · Orchestrates installation into the final runtime image.
build/Dockerfile - Install dependencies
build/app/bin/install-dep.sh - Install utilities
build/app/bin/install-util.sh - Install Audirvana · Installs the selected Studio or Origin binary.
build/app/bin/install-app.sh - Clean artifacts
build/app/bin/cleanup.sh - Local Audirvana image · Locally built; proprietary binaries are not distributed by the repository.
Container runtime
Compose configures and starts Audirvana with host integration.
- Environment template · Defines EULA, variant, identity, audio, and music settings.
sample.env - Local .env · Operator-specific Compose environment values.
- Generic Compose · Starts the configured image and injects runtime settings.
docker-compose.yaml - Origin Compose build · Builder-enabled Origin path.
docker-compose-origin.yaml - Studio Compose build · Builder-enabled Studio path.
docker-compose-studio.yaml - Audirvana container · Runs with host-compatible identity and optional audio-group access.
- Runtime launcher · Launches Audirvana after image installation is complete.
build/app/bin/run.sh
Other components
- Operator
- Host music library · Mounted into the container at /music.
music/.placeholder - Host ALSA audio · Optional access through AUDIO_GID.
- Audirvana binary source · Obtained during the local image build.
- UPnP renderers · Optional runtime integration; not implemented here.
Connections 22
- Operator → Environment template: copies and configures
- Environment template → Local .env: seeds
- Operator → Origin build: builds Origin
- Operator → Studio build: builds Studio
- Origin build → Image recipe: selects origin
- Studio build → Image recipe: selects studio
- Image recipe → Install dependencies: runs
- Install dependencies → Install utilities: then
- Install utilities → Install Audirvana: then
- Audirvana binary source → Install Audirvana: installed during build
- Install Audirvana → Clean artifacts: then
- Clean artifacts → Local Audirvana image: produces
- Origin Compose build → Image recipe: builds Origin image
- Studio Compose build → Image recipe: builds Studio image
- Local .env → Generic Compose: injects settings
- Generic Compose → Local Audirvana image: uses configured image
- Local Audirvana image → Audirvana container: runs as
- Generic Compose → Audirvana container: starts
- Audirvana container → Runtime launcher: executes
- Host music library → Audirvana container: mounted at /music
- Host ALSA audio → Audirvana container: optional ALSA access
- Audirvana container → UPnP renderers: may integrate via UPnP