chore(homelab): add LibreTranslate service to runner compose
- libretranslate/libretranslate:latest, internal Docker network only - LT_LOAD_ONLY=en,ru,id,pt,fr (only pairs the runner needs) - LT_API_KEYS=true, key stored in Doppler prd_homelab - Runner depends_on libretranslate (service_healthy) - LIBRETRANSLATE_URL=http://libretranslate:5000 (no tunnel needed) - RUNNER_MAX_CONCURRENT_TRANSLATION wired from Doppler
This commit is contained in:
@@ -12,6 +12,7 @@
|
|||||||
# - VALKEY_ADDR → unset (not exposed publicly)
|
# - VALKEY_ADDR → unset (not exposed publicly)
|
||||||
# - RUNNER_SKIP_INITIAL_CATALOGUE_REFRESH=true
|
# - RUNNER_SKIP_INITIAL_CATALOGUE_REFRESH=true
|
||||||
# - Redis service for Asynq task queue (local to homelab, exposed to prod via Caddy TCP proxy)
|
# - Redis service for Asynq task queue (local to homelab, exposed to prod via Caddy TCP proxy)
|
||||||
|
# - LibreTranslate service for machine translation (internal network only)
|
||||||
|
|
||||||
services:
|
services:
|
||||||
redis:
|
redis:
|
||||||
@@ -29,6 +30,26 @@ services:
|
|||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
|
|
||||||
|
libretranslate:
|
||||||
|
image: libretranslate/libretranslate:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
LT_API_KEYS: "true"
|
||||||
|
LT_API_KEYS_DB_PATH: "/app/db/api_keys.db"
|
||||||
|
# Limit to source→target pairs the runner actually uses
|
||||||
|
LT_LOAD_ONLY: "en,ru,id,pt,fr"
|
||||||
|
LT_DISABLE_WEB_UI: "true"
|
||||||
|
LT_UPDATE_MODELS: "false"
|
||||||
|
volumes:
|
||||||
|
- libretranslate_models:/home/libretranslate/.local/share/argos-translate
|
||||||
|
- libretranslate_db:/app/db
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "curl -sf http://localhost:5000/languages || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 5
|
||||||
|
start_period: 120s
|
||||||
|
|
||||||
runner:
|
runner:
|
||||||
image: kalekber/libnovel-runner:latest
|
image: kalekber/libnovel-runner:latest
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -36,6 +57,8 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
redis:
|
redis:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
libretranslate:
|
||||||
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
# ── PocketBase ──────────────────────────────────────────────────────────
|
# ── PocketBase ──────────────────────────────────────────────────────────
|
||||||
POCKETBASE_URL: "https://pb.libnovel.cc"
|
POCKETBASE_URL: "https://pb.libnovel.cc"
|
||||||
@@ -64,6 +87,10 @@ services:
|
|||||||
# ── Pocket TTS ──────────────────────────────────────────────────────────
|
# ── Pocket TTS ──────────────────────────────────────────────────────────
|
||||||
POCKET_TTS_URL: "${POCKET_TTS_URL}"
|
POCKET_TTS_URL: "${POCKET_TTS_URL}"
|
||||||
|
|
||||||
|
# ── LibreTranslate (internal Docker network) ────────────────────────────
|
||||||
|
LIBRETRANSLATE_URL: "http://libretranslate:5000"
|
||||||
|
LIBRETRANSLATE_API_KEY: "${LIBRETRANSLATE_API_KEY}"
|
||||||
|
|
||||||
# ── Asynq / Redis (local service) ───────────────────────────────────────
|
# ── Asynq / Redis (local service) ───────────────────────────────────────
|
||||||
# The runner connects to the local Redis sidecar.
|
# The runner connects to the local Redis sidecar.
|
||||||
REDIS_ADDR: "redis:6379"
|
REDIS_ADDR: "redis:6379"
|
||||||
@@ -74,6 +101,7 @@ services:
|
|||||||
RUNNER_POLL_INTERVAL: "${RUNNER_POLL_INTERVAL}"
|
RUNNER_POLL_INTERVAL: "${RUNNER_POLL_INTERVAL}"
|
||||||
RUNNER_MAX_CONCURRENT_SCRAPE: "${RUNNER_MAX_CONCURRENT_SCRAPE}"
|
RUNNER_MAX_CONCURRENT_SCRAPE: "${RUNNER_MAX_CONCURRENT_SCRAPE}"
|
||||||
RUNNER_MAX_CONCURRENT_AUDIO: "${RUNNER_MAX_CONCURRENT_AUDIO}"
|
RUNNER_MAX_CONCURRENT_AUDIO: "${RUNNER_MAX_CONCURRENT_AUDIO}"
|
||||||
|
RUNNER_MAX_CONCURRENT_TRANSLATION: "${RUNNER_MAX_CONCURRENT_TRANSLATION}"
|
||||||
RUNNER_TIMEOUT: "${RUNNER_TIMEOUT}"
|
RUNNER_TIMEOUT: "${RUNNER_TIMEOUT}"
|
||||||
RUNNER_METRICS_ADDR: "${RUNNER_METRICS_ADDR}"
|
RUNNER_METRICS_ADDR: "${RUNNER_METRICS_ADDR}"
|
||||||
RUNNER_SKIP_INITIAL_CATALOGUE_REFRESH: "true"
|
RUNNER_SKIP_INITIAL_CATALOGUE_REFRESH: "true"
|
||||||
@@ -90,3 +118,5 @@ services:
|
|||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
redis_data:
|
redis_data:
|
||||||
|
libretranslate_models:
|
||||||
|
libretranslate_db:
|
||||||
|
|||||||
Reference in New Issue
Block a user