v0.0.0 is now available

Search etcd keys
at lightspeed.

Your go-to solution for searching and managing etcd key-value data. Experience lightning-fast, eventually consistent search powered by Meilisearch.

bash
$ ETCD_ENDPOINTS=http://etcd:2379 docker-compose up -d
[+] Running 5/5
✔ Network v3_etcdfinder-net-v3 Created 0.0s
✔ Volume v3_meilisearch_data_v3 Created 0.0s
✔ Container v3-meilisearch-v3-1 Started 0.4s
✔ Container v3-etcdfinder-v3-1 Started 0.4s
✔ Container v3-etcdfinder-ui-v3-1 Started 0.4s

Why EtcdFinder?

Built for performance, designed for ease of use.

Blazing Fast

Leverages Meilisearch to provide instant search results across millions of keys without breaking a sweat.

Eventual Consistency

Keeps your search index seamlessly in sync with your etcd cluster changes.

Docker Ready

Deploy anywhere with official Docker images. Supports multi-arch builds for amd64 and arm64.

Developer Friendly

Simple configuration via environment variables or YAML files. Built with Go for reliability.

Ready to get started?

Get up and running in seconds with Docker Compose.

services:
  etcdfinder-ui:
    image: ghcr.io/etcdfinder/etcdfinder-ui:latest
    pull_policy: always
    container_name: etcdfinder-ui
    ports:
      - "3000:3000"
    networks:
      - etcdfinder-net
    environment:
      BACKEND_URL: http://etcdfinder:8080
    restart: unless-stopped
    depends_on:
      - etcdfinder

  etcdfinder:
    image: ghcr.io/etcdfinder/etcdfinder:latest 
    pull_policy: always
    container_name: etcdfinder
    expose:
      - "8080"
    networks:
      - etcdfinder-net
    environment:
      ETCD_ENDPOINTS: http://etcd:2379
      DATASTORE_MEILISEARCH_HOST: http://meilisearch:7700
    restart: unless-stopped
    depends_on:
      - meilisearch

  meilisearch:
    image: getmeili/meilisearch:latest
    pull_policy: always
    container_name: meilisearch
    expose:
      - "7700"
    networks:
      - etcdfinder-net
    environment:
      MEILI_NO_ANALYTICS: "true"
    volumes:
      - meilisearch_data:/var/lib/meilisearch
    restart: unless-stopped

  etcd:
    image: quay.io/coreos/etcd:v3.5.13
    pull_policy: always
    container_name: etcd
    expose:
      - "2379"
    networks:
      - etcdfinder-net
    environment:
      ETCD_NAME: etcd
      ETCD_DATA_DIR: /etcd-data
      ETCD_LISTEN_CLIENT_URLS: http://0.0.0.0:2379
      ETCD_ADVERTISE_CLIENT_URLS: http://etcd:2379
      ETCD_LISTEN_PEER_URLS: http://0.0.0.0:2380
      ETCD_INITIAL_ADVERTISE_PEER_URLS: http://etcd:2380
      ETCD_INITIAL_CLUSTER: etcd=http://etcd:2380
      ETCD_INITIAL_CLUSTER_STATE: new
      ETCD_ENABLE_V2: "true"
    volumes:
      - etcd_data:/etcd-data
    restart: unless-stopped
    
networks:
  etcdfinder-net:
    driver: bridge

volumes:
  meilisearch_data:
  etcd_data:
services:
  etcdfinder-ui-v3:
    image: ghcr.io/etcdfinder/etcdfinder-ui:latest
    pull_policy: always
    ports:
      - "3000:3000"
    networks:
      - etcdfinder-net-v3
    environment:
      BACKEND_URL: http://etcdfinder-v3:8080
    restart: unless-stopped
    depends_on:
      - etcdfinder-v3
  etcdfinder-v3:
    image: ghcr.io/etcdfinder/etcdfinder:latest
    pull_policy: always
    expose:
      - "8080"
    networks:
      - etcdfinder-net-v3
    environment:
      ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:?Please set ETCD_ENDPOINTS environment variable or use the quickstart deployment (cd ../quickstart && docker-compose up)}
      DATASTORE_MEILISEARCH_HOST: http://meilisearch-v3:7700
    restart: unless-stopped
    depends_on:
      - meilisearch-v3
  meilisearch-v3:
    image: getmeili/meilisearch:latest
    pull_policy: always
    expose:
      - "7700"
    networks:
      - etcdfinder-net-v3
    environment:
      MEILI_NO_ANALYTICS: "true"
    volumes:
      - meilisearch_data_v3:/var/lib/meilisearch
    restart: unless-stopped
    
networks:
  etcdfinder-net-v3:
    driver: bridge

volumes:
  meilisearch_data_v3:
services:
  etcdfinder-ui-v2:
    image: ghcr.io/etcdfinder/etcdfinder-ui:latest
    pull_policy: always
    ports:
      - "3001:3000"
    networks:
      - etcdfinder-net-v2
    environment:
      BACKEND_URL: http://etcdfinder-v2:8080
    restart: unless-stopped
    depends_on:
      - etcdfinder-v2
  etcdfinder-v2:
    image: ghcr.io/etcdfinder/etcdfinder:latest
    pull_policy: always
    expose:
      - "8080"
    networks:
      - etcdfinder-net-v2
    environment:
      ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:?Please set ETCD_ENDPOINTS environment variable or use the quickstart deployment (cd ../quickstart && docker-compose up)}
      ETCD_VERSION: v2
      DATASTORE_MEILISEARCH_HOST: http://meilisearch-v2:7700
    restart: unless-stopped
    depends_on:
      - meilisearch-v2
  meilisearch-v2:
    image: getmeili/meilisearch:latest
    pull_policy: always
    expose:
      - "7700"
    networks:
      - etcdfinder-net-v2
    environment:
      MEILI_NO_ANALYTICS: "true"
    volumes:
      - meilisearch_data_v2:/var/lib/meilisearch
    restart: unless-stopped
    
networks:
  etcdfinder-net-v2:
    driver: bridge

volumes:
  meilisearch_data_v2:

Coming Soon

We are working on Kubernetes Manifests and Helm Charts. Stay tuned!