# 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/data/ (streams and their recordings) services: names: image: oven/bun:1.3.14 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: oven/bun:1.3.14 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: oven/bun:1.3.14 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 volumes: - .:/app:ro - ${STATE}/live/data:/data cpus: 4 mem_limit: 2g networks: [net] restart: unless-stopped networks: net: external: true