compose.yaml
Rama main · réplica de lectura del repositorio original.
name: hauser
services:
hauser:
image: "${HAUSER_IMAGE_REPOSITORY:-ghcr.io/ralleur/hauser}:${HAUSER_IMAGE_TAG:-v0.50.0}"
# The image entrypoint prepares bind-mounted volumes as root before
# dropping privileges — needed under Home Assistant OS, where the
# Supervisor hands over a root-owned /data. Compose uses named volumes
# that already carry the right ownership, so it runs unprivileged from
# the start and the preparation is skipped (cap_drop: ALL would not
# permit it anyway).
user: node
pull_policy: missing
init: true
restart: unless-stopped
read_only: true
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
ports:
- "${HAUSER_BIND_ADDRESS:-127.0.0.1}:${HAUSER_PORT:-4173}:4173"
environment:
HMI_ALLOWED_ORIGINS: "${HMI_ALLOWED_ORIGINS:-http://localhost:4173,http://127.0.0.1:4173}"
HMI_AI_CUSTOMIZING_ENABLED: "0"
HMI_ROOM_IMAGE_AUTH_MODE: direct
HMI_HOUSEHOLD_CONFIG_PATH: /config/household.json
HMI_HOUSEHOLD_CONFIG_MODE: active
HMI_CONFIG_PATH: /data/config.json
HMI_FAMILY_DATA_PATH: /data/family-data.json
HMI_SONG_LIBRARY_DIR: /data/songs
HMI_REQUIRED_WRITABLE_DIRS: /config,/data,/assets
volumes:
- hauser_config:/config
- hauser_data:/data
- hauser_assets:/assets
tmpfs:
- /tmp:rw,nosuid,nodev,noexec,size=64m
healthcheck:
test: ["CMD", "node", "container/healthcheck.mjs"]
interval: 10s
timeout: 3s
start_period: 10s
retries: 3
stop_grace_period: 15s
volumes:
hauser_config:
hauser_data:
hauser_assets: