How to Specify Properties
Properties may either be defined in a Java properties file or passed to Fedora directly using "-D" command-line arguments.
By default, Fedora will look for a properties file at $FCREPO_HOME/config/fcrepo.properties
.
For example, you might start Fedora by passing it a "-D" argument that specifies the location of fcrepo.home
.
java -Dfcrepo.home=/data/fcrepo-home -jar fcrepo-webapp-<version>-jetty-console.jar
And then have a properties file at /data/fcrepo-home/config/fcrepo.properties
that defines the rest of your properties. For example, it's contents might look like this:
# add any number of properties below fcrepo.autoversioning.enabled = true fcrepo.persistence.defaultDigestAlgorithm = sha256
Property Precedence
If you define the same property both in a property file and as a "-D" argument, then the "-D" argument has precedence.
Table of Configurable Properties
Property Name | Description | Default Value | Constraints |
---|---|---|---|
fcrepo.home | The home directory for all Fedora generated output and state. Unless otherwise specified, all logs, metadata, binaries, and internally generated indexes, etc. | <cwd/fcrepo-home> | |
fcrepo.config.file | The path to a properties file containing any property name value pair specified below. If the file does not exist, Fedora will silently ignore it. Important note: If you create the properties file in the default location (specified in the next column) know that any definition of fcrepo.home in that file will be ignored. The fcrepo.home property will be read from the properties file only when the following two conditions are present: 1) you are using the -Dfcrepo.config.file=... option and 2) you have not specified -Dfcrepo.home=... | <fcrepo.home>/config/fcrepo.properties | |
fcrepo.spring.configuration | The path to the spring configuration. While it is generally not recommended to use this option, in some cases you may need to make adjustments to the default spring configuration. This can be set to a path (relative to the current working directory or absolute) to which Fedora repository content will be written. | <classpath:/config/spring/fcrepo-config.xml> | file:/path/to/fcrepo-config.xml |
java.io.tmpdir | This specifies the directory for writing temp files. You may need to set this property to a larger disk/filesystem to upload large files, particularly on Linux where /tmp is sometimes on a small partition. | </tmp on Linux, $TMPDIR on MacOSX, and %TEMP% on Windows> | |
fcrepo.external.content.allowed | This provides the path to a file defining a list of allowed external binary content paths. If this parameter is not provided, then clients will be disallowed from creating external binary resources. See the external content allowed paths configuration for more details. | </path/to/allowed.txt> | |
fcrepo.autoversioning.enabled | This option results in every change to Fedora resources either:
See here for more details. | true | true, false |
fcrepo.session.timeout | This sets the duration (in milliseconds) for which a transaction will stay active before auto-rolling back. | 180,000ms (3 minutes) | |
fcrepo.velocity.runtime.log | The HTML template code uses Apache Velocity, which generates a runtime log called velocity.log . | <fcrepo.home/logs/velocity.log> | |
fcrepo.namespace.registry | This provides the path to a YAML file defining a list of desired prefixes for namespace URIs. See the RDF Namespaces documentation for more information. | none | |
fcrepo.properties.management | Controls if updating server managed triples is allowed in user RDF. By default, it is not allowed. See here for more details. | strict | strict, relaxed |
fcrepo.metrics.enable | Controls if applications metrics are collected and emitted. See the metrics page for more information. | false | true, false |
fcrepo.event.threads | Controls the number of threads that are used to process events on Fedora's internal event bus. This is used for asynchronous tasks like search indexing and emitting JMS messages. | 1 | > 0 |
fcrepo.banner.enabled | Controls the display of the registration banner on the UI pages | true | true, false |
Cache | |||
fcrepo.cache.db.ocfl.id_map.size.entries | Specifies the number of Fedora ID to OCFL ID mappings stored in cache. | 1024 | |
fcrepo.cache.db.ocfl.id_map.timeout.minutes | Specifies the number of minutes before entries in the Fedora ID to OCFL ID mapping cache expire. | 10 | |
fcrepo.cache.types.size.entries | Specifies the number of Fedora ID to user type rdf mappings stored in cache | 1024 | |
fcrepo.cache.types.timeout.minutes | Specifies the number of minutes before entries in the Fedora ID to to user type rdf mapping cache expire. | 10 | |
Auth (more info) | |||
fcrepo.auth.enabled | Specifies if authorization should be enabled. Note, this does not disable authentication. | true | true, false |
fcrepo.auth.principal.header.enabled | Enables the principal provider that extracts a principal out of a specified HTTP header. | false | true, false |
fcrepo.auth.principal.header.name | The name of the header to extract a principal from. | some-header | |
fcrepo.auth.principal.header.separator | The separator in the principal header. | , | |
fcrepo.auth.principal.roles.enabled | Enables the principal provider that uses Tomcat roles. | false | true, false |
fcrepo.auth.principal.roles.list | The list of Tomcat roles. This should be a comma separated list of roles. | tomcat-role-1,tomcat-role-2 | comma separated list |
fcrepo.auth.principal.delegate.enabled | Enables the delegate principal provider that allows a principle to be specified using the On-Behalf-Of header. | true | true, false |
fcrepo.auth.webac.authorization | Specifies the path to the ACL to use for the Fedora repository root resource. Use this to override the default ACL. | ||
fcrepo.auth.webac.userAgent.baseUri | Specifies the base URI that should be prepended to the user agent | ||
fcrepo.auth.webac.groupAgent.baseUri | Specifies the base URI that should be prepended to the group agent | ||
Database (more info) | |||
fcrepo.db.url | This parameter allows you to set the database connection url. In general the format is as follows: jdbc:<database_type>://<database_host>:<database_port>/<database_name> Fedora currently supports H2, PostgresQL 12.3, MariaDB 10.5.3, and MySQL 8.0 So using the default ports for the supported databases here are the values we typically use:
MariaDB: jdbc:mariadb://localhost:3306/fcrepo If you wish to configure h2, there are a variety of options detailed in the H2 Reference docs. | By default Fedora uses an embedded H2 database. | |
fcrepo.db.user | The database username | None - H2 doesn't require it | |
fcrepo.db.password | The database password | None - H2 doesn't require it | |
fcrepo.db.connection.checkout.timeout | The amount of time to wait before assuming checkout failed in milliseconds | 30000 | |
fcrepo.db.max.pool.size | Specifies the maximum number of connections in the pool available for connecting to the database. | 10 | |
OCFL | |||
fcrepo.ocfl.root | Sets the root directory of the OCFL. | <fcrepo.home>/data/ocfl-root | |
fcrepo.ocfl.temp | Sets the temp directory used by OCFL. | <fcrepo.home>/data/ocfl-temp | |
fcrepo.ocfl.staging | Sets the staging directory used by OCFL. | <fcrepo.home>/data/staging | |
fcrepo.persistence.defaultDigestAlgorithm | The digest algorithm used by OCFL, also used to calculate resource checksums. Changing the digest algorithm to sha256 will reduce the amount disk overhead consumed by OCFL related metadata. | sha512 | sha256, sha512 |
fcrepo.ocfl.unsafe.write.enabled | When this option is enabled, files are stored in OCFL objects without calculating their digest again. This eliminates a redundant digest calculation, speeding up writes, at the cost of less safe write operations. If there is a bug in Fedora that results in it calculating incorrect digests, then there is a risk that it will create corrupted OCFL objects with this option enabled. | false | true,false |
fcrepo.ocfl.verify.inventory | When enabled, the inventory for an OCFL object will be validated during read and write operations. | true | true,false |
fcrepo.ocfl.reindex.failOnError | Indicate whether reindexing should fail on error. | true | true, false |
fcrepo.ocfl.reindex.batchSize | The size of batches of OCFL ids used by the reindexer. | 100 | |
fcrepo.ocfl.reindex.threads | The number of threads to be used by the reindexer. By default it will attempt to guess a reasonable number of threads based on the CPU characteristics | -1 | |
fcrepo.ocfl.upgrade.enabled | When updating older OCFL 1.0 objects, upgrade the new version of the object to OCFL 1.1. By default, this property is false, which means newer versions of objects will maintain the same OCFL version as previous versions of the object. | false | true,false |
fcrepo.rebuild.on.start | A boolean flag that when set to true directs Fedora to rebuild internal Fedora indices on start. | false | true,false |
fcrepo.rebuild.continue | A boolean flag that when set to true directs Fedora to rebuild internal Fedora indices but only add records it does not find in the indexes. This does not destroy existing index tables. This flag takes precendence if fcrepo.rebuild.on.start is also set to true. | false | true,false |
fcrepo.rebuild.validation | Determines if ocfl validation should be run as the first step of the rebuild operation. | true | true,false |
fcrepo.rebuild.validation.fixity | Determines if file fixity should be checked as part of rebuild validation. This may take a long time. | false | true, false |
fcrepo.storage | The type of backend storage format | ocfl-fs | ocfl-fs, ocfl-s3 |
JMS | |||
fcrepo.jms.enabled | Specifies if JMS should be enabled. | true | true, false |
fcrepo.jms.destination.type | Specifies if a JMS topic or queue should be used. Queues are recommended for production environments. | topic | topic, queue |
fcrepo.jms.destination.name | The name of the topic/queue | fedora | |
fcrepo.dynamic.jms.port | This specifies the ports used by the embedded JMS-based message broker for OpenWire protocol. Note: If you have multiple instances of Fedora running, this property must be set to avoid messaging port conflicts. | 61616 | |
fcrepo.dynamic.stomp.port | This specifies the ports used by the embedded JMS-based message broker for STOMP protocol. Note: If you have multiple instances of Fedora running, this property must be set to avoid messaging port conflicts. | 61613 | |
fcrepo.activemq.configuration | Specifies the path to the xml configuration of your ActiveMQ service. | classpath:/config/activemq.xml | |
fcrepo.activemq.directory | Contains the reliable messaging information maintained by ActiveMQ. | <fcrepo.home>/data/ActiveMQ/kahadb | |
fcrepo.jms.baseUrl | This specifies the baseUrl to use when generating JMS messages. You can specify the hostname with or without port and with or without path. If your system is behind a NAT firewall you may need this to avoid your message consumers trying to access the system on an invalid port. If this system property is not set, the host, port and context from the user's request will be used in the emitted JMS messages. | <http://localhost:8080/fcrepo/rest> | |
OCFL/S3 Configuration (more info) | |||
fcrepo.ocfl.s3.bucket | The s3 bucket to host the OCFL. | ||
fcrepo.ocfl.s3.prefix | A prefix can be provided to partition the S3 bucket so that Fedora uses only a portion of the bucket. | ||
fcrepo.aws.region | The default region used by the client. The region codes found in the table provided by Amazon's documentation are all available, such as "us-east-2", "eu-west-1", etc. | us-east-1 | |
fcrepo.aws.access-key | The AWS access key. This may also be configured using environment variables or an AWS credentials file | ||
fcrepo.aws.secret-key | The AWS secret key. This may also be configured using environment variables or an AWS credentials file | ||
fcrepo.s3.endpoint | The URL to the S3 endpoint. Only needs to be set if you are using a non-standard endpoint | ||
fcrepo.s3.path.style.access | If path style S3 access should be enabled. Some non-AWS S3 implementations only support path style access. | false | true, false |
fcrepo.ocfl.s3.db.enabled | Determines if the OCFL client caches OCFL object inventories in a database table. This is intended to speed things up a little and solve the eventual consistency problem. Amazon S3 is now strongly consistent, so this table is not strictly necessary, but non-AWS implementations may or may not be. When enabled, Postgres must be used. | true | true, false |
fcrepo.ocfl.s3.timeout.connection.seconds | Connection Timeout in seconds for S3 connection. Passed through to the NettyNioAsyncHttpClient from the AWS Java API | 60 | |
fcrepo.ocfl.s3.timeout.write.seconds | S3 write operation timeout in seconds. Passed through to the NettyNioAsyncHttpClient from the AWS Java API | 60 | |
fcrepo.ocfl.s3.timeout.read.seconds | S3 read operation timeout in seconds. Passed through to the NettyNioAsyncHttpClient from the AWS Java API | 60 | |
fcrepo.ocfl.s3.max_concurrency | Maximum concurrent connections to S3. Passed through to the NettyNioAsyncHttpClient from the AWS Java API | 100 | |
fcrepo.ocfl.s3.enable.checksum | Whether to enable checksum validation. Based through to the S3AsyncClient from the AWS Java API | true | true, false |
Logging (more info) | |||
logback.configurationFile | The path of a custom logback configuration file for Fedora to use. If not specified, then the default logback configuration included with Fedora will be used. For more information, see the Logging documentation. Must be specified as a command-line option rather than via a properties file. | ||
additional logging properties | There are additional logging properties available if using the default Fedora logback configuration. The full documentation can be found on the Fedora Logging page. |