dedup4j
Reference

Configuration properties

Every dedup4j configuration property and its default. · 4 min

Every dedup4j.* property, its default, and whether it is honoured. Defaults are read from the property classes, not from documentation.

Storage

dedup4j.storage.*

PropertyDefaultNotes
providernoneRequired. local, s3, or azure
key-prefix""Prefix applied to every object key

provider has no default. Omit it and no storage adapter is configured.

Local

dedup4j.storage.local.*

PropertyDefaultNotes
root-directorydedup4j-storageDirectory holding stored blobs
Tip

Set it explicitly anyway

Naming the directory in configuration makes the location obvious to the next person reading your config, and to anyone debugging where bytes went.

S3

dedup4j.storage.s3.*

PropertyDefaultNotes
bucketnoneRequired when provider=s3
regionnoneAWS region
endpointnoneCustom endpoint for S3-compatible stores
path-stylefalsetrue for MinIO and most S3-compatible stores

No credentials property exists. The AWS default credential provider chain is used — see Storage providers.

Azure

dedup4j.storage.azure.*

PropertyDefaultNotes
containernoneRequired when provider=azure
account-namenoneAccepted but not used in 0.1.0
endpointnoneService URL carrying a SAS, or Azurite. One of endpoint or connection-string is required
connection-stringnoneEmbeds an account key or SAS; keep it out of committed config

Persistence

dedup4j.persistence.*

PropertyDefaultNotes
initialize-schemaembeddedembedded, always, or never

embedded initialises the schema only when the DataSource is an embedded database. Against any other database it creates nothing. See Spring Boot integration.

The upload-history changelog follows the same mode. Under embedded, both changelogs run only on an in-memory H2 database (jdbc:h2:mem:), not on an H2 file or server database. See Upload history.

Upload history

dedup4j.history.*

PropertyDefaultNotes
enabledtrueDurable append-only upload history. PostgreSQL and H2 only
instance-iddedup4j.management.instance-id, then a random UUID per startAttribution label on history rows; totals never group by it

Any database other than PostgreSQL or H2 fails startup unless enabled: false. With history disabled, totals are counted since application start. The history changelog, classpath:db/dedup4j/history/db.changelog-history.yaml, has its own tracking tables (DEDUP4J_HISTORY_DATABASE_CHANGELOG and _LOCK). See Observability & dashboards.

Deduplication

dedup4j.deduplication.*

PropertyDefaultNotes
max-upload-size25MBLarger uploads are rejected
Warning

Content is read into memory to be hashed

Raising max-upload-size raises peak memory per concurrent upload. Size it against your heap and your concurrency, not against your largest file.

Note

Content identity is not configurable

The hash algorithm is fixed at SHA-256, and deletion at zero references is unconditional. Neither has a property, because neither is a choice the library offers.

Management

dedup4j.management.* — requires dedup4j-spring-boot-management.

PropertyDefaultNotes
enabledfalseOpt in deliberately
base-path/dedup4j/managementMount point
instance-namededup4jLabel for this instance
instance-idrandom UUIDRegenerated on every restart; shared with history rows unless dedup4j.history.instance-id is set

Embedded dashboard

dedup4j.dashboard.* — requires dedup4j-spring-boot-dashboard.

PropertyDefaultNotes
enabledtrueOn by default when the module is present
base-path/dedup4j/dashboardMount point
failure-lookback7dHow far back the failure view reads

Dashboard registration

dedup4j.dashboard-registration.* — announces this instance to a standalone dashboard.

PropertyDefaultNotes
enabledfalse
dashboard-urlnoneWhere the standalone dashboard is
advertised-urlnoneHow the dashboard reaches back to this instance
instance-namededup4j
instance-idnone

Standalone dashboard

The standalone application is configured independently, not through dedup4j.* in your application.

PropertyDefaultNotes
server.address127.0.0.1Its entire security boundary
dedup4j.dashboard.database-path./dedup4j-dashboard.sqliteIts own SQLite file, separate from your application database
Danger

Changing server.address removes the only protection

The standalone dashboard has no authentication. See Observability & dashboards.

Minimal working configuration

spring:
  datasource:
    url: jdbc:h2:mem:app

dedup4j:
  storage:
    provider: local
    local:
      root-directory: ./dedup4j-storage

For production, add a real datasource, set initialize-schema: never, and manage the schema with your migration tool.

View source