-
Marco Del Tufo authoredMarco Del Tufo authored
Installation and Administrator Guide of the openBIS Server
System Requirements
The minimal requirements of a system running openBIS are:
- Operating System: Linux / MacOS X (The binaries:
bash
,awk
,sed
,unzip
need to be installed and in thePATH
of the openBIS user.) - Java Runtime Environment: recent versions of Oracle JRE 11
- PostgreSQL 11
We find Linux to be the easiest choice to get an openBIS server running quickly.
For recommended memory settings, see Recommended CPU and memory settings for openBIS 20.10.
An SMTP server needs to be accessible and configured if you want to obtain notifications.
Installation
The server distribution is a gzipped
tar
file named openBIS-installation-standard-technologies-<version>
.tar.gz
. It contains:
-
console.properties:
configuration file for a console/non-gui installation -
extract.sh:
helper script for installation -
jul.config:
Log configuration for the openBIS install process -
openBIS-installer.jar
Java archive containing openBIS -
run-console.sh
Installation script for console/non-gui installation -
run-ui.sh
Installation script for gui installation
Installation steps
-
Create a service user account, i.e. an unprivileged, regular user account. Do not run openBIS as root!
-
Gunzip the distribution on the server machine into some temporary folder.
-
Run either the console/non-gui installation script or the gui installation script:
GUI-based installation
tar xvfz openBIS-installation-standard-technologies-S139.0-r26480.tar.gz cd openBIS-installation-standard-technologies-S139.0-r26480 ./run-ui.sh
In the non-gui version you have to edit the
console.properties
files:Non-GUI installation
tar xvfz openBIS-installation-standard-technologies-S139.0-r26480.tar.gz cd openBIS-installation-standard-technologies-S139.0-r26480 vi console.properties ./run-console.sh
Please be aware that the directory where openbis is installed should not already exist. Users should specify the directory where they want to install openBIS (in the console.properties or in the graphical installer) and this directory will be created by the installation procedure. If the directory already exists, the installation will fail.
After the successful installation you should have a look at the configuration file called service.properties
. It is located in <server_folder>openBIS-server/jetty/etc/
This file is a an Extended Properties File. Here is an example which can be used as a template:
service.properties
# ---------------------------------------------------------------------------
# Database configuration
# ---------------------------------------------------------------------------
# The database instance local unique identifier. Used when the new database is created.
database-instance = DEFAULT
# Supported: currently only 'postgresql' is supported
database.engine = postgresql
database.url-host-part =
database.kind = prod
# User who owns the database. Default: Operating system user running the server.
database.owner =
database.owner-password =
# Superuser of the database. Default: database-dependent.
database.admin-user =
database.admin-password =
# Max. number of active database connections. Default: 20.
database.max-active-connections =
# Max. number of idle database connections to keep open. Default: 20.
database.max-idle-connections =
# Log interval (in seconds) between two regular log entries of the number of active database
# connections. Default: 3600s.
database.active-connections-log-interval =
# ---------------------------------------------------------------------------
# Master data by Excel sheets
# ---------------------------------------------------------------------------
# Path to the file which stores version information of master data imported from Excel sheets.
# Default value: ../../../xls-import-version-info.json. The file will be created.
# It should be <openbis installation path>/servers/openBIS-server.
# Note, that the folder containing this file has to exist.
# xls-import.version-data-file = ../../../xls-import-version-info.json
# ---------------------------------------------------------------------------
# Authentication configuration
# ---------------------------------------------------------------------------
# Supported Authentication options are:
# 'file-authentication-service'
# 'ldap-authentication-service'
# 'crowd-authentication-service'
# 'file-crowd-authentication-service'
# 'file-ldap-authentication-service'
# 'ldap-crowd-authentication-service'
# 'file-ldap-crowd-caching-authentication-service'
# For a detailed description, have a look at the Installation and Administrator
# Guide of the openBIS Server: https://wiki-bsse.ethz.ch/x/oYIUBQ
authentication-service = file-ldap-crowd-caching-authentication-service
# ---------------------------------------------------------------------------
# Caching configuration (only used with 'file-ldap-crowd-caching-authentication-service')
# ---------------------------------------------------------------------------
# The time that the authentication cache keeps entries. Default: 28h
authentication.cache.time = 28h
# The time that the authentication cache does not perform re-validation on a cache entry.
# Default: 1h
authentication.cache.time-no-revalidation = 1h
# ---------------------------------------------------------------------------
# Crowd configuration
# ---------------------------------------------------------------------------
#
# The Crowd host.
# Mandatory.
crowd.service.host =
# The Crowd service port. Default: 443
crowd.service.port =
# The timeout (in s) to wait for a Crowd query to return, -1 for "wait indefinitely". Default: 10s.
crowd.service.timeout =
# The Crowd application name. The value 'openbis' is just a suggestion.
# Mandatory.
crowd.application.name = openbis
# The Crowd application password.
# Mandatory.
crowd.application.password =
# ---------------------------------------------------------------------------
# LDAP configuration
# ---------------------------------------------------------------------------
# The space-separated URLs of the LDAP servers, e.g. "ldap://d.ethz.ch/DC=d,DC=ethz,DC=ch".
# Mandatory.
ldap.server.url =
# The distinguished name of the security principal, e.g. "CN=carl,OU=EthUsers,DC=d,DC=ethz,DC=ch".
# Mandatory.
ldap.security.principal.distinguished.name =
# Password of the LDAP user account that will be used to login to the LDAP server to perform the queries.
# Mandatory.
ldap.security.principal.password =
# The security protocol to use, use "ssl" or "none", default is "ssl"
ldap.security.protocol =
# The authentication method to use: "none" (no authentication), "simple", "strong" (SASL), defaults to "simple"
ldap.security.authentication-method =
# The referral mode:
# "follow" - follow referrals automatically (the default)
# "ignore" - ignore referrals
# "throw" - throw ReferralException when a referral is encountered
ldap.referral =
# The attribute name for the user id, defaults to "uid"
ldap.attributenames.user.id =
# The attribute name for the email, defaults to "mail"
ldap.attributenames.email =
# The attribute name for the first name, defaults to "givenName"
ldap.attributenames.first.name =
# The attribute name for the last name, defaults to "sn"
ldap.attributenames.last.name =
# Set to true to also query for email aliases
ldap.queryEmailForAliases = true
# The query template, needs to contain %s which will be filled with the query term, e.g. uid=username
# The default is:
# ldap.queryTemplate = (&(objectClass=organizationalPerson)(objectCategory=person)(objectClass=user)(%s))
# which is known to work for many Active Directory installations.
# For OpenLDAP, replace by:
# ldap.queryTemplate = (&(%s))
# For restriction to BSSE accounts in OpenLDAP, set to:
# ldap.queryTemplate = (&(objectClass=bssePosixAccount)(%s))
ldap.queryTemplate =
# The number of times a failed LDAP query is retried at the max. Default: 1.
ldap.maxRetries =
# The timeout (in s) to wait for an LDAP query to return, -1 for "wait indefinitely". Default: 10s.
ldap.timeout =
# The time (in s) to wait after a failure before retrying the query. Default: 10s.
ldap.timeToWaitAfterFailure =
# ---------------------------------------------------------------------------
# Anonymous login configuration (optional)
# ---------------------------------------------------------------------------
# Login of the existing user whose settings will be used for anonymous login
#user-for-anonymous-login = <user-login>
# ---------------------------------------------------------------------------
# Project authorization
# ---------------------------------------------------------------------------
# Enabled if set to 'true'. Default: disabled
authorization.project-level.enabled = true
# Regular expression for user ids allowed to have a project role
authorization.project-level.users = .*
# ---------------------------------------------------------------------------
# Project samples
# ---------------------------------------------------------------------------
# Enabled if set to 'true'. Default: disabled
# Note: Changing to 'true' turns experiment samples to project samples
# which can not be reverted after setting this flag back to 'false'. Also
# the sample identifier will change for such samples.
#project-samples-enabled = true
# ---------------------------------------------------------------------------
# Client configuration
# ---------------------------------------------------------------------------
# Name of the file that stores Web Client configuration
web-client-configuration-file = etc/web-client.properties
# A comma-separated list of trusted cross-origin domains, that are allowed to
# query openBIS content. Typically these are lightweight webapps that integrate with openBIS
# via JSON-RPC services, but are not directly hosted within the openBIS application.
#
# Example 1 (two different domains configured):
#
# trusted-cross-origin-domains=https://myapp.domain.com:8443, http://other.domain.com
#
# Example 2 (match every domain):
#
# trusted-cross-origin-domains= *
#
# The '*' matches any arbitrary domain. It should be used with care as it opens openBIS
# for potential cross-site scripting attacks.
#
#trusted-cross-origin-domains=
# ---------------------------------------------------------------------------
# Session configuration
# ---------------------------------------------------------------------------
# The time after which an inactive session is expired by the service (in minutes).
session-timeout = 720
# Session time (in minutes) in case of presents of file etc/nologin.html. Should be < 30.
#session-timeout-no-login = 10
# Maximum number of sessions allowed per user. Zero means unlimited number of sessions. Default value is 1.
# max-number-of-sessions-per-user = 1
# Comma separated list of users allowed to have unlimited number of sessions. Default: Empty list.
# Note: The DSS (user 'etlserver' by default, see property 'username' of DSS service.properties)
# should be added to this list.
# users-with-unrestricted-number-of-sessions =
# ---------------------------------------------------------------------------
# Business rules configuration
# ---------------------------------------------------------------------------
# When set to "true" enables the system to store material codes containing non-alphanumeric characters.
# Regardless of the value of this property no white spaces are allowed in the material codes.
#material-relax-code-constraints=false
# Comma-separated list of regular expression of data set types which do not require that the data set
# is linked to an experiment. If not linked to an experiment a link to a sample with space is required.
data-set-types-with-no-experiment-needed = .*
# When set to 'true' the sequence of sample codes is gap less for each type if all samples are created by
# batch registrations.
#create-continuous-sample-codes = false
# ---------------------------------------------------------------------------
# RPC Dropbox Default DSS configuration
# ---------------------------------------------------------------------------
# Set this to the DSS code of the DSS handling RPC Dropboxes for this user.
# Note: This is only required if more than one DSS is connected to this openBIS server.
dss-rpc.put.dss-code =
# ---------------------------------------------------------------------------
# Hibernate Search
# ---------------------------------------------------------------------------
# The working directory.
hibernate.search.index-base = ./indices
# One of NO_INDEX, SKIP_IF_MARKER_FOUND, INDEX_FROM_SCRATCH.
# If not specified, default (SKIP_IF_MARKER_FOUND) is taken.
hibernate.search.index-mode = SKIP_IF_MARKER_FOUND
# Defines the maximum number of elements indexed before flushing the transaction-bound queue.
# Default is 1000.
hibernate.search.batch-size = 1000
# Maximum number of search results
hibernate.search.maxResults = 100000
# If 'async', the update of indices will be done in a separate thread.
hibernate.search.worker.execution=async
# How long fulltext searches can take (in seconds) before they are timed out.
# When not defined, there is no timeout.
# fulltext-timeout = 30
# ---------------------------------------------------------------------------
# Online Help
# ---------------------------------------------------------------------------
# Online help is broken into two sections -- generic and specific. Generic help links back to
# the CISD. Specific help is provided by the host of the installation
#
# OpenBIS needs to know the root URL for the online help and a template for the individual pages.
# The template should have on parameter, called title, and should be constructed to automatically
# create the page if it does not already exist.
# The template can be created by going to the root page, adding a new link to the page, and
# replacing the title of the new page with the ${title}
onlinehelp.generic.root-url = https://wiki-bsse.ethz.ch/display/CISDDoc/OnlineHelp
onlinehelp.generic.page-template = https://wiki-bsse.ethz.ch/pages/createpage.action?spaceKey=CISDDoc&title=${title}&linkCreation=true&fromPageId=40633829
#onlinehelp.specific.root-url = https://wiki-bsse.ethz.ch/display/CISDDoc/OnlineHelp
#onlinehelp.specific.page-template = https://wiki-bsse.ethz.ch/pages/createpage.action?spaceKey=CISDDoc&title=${title}&linkCreation=true&fromPageId=40633829
# ---------------------------------------------------------------------------
# JMX memory monitor
# ---------------------------------------------------------------------------
# Interval between two runs of the memory monitor (in seconds).
# Set to -1 to disable the memory monitor.
memorymonitor-monitoring-interval = 60
# Interval between two regular log call of the memory monitor (in seconds).
# Set to -1 to disable regular memory usage logging.
memorymonitor-log-interval = 3600
# The percentage of memory that, if exceeded, triggers a notify log of the memory manager,
# Set to 100 to disable.
memorymonitor-high-watermark-percent = 90
# ---------------------------------------------------------------------------
# Database Configurations for Query module (optional)
# ---------------------------------------------------------------------------
# Comma separated keys of databases configured for Query module.
# Each database should have configuration properties prefixed with its key.
# Mandatory properties for each <database> include:
# <database>.label - name shown to the openBIS user when adding or editing a customized query
# <database>.database-driver - JDBC Driver of the database (e.g. org.postgresql.Driver)
# <database>.database-url - JDBC URL to the database (e.g. jdbc:postgresql://localhost/openbis)
# Optional properties for each <database> include:
# <database>.database-user - name of the database user (default: user.name from system properties)
# <database>.database-password - password of the database user
# <database>.creator-minimal-role - minimal role required to create/edit queries on this database (default: POWER_USER)
# <database>.data-space - If NOT specified OBSERVER of any space will be allowed to perform
# queries and <creator-minimal-role> of any space will allowed
# to create/edit queries on this DB.
# - If specified only OBSERVER of the space will be allowed to perform
# queries and <creator-minimal-role> of the space will allowed
# to create/edit queries on this DB.
#query-databases = openbisDB
#
#openbisDB.label = openBIS meta data
#openbisDB.data-space = CISD
#openbisDB.creator-minimal-role = SPACE_ADMIN
#openbisDB.database-driver = org.postgresql.Driver
#openbisDB.database-url = jdbc:postgresql://localhost/openbis_${database.kind}
#openbisDB.database-username =
#openbisDB.database-password =
# ---------------------------------------------------------------------------
# Maintenance plugins configuration (optional)
# ---------------------------------------------------------------------------
# Comma separated names of maintenance plugins.
# Each plugin should have configuration properties prefixed with its name.
# Mandatory properties for each <plugin> include:
# <plugin>.class - Fully qualified plugin class name
# <plugin>.interval - The time between plugin executions (in seconds)
# Optional properties for each <plugin> include:
# <plugin>.start - Time of the first execution (HH:mm)
# <plugin>.execute-only-once - If true the task will be executed exactly once,
# interval will be ignored. By default set to false.
#maintenance-plugins = demo
#
#demo.class = ch.systemsx.cisd.openbis.generic.server.task.DemoMaintenanceTask
#demo.interval = 60
#demo.property_1 = some value
#demo.property_2 = some value 2
#
# Internal - do not change
#
# Authorization
# Supported: 'no-authorization' and 'active-authorization'
authorization-component-factory = active-authorization
script-folder = .
#
# Version of Jython to be used in plugins. 2.5 and 2.7 are supported
#
jython-version=2.7
##########
# V3 API #
##########
# -------------------------------------------------------------------------
# The configuration below reflects the default values used by the V3 API.
# Please uncomment and change the chosen values to overwrite the defaults.
# -------------------------------------------------------------------------
#
# A path to a directory where operation execution details are stored.
#
# api.v3.operation-execution.store.path = operation-execution-store
#
# A thread pool that is used for executing all asynchronous operations.
#
# api.v3.operation-execution.thread-pool.name = operation-execution-pool
# api.v3.operation-execution.thread-pool.core-size = 10
# api.v3.operation-execution.thread-pool.max-size = 10
# api.v3.operation-execution.thread-pool.keep-alive-time = 0
#
# A name of a thread that updates operation execution progress information.
#
# api.v3.operation-execution.progress.thread-name = operation-execution-progress
#
# An interval that controls how often operation execution progress information gets updated. The interval is defined in seconds.
#
# api.v3.operation-execution.progress.interval = 5
#
# Availability times control for how long information about an operation execution is stored in the system.
# There are 3 levels of such information:
#
# * core information (code, state, owner, description, creation_date, start_date, finish_date)
# * summary information (summary of operations, progress, error, results)
# * detailed information (details of operations, progress, error, results)
#
# Each level of information can have a different availability time.
# The availability times can be defined at the moment of scheduling an operation execution.
# If a time is not provided explicitly then a corresponding 'default' value is used.
# The maximum possible value that can be used for a given availability time is controlled with the 'max' property.
#
# All availability times are defined in seconds.
# Examples of values: 31536000 (1 year), 2592000 (30 days), 86400 (1 day), 3600 (1 hour).
#
# api.v3.operation-execution.availability-time.default = 31536000
# api.v3.operation-execution.availability-time.max = 31536000
# api.v3.operation-execution.availability-time.summary.default = 2592000
# api.v3.operation-execution.availability-time.summary.max = 2592000
# api.v3.operation-execution.availability-time.details.default = 86400
# api.v3.operation-execution.availability-time.details.max = 86400
#
# Maintenance tasks responsible for marking and deleting timed out operation executions. Intervals are defined in seconds.
#
# api.v3.operation-execution.availability-update.mark-timeout-pending-task.name = operation-execution-mark-timeout-pending-task
# api.v3.operation-execution.availability-update.mark-timeout-pending-task.interval = 60
#
# api.v3.operation-execution.availability-update.mark-timed-out-or-deleted-task.name = operation-execution-mark-timed-out-or-deleted-task
# api.v3.operation-execution.availability-update.mark-timed-out-or-deleted-task.interval = 300
#
# Maintenance task responsible for marking new, scheduled and running operation executions as failed after server restart.
#
# api.v3.operation-execution.state-update.mark-failed-after-server-restart-task.name = operation-execution-mark-failed-after-server-restart-task
#
#
Database Settings
All properties starting with database.
specify the settings for the openBIS database. They are all mandatory.
Property | Description |
---|---|
database.engine |
Type of database. Currently only postgresql is supported. |
database.create-from-scratch |
If true the database will be dropped and an empty database will be created. In productive use always set this value to false . |
database.script-single-step-mode |
If true all SQL scripts are executed in single step mode. Useful for localizing errors in SQL scripts. Should be always false in productive mode. |
database.url-host-part |
Part of JDBC URL denoting the host of the database server. If openBIS Application Server and database server are running on the same machine this property should be an empty string. |
database.kind |
Part of the name of the database. The full name reads openbis_< kind >. |
database.admin-user |
ID of the user on database server with admin rights, like creation of tables. Should be an empty string if default admin user should be used. In case of PostgreSQL the default admin user is assumed to be postgres. |
database.admin-password | Password for admin user. Usual an empty string. |
database.owner |
ID of the user owning the data. This should generally be openbis. The openbis role and password need to be created. In case of an empty string it is the same user who started up openBIS Application Server. |
database.owner-password |
Password of the owner. |
The credentials for the database user with the privilege to create a new database depends on the installation and configuration of the PostgreSQL database.