Skip to main content
MoleSignal ships as one binary and one container image. Configuration selects which roles a process runs: a single process can run everything, or the roles can be split across processes. Every deployment needs two external services: PostgreSQL and object storage.

Requirements

Memory and disk use depend on the ingest volume, the number of active streams, and the cache settings in Configuration. Size from observed usage: the Home page shows raw and compressed intake volume, and the process exposes Prometheus metrics at /metrics. See the Production checklist.

Container image

The image is published as ghcr.io/molesignal/molesignal. Each release publishes a version tag (for example 26.1.0.0) and a channel tag (for example alpha). Pin the version tag in production.
The same image serves every role. The runtime variable RELEASE_CHANNEL (alpha, beta, rc, or stable) labels the deployment maturity and does not change the binary. The web UI is embedded in the binary and served on the HTTP port.

Deployment options

The repository ships deploy/docker/docker-compose.yaml with two profiles. Both start PostgreSQL 17 and RustFS, and run the MoleSignal image from ghcr.io/molesignal/molesignal.
The multirole profile deploys one container per role. The router publishes the web UI and the HTTP API on 5080 and the OTLP gRPC receiver on 4317. See Role-based deployment.The standalone service publishes 5080 and 5082. It does not publish the OTLP gRPC port 4317. To send OTLP gRPC from the host, add a 4317:4317 mapping to the service.The Compose file is a sandbox: it uses default credentials, a development cipher key, and a development MS_SELF_TELEMETRY_CLUSTER_TOKEN for the multirole profile. Replace them before storing real data. See the Production checklist. The sandbox bucket is private.
See Role-based deployment for roles, scaling, and high availability.

Ports

Health and metrics

  • GET /api/v1/healthz is public. It returns 200 with {"status":"ok"}, or 503 with a reason while the intake WAL replays or when the object store is unreachable. Use it for container and load balancer probes.
  • GET /metrics is public and returns Prometheus metrics. Restrict it at the proxy or network layer.
  • GET /api/v1/readyz and GET /api/v1/version require a bearer token on a standalone or router node. version returns the version, commit, build id, release channel, and edition.
  • A node in a role-split cluster that does not serve the full API answers GET /api/v1/healthz, GET /api/v1/readyz, and GET /metrics without authentication on the same port.
See Self-observability for the metrics and the built-in telemetry of the service itself.
Last modified on October 26, 2026