Configuring Bonsai

Bonsai is primarily configured through environment variables. The configuration can be set in a .env file in the same directory as the docker-compose.yml file or passed directly to the Docker container. See the docker compose reference for information on how to set environment varialbes.

Some services have additional configuration files if environment variables are not enough. These are described in the relevant sections below.

In addition to environment varialbles some services have directories that should be mounted to the host file system to make data persistant accros container updates. See Volume mappings for more information.

Ports

Parameter

Function

8000

WebUI

8001

API

27017

Mongo db

6380

Redis

Environmental variables

Frontend

Frontend environmental variables

Env

Function

Default

API_INTERNAL_URL

Container-container URL to API

http://api:8000

API_EXTERNAL_URL

From browser URL to API

http://localhost:8001

TZ

Timezone

Etc/UTC

pydantic settings bonsai_app.config.Settings

Bonsai frontend configuration.

Show JSON schema
{
   "title": "Settings",
   "description": "Bonsai frontend configuration.",
   "type": "object",
   "properties": {
      "api_internal_url": {
         "default": "http://api:8000",
         "description": "Internal container-container URL to the Bonsai API.",
         "title": "Api Internal Url",
         "type": "string"
      },
      "api_external_url": {
         "default": "http://localhost:8001",
         "description": "External URL to the Bonsai API.",
         "title": "Api External Url",
         "type": "string"
      },
      "timezone": {
         "default": "Etc/UTC",
         "enum": [
            "Africa/Abidjan",
            "Africa/Accra",
            "Africa/Addis_Ababa",
            "Africa/Algiers",
            "Africa/Asmara",
            "Africa/Asmera",
            "Africa/Bamako",
            "Africa/Bangui",
            "Africa/Banjul",
            "Africa/Bissau",
            "Africa/Blantyre",
            "Africa/Brazzaville",
            "Africa/Bujumbura",
            "Africa/Cairo",
            "Africa/Casablanca",
            "Africa/Ceuta",
            "Africa/Conakry",
            "Africa/Dakar",
            "Africa/Dar_es_Salaam",
            "Africa/Djibouti",
            "Africa/Douala",
            "Africa/El_Aaiun",
            "Africa/Freetown",
            "Africa/Gaborone",
            "Africa/Harare",
            "Africa/Johannesburg",
            "Africa/Juba",
            "Africa/Kampala",
            "Africa/Khartoum",
            "Africa/Kigali",
            "Africa/Kinshasa",
            "Africa/Lagos",
            "Africa/Libreville",
            "Africa/Lome",
            "Africa/Luanda",
            "Africa/Lubumbashi",
            "Africa/Lusaka",
            "Africa/Malabo",
            "Africa/Maputo",
            "Africa/Maseru",
            "Africa/Mbabane",
            "Africa/Mogadishu",
            "Africa/Monrovia",
            "Africa/Nairobi",
            "Africa/Ndjamena",
            "Africa/Niamey",
            "Africa/Nouakchott",
            "Africa/Ouagadougou",
            "Africa/Porto-Novo",
            "Africa/Sao_Tome",
            "Africa/Timbuktu",
            "Africa/Tripoli",
            "Africa/Tunis",
            "Africa/Windhoek",
            "America/Adak",
            "America/Anchorage",
            "America/Anguilla",
            "America/Antigua",
            "America/Araguaina",
            "America/Argentina/Buenos_Aires",
            "America/Argentina/Catamarca",
            "America/Argentina/ComodRivadavia",
            "America/Argentina/Cordoba",
            "America/Argentina/Jujuy",
            "America/Argentina/La_Rioja",
            "America/Argentina/Mendoza",
            "America/Argentina/Rio_Gallegos",
            "America/Argentina/Salta",
            "America/Argentina/San_Juan",
            "America/Argentina/San_Luis",
            "America/Argentina/Tucuman",
            "America/Argentina/Ushuaia",
            "America/Aruba",
            "America/Asuncion",
            "America/Atikokan",
            "America/Atka",
            "America/Bahia",
            "America/Bahia_Banderas",
            "America/Barbados",
            "America/Belem",
            "America/Belize",
            "America/Blanc-Sablon",
            "America/Boa_Vista",
            "America/Bogota",
            "America/Boise",
            "America/Buenos_Aires",
            "America/Cambridge_Bay",
            "America/Campo_Grande",
            "America/Cancun",
            "America/Caracas",
            "America/Catamarca",
            "America/Cayenne",
            "America/Cayman",
            "America/Chicago",
            "America/Chihuahua",
            "America/Ciudad_Juarez",
            "America/Coral_Harbour",
            "America/Cordoba",
            "America/Costa_Rica",
            "America/Coyhaique",
            "America/Creston",
            "America/Cuiaba",
            "America/Curacao",
            "America/Danmarkshavn",
            "America/Dawson",
            "America/Dawson_Creek",
            "America/Denver",
            "America/Detroit",
            "America/Dominica",
            "America/Edmonton",
            "America/Eirunepe",
            "America/El_Salvador",
            "America/Ensenada",
            "America/Fort_Nelson",
            "America/Fort_Wayne",
            "America/Fortaleza",
            "America/Glace_Bay",
            "America/Godthab",
            "America/Goose_Bay",
            "America/Grand_Turk",
            "America/Grenada",
            "America/Guadeloupe",
            "America/Guatemala",
            "America/Guayaquil",
            "America/Guyana",
            "America/Halifax",
            "America/Havana",
            "America/Hermosillo",
            "America/Indiana/Indianapolis",
            "America/Indiana/Knox",
            "America/Indiana/Marengo",
            "America/Indiana/Petersburg",
            "America/Indiana/Tell_City",
            "America/Indiana/Vevay",
            "America/Indiana/Vincennes",
            "America/Indiana/Winamac",
            "America/Indianapolis",
            "America/Inuvik",
            "America/Iqaluit",
            "America/Jamaica",
            "America/Jujuy",
            "America/Juneau",
            "America/Kentucky/Louisville",
            "America/Kentucky/Monticello",
            "America/Knox_IN",
            "America/Kralendijk",
            "America/La_Paz",
            "America/Lima",
            "America/Los_Angeles",
            "America/Louisville",
            "America/Lower_Princes",
            "America/Maceio",
            "America/Managua",
            "America/Manaus",
            "America/Marigot",
            "America/Martinique",
            "America/Matamoros",
            "America/Mazatlan",
            "America/Mendoza",
            "America/Menominee",
            "America/Merida",
            "America/Metlakatla",
            "America/Mexico_City",
            "America/Miquelon",
            "America/Moncton",
            "America/Monterrey",
            "America/Montevideo",
            "America/Montreal",
            "America/Montserrat",
            "America/Nassau",
            "America/New_York",
            "America/Nipigon",
            "America/Nome",
            "America/Noronha",
            "America/North_Dakota/Beulah",
            "America/North_Dakota/Center",
            "America/North_Dakota/New_Salem",
            "America/Nuuk",
            "America/Ojinaga",
            "America/Panama",
            "America/Pangnirtung",
            "America/Paramaribo",
            "America/Phoenix",
            "America/Port-au-Prince",
            "America/Port_of_Spain",
            "America/Porto_Acre",
            "America/Porto_Velho",
            "America/Puerto_Rico",
            "America/Punta_Arenas",
            "America/Rainy_River",
            "America/Rankin_Inlet",
            "America/Recife",
            "America/Regina",
            "America/Resolute",
            "America/Rio_Branco",
            "America/Rosario",
            "America/Santa_Isabel",
            "America/Santarem",
            "America/Santiago",
            "America/Santo_Domingo",
            "America/Sao_Paulo",
            "America/Scoresbysund",
            "America/Shiprock",
            "America/Sitka",
            "America/St_Barthelemy",
            "America/St_Johns",
            "America/St_Kitts",
            "America/St_Lucia",
            "America/St_Thomas",
            "America/St_Vincent",
            "America/Swift_Current",
            "America/Tegucigalpa",
            "America/Thule",
            "America/Thunder_Bay",
            "America/Tijuana",
            "America/Toronto",
            "America/Tortola",
            "America/Vancouver",
            "America/Virgin",
            "America/Whitehorse",
            "America/Winnipeg",
            "America/Yakutat",
            "America/Yellowknife",
            "Antarctica/Casey",
            "Antarctica/Davis",
            "Antarctica/DumontDUrville",
            "Antarctica/Macquarie",
            "Antarctica/Mawson",
            "Antarctica/McMurdo",
            "Antarctica/Palmer",
            "Antarctica/Rothera",
            "Antarctica/South_Pole",
            "Antarctica/Syowa",
            "Antarctica/Troll",
            "Antarctica/Vostok",
            "Arctic/Longyearbyen",
            "Asia/Aden",
            "Asia/Almaty",
            "Asia/Amman",
            "Asia/Anadyr",
            "Asia/Aqtau",
            "Asia/Aqtobe",
            "Asia/Ashgabat",
            "Asia/Ashkhabad",
            "Asia/Atyrau",
            "Asia/Baghdad",
            "Asia/Bahrain",
            "Asia/Baku",
            "Asia/Bangkok",
            "Asia/Barnaul",
            "Asia/Beirut",
            "Asia/Bishkek",
            "Asia/Brunei",
            "Asia/Calcutta",
            "Asia/Chita",
            "Asia/Choibalsan",
            "Asia/Chongqing",
            "Asia/Chungking",
            "Asia/Colombo",
            "Asia/Dacca",
            "Asia/Damascus",
            "Asia/Dhaka",
            "Asia/Dili",
            "Asia/Dubai",
            "Asia/Dushanbe",
            "Asia/Famagusta",
            "Asia/Gaza",
            "Asia/Harbin",
            "Asia/Hebron",
            "Asia/Ho_Chi_Minh",
            "Asia/Hong_Kong",
            "Asia/Hovd",
            "Asia/Irkutsk",
            "Asia/Istanbul",
            "Asia/Jakarta",
            "Asia/Jayapura",
            "Asia/Jerusalem",
            "Asia/Kabul",
            "Asia/Kamchatka",
            "Asia/Karachi",
            "Asia/Kashgar",
            "Asia/Kathmandu",
            "Asia/Katmandu",
            "Asia/Khandyga",
            "Asia/Kolkata",
            "Asia/Krasnoyarsk",
            "Asia/Kuala_Lumpur",
            "Asia/Kuching",
            "Asia/Kuwait",
            "Asia/Macao",
            "Asia/Macau",
            "Asia/Magadan",
            "Asia/Makassar",
            "Asia/Manila",
            "Asia/Muscat",
            "Asia/Nicosia",
            "Asia/Novokuznetsk",
            "Asia/Novosibirsk",
            "Asia/Omsk",
            "Asia/Oral",
            "Asia/Phnom_Penh",
            "Asia/Pontianak",
            "Asia/Pyongyang",
            "Asia/Qatar",
            "Asia/Qostanay",
            "Asia/Qyzylorda",
            "Asia/Rangoon",
            "Asia/Riyadh",
            "Asia/Saigon",
            "Asia/Sakhalin",
            "Asia/Samarkand",
            "Asia/Seoul",
            "Asia/Shanghai",
            "Asia/Singapore",
            "Asia/Srednekolymsk",
            "Asia/Taipei",
            "Asia/Tashkent",
            "Asia/Tbilisi",
            "Asia/Tehran",
            "Asia/Tel_Aviv",
            "Asia/Thimbu",
            "Asia/Thimphu",
            "Asia/Tokyo",
            "Asia/Tomsk",
            "Asia/Ujung_Pandang",
            "Asia/Ulaanbaatar",
            "Asia/Ulan_Bator",
            "Asia/Urumqi",
            "Asia/Ust-Nera",
            "Asia/Vientiane",
            "Asia/Vladivostok",
            "Asia/Yakutsk",
            "Asia/Yangon",
            "Asia/Yekaterinburg",
            "Asia/Yerevan",
            "Atlantic/Azores",
            "Atlantic/Bermuda",
            "Atlantic/Canary",
            "Atlantic/Cape_Verde",
            "Atlantic/Faeroe",
            "Atlantic/Faroe",
            "Atlantic/Jan_Mayen",
            "Atlantic/Madeira",
            "Atlantic/Reykjavik",
            "Atlantic/South_Georgia",
            "Atlantic/St_Helena",
            "Atlantic/Stanley",
            "Australia/ACT",
            "Australia/Adelaide",
            "Australia/Brisbane",
            "Australia/Broken_Hill",
            "Australia/Canberra",
            "Australia/Currie",
            "Australia/Darwin",
            "Australia/Eucla",
            "Australia/Hobart",
            "Australia/LHI",
            "Australia/Lindeman",
            "Australia/Lord_Howe",
            "Australia/Melbourne",
            "Australia/NSW",
            "Australia/North",
            "Australia/Perth",
            "Australia/Queensland",
            "Australia/South",
            "Australia/Sydney",
            "Australia/Tasmania",
            "Australia/Victoria",
            "Australia/West",
            "Australia/Yancowinna",
            "Brazil/Acre",
            "Brazil/DeNoronha",
            "Brazil/East",
            "Brazil/West",
            "CET",
            "CST6CDT",
            "Canada/Atlantic",
            "Canada/Central",
            "Canada/Eastern",
            "Canada/Mountain",
            "Canada/Newfoundland",
            "Canada/Pacific",
            "Canada/Saskatchewan",
            "Canada/Yukon",
            "Chile/Continental",
            "Chile/EasterIsland",
            "Cuba",
            "EET",
            "EST",
            "EST5EDT",
            "Egypt",
            "Eire",
            "Etc/GMT",
            "Etc/GMT+0",
            "Etc/GMT+1",
            "Etc/GMT+10",
            "Etc/GMT+11",
            "Etc/GMT+12",
            "Etc/GMT+2",
            "Etc/GMT+3",
            "Etc/GMT+4",
            "Etc/GMT+5",
            "Etc/GMT+6",
            "Etc/GMT+7",
            "Etc/GMT+8",
            "Etc/GMT+9",
            "Etc/GMT-0",
            "Etc/GMT-1",
            "Etc/GMT-10",
            "Etc/GMT-11",
            "Etc/GMT-12",
            "Etc/GMT-13",
            "Etc/GMT-14",
            "Etc/GMT-2",
            "Etc/GMT-3",
            "Etc/GMT-4",
            "Etc/GMT-5",
            "Etc/GMT-6",
            "Etc/GMT-7",
            "Etc/GMT-8",
            "Etc/GMT-9",
            "Etc/GMT0",
            "Etc/Greenwich",
            "Etc/UCT",
            "Etc/UTC",
            "Etc/Universal",
            "Etc/Zulu",
            "Europe/Amsterdam",
            "Europe/Andorra",
            "Europe/Astrakhan",
            "Europe/Athens",
            "Europe/Belfast",
            "Europe/Belgrade",
            "Europe/Berlin",
            "Europe/Bratislava",
            "Europe/Brussels",
            "Europe/Bucharest",
            "Europe/Budapest",
            "Europe/Busingen",
            "Europe/Chisinau",
            "Europe/Copenhagen",
            "Europe/Dublin",
            "Europe/Gibraltar",
            "Europe/Guernsey",
            "Europe/Helsinki",
            "Europe/Isle_of_Man",
            "Europe/Istanbul",
            "Europe/Jersey",
            "Europe/Kaliningrad",
            "Europe/Kiev",
            "Europe/Kirov",
            "Europe/Kyiv",
            "Europe/Lisbon",
            "Europe/Ljubljana",
            "Europe/London",
            "Europe/Luxembourg",
            "Europe/Madrid",
            "Europe/Malta",
            "Europe/Mariehamn",
            "Europe/Minsk",
            "Europe/Monaco",
            "Europe/Moscow",
            "Europe/Nicosia",
            "Europe/Oslo",
            "Europe/Paris",
            "Europe/Podgorica",
            "Europe/Prague",
            "Europe/Riga",
            "Europe/Rome",
            "Europe/Samara",
            "Europe/San_Marino",
            "Europe/Sarajevo",
            "Europe/Saratov",
            "Europe/Simferopol",
            "Europe/Skopje",
            "Europe/Sofia",
            "Europe/Stockholm",
            "Europe/Tallinn",
            "Europe/Tirane",
            "Europe/Tiraspol",
            "Europe/Ulyanovsk",
            "Europe/Uzhgorod",
            "Europe/Vaduz",
            "Europe/Vatican",
            "Europe/Vienna",
            "Europe/Vilnius",
            "Europe/Volgograd",
            "Europe/Warsaw",
            "Europe/Zagreb",
            "Europe/Zaporozhye",
            "Europe/Zurich",
            "Factory",
            "GB",
            "GB-Eire",
            "GMT",
            "GMT+0",
            "GMT-0",
            "GMT0",
            "Greenwich",
            "HST",
            "Hongkong",
            "Iceland",
            "Indian/Antananarivo",
            "Indian/Chagos",
            "Indian/Christmas",
            "Indian/Cocos",
            "Indian/Comoro",
            "Indian/Kerguelen",
            "Indian/Mahe",
            "Indian/Maldives",
            "Indian/Mauritius",
            "Indian/Mayotte",
            "Indian/Reunion",
            "Iran",
            "Israel",
            "Jamaica",
            "Japan",
            "Kwajalein",
            "Libya",
            "MET",
            "MST",
            "MST7MDT",
            "Mexico/BajaNorte",
            "Mexico/BajaSur",
            "Mexico/General",
            "NZ",
            "NZ-CHAT",
            "Navajo",
            "PRC",
            "PST8PDT",
            "Pacific/Apia",
            "Pacific/Auckland",
            "Pacific/Bougainville",
            "Pacific/Chatham",
            "Pacific/Chuuk",
            "Pacific/Easter",
            "Pacific/Efate",
            "Pacific/Enderbury",
            "Pacific/Fakaofo",
            "Pacific/Fiji",
            "Pacific/Funafuti",
            "Pacific/Galapagos",
            "Pacific/Gambier",
            "Pacific/Guadalcanal",
            "Pacific/Guam",
            "Pacific/Honolulu",
            "Pacific/Johnston",
            "Pacific/Kanton",
            "Pacific/Kiritimati",
            "Pacific/Kosrae",
            "Pacific/Kwajalein",
            "Pacific/Majuro",
            "Pacific/Marquesas",
            "Pacific/Midway",
            "Pacific/Nauru",
            "Pacific/Niue",
            "Pacific/Norfolk",
            "Pacific/Noumea",
            "Pacific/Pago_Pago",
            "Pacific/Palau",
            "Pacific/Pitcairn",
            "Pacific/Pohnpei",
            "Pacific/Ponape",
            "Pacific/Port_Moresby",
            "Pacific/Rarotonga",
            "Pacific/Saipan",
            "Pacific/Samoa",
            "Pacific/Tahiti",
            "Pacific/Tarawa",
            "Pacific/Tongatapu",
            "Pacific/Truk",
            "Pacific/Wake",
            "Pacific/Wallis",
            "Pacific/Yap",
            "Poland",
            "Portugal",
            "ROC",
            "ROK",
            "Singapore",
            "Turkey",
            "UCT",
            "US/Alaska",
            "US/Aleutian",
            "US/Arizona",
            "US/Central",
            "US/East-Indiana",
            "US/Eastern",
            "US/Hawaii",
            "US/Indiana-Starke",
            "US/Michigan",
            "US/Mountain",
            "US/Pacific",
            "US/Samoa",
            "UTC",
            "Universal",
            "W-SU",
            "WET",
            "Zulu",
            "localtime"
         ],
         "minLength": 1,
         "title": "Timezone",
         "type": "string"
      },
      "verify_ssl": {
         "anyOf": [
            {
               "type": "boolean"
            },
            {
               "format": "path",
               "type": "string"
            }
         ],
         "default": true,
         "description": "If SSL should be verifed for HTTPS requests to the API. Can also provide a path to the CA bundle that should be used.",
         "title": "Verify Ssl"
      },
      "request_timeout": {
         "default": 60,
         "description": "Timeout for requests to API in seconds.",
         "title": "Request Timeout",
         "type": "integer"
      },
      "secret_key": {
         "default": "not-so-secret",
         "description": "Secret key for encrypting session.",
         "format": "binary",
         "title": "Secret Key",
         "type": "string"
      },
      "sample_view_similarity_limit": {
         "default": 10,
         "description": "Limit number of samples in sample view dendrogram.",
         "title": "Sample View Similarity Limit",
         "type": "integer"
      },
      "sample_view_similarity_threshold": {
         "default": 0.9,
         "description": "Minimum similarity score for samples in the samples view dendrogram.",
         "title": "Sample View Similarity Threshold",
         "type": "number"
      },
      "sample_view_typing_method": {
         "$ref": "#/$defs/TypingMethod",
         "default": "minhash",
         "description": "Typing method used for clustering samples in sample view dendrogram."
      },
      "sample_view_cluster_method": {
         "$ref": "#/$defs/ClusterMethod",
         "default": "single",
         "description": "Clustering method used for dendrogram in sample view."
      },
      "testing": {
         "default": false,
         "description": "Enable test mode to facilitate easier testing and development.",
         "title": "Testing",
         "type": "boolean"
      }
   },
   "$defs": {
      "ClusterMethod": {
         "description": "Index of methods for hierarchical clustering of samples.",
         "enum": [
            "single",
            "complete",
            "average",
            "neighbor_joining"
         ],
         "title": "ClusterMethod",
         "type": "string"
      },
      "TypingMethod": {
         "description": "Supported typing methods.",
         "enum": [
            "mlst",
            "cgmlst",
            "minhash"
         ],
         "title": "TypingMethod",
         "type": "string"
      }
   },
   "additionalProperties": false
}

