Docker & Helm
Filament Management ships as three separate container images, built from three separate Dockerfiles at the repository root:
| Image | Dockerfile | Contains |
|---|---|---|
| Backend | Dockerfile.backend | The Go API server |
| Frontend | Dockerfile.frontend | The static React SPA, served by its own container |
| Bridge | Dockerfile.bridge | The local network bridge binary |
All three are minimal, statically-linked, distroless-style builds (CGO_ENABLED=0, scratch-based
final stage) for a small attack surface and small image size.
Configuration
The backend is configured entirely through environment variables. The ones most deployments care about:
| Variable | Purpose |
|---|---|
DB_DRIVER | sqlite or mysql |
DB_NAME, DB_HOST, DB_PORT, DB_USER, DB_PASSWORD | Database connection |
REGISTRATION_ENABLED | Allow self-service workspace registration (default false) |
REDIS_ADDR, REDIS_DB, REDIS_PASSWORD | Required only when running more than one backend |
| replica and using the local network bridge — coordinates routing a bridge connection across | |
| pods via a shared job queue | |
SENTRY_DSN, SENTRY_ENVIRONMENT, SENTRY_TRACES_SAMPLE_RATE | Error reporting (global, not |
| per-workspace — see Multi-tenancy) |
With a single backend replica, the local network bridge works without Redis configured at all —
REDIS_ADDR only becomes necessary once you scale beyond one pod and still want the bridge to
work regardless of which pod a bridge device happens to be connected to.
Helm chart
A Helm chart lives under helm/ in the repository and deploys the backend and frontend as separate
Deployments, with an optional MariaDB dependency. Key values:
image:
repositoryBackend: jonasled.dev/jonasled/filamentmanagement/backend
repositoryFrontend: jonasled.dev/jonasled/filamentmanagement/frontend
tag: "" # defaults to the chart's appVersion
replicaCountBackend: 1
replicaCountFrontend: 1
mariadb:
enabled: true
external:
host: mariadb
auth:
database: filamentmanagement
username: filamentmanagement
registration:
enabled: false
redis:
addr: "" # set this once replicaCountBackend > 1 and you use the bridge
ingress:
enabled: false
Install or upgrade with:
helm dependency update helm
helm upgrade --install filamentmanagement ./helm \
--set image.tag=<version> \
--set ingress.enabled=true \
--set ingress.hosts[0].host=filaments.example.com
See helm/values.yaml for the full set of configurable values (resources, autoscaling, pod
security context, service account, and more — all fairly standard for a Helm chart following the
default chart layout).