2026-05-09 02:38:23 +00:00
|
|
|
# 1. On récupère la version la plus récente d'UV
|
|
|
|
|
FROM ghcr.io/astral-sh/uv:latest AS uv_source
|
|
|
|
|
|
2026-05-09 17:39:23 +00:00
|
|
|
# 2. Image officielle Hermes Agent de NousResearch
|
|
|
|
|
# Contient déjà: Python, Node.js, npm, Playwright/Chromium, venv, tts_tool.py, etc.
|
|
|
|
|
FROM nousresearch/hermes-agent:latest
|
2026-05-05 01:42:55 +00:00
|
|
|
|
2026-05-09 17:39:23 +00:00
|
|
|
# ---------- System dependencies ----------
|
|
|
|
|
# Piper a besoin de libportaudio2, et HuggingFace a besoin de ca-certificates
|
|
|
|
|
USER root
|
2026-05-05 01:42:55 +00:00
|
|
|
RUN apt-get update && \
|
|
|
|
|
apt-get install -y --no-install-recommends \
|
2026-05-09 14:14:52 +00:00
|
|
|
libportaudio2 \
|
|
|
|
|
ca-certificates && \
|
2026-05-05 01:42:55 +00:00
|
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
2026-05-09 17:39:23 +00:00
|
|
|
# ---------- UV (hyperfast pip alternative) ----------
|
2026-05-09 02:38:23 +00:00
|
|
|
COPY --chmod=0755 --from=uv_source /uv /usr/local/bin/
|
2026-05-05 01:42:55 +00:00
|
|
|
|
|
|
|
|
WORKDIR /opt/hermes
|
|
|
|
|
|
2026-05-09 04:09:57 +00:00
|
|
|
# ---------- Hermes venv ----------
|
2026-05-09 02:38:23 +00:00
|
|
|
USER hermes
|
2026-05-05 01:42:55 +00:00
|
|
|
|
2026-05-09 13:41:37 +00:00
|
|
|
# ---------- Python virtualenv avec Piper TTS ----------
|
2026-05-05 01:42:55 +00:00
|
|
|
RUN uv venv && \
|
2026-05-09 17:39:23 +00:00
|
|
|
uv pip install --no-cache-dir piper-tts sounddevice numpy
|
2026-05-05 01:42:55 +00:00
|
|
|
|
2026-05-09 15:21:49 +00:00
|
|
|
# ---------- Télécharger la voix Piper Ryan (high quality) ----------
|
2026-05-09 13:41:37 +00:00
|
|
|
RUN mkdir -p /opt/hermes/.venv/share/piper/voices && \
|
2026-05-09 15:21:49 +00:00
|
|
|
/opt/hermes/.venv/bin/python3 /dev/stdin << 'PYEOF'
|
2026-05-09 13:41:37 +00:00
|
|
|
import urllib.request
|
|
|
|
|
base = '/opt/hermes/.venv/share/piper/voices'
|
2026-05-09 15:21:49 +00:00
|
|
|
url = 'https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/ryan/high/en_US-ryan-high.onnx'
|
|
|
|
|
urllib.request.urlretrieve(url, base + '/en_US-ryan-high.onnx')
|
|
|
|
|
urllib.request.urlretrieve(url + '.json', base + '/en_US-ryan-high.onnx.json')
|
2026-05-09 14:09:50 +00:00
|
|
|
PYEOF
|
2026-05-09 17:39:23 +00:00
|
|
|
|
|
|
|
|
# ---------- Patch tts_tool.py: remplacer Edge TTS par Piper ----------
|
|
|
|
|
# Edge TTS appelle les serveurs Microsoft — on ne veut jamais ça.
|
|
|
|
|
# Piper roule localement sur CPU, aucun cloud, aucune donnée qui sort.
|
2026-05-09 17:37:32 +00:00
|
|
|
COPY patch_tts_tool.py /tmp/patch_tts_tool.py
|
|
|
|
|
RUN /opt/hermes/.venv/bin/python3 /tmp/patch_tts_tool.py && rm /tmp/patch_tts_tool.py
|
2026-05-09 15:50:29 +00:00
|
|
|
|
2026-05-05 01:42:55 +00:00
|
|
|
# ---------- Runtime ----------
|
|
|
|
|
ENV HERMES_HOME=/opt/data
|
|
|
|
|
ENV PATH="/opt/data/.local/bin:${PATH}"
|
2026-05-09 02:38:23 +00:00
|
|
|
|
2026-05-05 01:42:55 +00:00
|
|
|
VOLUME [ "/opt/data" ]
|
2026-05-09 02:38:23 +00:00
|
|
|
|
2026-05-09 17:39:23 +00:00
|
|
|
# Script de réparation des permissions + patch TTS au démarrage
|
2026-05-09 16:04:32 +00:00
|
|
|
COPY --chmod=0755 fix-permissions.sh /opt/hermes/fix-permissions.sh
|
|
|
|
|
|
|
|
|
|
ENTRYPOINT [ "/usr/bin/tini", "-g", "--", "/opt/hermes/fix-permissions.sh" ]
|