# Minimal compose for running the published image (e.g. on remote server). # Usage: docker compose -f docker-compose.prod.yml pull && docker compose -f docker-compose.prod.yml up -d # # Apache (unchanged on your host) should keep (order: specific paths before catch-all /): # ProxyPass /sites/ http://127.0.0.1:8090/sites/ # ProxyPass /api/piper-tts http://127.0.0.1:9876/api/piper-tts # ProxyPassReverse /api/piper-tts http://127.0.0.1:9876/api/piper-tts # ProxyPass / http://127.0.0.1:8089/ # so the browser hits same-origin /api/piper-tts → aitherboard; /sites/ → OG proxy; else static SPA on 8089. # VITE_PROXY_SERVER / VITE_READ_ALOUD_TTS_URL are baked at image build — see scripts/build-and-push-prod.sh # # NIP-66 monitor: set NIP66_MONITOR_NSEC (and optionally NIP66_MONITOR_NPUB) in the host env or .env. # - Cron service `jumble-nip66-monitor` (Imwald NIP-66 monitor image) uses NIP66_MONITOR_NSEC to publish 30166/10166; nsec never goes to the client. # - Set NIP66_MONITOR_NPUB (npub1... derived from the same key) so the relay info page shows the monitor's avatar and handle in the NIP-66 liveliness section. services: jumble: image: silberengel/imwald-jumble:latest container_name: imwald-jumble ports: - "8089:80" restart: unless-stopped # Do NOT pass NIP66_MONITOR_NSEC to the web app; only npub is needed for the relay info page. environment: - NIP66_MONITOR_NPUB=${NIP66_MONITOR_NPUB} logging: driver: json-file options: max-size: "10m" max-file: "3" deploy: resources: limits: memory: 512M # NIP-66 relay monitor cron: publishes 30166 (relay discovery) and 10166 (announcement). # Starts and stops with the app. Requires NIP66_MONITOR_NSEC to do anything. jumble-nip66-monitor: image: silberengel/imwald-jumble-nip66-monitor:latest container_name: imwald-jumble-nip66-monitor restart: unless-stopped environment: - NIP66_MONITOR_NSEC=${NIP66_MONITOR_NSEC} - RELAYS_TO_MONITOR=${RELAYS_TO_MONITOR:-} - RELAY_LIST_SKIP_KIND10002=${RELAY_LIST_SKIP_KIND10002:-} - MAX_RELAYS_TO_MONITOR=${MAX_RELAYS_TO_MONITOR:-} - PUBLISH_RELAYS=${PUBLISH_RELAYS:-} - INTERVAL_MS=${INTERVAL_MS:-} # Default: merge built-in relay list + monitor’s kind 10002 (`r` tags). See nip66-cron/index.mjs. # - RELAYS_TO_MONITOR — optional; replaces merged list entirely # - RELAY_LIST_SKIP_KIND10002=1 — defaults only (no 10002 fetch) logging: driver: json-file options: max-size: "5m" max-file: "2" deploy: resources: limits: memory: 128M