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.
 
 
 
 

3.5 KiB

Deploy Imwald with docker-compose.prod.yml (remote server)

Workflow: build and push locallypull and run on the server.

Local: build and push

From the repo root on your machine:

docker login   # once, if needed
./scripts/build-and-push-prod.sh

This builds and pushes three images, each with latest and the version from package.json (e.g. 17.0.0):

  • Main app (Imwald): silberengel/imwald-jumble
  • NIP-66 monitor: silberengel/imwald-jumble-nip66-monitor
  • Piper HTTP proxy: silberengel/imwald-piper-tts-proxy (Wyoming Piper still pulls silberengel/wyoming-piper and silberengel/wikistr on the server.)

Registry paths keep the historical imwald-jumble name; retagging is optional and requires updating docker-compose.prod.yml.

Remote server: one-time setup

  1. Docker
    Install Docker and Docker Compose (v2).

  2. Clone the repo (so you have docker-compose.prod.yml):

    git clone <your-repo-url> jumble
    cd jumble
    
  3. Optional env file (e.g. for NIP-66 monitor):

    # .env next to docker-compose.prod.yml
    NIP66_MONITOR_NSEC=nsec1...
    NIP66_MONITOR_NPUB=npub1...
    
  4. Once per machine (LibreTranslate UID 1032 + Piper ONNX into .local-piper-data and, if present, the <project>_piper-stack-data Docker volume):

    bash scripts/ensure-libretranslate-dirs.sh
    

    Large download; re-runs skip existing .onnx pairs. Use SKIP_PIPER_VOICES=1 to only fix LibreTranslate dirs. If the compose project name is not the repo folder name, set COMPOSE_PROJECT_NAME so the Piper volume matches (e.g. jumble_piper-stack-data).

Remote server: pull and run

Use a current docker-compose.prod.yml from this repo (git pull in the clone). If docker compose pull only lists two images, the file is outdated and LanguageTool / LibreTranslate will never start.

After you’ve pushed from local:

cd jumble
git pull
bash scripts/ensure-libretranslate-dirs.sh   # once per host
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d

That starts the full stack in docker-compose.prod.yml (app, NIP-66 monitor, OG proxy, Piper, LanguageTool, LibreTranslate). The SPA is on port 8089; see docker-compose.prod.yml header for Apache paths.

Grammar + translate: ./scripts/build-and-push-prod.sh now bakes in /api/languagetool and /api/translate by default (same as .env.development). Override with LANGUAGE_TOOL_URL / TRANSLATE_URL if your paths differ; set either to empty to omit that feature from the bundle.

Apache (or nginx) must still proxy /api/languagetool127.0.0.1:8010 and /api/translate127.0.0.1:5000.

Shared host: if you already run another og-proxy on 127.0.0.0.1:8090 or another Wyoming Piper on the same ports, docker compose up -d can fail with a port or name conflict. Either stop the duplicates or start only the pieces you need, e.g. docker compose up -d jumble jumble-nip66-monitor languagetool libretranslate (and point PIPER_TTS_HOST / Apache at your existing Piper stack if applicable).

Equivalent one-liner: npm run stack:remote

Images default to :latest; to pin a version, set image tags in docker-compose.prod.yml.

Useful commands (server)

# Status
docker compose -f docker-compose.prod.yml ps

# Logs
docker compose -f docker-compose.prod.yml logs -f

# Stop
docker compose -f docker-compose.prod.yml down