Config:
  • use_enum_values: bool = True

Fields:
field api_external_url: str = 'http://localhost:8001'

External URL to the Bonsai API.

field api_internal_url: str = 'http://api:8000'

Internal container-container URL to the Bonsai API.

field request_timeout: int = 60

Timeout for requests to API in seconds.

field sample_view_cluster_method: ClusterMethod = ClusterMethod.SINGLE

Clustering method used for dendrogram in sample view.

field sample_view_similarity_limit: int = 10

Limit number of samples in sample view dendrogram.

field sample_view_similarity_threshold: float = 0.9

Minimum similarity score for samples in the samples view dendrogram.

field sample_view_typing_method: TypingMethod = TypingMethod.MINHASH

Typing method used for clustering samples in sample view dendrogram.

field secret_key: bytes = b'not-so-secret'

Secret key for encrypting session.

field testing: bool = False

Enable test mode to facilitate easier testing and development.

field tz: TimeZoneName = 'Etc/UTC' (alias 'timezone')
field verify_ssl: bool | Path = True

If SSL should be verifed for HTTPS requests to the API. Can also provide a path to the CA bundle that should be used.

API service

Here are the general configuration options for the API service. See the documentation on login systems for information on how to configure LDAP based authentication.

API environmental variables

Env

Function

