The best way to install AudioMuse-AI on K3S (kubernetes) is by AudioMuse-AI Helm Chart repository
- Prerequisites:
- A running
K3S cluster. kubectlconfigured to interact with your cluster.helminstalled.JellyfinorNavidromeorLyrioninstalled.- Respect the HW requirements (look the specific chapter)
- A running
You can directly check the Helm Chart repo for more details and deployments examples.
This section provides a minimal guide to deploy AudioMuse-AI on a K3S (Kubernetes) cluster by directly using the deployment manifests.
-
Prerequisites:
- A running K3S cluster.
kubectlconfigured to interact with your cluster.JellyfinorNavidromeorLyrioninstalled.- Respect the HW requirements (look the specific chapter)
-
Jellyfin Configuration:
- Navigate to the
deployment/directory. - Edit
deployment.yamlto configure mandatory parameters:- Secrets:
jellyfin-credentials: Updateapi_tokenanduser_id.postgres-credentials: UpdatePOSTGRES_USER,POSTGRES_PASSWORD, andPOSTGRES_DB.gemini-api-credentials(if using Gemini for AI Naming): UpdateGEMINI_API_KEY.mistral-api-credentials(if using Mistral for AI Naming): UpdateMISTRAL_API_KEY.
- ConfigMap (
audiomuse-ai-config):- Update
JELLYFIN_URL. - Ensure
POSTGRES_HOST,POSTGRES_PORT, andREDIS_URLare correct for your setup (defaults are for in-cluster services).
- Update
- Secrets:
- Navigate to the
-
Navidrome/LMS (Open Subsonic API Music Server) Configuration:
- Navigate to the
deployment/directory. - Edit
deployment-navidrome.yamlto configure mandatory parameters:- Secrets:
navidrome-credentials: UpdateNAVIDROME_USERandNAVIDROME_PASSWORD.postgres-credentials: UpdatePOSTGRES_USER,POSTGRES_PASSWORD, andPOSTGRES_DB.gemini-api-credentials(if using Gemini for AI Naming): UpdateGEMINI_API_KEY.mistral-api-credentials(if using Mistral for AI Naming): UpdateMISTRAL_API_KEY.
- ConfigMap (
audiomuse-ai-config):- Update
NAVIDROME_URL. - Ensure
POSTGRES_HOST,POSTGRES_PORT, andREDIS_URLare correct for your setup (defaults are for in-cluster services).
- Update
-
The same instruction used for Navidrome could apply to other Mediaserver that support Subsonic API. LMS for example is supported, only remember to user the Subsonic API token instead of the password.
- Secrets:
- Navigate to the
-
Lyrion Configuration:
- Navigate to the
deployment/directory. - Edit
deployment-lyrion.yamlto configure mandatory parameters:- Secrets:
postgres-credentials: UpdatePOSTGRES_USER,POSTGRES_PASSWORD, andPOSTGRES_DB.gemini-api-credentials(if using Gemini for AI Naming): UpdateGEMINI_API_KEY.
- ConfigMap (
audiomuse-ai-config):- Update
LYRION_URL. - Ensure
POSTGRES_HOST,POSTGRES_PORT, andREDIS_URLare correct for your setup (defaults are for in-cluster services).
- Update
- Secrets:
- Navigate to the
-
Deploy:
kubectl apply -f deployment/deployment.yaml
-
Access:
- Main UI: Access at
http://<EXTERNAL-IP>:8000 - API Docs (Swagger UI): Explore the API at
http://<EXTERNAL-IP>:8000/apidocs
- Main UI: Access at
AudioMuse-AI provides Docker Compose files for different media server backends:
- Jellyfin: Use
deployment/docker-compose.yaml - Navidrome: Use
deployment/docker-compose-navidrome.yaml - Lyrion: Use
deployment/docker-compose-lyrion.yaml - Emby: Use
deployment/docker-compose-emby.yaml
Choose the appropriate file based on your media server setup.
Prerequisites:
- Docker and Docker Compose installed.
JellyfinorNavidromeorLyrionorEmbyinstalled.- Respect the hardware requirements
- Optionally, you can install the
docker-model-pluginto enable the use of the Docker Model Runner for running AI models locally. If you choose this setup, usedeployment/docker-compose-dmr.yamlto configure AudioMuse-AI to communicate with DMR through an OpenAI-compatible API interface.
Steps:
-
Create your environment file:
cp deployment/.env.example deployment/.env
you can find the example here: deployment/.env.example
-
Review and Customize: Edit
.envand provide the media-server credentials (e.g.,JELLYFIN_URL,JELLYFIN_USER_ID,JELLYFIN_TOKENorNAVIDROME_*,EMBY_*,LYRION_URL) along with any API keys (GEMINI_API_KEY,MISTRAL_API_KEY). The same values are injected into every compose file, so you only need to edit them here. -
Start the Services:
docker compose -f deployment/docker-compose.yaml up -d
Swap the compose filename if you're targeting Navidrome (
docker-compose-navidrome.yaml), Lyrion (docker-compose-lyrion.yaml) or Emby (docker-compose-emby.yaml). This command starts all services (Flask app, RQ workers, Redis, PostgreSQL) in detached mode (-d).IMPORTANT: both
docker-compose.yamland.envfile need to be in the same directory. -
Access the Application: Once the containers are up, you can access the web UI at
http://localhost:8000. You can change the value of the used port by changing the FRONTEND_PORT value -
Stopping the Services:
docker compose -f deployment/docker-compose.yaml down
Swap the compose filename here as well if you started a different variant. Note:
If you use LMS instead of the password you need to create and use the Subsonic API token. Additional Subsonic API based Mediaserver could require it in place of the password.
Remote worker tip:
If you deploy a worker on different hardware (using docker-compose-worker.yaml or docker-compose-worker-nvidia.yaml), copy your .env to that machine and update WORKER_POSTGRES_HOST and WORKER_REDIS_URL so the worker can reach the main server.
For an alternative local setup, Podman Quadlet files are provided in the deployment/podman-quadlets directory for interacting with Navidrome. The unit files can be edited for use with Jellyfin.
These files are configured to automatically update AudioMuse-AI using the latest stable release and should perform an automatic rollback if the updated image fails to start.
Prerequisites:
- Podman and systemd.
JellyfinorNavidromeinstalled.- Respect the hardware requirements
Steps:
-
Navigate to the
deployment/podman-quadletsdirectory:cd deployment/podman-quadlets -
Review and Customize:
The
audiomuse-ai-postgres.containerandaudiomuse-redis.containerfiles are pre-configured with default credentials and settings suitable for local testing.
You will need to edit environment variables withinaudiomuse-ai-worker.containerandaudiomuse-ai-flask.containerfiles to reflect your personal credentials and environment.- For Navidrome, update
NAVIDROME_URL,NAVIDROME_USERandNAVIDROME_PASSWORDwith your real credentials. - For Jellyfin replace these variables with
JELLYFIN_URL,JELLYFIN_USER_ID,JELLYFIN_TOKEN; add your real credentials; and change theMEDIASERVER_TYPEtojellyfin.
Once you've customized the unit files, you will need to copy all of them into a systemd container directory, such as
/etc/containers/systemd/user/. - For Navidrome, update
-
Start the Services:
systemctl --user daemon-reload systemctl --user start audiomuse-pod
The first command reloads systemd (generating the systemd service files) and the second command starts all AudioMuse services (Flask app, RQ worker, Redis, PostgreSQL).
-
Access the Application: Once the containers are up, you can access the web UI at
http://localhost:8000. -
Stopping the Services:
systemctl --user stop audiomuse-pod