services: massprice: build: . container_name: massprice # Headless Chromium's default /dev/shm (64MB) is too small in Docker # and causes renderer crashes — this is the standard mitigation. shm_size: "1gb" ports: - "${HOST_PORT:-5057}:5000" # MassPrice's login is behind hCaptcha, which blocks fully # automated sign-in — this port reaches (via an in-container socat # proxy, see automation.py) headless Chromium's CDP debug endpoint, # so a human can log in via chrome://inspect from their own machine # (see the Session page / deploy-massprice skill). Maps to 9333, # NOT Chromium's own 9222 — Chromium's debug port binds loopback- # only regardless of config, so socat re-exposes it on a different # internal port. Only listens while a login session is actively # started from the webui, and only reachable on the LAN. - "${DEBUG_PORT:-9222}:9333" volumes: # Schedules, run history, the rule-name cache, and the saved # MassPrice login session must outlive `up -d --build`, which # recreates the container and discards its filesystem. - ./data:/data environment: - LOGIN_PASSWORD=${LOGIN_PASSWORD} - SECRET_KEY=${SECRET_KEY} - DEBUG_PORT=${DEBUG_PORT:-9222} - TZ=${TZ:-America/New_York} restart: unless-stopped