Default

ALLOWED_ORIGINS

Configure allowed origins as commma separated list.

DATABASE_NAME

Database name

bonsai

DB_HOST

Hostname of mongodb

mongodb

DB_PORT

Mongodb port

27017

REDIS_HOST

Hostname of redis server

redis

REDIS_PORT

Port of redis server

6379

REFERENCE_GENOMES_DIR

Path to directory with reference genomes

/tmp/reference_genomes

ANNOTATIONS_DIR

Path to directory where genome annotation is stored

/tmp/annotations

SECRET_KEY

Authentication token secret key

ACCESS_TOKEN_EXPIRE_MINUTES

Authentication token expiration time.

180

pydantic settings bonsai_api.config.Settings

API configuration.

Show JSON schema
{
   "title": "Settings",
   "description": "API configuration.",
   "type": "object",
   "properties": {
      "bonsai_admin_user": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Bonsai Admin User"
      },
      "bonsai_admin_password": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Bonsai Admin Password"
      },
      "bonsai_admin_mail": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Bonsai Admin Mail"
      },
      "allowed_origins": {
         "default": [],
         "items": {
            "type": "string"
         },
         "title": "Allowed Origins",
         "type": "array"
      },
      "database_name": {
         "default": "bonsai",
         "title": "Database Name",
         "type": "string"
      },
      "db_host": {
         "default": "mongodb",
         "title": "Db Host",
         "type": "string"
      },
      "db_port": {
         "default": 27017,
         "title": "Db Port",
         "type": "integer"
      },
      "max_connections": {
         "default": 10,
         "title": "Max Connections",
         "type": "integer"
      },
      "min_connections": {
         "default": 10,
         "title": "Min Connections",
         "type": "integer"
      },
      "redis_host": {
         "default": "redis",
         "title": "Redis Host",
         "type": "string"
      },
      "redis_port": {
         "default": "6379",
         "title": "Redis Port",
         "type": "string"
      },
      "reference_genomes_dir": {
         "default": "/reference_genomes",
         "title": "Reference Genomes Dir",
         "type": "string"
      },
      "annotations_dir": {
         "default": "/annotations",
         "title": "Annotations Dir",
         "type": "string"
      },
      "secret_key": {
         "default": "not-so-secret",
         "title": "Secret Key",
         "type": "string"
      },
      "access_token_expire_minutes": {
         "default": 180,
         "title": "Access Token Expire Minutes",
         "type": "integer"
      },
      "api_authentication": {
         "default": true,
         "title": "Api Authentication",
         "type": "boolean"
      },
      "notification_service_api": {
         "anyOf": [
            {
               "format": "uri",
               "maxLength": 2083,
               "minLength": 1,
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Notification Service Api"
      },
      "audit_log_service_api": {
         "anyOf": [
            {
               "format": "uri",
               "maxLength": 2083,
               "minLength": 1,
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Audit Log Service Api"
      },
      "ldap_search_attr": {
         "default": "mail",
         "title": "Ldap Search Attr",
         "type": "string"
      },
      "ldap_search_filter": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Ldap Search Filter"
      },
      "ldap_base_dn": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Ldap Base Dn"
      },
      "ldap_host": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Ldap Host"
      },
      "ldap_port": {
         "default": 1389,
         "title": "Ldap Port",
         "type": "integer"
      },
      "ldap_bind_dn": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Ldap Bind Dn"
      },
      "ldap_secret": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Ldap Secret"
      },
      "ldap_connection_timeout": {
         "default": 10,
         "title": "Ldap Connection Timeout",
         "type": "integer"
      },
      "ldap_read_only": {
         "default": false,
         "title": "Ldap Read Only",
         "type": "boolean"
      },
      "ldap_valid_names": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Ldap Valid Names"
      },
      "ldap_private_key_password": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Ldap Private Key Password"
      },
      "ldap_raise_exceptions": {
         "default": false,
         "title": "Ldap Raise Exceptions",
         "type": "boolean"
      },
      "ldap_user_login_attr": {
         "default": "mail",
         "title": "Ldap User Login Attr",
         "type": "string"
      },
      "force_attribute_value_as_list": {
         "default": false,
         "title": "Force Attribute Value As List",
         "type": "boolean"
      },
      "ldap_use_ssl": {
         "default": false,
         "title": "Ldap Use Ssl",
         "type": "boolean"
      },
      "ldap_use_tls": {
         "default": true,
         "title": "Ldap Use Tls",
         "type": "boolean"
      },
      "ldap_tls_version": {
         "default": 3,
         "title": "Ldap Tls Version",
         "type": "integer"
      },
      "ldap_require_cert": {
         "default": 2,
         "title": "Ldap Require Cert",
         "type": "integer"
      },
      "ldap_client_private_key": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Ldap Client Private Key"
      },
      "ldap_client_cert": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Ldap Client Cert"
      },
      "ldap_ca_certs_file": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Ldap Ca Certs File"
      },
      "ldap_ca_certs_path": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": "/usr/lib/ssl/certs",
         "title": "Ldap Ca Certs Path"
      },
      "ldap_ca_certs_data": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Ldap Ca Certs Data"
      },
      "lims_export_config": {
         "anyOf": [
            {
               "format": "file-path",
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Path to custom LIMS exporter YAML configuration.If omitted, the application will fall back the packaged default.",
         "examples": [
            "/etc/bonsai/lims.yaml"
         ],
         "title": "Lims Export Config"
      }
   },
   "additionalProperties": false
}

