Sign inSign up

exisllc/exisecho-docker

By exisllc

•Updated 2 months ago

Self-hosted fuzzy matching and duplicate detection API. Your data never leaves your network.

Image
0

1.1K

exisllc/exisecho-docker repository overview

⁠Exis Echo Docker

Self-hosted fuzzy matching and duplicate detection API. Deploy on your own infrastructure -- your data never leaves your network.

Exis Echo Docker is the on-premise edition of ExisEcho⁠, the world's most flexible fuzzy logic deduplication system. It bundles the full fuzzy matching API, an admin configuration UI, and a ready-to-deploy Excel Add-in into a single Docker container.


⁠Quick Start

docker run -d \
  --name exisecho \
  -p 8080:8080 \
  -v exisecho-data:/app/data \
  exisllc/exisecho-docker:latest

Open http://localhost:8080⁠ in your browser to access the admin panel.


⁠What's Inside

ComponentDescription
Fuzzy Match APIPOST /api/match and POST /api/compare -- same endpoints as the cloud version. No API key required.
Admin UISingle-page admin panel for license activation, API testing, Python code examples, and Excel Add-in deployment.
Excel Add-inPre-built Office Add-in served from the container. Generate a sideload manifest from the admin panel and deploy to your org.
Health CheckGET /api/health -- always available for monitoring and orchestration.

⁠Endpoints

MethodPathDescription
POST/api/matchFind duplicates within a single dataset (up to 10,000 records)
POST/api/compareCompare two datasets to find matches between them
GET/api/healthHealth check (always returns 200 when running)
GET/Admin UI
GET/SupportSupport page

⁠API Usage (No API Key Required)

import requests

result = requests.post("http://localhost:8080/api/match", json={
    "records": [
        {"id": "1", "fields": {"name": "John Smith", "city": "New York"}},
        {"id": "2", "fields": {"name": "Jon Smyth", "city": "NYC"}},
        {"id": "3", "fields": {"name": "Jane Doe", "city": "Boston"}}
    ],
    "matchingColumns": ["name", "city"],
    "threshold": 0.7,
    "columnOptions": {
        "name": {"usePhoneticMatching": True, "equateSynonyms": True},
        "city": {"equateAddressAbbreviations": True}
    }
}).json()

for match in result["matches"]:
    print(f"{match['record1Id']} <-> {match['record2Id']}: {match['score']:.0%}")

⁠Data Persistence

Mount a Docker volume to /app/data to persist:

  • License activation -- your license key and activation state
  • Hardware ID -- stable container identity used for licensing

Without a volume, restarting the container will lose your license activation and consume a new seat.

# Named volume (recommended)
docker run -v exisecho-data:/app/data -p 8080:8080 exisllc/exisecho-docker

# Bind mount to host directory
docker run -v /opt/exisecho/data:/app/data -p 8080:8080 exisllc/exisecho-docker

⁠Docker Compose

services:
  exisecho:
    image: exisllc/exisecho-docker:latest
    ports:
      - "8080:8080"
    volumes:
      - exisecho-data:/app/data
    restart: unless-stopped

volumes:
  exisecho-data:

⁠Licensing

Exis Echo Docker includes a 14-day free trial that starts automatically on first run. During the trial, all features are fully functional with no limits.

After the trial expires, all API endpoints return 403 Forbidden until a license is activated. Activate your license through the admin UI at http://your-server:8080 (License tab).

Purchase a license at fuzzy-logic.com⁠ or contact sales at [email protected]⁠.


⁠Excel Add-in Deployment

The container serves a self-hosted Excel Add-in that connects directly to this server:

  1. Open the admin UI and go to the Excel Add-in tab.
  2. Enter your server URL and click Download Manifest.
  3. Place the manifest XML in a shared network folder.
  4. Add the folder as a Trusted Add-in Catalog in Excel.
  5. Users find the add-in under Insert > My Add-ins > Shared Folder.

No API key is needed. No data leaves your network.


⁠Configuration

Environment VariableDefaultDescription
ASPNETCORE_URLShttp://+:8080Listen address and port
DataDirectory/app/dataPath to persistent data directory
ASPNETCORE_ENVIRONMENTProductionSet to Development for verbose logging
⁠Custom Port
docker run -p 9090:9090 -e ASPNETCORE_URLS=http://+:9090 -v exisecho-data:/app/data exisllc/exisecho-docker
⁠Behind a Reverse Proxy (HTTPS)

Place Nginx, Caddy, or Traefik in front of the container for TLS termination:

docker run -p 127.0.0.1:8080:8080 -v exisecho-data:/app/data exisllc/exisecho-docker

Then proxy https://exisecho.yourcompany.com to http://127.0.0.1:8080.


⁠Column Options Reference

OptionTypeDefaultDescription
weightnumber1.0Importance multiplier (0.1-10.0)
usePhoneticMatchingboolfalseSound-alike matching (Smith/Smyth)
equateSynonymsboolfalseTreat synonyms as equal (Bob=Robert)
equateAddressAbbreviationsboolfalseExpand abbreviations (St=Street, NYC=New York)
removeHonorificsboolfalseRemove Mr., Mrs., Dr., etc.
removePunctuationbooltrueStrip special characters
removeArticlesboolfalseRemove a, an, the
ignoreCasebooltrueCase-insensitive comparison
ignoreWordOrderboolfalse"John Smith" = "Smith John"
matchingCharactersint0Match first N chars only (0=all)
removeCustomWordsarraynullCustom words to remove

⁠Support


⁠Tags

  • latest -- most recent stable release
  • 1.0.0 -- specific version

Built by Exis, LLC⁠

Tag summary

Content type

Image

Digest

sha256:ca8d326a6…

Size

86.3 MB

Last updated

2 months ago

docker pull exisllc/exisecho-docker