Skip to content

Configuration

Strawly's deployment is controlled by a single file: strawly-deployment.yml. You edit this file to choose which modules to enable, set ports, and configure schedules. The deployment scripts read this file and generate the Docker Compose configuration automatically.

strawly-deployment.yml structure

version: "1.0"

core:
  backend:
    enabled: true   # always true — cannot be disabled
    port: 3001

  frontend:
    enabled: true   # always true — cannot be disabled
    port: 3000

modules:
  optimizations-azure:
    enabled: false          # set to true to enable
    port: 3002
    image: codeberg.org/${CODEBERG_USERNAME}/strawly-optimizations-azure:latest

    metadata:
      displayName: "Azure Optimizations"
      icon: "☁️"
      description: "Scans Azure for cost optimisation recommendations"
      provider: azure
      category: optimizations

    schedule:
      cron: "0 3 * * *"    # 3 AM daily (UTC)
      timezone: "UTC"

    env:
      NODE_ENV: production

    depends_on:
      - backend
      - postgres

Core section

The core section configures the two services that are always deployed.

Field Description Default
core.backend.port Host port for the backend API 3001
core.frontend.port Host port for the frontend UI 3000

To change a port, update the value here, regenerate, and redeploy:

npm run generate-compose
docker compose -f docker-compose.generated.yml up -d

Also update the corresponding *_PORT variable in .env if you change the backend port, and update CORS_ORIGIN to match the new frontend port.

Modules section

Each key under modules corresponds to an optional module. The module name (e.g. optimizations-azure) must match the key used in the module registry.

Common module fields

Field Description
enabled true to deploy, false to skip
port Host port the module listens on
image Docker image reference (uses CODEBERG_USERNAME from .env)
schedule.cron Cron expression for the module's automatic scan
schedule.timezone Timezone for the cron schedule

Changing a module's scan schedule

Edit the schedule.cron value using standard cron syntax, then regenerate and redeploy:

schedule:
  cron: "0 6 * * *"   # 6 AM instead of 3 AM
npm run generate-compose
docker compose -f docker-compose.generated.yml up -d

After any configuration change

Always regenerate the compose file after editing strawly-deployment.yml:

npm run generate-compose
docker compose -f docker-compose.generated.yml up -d

For module removals, add --remove-orphans to clean up stopped containers:

docker compose -f docker-compose.generated.yml up -d --remove-orphans