Config:
  • env_file_encoding: str = utf-8

Fields:
field access_token_expire_minutes: int = 180
field allowed_origins: list[str] = []
field annotations_dir: str = '/annotations'
field api_authentication: bool = True
field audit_log_service_api: HttpUrl | None = None
field bonsai_admin_mail: str | None = None
field bonsai_admin_password: str | None = None
field bonsai_admin_user: str | None = None
field database_name: str = 'bonsai'
field db_host: str = 'mongodb'
field db_port: int = 27017
field force_attribute_value_as_list: bool = False
field ldap_base_dn: str | None = None
field ldap_bind_dn: str | None = None
field ldap_ca_certs_data: str | None = None
field ldap_ca_certs_file: str | None = None
field ldap_ca_certs_path: str | None = '/usr/lib/ssl/certs'
field ldap_client_cert: str | None = None
field ldap_client_private_key: str | None = None
field ldap_connection_timeout: int = 10
field ldap_host: str | None = None
field ldap_port: int = 1389
field ldap_private_key_password: str | None = None
field ldap_raise_exceptions: bool = False
field ldap_read_only: bool = False
field ldap_require_cert: int = VerifyMode.CERT_REQUIRED
field ldap_search_attr: str = 'mail'
field ldap_search_filter: str | None = None
field ldap_secret: str | None = None
field ldap_tls_version: int = _SSLMethod.PROTOCOL_TLSv1
field ldap_use_ssl: bool = False
field ldap_use_tls: bool = True
field ldap_user_login_attr: str = 'mail'
field ldap_valid_names: str | None = None
field lims_export_config: Path | None = None

