Cerebra is a React-based UI for managing Elasticsearch clusters, inspired by Cerebro.
It provides cluster health overview, shard viewer, node stats, and shard relocation.
- Cluster health and overview dashboard
- Shard viewer with relocation support
- Node resource usage monitoring (CPU, memory, disk)
- Dark mode support
- Configurable Elasticsearch backend URL via runtime config
- Easy deployment with Docker and Kubernetes
- Node.js 18+ and npm/yarn
- Docker (for container builds)
- Kubernetes cluster (optional)
git clone https://github.com/yourusername/cerebra.git
cd cerebra
npm installA default public/config.json with dev Elasticsearch URL is included.
npm run devVisit http://localhost:5173 in your browser.
Cerebra reads backend config from /config.json at runtime.
public/config.json contains default config, e.g.:
{
"ELASTIC_BASE_URL": "http://localhost:9200"
}Override the config by mounting a ConfigMap as /config.json in the container.
Example Kubernetes ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: elasticsearch-config
data:
config.json: |
{
"ELASTIC_BASE_URL": "http://es.elasticsearch.svc.cluster.local"
}Mount it in your Pod spec:
volumes:
- name: config-volume
configMap:
name: elasticsearch-config
containers:
- name: cerebra-frontend
image: your-image
volumeMounts:
- name: config-volume
mountPath: /usr/share/nginx/html/config.json
subPath: config.json
readOnly: truenpm run buildThis outputs static files in dist/, ready for deployment.
docker build -t cerebra-frontend .docker run -p 8080:80 cerebra-frontend- The app fetches
/config.jsonon load to getELASTIC_BASE_URL. - This allows changing backend URLs without rebuilding the app.
- Ensure
config.jsonis served alongside your static files.
Feel free to open issues or submit pull requests.
MIT License © Jean-Philippe Ruijs
Inspired by Cerebro.
Container images available on docker.io