# The coinos v3 services. Each runs this checkout under Bun. # # Secrets and state live outside the checkout, under $STATE (set it in a .env # file next to this one; see README.md): # $STATE/names/config.json $STATE/names/data/ (names.db) # $STATE/nwcpush/config.json $STATE/nwcpush/data/ # $STATE/blossom/data/ # $STATE/live/config.json $STATE/live/data/ (TURN key; streams and their recordings) # $STATE/messages/bin/magnitude-relay $STATE/messages/data/ (see messages/README.md) services: names: image: ghcr.io/coinos/bun:1.4.3 container_name: names working_dir: /app command: bun names/server.js environment: NAMES_CONFIG: /etc/coinosv3/config.json volumes: - .:/app:ro - ${STATE:?set STATE in .env}/names/config.json:/etc/coinosv3/config.json:ro - ${STATE}/names/data:/data - ${CLN_RPC:?set CLN_RPC in .env}:/cln/lightning-rpc - ${CLN_MUT_RPC:-/dev/null}:/cln-mut/lightning-rpc ports: - 127.0.0.1:8798:8798 networks: [net] restart: unless-stopped nwcpush: image: ghcr.io/coinos/bun:1.4.3 container_name: nwcpush working_dir: /app command: bun nwcpush/server.js environment: NWCPUSH_CONFIG: /etc/coinosv3/config.json volumes: - .:/app:ro - ${STATE}/nwcpush/config.json:/etc/coinosv3/config.json:ro - ${STATE}/nwcpush/data:/data ports: - 127.0.0.1:8797:8797 networks: [net] restart: unless-stopped blossom: image: ghcr.io/coinos/bun:1.4.3 container_name: blossom working_dir: /app command: bun blossom/server.js environment: BLOSSOM_DATA: /data BLOSSOM_PORT: "8796" BLOSSOM_HOST: blossom.coinos.io volumes: - .:/app:ro - ${STATE}/blossom/data:/data ports: - 127.0.0.1:8796:8796 networks: [net] restart: unless-stopped # live streams sent from the app (live/server.js). ffmpeg comes with the # vmedia image (vmedia/Dockerfile: `docker build -t vmedia vmedia/` on the host). live: image: vmedia container_name: live working_dir: /app command: bun live/server.js environment: LIVE_DATA: /data LIVE_PORT: "8795" LIVE_BASE: https://v3.coinos.io/live NAMES_URL: http://names:8798 LIVE_CONFIG: /etc/coinosv3/config.json volumes: - .:/app:ro - ${STATE}/live/data:/data - ${STATE}/live/config.json:/etc/coinosv3/config.json:ro cpus: 4 mem_limit: 2g networks: [net] restart: unless-stopped # messages.coinos.io: Magnitude Relay (Rust) for private messages and group # chats. Its binary is built on the host (messages/README.md), not in the # hook; host networking so it can sync from the strfry tunnel on 127.0.0.1. messages: image: debian:bookworm-slim container_name: messages command: /usr/local/bin/magnitude-relay --config /etc/magnitude-relay/relay.toml volumes: - ${STATE}/messages/bin/magnitude-relay:/usr/local/bin/magnitude-relay:ro - ./messages/relay.toml:/etc/magnitude-relay/relay.toml:ro - ${STATE}/messages/data:/data network_mode: host cpus: 2 mem_limit: 2g stop_grace_period: 20s restart: unless-stopped networks: net: external: true