From e8613c30a10604dc57dddf11241520929c4808e9 Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Sun, 7 Dec 2025 09:07:27 -0500 Subject: [PATCH 01/10] Adding Piper and Whisper services. --- docker-compose.yml | 73 ++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 38 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 47be864..601c26c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -50,44 +50,6 @@ services: restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock - hivemind_cli: - container_name: hivemind_cli - hostname: hivemind_cli - restart: unless-stopped - image: docker.io/smartgic/hivemind-cli:alpha@sha256:896cb56b9c5b1a4eaeba0cb7c53ae173a4b0f777163cbd2573e2b183cbf41ceb - pull_policy: always - tty: true - environment: - TZ: ${TZ} - network_mode: host - volumes: - - ${ULTIMA_DOCKER_DIR}/hivemind/config:/home/${HIVEMIND_USER}/.config/hivemind:z - - ${ULTIMA_DOCKER_DIR}/hivemind/share:/home/${HIVEMIND_USER}/.local/share/hivemind:z - depends_on: - - hivemind_listener - hivemind_listener: - container_name: hivemind_listener - hostname: hivemind_listener - restart: unless-stopped - image: docker.io/smartgic/hivemind-listener:alpha@sha256:23f781ca805a81acebc16ecba7714df8214afa9e3b1929a7f1338fe1e0425103 - pull_policy: ${PULL_POLICY:-always} - tty: true - environment: - TZ: ${TZ} - network_mode: host - volumes: - - ${HIVEMIND_CONFIG_FOLDER}:/home/${HIVEMIND_USER}/.config/hivemind:z - - ${HIVEMIND_SHARE_FOLDER}:/home/${HIVEMIND_USER}/.local/share/hivemind:z - - ${HIVEMIND_CONFIG_FOLDER}/server.json:/home/${HIVEMIND_USER}/.config/hivemind-core/server.json - depends_on: - ovos_core: - condition: service_started - healthcheck: - test: ["CMD", "pgrep", "-f", "hivemind-listener"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 15s meilisearch: container_name: meilisearch environment: @@ -109,6 +71,25 @@ services: restart: unless-stopped volumes: - ollama:/root/.ollama + piper: + image: lscr.io/linuxserver/piper:latest + container_name: piper + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + - PIPER_VOICE=en_US-lessac-medium + - LOCAL_ONLY= #optional + - PIPER_LENGTH=1.0 #optional + - PIPER_NOISE=0.667 #optional + - PIPER_NOISEW=0.333 #optional + - PIPER_SPEAKER=0 #optional + - NO_STREAMING= #optional + volumes: + - ${ULTIMA_DOCKER_DIR}/faster-whisper/:/config + ports: + - 10200:10200 + restart: unless-stopped portainer-agent: container_name: portainer_agent image: portainer/agent:latest@sha256:d2e5f753e8c668f7a7916621e64d6535f212b0f6ade5389a6fcc1f6830405ccf @@ -152,6 +133,22 @@ services: volumes: - ${ULTIMA_DOCKER_DIR}/stable-diffusion-webui/data:/data - ${ULTIMA_DOCKER_DIR}/stable-diffusion-webui/output:/output + faster-whisper: + container_name: faster-whisper + environment: + PUID: ${PUID} + PGID: ${PGID} + TZ: ${TZ} + WHISPER_MODEL: large + LOCAL_ONLY: #optional + WHISPER_BEAM: 1 #optional + WHISPER_LANG: en #optional + image: lscr.io/linuxserver/faster-whisper:latest + ports: + - "10300:10300" + restart: unless-stopped + volumes: + - ${ULTIMA_DOCKER_DIR}/faster-whisper/:/config volumes: ollama: name: ollama From 3db0796c0fce90f91a33cc702bc2b1f706b89fe3 Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Sun, 7 Dec 2025 09:07:45 -0500 Subject: [PATCH 02/10] Removing OVOS in favor of HA Voice Assist. --- .gitmodules | 4 ---- ovos-compose | 1 - 2 files changed, 5 deletions(-) delete mode 100644 .gitmodules delete mode 160000 ovos-compose diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 29d84dd..0000000 --- a/.gitmodules +++ /dev/null @@ -1,4 +0,0 @@ -[submodule "ovos-compose"] - path = ovos-compose - url = https://github.com/OpenVoiceOS/ovos-docker.git - branch = dev diff --git a/ovos-compose b/ovos-compose deleted file mode 160000 index b88310b..0000000 --- a/ovos-compose +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b88310b76157feb538a7bace01aa677fab2269ca From 74404d3e39affffa3812f572f171687424dddc18 Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Tue, 9 Dec 2025 07:13:48 -0500 Subject: [PATCH 03/10] Changing detection steps since working with single Compose file. --- .gitea/workflows/pr-docker-deploy.yml | 74 +++---------------------- .gitea/workflows/renovate-pr-deploy.yml | 2 +- 2 files changed, 9 insertions(+), 67 deletions(-) diff --git a/.gitea/workflows/pr-docker-deploy.yml b/.gitea/workflows/pr-docker-deploy.yml index 07089c2..4d28946 100644 --- a/.gitea/workflows/pr-docker-deploy.yml +++ b/.gitea/workflows/pr-docker-deploy.yml @@ -73,70 +73,27 @@ jobs: id: detect_services run: | echo "Getting services from main and ${{ github.ref_name }}" - - # Dynamically find all docker-compose YAML files (root + compose folder) - COMPOSE_FILES=($(find . -maxdepth 2 -type f -name 'docker-compose*.yml' | sort)) - - echo "Found Compose files:" - printf '%s\n' "${COMPOSE_FILES[@]}" - - # Temp files to store all services - touch services_main_all.txt services_head_all.txt - - for f in "${COMPOSE_FILES[@]}"; do - echo "Processing $f" - - # Create a safe filename by replacing slashes with underscores - safe_f=$(echo "$f" | sed 's|[./]|_|g') - - # Fetch main version - git show origin/main:"$f" > "main_${safe_f}" 2>/dev/null || touch "main_${safe_f}" - cp "$f" "head_${safe_f}" - - # Extract services and append to global list - yq '.services | keys | .[]' "main_${safe_f}" >> services_main_all.txt 2>/dev/null || true - yq '.services | keys | .[]' "head_${safe_f}" >> services_head_all.txt 2>/dev/null || true - done - - # Sort and deduplicate - sort -u services_main_all.txt -o services_main_all.txt - sort -u services_head_all.txt -o services_head_all.txt + yq '.services | keys | .[]' docker-compose-main.yml | sort > services_main.txt + yq '.services | keys | .[]' docker-compose-head.yml | sort > services_head.txt echo "Creating list of modified services..." touch service_changes.txt - # Added services - comm -13 services_main_all.txt services_head_all.txt | while read service; do + comm -13 services_main.txt services_head.txt | while read service; do echo "$service: added" >> service_changes.txt done - # Modified services (parallelized) - comm -12 services_main_all.txt services_head_all.txt | xargs -n1 -P4 -I{} bash -c ' - service="{}" - modified=0 - for f in "${COMPOSE_FILES[@]}"; do - safe_f=$(echo "$f" | sed "s|[./]|_|g") - yq ".services[\"$service\"]" "main_${safe_f}" > tmp_main.yml 2>/dev/null || continue - yq ".services[\"$service\"]" "head_${safe_f}" > tmp_head.yml 2>/dev/null || continue - if ! diff -q tmp_main.yml tmp_head.yml > /dev/null; then - modified=1 - break - fi - done - if [[ $modified -eq 1 ]]; then + comm -12 services_main.txt services_head.txt | while read service; do + yq ".services[\"$service\"]" docker-compose-main.yml > tmp_main.yml + yq ".services[\"$service\"]" docker-compose-head.yml > tmp_head.yml + if ! diff -q tmp_main.yml tmp_head.yml > /dev/null; then echo "$service: modified" >> service_changes.txt fi - ' + done echo "Detected service changes:" cat service_changes.txt - if [[ -z $(cat service_changes.txt) ]]; then - echo "watchtower" > service_changes.txt - echo "Placeholder:" - cat service_changes.txt - fi - mod_svcs=$(cut -d':' -f1 service_changes.txt | sort | uniq | tr '\n' ' ' | sed 's/ *$//') echo "docker_svc_list<> "$GITHUB_OUTPUT" echo "$mod_svcs" >> "$GITHUB_OUTPUT" @@ -199,21 +156,6 @@ jobs: notification_title: "GITEA: Docker Compose Dry Run @ Benedikta" notification_message: "Starting Docker Compose dry run..." - - name: Get list of Compose files - id: compose_file_list - run: | - compose_list=$(find . -type f -name "docker-compose*.yml" \ - -a ! -name "*windows*" \ - -a ! -name "*gui*" \ - -a ! -name "*macos*" \ - -a ! -name "*hivemind*" \ - -a ! -name "*server*" \ - -a ! -name "*raspberrypi*" \ - | sed -e ':a;N;$!ba;s/[\r\n]/ /g') - - echo "compose_list=$compose_list" >> "$GITHUB_OUTPUT" - echo "Compose files: $compose_list" - - name: Generate .env from Hashicorp Vault uses: https://git.trez.wtf/Trez/hc-vault-env@main with: diff --git a/.gitea/workflows/renovate-pr-deploy.yml b/.gitea/workflows/renovate-pr-deploy.yml index 5e46f6e..5e90591 100644 --- a/.gitea/workflows/renovate-pr-deploy.yml +++ b/.gitea/workflows/renovate-pr-deploy.yml @@ -129,7 +129,7 @@ jobs: file: docker-compose.yml name: "ultima" host: 192.168.1.248 - user: pi + user: charish ssh_key: ${{ secrets.RUNNER_SSH_PRIVATE_KEY }} args: --remove-orphans -d ${{ needs.generate-service-list.outputs.svc_deploy_list }} env_file: ".env" From da8236eca9bba346189571e55e4b2fa1772bfd33 Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Tue, 9 Dec 2025 07:14:00 -0500 Subject: [PATCH 04/10] Alphabetizing. --- docker-compose.yml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 601c26c..5f5620a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -50,6 +50,22 @@ services: restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock + faster-whisper: + container_name: faster-whisper + environment: + PUID: ${PUID} + PGID: ${PGID} + TZ: ${TZ} + WHISPER_MODEL: large + LOCAL_ONLY: #optional + WHISPER_BEAM: 1 #optional + WHISPER_LANG: en #optional + image: lscr.io/linuxserver/faster-whisper:latest + ports: + - "10300:10300" + restart: unless-stopped + volumes: + - ${ULTIMA_DOCKER_DIR}/faster-whisper/:/config meilisearch: container_name: meilisearch environment: @@ -133,22 +149,6 @@ services: volumes: - ${ULTIMA_DOCKER_DIR}/stable-diffusion-webui/data:/data - ${ULTIMA_DOCKER_DIR}/stable-diffusion-webui/output:/output - faster-whisper: - container_name: faster-whisper - environment: - PUID: ${PUID} - PGID: ${PGID} - TZ: ${TZ} - WHISPER_MODEL: large - LOCAL_ONLY: #optional - WHISPER_BEAM: 1 #optional - WHISPER_LANG: en #optional - image: lscr.io/linuxserver/faster-whisper:latest - ports: - - "10300:10300" - restart: unless-stopped - volumes: - - ${ULTIMA_DOCKER_DIR}/faster-whisper/:/config volumes: ollama: name: ollama From fd39b22f7ac864aee15c8c7e68da333f3ebb39cf Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Tue, 9 Dec 2025 07:14:49 -0500 Subject: [PATCH 05/10] Removing git-submodule manager from Renovate config. --- renovate.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/renovate.json b/renovate.json index 21dfd1b..f28ce36 100644 --- a/renovate.json +++ b/renovate.json @@ -1,7 +1,4 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["local>trez/renovate-config"], - "git-submodules": { - "enabled": true - } + "extends": ["local>trez/renovate-config"] } From 7b0d0b43831bca400699ad24fc45b36f22a05eab Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Tue, 9 Dec 2025 07:17:21 -0500 Subject: [PATCH 06/10] Updating branch... --- docker-compose.yml | 37 ------------------------------------- 1 file changed, 37 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index a637522..dd3ba56 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -149,43 +149,6 @@ services: volumes: - ${ULTIMA_DOCKER_DIR}/stable-diffusion-webui/data:/data - ${ULTIMA_DOCKER_DIR}/stable-diffusion-webui/output:/output - faster-whisper: - container_name: faster-whisper - environment: - PUID: ${PUID} - PGID: ${PGID} - TZ: ${TZ} - WHISPER_MODEL: large - LOCAL_ONLY: #optional - WHISPER_BEAM: 1 #optional - WHISPER_LANG: en #optional - image: lscr.io/linuxserver/faster-whisper:latest@sha256:43ec95dc89ecca3e594c211604cdda55ae3979fe5108436c918121ee4393b403 - network_mode: host - # ports: - # - 10300:10300 - restart: unless-stopped - volumes: - - ${ULTIMA_DOCKER_DIR}/faster-whisper/:/config - piper: - image: lscr.io/linuxserver/piper:latest@sha256:fddc63c2de74931d1234ae8bc7a9b0601f55aed7c8521562240566ee1af3ef67 - container_name: piper - environment: - PUID: ${PUID}} - PGID: ${PGID} - TZ: ${TZ} - PIPER_VOICE: en_GB-alba-medium - LOCAL_ONLY: #optional - PIPER_LENGTH: 1.0 #optional - PIPER_NOISE: 0.667 #optional - PIPER_NOISEW: 0.333 #optional - PIPER_SPEAKER: 0 #optional - NO_STREAMING: #optional - network_mode: host - # ports: - # - 10200:10200 - restart: unless-stopped - volumes: - - ${ULTIMA_DOCKER_DIR}/piper/:/config volumes: ollama: name: ollama From c8d7b17092416028818854b4db6c649a7a498171 Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Tue, 9 Dec 2025 07:20:24 -0500 Subject: [PATCH 07/10] ... --- .gitea/workflows/pr-docker-deploy.yml | 38 +++++++++++++++------------ 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/.gitea/workflows/pr-docker-deploy.yml b/.gitea/workflows/pr-docker-deploy.yml index 4d28946..ad1c3b6 100644 --- a/.gitea/workflows/pr-docker-deploy.yml +++ b/.gitea/workflows/pr-docker-deploy.yml @@ -72,31 +72,35 @@ jobs: - name: Detect added, deleted, and modified services id: detect_services run: | - echo "Getting services from main and ${{ github.ref_name }}" - yq '.services | keys | .[]' docker-compose-main.yml | sort > services_main.txt - yq '.services | keys | .[]' docker-compose-head.yml | sort > services_head.txt + | + set -euo pipefail - echo "Creating list of modified services..." - touch service_changes.txt + echo "Flattening docker-compose files..." + yq eval '... comments=""' docker-compose-old.yml > docker-compose-old-flat.yml + yq eval '... comments=""' docker-compose-new.yml > docker-compose-new-flat.yml - comm -13 services_main.txt services_head.txt | while read service; do - echo "$service: added" >> service_changes.txt - done + echo "Getting service names..." + yq eval '.services | keys | .[]' docker-compose-old-flat.yml | sort > services_old.txt + yq eval '.services | keys | .[]' docker-compose-new-flat.yml | sort > services_new.txt - comm -12 services_main.txt services_head.txt | while read service; do - yq ".services[\"$service\"]" docker-compose-main.yml > tmp_main.yml - yq ".services[\"$service\"]" docker-compose-head.yml > tmp_head.yml - if ! diff -q tmp_main.yml tmp_head.yml > /dev/null; then - echo "$service: modified" >> service_changes.txt + echo "Checking for image changes..." + : > service_changes.txt + + comm -12 services_old.txt services_new.txt | while read service; do + old_image=$(yq eval-all --yaml-fix-merge-anchor-to-spec=true ".services[\"$service\"].image // \"\"" docker-compose-old-flat.yml) + new_image=$(yq eval-all --yaml-fix-merge-anchor-to-spec=true ".services[\"$service\"].image // \"\"" docker-compose-new-flat.yml) + + if [ "$old_image" != "$new_image" ]; then + echo "$service" >> service_changes.txt fi done - echo "Detected service changes:" - cat service_changes.txt + echo "Detected services with changed images:" + cat service_changes.txt || true - mod_svcs=$(cut -d':' -f1 service_changes.txt | sort | uniq | tr '\n' ' ' | sed 's/ *$//') + # Prepare multiline output for GitHub Actions echo "docker_svc_list<> "$GITHUB_OUTPUT" - echo "$mod_svcs" >> "$GITHUB_OUTPUT" + sort -u service_changes.txt >> "$GITHUB_OUTPUT" echo "EOF" >> "$GITHUB_OUTPUT" - name: List of Services for (Re)Deployment From c2c7616bd0e5348c68aa154439adb8960dd2cae4 Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Tue, 9 Dec 2025 08:59:09 -0500 Subject: [PATCH 08/10] ... --- .gitea/workflows/pr-docker-deploy.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitea/workflows/pr-docker-deploy.yml b/.gitea/workflows/pr-docker-deploy.yml index ad1c3b6..70447b3 100644 --- a/.gitea/workflows/pr-docker-deploy.yml +++ b/.gitea/workflows/pr-docker-deploy.yml @@ -72,7 +72,6 @@ jobs: - name: Detect added, deleted, and modified services id: detect_services run: | - | set -euo pipefail echo "Flattening docker-compose files..." From 2f2d7bb87d65c5411a1fbf0d0034ba17bf238edd Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Tue, 9 Dec 2025 09:01:58 -0500 Subject: [PATCH 09/10] ... --- .gitea/workflows/pr-docker-deploy.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitea/workflows/pr-docker-deploy.yml b/.gitea/workflows/pr-docker-deploy.yml index 70447b3..e46de6b 100644 --- a/.gitea/workflows/pr-docker-deploy.yml +++ b/.gitea/workflows/pr-docker-deploy.yml @@ -69,6 +69,11 @@ jobs: notification_title: "GITEA: Services TBD" notification_message: "Generating list of services to deploy..." + - name: Save both versions of docker-compose.yml + run: | + git show origin/main:docker-compose.yml > docker-compose-main.yml || touch docker-compose-main.yml + cp docker-compose.yml docker-compose-head.yml + - name: Detect added, deleted, and modified services id: detect_services run: | From d5c731dd8b2a2d1299a8306a35eeac3a4f086119 Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Tue, 9 Dec 2025 09:05:15 -0500 Subject: [PATCH 10/10] ... --- .gitea/workflows/pr-docker-deploy.yml | 37 ++++++++++++--------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/.gitea/workflows/pr-docker-deploy.yml b/.gitea/workflows/pr-docker-deploy.yml index e46de6b..d530272 100644 --- a/.gitea/workflows/pr-docker-deploy.yml +++ b/.gitea/workflows/pr-docker-deploy.yml @@ -77,34 +77,31 @@ jobs: - name: Detect added, deleted, and modified services id: detect_services run: | - set -euo pipefail + echo "Getting services from main and ${{ github.ref_name }}" + yq '.services | keys | .[]' docker-compose-main.yml | sort > services_main.txt + yq '.services | keys | .[]' docker-compose-head.yml | sort > services_head.txt - echo "Flattening docker-compose files..." - yq eval '... comments=""' docker-compose-old.yml > docker-compose-old-flat.yml - yq eval '... comments=""' docker-compose-new.yml > docker-compose-new-flat.yml + echo "Creating list of modified services..." + touch service_changes.txt - echo "Getting service names..." - yq eval '.services | keys | .[]' docker-compose-old-flat.yml | sort > services_old.txt - yq eval '.services | keys | .[]' docker-compose-new-flat.yml | sort > services_new.txt + comm -13 services_main.txt services_head.txt | while read service; do + echo "$service: added" >> service_changes.txt + done - echo "Checking for image changes..." - : > service_changes.txt - - comm -12 services_old.txt services_new.txt | while read service; do - old_image=$(yq eval-all --yaml-fix-merge-anchor-to-spec=true ".services[\"$service\"].image // \"\"" docker-compose-old-flat.yml) - new_image=$(yq eval-all --yaml-fix-merge-anchor-to-spec=true ".services[\"$service\"].image // \"\"" docker-compose-new-flat.yml) - - if [ "$old_image" != "$new_image" ]; then - echo "$service" >> service_changes.txt + comm -12 services_main.txt services_head.txt | while read service; do + yq ".services[\"$service\"]" docker-compose-main.yml > tmp_main.yml + yq ".services[\"$service\"]" docker-compose-head.yml > tmp_head.yml + if ! diff -q tmp_main.yml tmp_head.yml > /dev/null; then + echo "$service: modified" >> service_changes.txt fi done - echo "Detected services with changed images:" - cat service_changes.txt || true + echo "Detected service changes:" + cat service_changes.txt - # Prepare multiline output for GitHub Actions + mod_svcs=$(cut -d':' -f1 service_changes.txt | sort | uniq | tr '\n' ' ' | sed 's/ *$//') echo "docker_svc_list<> "$GITHUB_OUTPUT" - sort -u service_changes.txt >> "$GITHUB_OUTPUT" + echo "$mod_svcs" >> "$GITHUB_OUTPUT" echo "EOF" >> "$GITHUB_OUTPUT" - name: List of Services for (Re)Deployment