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