Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1e483a16f7 | |||
| 832e380300 | |||
| eb5cb34208 |
@@ -6,7 +6,7 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
HC_VAULT_VERSION: "1.21.4"
|
||||
HC_VAULT_VERSION: "1.21.1"
|
||||
|
||||
jobs:
|
||||
readme-services:
|
||||
|
||||
@@ -9,8 +9,8 @@ on:
|
||||
- "**/docker-compose.yml"
|
||||
|
||||
env:
|
||||
HC_VAULT_VERSION: "1.21.4"
|
||||
TEA_VERSION: "0.14.0"
|
||||
HC_VAULT_VERSION: "1.21.1"
|
||||
TEA_VERSION: "0.10.1"
|
||||
|
||||
jobs:
|
||||
check-and-create-pr:
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
with:
|
||||
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
|
||||
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
|
||||
notification_title: "GITEA: PR Check @ Lunafreya"
|
||||
notification_title: "GITEA: PR Check @ Benedikta"
|
||||
notification_message: "Checking for existing PR... 🔍"
|
||||
|
||||
- name: PR Check/Creation
|
||||
@@ -44,7 +44,7 @@ jobs:
|
||||
with:
|
||||
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
|
||||
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
|
||||
notification_title: "GITEA: PR Check @ Lunafreya"
|
||||
notification_title: "GITEA: PR Check @ Benedikta"
|
||||
notification_message: "PR Check done 🎟️"
|
||||
|
||||
generate-service-list:
|
||||
@@ -156,7 +156,7 @@ jobs:
|
||||
with:
|
||||
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
|
||||
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
|
||||
notification_title: "GITEA: Docker Compose Dry Run @ Lunafreya"
|
||||
notification_title: "GITEA: Docker Compose Dry Run @ Benedikta"
|
||||
notification_message: "Starting Docker Compose dry run..."
|
||||
|
||||
- name: Get list of Compose files
|
||||
@@ -200,7 +200,7 @@ jobs:
|
||||
with:
|
||||
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
|
||||
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
|
||||
notification_title: "GITEA: Docker Compose Dry Run @ Lunafreya"
|
||||
notification_title: "GITEA: Docker Compose Dry Run @ Benedikta"
|
||||
notification_message: "Docker Compose dry run completed successfully."
|
||||
|
||||
pr-merge:
|
||||
@@ -291,7 +291,7 @@ jobs:
|
||||
with:
|
||||
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
|
||||
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
|
||||
notification_title: "GITEA: Docker Compose Deployment @ Lunafreya"
|
||||
notification_title: "GITEA: Docker Compose Deployment @ Benedikta"
|
||||
notification_message: "Starting Docker Compose run..."
|
||||
|
||||
- name: Generate .env from Hashicorp Vault
|
||||
@@ -321,5 +321,5 @@ jobs:
|
||||
with:
|
||||
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
|
||||
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
|
||||
notification_title: "GITEA: Docker Compose Deployment @ Lunafreya"
|
||||
notification_title: "GITEA: Docker Compose Deployment @ Benedikta"
|
||||
notification_message: "Deployment completed successfully."
|
||||
|
||||
@@ -12,7 +12,7 @@ on:
|
||||
env:
|
||||
VAULT_ADDR: ${{ secrets.TREZ_VAULT_ADDR }}
|
||||
VAULT_TOKEN: ${{ secrets.VAULT_GITEA_TOKEN }}
|
||||
HC_VAULT_VERSION: "1.21.4"
|
||||
HC_VAULT_VERSION: "1.21.1"
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
@@ -99,7 +99,7 @@ jobs:
|
||||
with:
|
||||
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
|
||||
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
|
||||
notification_title: "GITEA: [RENOVATE] Docker Compose Deployment @ Lunafreya"
|
||||
notification_title: "GITEA: [RENOVATE] Docker Compose Deployment @ Benedikta"
|
||||
notification_message: "Starting Docker Compose run..."
|
||||
|
||||
- name: Generate .env from Hashicorp Vault
|
||||
@@ -129,5 +129,5 @@ jobs:
|
||||
with:
|
||||
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
|
||||
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
|
||||
notification_title: "GITEA: [RENOVATE] Docker Compose Deployment @ Lunafreya"
|
||||
notification_title: "GITEA: [RENOVATE] Docker Compose Deployment @ Benedikta"
|
||||
notification_message: "Deployment completed successfully."
|
||||
|
||||
@@ -6,10 +6,8 @@
|
||||
| --- | --- |
|
||||
| beszel-agent | henrygd/beszel-agent:latest |
|
||||
| docker-socket-proxy | ghcr.io/tecnativa/docker-socket-proxy:latest |
|
||||
| faster-whisper | lscr.io/linuxserver/faster-whisper:latest |
|
||||
| linux-voice-assistant | ghcr.io/ohf-voice/linux-voice-assistant:1.1.11 |
|
||||
| lva-fix-permissions | ghcr.io/ohf-voice/linux-voice-assistant:latest |
|
||||
| piper | lscr.io/linuxserver/piper:latest |
|
||||
| portainer-agent | portainer/agent:latest |
|
||||
| signoz-logspout | pavanputhra/logspout-signoz |
|
||||
| wyoming-openwakeword | rhasspy/wyoming-openwakeword |
|
||||
| wyoming-satellite | sker65/wyoming-satellite |
|
||||
|
||||
|
||||
+53
-163
@@ -1,72 +1,5 @@
|
||||
name: benedikta
|
||||
x-lva-env: &lva-env
|
||||
environment:
|
||||
# Linux-Voice-Assistant - Docker Environment Configuration
|
||||
# Copy this file to .env and customize for your setup by 'cp .env.example .env'
|
||||
|
||||
### Enable debug mode (optional):
|
||||
ENABLE_DEBUG: "1"
|
||||
|
||||
### List audio devices (optional):
|
||||
# if enabled normal startup is disabled
|
||||
# LIST_DEVICES="1"
|
||||
|
||||
### User ID:
|
||||
# This is used to set the correct permissions for the accessing the audio device and accessing the PulseAudio socket
|
||||
LVA_USER_ID: 1000
|
||||
LVA_USER_GROUP: 1000
|
||||
|
||||
### Name for the client (optional):
|
||||
CLIENT_NAME: "benedikta"
|
||||
|
||||
### PulseAudio socket path on the host:
|
||||
# PulseAudio Server: /run/user/1000/pulse
|
||||
# Pipewire Server: /run/user/1000/pulse/native
|
||||
LVA_PULSE_SERVER: unix:/run/user/1000/pulse/native
|
||||
LVA_XDG_RUNTIME_DIR: /run/user/1000
|
||||
PULSE_SERVER: unix:/run/user/1000/pulse/native
|
||||
XDG_RUNTIME_DIR: "/run/user/1000"
|
||||
|
||||
### Path to the preferences file (optional):
|
||||
# PREFERENCES_FILE="/app/configuration/preferences.json"
|
||||
|
||||
### Network interface (optional):
|
||||
# NETWORK_INTERFACE="eth0"
|
||||
|
||||
### IP-Address for the api (optional):
|
||||
# HOST="0.0.0.0"
|
||||
|
||||
### Port for the api (optional):
|
||||
# PORT="6053"
|
||||
|
||||
### Audio input device (optional):
|
||||
# AUDIO_INPUT_DEVICE="default"
|
||||
|
||||
### Audio output device (optional):
|
||||
# AUDIO_OUTPUT_DEVICE="default"
|
||||
|
||||
### Enable thinking sound (optional):
|
||||
ENABLE_THINKING_SOUND: "1"
|
||||
|
||||
### Wake word directory (optional):
|
||||
# path for custom files in docker is for example "app/wakewords/custom"
|
||||
# WAKE_WORD_DIR="app/wakewords"
|
||||
|
||||
### Wake model (optional):
|
||||
WAKE_MODEL: "hey_luna"
|
||||
### Stop model (optional):
|
||||
# STOP_MODEL="stop"
|
||||
|
||||
### Refactory seconds (optional):
|
||||
# REFACTORY_SECONDS="2"
|
||||
|
||||
### Sound files (optional):
|
||||
# path for custom files in docker is for example "sounds/custom/your_soundfile.flac"
|
||||
# WAKEUP_SOUND="sounds/wake_word_triggered.flac"
|
||||
# TIMER_FINISHED_SOUND="sounds/timer_finished.flac"
|
||||
# PROCESSING_SOUND="sounds/processing.wav"
|
||||
# MUTE_SOUND="sounds/mute_switch_on.flac"
|
||||
# UNMUTE_SOUND="sounds/mute_switch_off.flac"
|
||||
services:
|
||||
beszel-agent:
|
||||
container_name: beszel-agent
|
||||
@@ -77,7 +10,7 @@ services:
|
||||
HUB_URL: http://192.168.1.254:22220
|
||||
expose:
|
||||
- 45876
|
||||
image: henrygd/beszel-agent:latest@sha256:8874e2c53f9de5e063a6a80d6b617e20fa593ac5dc4eb4c6ce1f912f510f38f8
|
||||
image: henrygd/beszel-agent:latest@sha256:730ac49d1a89d315b5a9424ad8cca2f586e981da7caf151c5ec2d599f474efad
|
||||
network_mode: host
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
@@ -115,101 +48,48 @@ 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@sha256:4c8de34e0876bbc59fc30cb8b29dbe4597b4f46c3effd3ee58aca8e56f39e924
|
||||
ports:
|
||||
- "10300:10300"
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${BENEDIKTA_DOCKER_DIR}/faster-whisper/:/config
|
||||
linux-voice-assistant:
|
||||
container_name: linux-voice-assistant
|
||||
image: ghcr.io/ohf-voice/linux-voice-assistant:1.1.11@sha256:87ff162d33e68e520bc8a67177b2ba9b626b288d00debc20f3f467b4c9387b2c
|
||||
restart: unless-stopped
|
||||
network_mode: "host"
|
||||
user: "${PUID}:${PGID}"
|
||||
group_add:
|
||||
- audio
|
||||
environment:
|
||||
ENABLE_DEBUG: 1
|
||||
ENABLE_THINKING_SOUND: 1
|
||||
WAKE_MODEL: "hey_luna"
|
||||
# Pulseaudio
|
||||
PULSE_SERVER: ${LVA_PULSE_SERVER}
|
||||
PULSE_COOKIE: /run/user/1000/pulse/cookie
|
||||
XDG_RUNTIME_DIR: ${LVA_XDG_RUNTIME_DIR}
|
||||
# Priority for audio process
|
||||
AUDIO_INPUT_DEVICE: alsa_input.platform-soc_107c000000_sound.stereo-fallback
|
||||
AUDIO_OUTPUT_DEVICE: pipewire/alsa_output.platform-soc_107c000000_sound.stereo-fallback
|
||||
cap_add:
|
||||
- SYS_NICE
|
||||
volumes:
|
||||
# Wakeword data and configuration
|
||||
- lva_wakeword_data:/app/local
|
||||
- lva_wakeword_custom:/app/wakewords/custom
|
||||
- lva_configuration:/app/configuration
|
||||
# Time and zone
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
# Pulseaudio
|
||||
- ${LVA_XDG_RUNTIME_DIR}:${LVA_XDG_RUNTIME_DIR}
|
||||
depends_on:
|
||||
- lva-fix-permissions
|
||||
# Health check for process
|
||||
healthcheck:
|
||||
test: [ "CMD", "pgrep", "-f", "linux_voice_assistant" ]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 90s
|
||||
lva-fix-permissions:
|
||||
container_name: lva-fix-permissions
|
||||
image: "ghcr.io/ohf-voice/linux-voice-assistant:latest@sha256:cd04acd204c647da2\
|
||||
663704c694f963d6a3c59e2815ddfcd83aa6114d41e36d5"
|
||||
entrypoint: []
|
||||
command: "chown -R ${PUID}:${PGID} /app/local /app/configuration
|
||||
/app/wakewords/custom /app/sounds/custom"
|
||||
<<: *lva-env
|
||||
group_add:
|
||||
- audio
|
||||
volumes:
|
||||
# Wakeword data and configuration
|
||||
- lva_wakeword_data:/app/local
|
||||
- lva_wakeword_custom:/app/wakewords/custom
|
||||
- lva_configuration:/app/configuration
|
||||
- ${BENEDIKTA_DOCKER_DIR}/linux-voice-assistant/sounds/custom:/app/sounds/custom
|
||||
restart: "no"
|
||||
piper:
|
||||
container_name: piper
|
||||
environment:
|
||||
PUID: ${PUID}
|
||||
PGID: ${PGID}
|
||||
TZ: ${TZ}
|
||||
PIPER_VOICE: en_GB-jenny_dioco-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
|
||||
image: lscr.io/linuxserver/piper:latest@sha256:98416835a07afc152b05f54faa4da4fc299cbed0cd940b0df603ba2e10125447
|
||||
pull_policy: build
|
||||
build:
|
||||
context: https://github.com/OHF-Voice/linux-voice-assistant.git#main
|
||||
network: host
|
||||
dockerfile_inline: |
|
||||
###### syntax=docker/dockerfile:1
|
||||
FROM python:3.13-slim-trixie
|
||||
|
||||
ENV LANG=C.UTF-8
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install --yes --no-install-recommends \
|
||||
avahi-utils alsa-utils libportaudio2 portaudio19-dev \
|
||||
build-essential libmpv-dev pipewire
|
||||
|
||||
WORKDIR /srv
|
||||
COPY . ./
|
||||
RUN ./script/setup
|
||||
|
||||
ENTRYPOINT ["./script/run"]
|
||||
image: ohf-voice/linux-voice-assistant:latest
|
||||
restart: always
|
||||
ports:
|
||||
- 10200:10200
|
||||
restart: unless-stopped
|
||||
- "6053:6053"
|
||||
devices:
|
||||
- /dev/snd:/dev/snd
|
||||
volumes:
|
||||
- ${BENEDIKTA_DOCKER_DIR}/piper/:/config
|
||||
- /run/user/$(id -u)/pipewire-0:/run/user/$(id -u)/pipewire-0
|
||||
environment:
|
||||
PULSE_SERVER: /run/user/$(id -u)
|
||||
group_add:
|
||||
- audio
|
||||
command:
|
||||
- "--name"
|
||||
- "benedikta"
|
||||
- "--list-input-devices"
|
||||
portainer-agent:
|
||||
container_name: portainer_agent
|
||||
image: portainer/agent:latest@sha256:236246fc09b3e7e9269aad53e57ec71f27b7e114a2b6b70d4fd98c117ccc36d8
|
||||
image: portainer/agent:latest@sha256:5b33e50ff131094e0b1b7272cc34205c970b6b25cecf4bbcf7c13298388a4832
|
||||
volumes:
|
||||
- /:/host
|
||||
- /var/lib/docker/volumes:/var/lib/docker/volumes
|
||||
@@ -227,12 +107,22 @@ services:
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
wyoming-satellite:
|
||||
command: "--name benedikta --mic-command 'arecord -D plughw:CARD=seeed2micvoicec,DEV=0 -r 16000 -c 1 -f S32_LE -t raw' --snd-command 'aplay -D plughw:CARD=seeed2micvoicec,DEV=0 -r 22050 -c 1 -f S32_LE -t raw' --wake-uri 'tcp://wyoming-openwakeword:10400' --wake-word-name 'ok_nabu' --vad --awake-wav /app/sounds/awake.wav --done-wav /app/sounds/done.wav --debug"
|
||||
container_name: wyoming-satellite
|
||||
devices:
|
||||
- /dev/snd
|
||||
image: sker65/wyoming-satellite@sha256:581e592794db847aee730e7c8cbf23217e9f779724f9f8b004072ddc4f3a701d
|
||||
ports:
|
||||
- 10700:10700
|
||||
restart: unless-stopped
|
||||
wyoming-openwakeword:
|
||||
command: "--preload-model ok_nabu --debug"
|
||||
container_name: wyoming-openwakeword
|
||||
image: rhasspy/wyoming-openwakeword@sha256:52cb1168731a1849fc28cf339c935fde58746bbabc94226668a40ef6ddf5d42b
|
||||
ports:
|
||||
- 10400:10400
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
beszel-agent-data:
|
||||
name: beszel-agent-data
|
||||
lva_wakeword_data:
|
||||
name: lva_wakeword_data
|
||||
lva_wakeword_custom:
|
||||
name: lva_wakeword_custom
|
||||
lva_configuration:
|
||||
name: lva_configuration
|
||||
|
||||
Reference in New Issue
Block a user