-
Notifications
You must be signed in to change notification settings - Fork 6
Setup Guide
DRES consists of two components: the backend and the frontend, each in subdirectories of this repository. The backend is written in Kotlin and requires a JVM. The frontend is written in Angular. The entire build process is Gradle based.
./gradlew distZipor alternatively:
./gradlew distTarPull the latest changes from the repository, then run:
./gradlew clean distZipBoth the backend and the frontend have several properties which can be configured using a JSON configuration file.
The backend does not search the current directory for a config file. Configuration is only read if you pass a path to it as the first parameter when starting the backend; without an argument, all settings use their built-in defaults. The configuration file is structured as follows. All values are optional and override the defaults listed below if set — unknown keys are silently ignored, so check field names and nesting carefully.
{
"httpPort": 8080,
"httpsPort": 8443,
"enableSsl": true,
"keystorePath": "keystore.jks",
"keystorePassword": "password",
"externalMediaLocation": "./external",
"dataPath": "./data",
"cache": {
"cachePath": "./cache"
}
}| Field | Default | Description |
|---|---|---|
httpPort |
8080 |
Port used for HTTP |
httpsPort |
8443 |
Port used for HTTPS, if enabled |
enableSsl |
true |
If true, HTTPS is enabled on httpsPort. Note that httpPort remains active at the same time — enabling SSL does not disable plain HTTP. |
keystorePath |
keystore.jks |
Path to the Java KeyStore file for the SSL certificate |
keystorePassword |
password |
Password for the KeyStore file |
externalMediaLocation |
./external |
Path for external media items |
dataPath |
./data |
Path where the local database is stored |
cache.cachePath |
./cache |
Path where pre-rendered media items are cached (nested under a cache object; see below) |
The cache object also accepts cleanupIntervalMs, evictionThresholdMs, maxRenderingThreads, ffmpegPath, logoMaxSize, previewImageMaxSize, and previewVideoMaxSize — see CacheConfig.kt for current defaults.
The frontend has its own configuration at frontend/src/config.json (endpoint.host, endpoint.port, endpoint.tls, effects.mute), built into the bundle via ./gradlew packageFrontend -DincludeConfig. Its endpoint.tls flag should match the backend's enableSsl.
Run dres config from the CLI to print the actively resolved configuration, including the resolved FFmpeg path and other cache settings (note: it does not print the resolved cache directory path itself).
See Advanced Setup Options for instructions on generating a KeyStore for HTTPS.
The following steps walk through the initial setup of a DRES instance. The DRES CLI help command lists all available commands; use -h on any command for more detail.
Using the CLI, create your first administrator user:
DRES> user create -u admin -p password -r ADMIN
Do not use this password in production.
Additional users are required to run an evaluation:
-
-r PARTICIPANT— a user that belongs to a competing team and submits results -
-r JUDGE— a user that can manually judge submissions -
-r VIEWER— a read-only user that can observe a run without interacting
See User Management for more detail.
Create a media collection using the CLI:
DRES> collection create -n first -d "A description of the collection" -p path/to/media
Then scan the folder to import media items:
DRES> collection scan -c first -vt mp4 -it jpg
Use -vt for video file extensions and -it for image file extensions. Both can be specified together for mixed collections.
See Media Collection Management for the full process including importing video segment information.
Competition templates are created and managed from the DRES web UI. Log in with your administrator account and navigate to the Evaluation Template Builder section.
From there you can add task groups, task types, and individual tasks. See Competition Management for details.
A competition template serves as the template for one or more competition runs. Once a run is created, changes to the template are not reflected in the run.
Competition runs are created from the Evaluation Runs view using the "+" button. Both SYNCHRONOUS and ASYNCHRONOUS run types are supported.
As the competition operator, start the run, select a task, and start the task. Query hints are displayed to all viewers as configured once they are loaded (this may take a brief moment depending on the media type).
Viewers and participants see the message "Waiting for host to start task". If this persists, the operator can open the admin view and manually mark participants as ready.
See Run Management for more detail on operating a run.