Configuration
For different setups, there can be different configuration files be involved or not. The configurations coming from the seb-server-setup repository are listed and documented here by the service they belong to.
SEB Server Configuration
Spring application configuration
This is the usual spring application properties file, may be named with a setup specific related suffix like ‘_demo’ or ‘_prod’ in the file name. This property file contains all configurable settings for the SEB Server in as name/value pair settings. Have a look at the following table to find more information to each relevant setting.
The settings can be divided into three categories, global settings, gui-service settings and web-service settings. If the SEB Server is deployed as stand-alone server then all the properties are in one properties file with the setup specific related suffix. If the gui and the web-service is deployed separately there will be two property files: one for the gui server containing the global settings and all gui-service related settings and one for the webservice with also the global settings and all webservice related settings.
Global Settings
See also the Spring documentation for more information about specific global settings.
- file.encoding
Defines the standard encoding
Default is ‘UTF-8’
- server.address
The IP address the SEB Server is binding to on startup
Usually set to 0.0.0.0 for docker internal communication
- server.port
The port the SEB Server listen to (HTTP/HTTPS).
Usually this is set to 8080 for docker internal communication and the reverse proxy deals with mapping and TLS integration if needed
- server.servlet.context-path
The context path where the server/servlet entry-point is mapped to
Default this is the root ‘/’
- logging.level.ROOT
The initial log-level for all loggers
See Spring Logging
Default is WARN
- logging.level.ch
The initial log-level for a given package - here for all SEB Server packages
See Spring Logging
Default is INFO
- logging.file
if defined the SEB Server logs to the specified file
See Spring Logging
Default is /sebserver/log/sebserver.log. Note this path is also used in docker-compose to bind the log directory to a named volume.
- security.require-ssl
Set true if the SEB Server shall deal with TLS
Usually a reverse proxy deals with TLS. SEB Server is able to do it also by it’s own but needs more effort to implement and effect performance. It is recommended to delegate the TLS handling to a reverse proxy
Default is false
Webservice Settings
- sebserver.init.adminaccount.gen-on-init
Indicates whether initial admin account creation is on/off
If an initial admin account should be created on first startup of the SEB Server this must be set
Default is true
- sebserver.init.adminaccount.username
Defines the username of the initial admin account.
If initial admin account creation is switched on, this is mandatory and defines the username that is created for the initial account.
Default is “SEB Server”
- sebserver.init.organisation.name
Defines the institution name for of the institution to create for the initial admin account
If an initial admin account must be created, we need also an institution to assign this initial account to. This defines the name of that initial institution that is created together with the initial admin account.
Default is “sebserver-admin”
- datastore.mariadb.server.address
Defines the address of the MariaDB data-store server
Usually the data-store is defined in a separated docker container/service and connected within a docker-network. This is usually a docker service name. If the data-store lives on a separated server, this is the server URL
- datastore.mariadb.server.port
Defines the port of the MariaDB data-store server
Same as datastore.mariadb.server.address
- spring.datasource.username
The username for the JDBC account to use to connect to the MariaDB server
In a bundled environment with docker, root is default and must not be changed
- spring.datasource.hikari.initializationFailTimeout
- spring.datasource.hikari.connectionTimeout
- spring.datasource.hikari.idleTimeout
- spring.datasource.hikari.maxLifetime
Hikari data-base connection pool times and timeouts
- spring.datasource.url
the JDBC connection URL
This mostly is composed from other settings and must not be changed
- spring.datasource.hikari.initializationFailTimeout
- spring.datasource.hikari.connectionTimeout
- spring.datasource.hikari.idleTimeout
- spring.datasource.hikari.maxLifetime
Hikari data-base connection pool times and timeouts
- spring.datasource.password
The password for the database connection
This usually is automatically set by the password given from the initial setup process and must not be changed. If there is the need to change this for whatever reason, be aware that it is not secure to give a password in plain test within the configuration and everyone that is able to read the configuration is able to get the password.
- sebserver.webservice.api.admin.clientSecret
The secret for the GUI service basic authentication to connect to the webservice; OAuth2
This usually is automatically set by the password given from the initial setup process and must not be changed. If there is the need to change this for whatever reason, be aware that it is not secure to give a password in plain test within the configuration and everyone that is able to read the configuration is able to get the password.
- sebserver.webservice.internalSecret
The secret that is used for SEB Server internal encryption.
This usually is automatically set by the password given from the initial setup process and must not be changed. If there is the need to change this for whatever reason, be aware that it is not secure to give a password in plain test within the configuration and everyone that is able to read the configuration is able to get the password.
- sebserver.webservice.distributed
Indicates whether the web-service runs within a distributed environment or as single-bundled server
On a distributed environment (multiple running instances with load balancing) this must set to true to ensure internal cache strategies are working correctly on distributed setup.
- sebserver.webservice.http.external.scheme
- sebserver.webservice.http.external.servername
- sebserver.webservice.http.external.port
This properties defines the URL on that the SEB Server can be accessed from the public Internet.
Set the scheme (http/https) and the server name to the external URL settings of the SEB Server. If the web-service runs on default HTTP/HTTPS ports, the port must not be specified.
- sebserver.webservice.http.redirect.gui
Defines the redirection URL/Path to the GUI service.
On a single-bundled setup this can stick to the default and for a distributed setup this must define the public URL of the GUI service, where redirects from web-service should point to.
- sebserver.webservice.api.admin.endpoint
- sebserver.webservice.api.admin.accessTokenValiditySeconds
- sebserver.webservice.api.admin.refreshTokenValiditySeconds
Defines properties for the admin API access.
The admin API access is needed to access the admin API of the web-service. The admin API defines a REST API for all administrative purposes.
- sebserver.webservice.api.exam.endpoint
- sebserver.webservice.api.exam.accessTokenValiditySeconds
- sebserver.webservice.api.exam.endpoint.v1
- sebserver.webservice.api.exam.endpoint.discovery
Defines properties for the exam API access.
The exam API access is needed to access the exam API of the web-service. The exam API defines a REST API for SEB clients to connect.
- sebserver.webservice.api.exam.event-handling-strategy
Defines the SEB client event handling strategy that is used by the web-service to store SEB client events.
Currently there are two strategies available: SINGLE_EVENT_STORE_STRATEGY and ASYNC_BATCH_STORE_STRATEGY
- sebserver.webservice.api.exam.enable-indicator-cache
Indicates if internal indicator value cache should be used where possible
This is usually done on a bundled single instance setup to gain performance. If we have a distributed setup with many SEB Server instances this should be set to false.
Default is true
- sebserver.webservice.api.pagination.maxPageSize
This defines a maximal page size for the REST API list/page endpoints
The maximal page size restricts the page size on the REST API to avoid performance problems by loading all data at once
Default is set to 500
- sebserver.webservice.lms.openedx.api.token.request.paths
Defines a comma separated list of known Open edX LMS API token request paths.
This paths will be used by the web-service to try to connect to a Open edX LMS REST API and request an access token.
Default is “/oauth2/access_token”
- sebserver.webservice.lms.moodle.api.token.request.paths
Defines a comma separated list of known Moodle LMS API token request paths.
This paths will be used by the web-service to try to connect to a Moodle LMS REST API and request an access token.
Default is “/login/token.php”
Since SEB Server version 1.1.0:
- sebserver.webservice.forceMaster
Flag indicating a primary master service instance that claims to be master when active.
This can be used in fail-over setups with two SEB Server nodes running, one as the master and another as hot-backup. The master sould then have this flag set to true to become master again after recovery.
Default is false
- sebserver.webservice.api.admin.request.limit
A general request limit used for request limits on certain API endpoints
This uses a bucked-algorithm where each request attempt removes a item from the bucket and if the bucket is empty no request is permittet Involved endpoints: user-account-registration
Default is 10
- sebserver.webservice.api.admin.request.limit.refill
The refill items count for the above request limit
Default is 2
- sebserver.webservice.api.admin.request.limit.interval.min
The refill interval in minutes for the above request limit
Default is 10
- sebserver.webservice.api.admin.create.limit
A general object create limit used to prevent exessive object creation (persistent storage)
This uses a bucked-algorithm where each creation attempt removes a item from the bucket and if the bucket is empty no object creation is permittet Involved endpoints: user-account-registration
Default is 10
- sebserver.webservice.api.admin.create.limit.refill
The refill items count for the above object creation limit
Default is 10
- sebserver.webservice.api.admin.create.limit.interval.min=3600
The refill interval in minutes for the above object creation limit
Default is 3600
GUI Service Settings
- sebserver.gui.external.messages
Defines the path where SEB Server GUI shall load additional wording files that overrides the internal wording
Within the Spring configuration of SEB Server you are able to define a messages_[iso-language-code].properties file where you are able to override the default wording of SEB Server or to provide wording for additional languages.
Default is file:/sebserver/config/spring/messages
- sebserver.gui.multilingual
Indicates if the multilingual feature is on or off
Set this to true if the SEB Server GUI should be multi lingual. You have also to provide additional language files that contains the wording for the supported languages. See sebserver.gui.external.messages
Default is false (only english is supported)
- sebserver.gui.supported.languages
Comma separated list of supported language codes (iso-language code)
For example if you want to support the languages English (default) and German use “en,de”. See also sebserver.gui.external.messages and sebserver.gui.multilingual
Default is “en”
- sebserver.gui.theme
The RAP theme css file that should be used to override the default one
Default is css/sebserver.css
- sebserver.gui.list.page.size
The default page size of lists in SEB Server GUI
Default is set to 20
- sebserver.gui.date.displayformat
The locale tag for the display format to use
This defines the formatting of dates and numbers within the formatting of the specified location tag
- sebserver.gui.entrypoint
The servlet endpoint where the GUI service servlet is located.
- sebserver.gui.webservice.protocol
- sebserver.gui.webservice.address
- sebserver.gui.webservice.port
The URL properties to define the URL with that the web service is accessed from the GUI component.
On a single-bundled setup this must not be changed since GUI runs on the same server as the web-service and communicates over standard localhost settings. For a distributed environment this must define the URL to the web-service server.
- sebserver.gui.webservice.poll-interval
Defines the interval in milliseconds that the GUI service uses to poll the live monitoring data from web-service.
- sebserver.gui.webservice.lms.disable.MOCKUP
Indicates whether a mocking LMS for testing should be available in the LMS Setup section or not.
- sebserver.gui.seb.client.config.download.filename
Defines the download file name of a SEB client configuration.
- sebserver.gui.seb.exam.config.download.filename
Defines the download file name of a SEB exam configuration
- sebserver.gui.http.external.scheme
- sebserver.gui.http.external.servername
- sebserver.gui.http.external.port
The URL properties that defines the URL the gui service can be accessed from external
On a single-bundled setup this must not be changed since GUI runs on the same server as the web-service and uses the defaults from the web-service
Reverse Proxy Configuration
Docker internal SEB Server setup uses a nginx reverse proxy for communication with the host and the Internet. The configuration is placed in the app.conf file and will be loaded by nginx on startup of the container. The configuration usually has all the pre-settings needed for working correctly within the specific setup context. If there is the need to have a different configuration for the nginx reverse proxy we refer to the nginx configuration documentation
MariaDB Configuration
The MariaDB configuration can be found in the config/mariadb/config.cnf file and the directory config/mariadb is mapped to the directory /etc/mysql/conf.d of the seb-server-mariadb docker container to be used to override the default MariaDB configuration. This file can be used to configure the MariaDB that is bundled with SEB Server in the docker-compose setup like a normal MariaDB configuration file. See MariaDB Configuration for more information on how to configure MariaDB with the options file.
JMX Configuration
If you want to have JMX enabled for production environment there is a prepared default configuration in config/jmx/. Please refer to the JMX documentation as well the this JMX security guide You need also the set the JMX_PORT as environment veriable in the docker-compose file to the port you want to use as well as uncomment the port mapping the seb-server service of the docker-compose file. And make sure also the right port is set in the jmxremote.properties file.