You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
3.6 KiB
90 lines
3.6 KiB
# 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. |
|
# |
|
# Optional editor tools (LanguageTool + LibreTranslate): profile `editor-tools` |
|
# docker compose -f docker-compose.prod.yml --profile editor-tools up -d languagetool libretranslate |
|
# Then Apache (or nginx) must proxy same-origin paths baked into the SPA, e.g. /api/languagetool → http://127.0.0.1:8010 |
|
# and /api/translate → http://127.0.0.1:5000. Build the app image with: |
|
# LANGUAGE_TOOL_URL=/api/languagetool TRANSLATE_URL=/api/translate ./scripts/build-and-push-prod.sh |
|
|
|
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 |
|
|
|
languagetool: |
|
image: silviof/docker-languagetool:latest |
|
profiles: ['editor-tools'] |
|
container_name: imwald-languagetool |
|
ports: |
|
- '127.0.0.1:8010:8010' |
|
restart: unless-stopped |
|
deploy: |
|
resources: |
|
limits: |
|
memory: 2048M |
|
|
|
libretranslate: |
|
image: libretranslate/libretranslate:latest |
|
profiles: ['editor-tools'] |
|
container_name: imwald-libretranslate |
|
ports: |
|
- '127.0.0.1:5000:5000' |
|
restart: unless-stopped |
|
deploy: |
|
resources: |
|
limits: |
|
memory: 2048M
|
|
|