This directory now owns the public self-hosted packaging entry points for OpenSOAR.
OpenSOAR is a PwnKit Labs product.
For the simplest single-host deployment, use the bundled Compose file:
docker compose -f deploy/docker-compose.yml up -dThis path runs:
postgresredismigrateapiworkerui
The first Kubernetes packaging slice lives at:
helm/opensoarInstall it with:
helm install opensoar ./helm/opensoarThe chart currently deploys:
postgresas a single-replica StatefulSetredisas a single-replica Deploymentmigrateas a pre-install / pre-upgrade Jobapiworkerui
- The chart is intentionally a v0 skeleton, not a HA reference architecture.
- The current UI image proxies
/apito the Kubernetes Service namedapi, so the chart assumes one OpenSOAR release per namespace. - EE-compatible self-hosted installs should override the
api,worker, andmigrateimages with custom images that include the privateopensoar-eepackage. - Secret values in
values.yamlare placeholders. Use real secrets before production deployment. - Elasticsearch / Kibana are not bundled in the Helm chart. Integrate those as external dependencies if your environment needs them.
- Migrations run as a Helm hook Job before install and upgrade.
- Persistent data is only defined for Postgres in this first slice.
- Review image tags carefully before upgrading from
latestto a pinned release or vice versa.
Before upgrading a self-hosted deployment:
- Back up the Postgres data volume or database instance.
- Decide whether you are upgrading to pinned image tags or continuing to track
latest. - Make sure
api,worker, andmigrateall use the same application/plugin image set. - Review any local playbook or plugin changes you expect the new deployment to load.
Use:
docker compose -f deploy/docker-compose.yml pull
docker compose -f deploy/docker-compose.yml up -dAfter the upgrade:
- Check
docker compose ps. - Confirm the API is healthy:
curl http://localhost:8000/api/v1/health- Check
docker compose logs migrate api worker --tail 100. - Confirm playbooks are still discovered in the API startup logs.
- Trigger a low-risk webhook test and confirm the worker still processes playbook execution.
Use:
helm upgrade --install opensoar ./helm/opensoarAfter the upgrade:
- Confirm the migrate hook Job completed successfully.
- Confirm
api,worker, anduiPods are Ready. - Confirm the API health endpoint responds through your Service/Ingress path.
- Confirm startup logs still show expected playbook discovery.
- Trigger a low-risk webhook test and confirm the worker still consumes queued work.
- Database schema migrations can make rollback asymmetric. Do not assume you can safely roll back application images without checking the migration history first.
- If a migration has already run, prefer restoring from a database backup over blindly reverting only the
api/workerimages. - If you ship optional plugins or private extensions, treat rollback as a full image-set rollback across
api,worker, andmigrate, not a single-service change.
- externalize Postgres and Redis for production
- add ingress, TLS, and secret-manager integration
- pin image tags per release
- add probes, resource requests/limits, and backup guidance tuned for your environment