Infrastructure credentials
The default configuration ships with weak, well-known passwords for PostgreSQL, MinIO, and Redis. Replace them with strong, unique values before exposing Tracecat to production traffic.command override in your docker-compose.yml:
Execution sandboxing
Tracecat executes user-defined Python scripts and actions inside the executor service. The level of isolation depends on your configuration.PID namespace isolation
The defaultdirect backend provides best-effort PID namespace isolation using Linux unshare. This prevents scripts from inspecting other processes via /proc, but does not restrict filesystem or network access. It works without Docker privileged mode and is the baseline for non-sandboxed deployments.
nsjail sandbox (recommended for production)
For production, enable nsjail — a process isolation tool from Google that enforces:- Filesystem isolation — scripts can only access their job directory and explicitly mounted paths. The host filesystem is not visible.
- Resource limits — CPU time, memory, file size, and process count are capped per execution. A runaway script cannot starve the host.
- User namespace separation — scripts run as unprivileged users even when the container runs as root.
- Network access — network is allowed (scripts need to reach databases, APIs, and S3) but constrained to the container’s network namespace.
.env:
- Linux with kernel 4.6+
- Docker privileged mode or
CAP_SYS_ADMINcapability on the executor container - The nsjail binary and sandbox rootfs (included in Tracecat images)
nsjail is not supported on macOS or Windows. These platforms can only use the
direct backend with PID namespace isolation.Choosing a backend
| Backend | Isolation | Latency | Use case |
|---|---|---|---|
direct | PID namespace only | ~50ms | Development, trusted environments |
pool | nsjail sandbox (warm workers) | ~100-200ms | Single-tenant production |
ephemeral | nsjail sandbox (cold per action) | ~4000ms | Multi-tenant, maximum isolation |