Path to custom LIMS exporter YAML configuration.If omitted, the application will fall back the packaged default.

Constraints:
  • func = <function _validate_yaml_file at 0x7d4c251999e0>

field max_connections: int = 10
field min_connections: int = 10
field notification_service_api: HttpUrl | None = None
field redis_host: str = 'redis'
field redis_port: str = '6379'
field reference_genomes_dir: str = '/reference_genomes'
field secret_key: str = 'not-so-secret'
property mongodb_uri: str | None

Create mongodb connection string.

property use_ldap_auth: bool

Return True if LDAP authentication is enabled.

Returns:

Return True if LDAP authentication is enabled

Return type:

bool

Minhash service

Minhash service environmental variables

Env

Function

Default

SIGNATURE_KMER_SIZE

Kmer size used to build signature files.

31

GENOME_SIGNATURE_DIR

Path to directory where signatures are kept.

/data/signature_db

REDIS_HOST

Redis server hostname

redis

REDIS_PORT

Redis server port

6379

Allele clustering service

Allele cluster service environmental variables

Env

Function

Default

REDIS_HOST

Redis server hostname

redis

REDIS_PORT

Redis server port

6379

Volume mappings

Mouting directories and files from the host file system to the container is used to make assetes, such as reference genomes or configurations, available to the software. It can also be used to make data persistant accros updates to the container which is usefull for databases.

Please ensure that the mounted asset directory match the path specified in the service configuration.

Note

Please ensure that the container have permission to read mounted files and directories.

API service volumes

The API can serve reference genome sequences and annotation files to the integrated IGV browser. These could be stored on the host file system and mounted to the docker container.

API service volume mounts.

Volume

Function

/tmp/reference_genomes

Reference genomes for IGV.

/tmp/annotations

IGV annotation files.

Minhash service volumes

The genome signatures sent to the minhash service container and written to disk. The directory should be mounted to the host file system for the data to be persistant. For more information see data persistance.

Minhash service volume mounts.

Volume

Function

/data/signature_db

Directory for genome signatures.

Specific configuration files

API service

The API service automatically tags uploaded samples to highlight important features, such as antibiotic resistance genes or virulence genes. Some tags uses a set of thresholds defined in a toml file. The default configuration file is located in the container at /app/bonsai_api/thresholds.toml. To customize the thresholds, you can create your own thresholds.toml file and mount it to the container.