Files
routstr-core/compose.node.yml
9qeklajc f04bd6b4b7 docs(deployment): describe analytics as a first-boot default
Saved settings win over env after the first boot (Settings.initialize
overlays every non-empty DB value, and False survives that filter), so
compose.node.yml cannot force analytics off and the compose.analytics.yml
opt-in did nothing on a node that had already booted. Point operators at
Settings instead, note that analytics publishing ignores HTTP_URL, and
drop the recipe and its .gitignore entry.
2026-10-07 13:11:17 +00:00

38 lines
1.3 KiB
YAML

# First-run node stack. The API always binds loopback behind an operator's
# reverse proxy. Identity is generated automatically; whether the node is
# published depends only on HTTP_URL — set it (public mode) or leave it unset
# (private, nothing advertised until a URL is configured later).
services:
ui:
env_file: .env
build:
context: ./ui
dockerfile: Dockerfile.build
args:
NEXT_PUBLIC_ADMIN_API_KEY: ""
volumes:
- ./ui_out:/output:z
command: ["sh", "-c", "mkdir -p /output && cp -r /app/built/. /output/ && echo 'UI built and ready' && tail -f /dev/null"]
restart: unless-stopped
routstr:
build: .
depends_on:
- ui
volumes:
- .:/app:z
- ./logs:/app/logs:z
- ./ui_out:/app/ui_out:ro,z
env_file: .env
environment:
# Generate the Nostr identity on first boot; it is stored encrypted and
# nothing is published until a reachable HTTP_URL/onion endpoint exists.
AUTO_GENERATE_NSEC: "true"
# First-boot default only: the saved setting wins afterwards (Settings).
ENABLE_ANALYTICS_SHARING: "false"
ports:
- "127.0.0.1:${ROUTSTR_NODE_PORT:-8000}:8000"
extra_hosts:
- "host.docker.internal:host-gateway"
restart: unless-stopped