Skip to main content

Bare-Metal Install (no Docker, no Kubernetes)

The standalone installer brings the entire Elchi stack up as systemd services on 1, 2, or 3+ Linux VMs — no Kubernetes, no Helm, no Docker required. The script runs once on the first node ("M1", the local machine) and SSHes into the rest to provision them. Source lives at elchi-archive/deploy/standalone/; the installer itself is unversioned and always runs from the main branch. Component versions (elchi-backend, UI, envoy, coredns) are pinned per-flag.

ComponentWhere it runsDefault port
Envoy (front-door)Every node0.0.0.0:443 (TLS), 127.0.0.1:8080, 127.0.0.1:9901 (admin)
nginx (UI)Every node127.0.0.1:8081
elchi-registryEvery node (HA peer set, gRPC HC pins to leader):1870 gRPC, :9091 metrics
elchi-controllerEvery node (singleton):1960 gRPC, :1980 REST
elchi-control-planeEvery node (one per backend variant):1990 (per variant)
OTel CollectorEvery node (local sink for envoy /opentelemetry):4317 gRPC, :4318 HTTP, :13133 health, :8888 prom
elchi-collectorEvery node (ALS sink — Envoy data-plane proxies push Access Log Service streams here; writes to local ClickHouse + MongoDB). Opt out with --no-collector:18090 gRPC, :18091 HTTP/metrics
MongoDB1–2 VM: M1 standalone · 3+ VM: M1+M2+M3 RS · 4+: no extra members:27017
ClickHouse1–2 VM: standalone · 3+ VM: clustered with embedded Keeper on each member (Replicated engine, replicated tables):9000 native, :8123 HTTP, :9009 interserver (3+), :9181/:9234 Keeper (3+)
VictoriaMetricsM1 only (or external via --vm=external):8428
GrafanaM1 only (proxied at /grafana/)127.0.0.1:3000
CoreDNS GSLBEvery node (default-on, zone defaults to elchi.local; opt out with --no-gslb):53 tcp+udp, :8053 webhook