Docker

Crystalline is primarily made to be deployed to a container runtime such as Docker or Podman.

The container is built with 3 mountpoints to be configured, These are:

  • /data - This is where Crystalline will store all log events and where the index files are stored.
  • /config - This is where Crystalline will look for and save its configuration database.
  • /cache - This is where Crystalline will store temporary data such as search results, this is usually fine to be a tmpfs mountpoint; but if individual searches produce a very large number of results then you may want to consider using a persistent storage device for this directory.

Example compose file

version: "3"
services:
  crystalline:
    image: codeberg.org/kryesh/crystalline:latest
    hostname: crystalline
    restart: unless-stopped
    volumes:
      - crystalline_data:/data
      - crystalline_config:/config
      - type: tmpfs
        target: /cache
    ports:
      - 8080:8080
    environment:
      - CRYSTALLINE_BATCH_SIZE=500
      - CRYSTALLINE_PARALLEL_BUCKET_READERS=4
      - CRYSTALLINE_PARALLEL_BUCKET_WRITERS=4
      - CRYSTALLINE_SCALE_FACTOR=4
      - CRYSTALLINE_WRITER_WORKER_MEM=16
      - CRYSTALLINE_WRITER_WORKER_THREADS=4
      - CRYSTALLINE_IDLE_WRITER_TIMEOUT=5
      - CRYSTALLINE_COMMIT_INTERVAL=5
      - CRYSTALLINE_SEARCH_JOB_TTL=7200
volumes:
  crystalline_data:
  crystalline_config: