Upgrade the Docker version of AI Hub from 2025.1.1 to 2026.0.0
As part of the upgrade please create the nginx-custom-locations.conf
file in
a new proxy
subfolder with the content below and apply the following changes
in your .env
and docker-compose.yml
files:
As usual with patch files, the first character in every line has a meaning:
- Lines starting with
+
need to be added - Lines starting with
-
need to be removed - Lines starting with a space ` ` are just for context and should not be changed
- Lines starting with
@@
indicate the line numbers in the original file and should not be changed
nginx-custom-locations.conf
@@ -0,0 +1,16 @@
+# # This is a configuration sample nginx location configuration routing traffic to ActiveMQ web console
+# # You can extend the configuration if you want to route external traffic to AI Hub docker-networks
+#
+# set $amq_webui_backend_service http://aihub-activemq:8161;
+# location ~ ^/console(.*)$ {
+# client_max_body_size 100M;
+# proxy_set_header Host $http_host;
+# proxy_set_header X-Forwarded-Proto $original_scheme;
+# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+# proxy_set_header X-Forwarded-Host $http_host;
+# proxy_set_header X-Forwarded-Server $host;
+# proxy_set_header X-Forwarded-Port $server_port;
+#
+# proxy_read_timeout 300;
+# proxy_pass $amq_webui_backend_service/console$1$is_args$args;
+# }
.env
@@ -75,7 +75,7 @@ COMPOSE_HTTP_TIMEOUT=600
REGISTRY=rapidminer/
# Version of the Init container
-INIT_VERSION=2025.1.1
+INIT_VERSION=2026.0.0
# Enable configuring server settings for Python Scripting extension
INIT_SHARED_CONDA_SETTINGS=true
@@ -86,7 +86,7 @@ INIT_SHARED_CONDA_SETTINGS=true
#
# ############################################
-PROXY_VERSION=2025.1.1
+PROXY_VERSION=2026.0.0
# Deprecated, please use HTTP_PORT and HTTPS_PORT
UNPRIVILEGED_PORTS=false
@@ -162,10 +162,10 @@ DEBUG_CONF_INIT=false
# ############################################
# Keycloak container version
-KEYCLOAK_VERSION=2025.1.1
+KEYCLOAK_VERSION=2026.0.0
# Keycloak database parameters
-KEYCLOAK_POSTGRES_VERSION=2025.1.1
+KEYCLOAK_POSTGRES_VERSION=2026.0.0
KEYCLOAK_DBSCHEMA=kcdb
KEYCLOAK_DBUSER=kcdbuser
KEYCLOAK_DBPASS=changeit
@@ -193,7 +193,7 @@ KC_HEALTH_ENABLED="true"
SKIP_LICENSE_CHECK=false
LICENSE_PROXY_PROFILES_ACTIVE=default,prometheus
-LICENSE_PROXY_VERSION=2025.1.1
+LICENSE_PROXY_VERSION=2026.0.0
# License Proxy url with protocol and port
LICENSE_PROXY_INTERNAL_URL=http://license-proxy:9898
# Unique machine id of the deployment
@@ -207,7 +207,7 @@ LICENSE_PROXY_MODE=on_prem
# must be set if mode is 'on_prem'
ALTAIR_LICENSE_PATH=
# ##
-
+MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE=health
# ## settings for 'altair_one' mode ###
# Authentication type while connecting to the license server
# possible values are 'credentials', 'auth_code' and 'static_token'
@@ -268,9 +268,9 @@ ALM_HHWU_PROXY_PASSWORD=
# ############################################
AIHUB_BACKEND_PROFILES_ACTIVE=default,prometheus
-AIHUB_FRONTEND_VERSION=2025.1.1
-AIHUB_BACKEND_VERSION=2025.1.1
-AIHUB_POSTGRES_VERSION=2025.1.1
+AIHUB_FRONTEND_VERSION=2026.0.0
+AIHUB_BACKEND_VERSION=2026.0.0
+AIHUB_POSTGRES_VERSION=2026.0.0
AIHUB_DBHOST=aihub-postgresql
AIHUB_DBSCHEMA=aihub-db
AIHUB_DBUSER=aihub-db-user
@@ -330,7 +330,7 @@ RAPIDMINER_PYTHON_SDK_EXTENSION_DIR=/aihub/home/resources/python-sdk-extensions
#
# ############################################
-JOBAGENT_VERSION=2025.1.1
+JOBAGENT_VERSION=2026.0.0
JOBAGENT_SPRING_PROFILES_ACTIVE=default,prometheus
JOBAGENT_QUEUE_ACTIVEMQ_URI=failover:(tcp://aihub-activemq:61616)
JOBAGENT_CONTAINER_COUNT=2
@@ -353,7 +353,7 @@ JOBAGENT_CONTAINER_PYTHON_SDK_EXTENSIONS_DIR=/home/rapidminer/resources/python-s
#
# ############################################
-ACTIVEMQ_VERSION=2025.1.1
+ACTIVEMQ_VERSION=2026.0.0
BROKER_ACTIVEMQ_USERNAME=amq-user
BROKER_ACTIVEMQ_PASSWORD="<SERVER-AMQ-PASS-PLACEHOLDER>"
ENABLE_JMX_EXPORTER=true
@@ -364,7 +364,7 @@ ENABLE_JMX_EXPORTER=true
#
# ############################################
-JUPYTERHUB_VERSION=2025.1.1
+JUPYTERHUB_VERSION=2026.0.0
JUPYTERHUB_DBHOST=jupyterhub-db
JUPYTERHUB_DBSCHEMA=jupyterhub
JUPYTERHUB_DBUSER=jupyterhubdbuser
@@ -396,7 +396,7 @@ JUPYTERHUB_DOCKER_DISABLE_NOTEBOOK_IMAGE_PULL_AT_STARTUP=False
#
# ############################################
-JUPYTERHUB_NOTEBOOK_VERSION=2025.1.1
+JUPYTERHUB_NOTEBOOK_VERSION=2026.0.0
JUPYTERHUB_NOTEBOOK_SSO_NB_UID_KEY=X_NB_UID
JUPYTERHUB_NOTEBOOK_SSO_NB_GID_KEY=X_NB_GID
@@ -429,7 +429,7 @@ JUPYTERHUB_NOTEBOOK_SHARED_ENV_VOLUME_NAME_DOCKERSPAWNER=coding-shared-vol
#
# ############################################
-PLATFORM_ADMIN_VERSION=2025.1.1
+PLATFORM_ADMIN_VERSION=2026.0.0
PLATFORM_ADMIN_SSO_CLIENT_ID=platform-admin
PLATFORM_ADMIN_SSO_CLIENT_SECRET=
PLATFORM_ADMIN_DISABLE_PYTHON=false
@@ -441,7 +441,7 @@ PLATFORM_ADMIN_DISABLE_RTS=false
#
# ############################################
-CES_VERSION=2025.1.1
+CES_VERSION=2026.0.0
DISABLE_DEFAULT_CHANNELS=True
CONDA_CHANNEL_PRIORITY=strict
HTTP_PROXY=
@@ -455,7 +455,7 @@ NO_PROXY=platform-admin
# ############################################
SCORING_AGENT_SPRING_PROFILES_ACTIVE=default,prometheus
-SCORING_AGENT_VERSION=2025.1.1
+SCORING_AGENT_VERSION=2026.0.0
SCORING_AGENT_CACHE_REPOSITORY_CLEAR_ON_COLLECTION=false
SCORING_AGENT_CACHE_REPOSITORY_MAXIMUM_SIZE=50
# Maximum age in milliseconds of entries held in the cache
@@ -516,7 +516,7 @@ WEBAPI_REGISTRY_PASSWORD=secret
WEBAPI_AIHUB_CONNECTION_PROTOCOL=http
WEBAPI_AIHUB_CONNECTION_HOST=aihub-backend
WEBAPI_AIHUB_CONNECTION_PORT=8080
-WEBAPI_AGENT_VERSION=2025.1.1
+WEBAPI_AGENT_VERSION=2026.0.0
WEBAPI_GROUP_NAME=DEFAULT
#WEBAPI_1_GROUP_NAME=
#WEBAPI_2_GROUP_NAME=
@@ -539,7 +539,7 @@ SCORING_AGENT_RAPIDMINER_LOAD_USER_CERTIFICATES=true
# ############################################
WEBAPI_GATEWAY_PROFILES_ACTIVE=default,prometheus
-WEBAPI_GATEWAY_VERSION=2025.1.1
+WEBAPI_GATEWAY_VERSION=2026.0.0
# The connect timeout in milliseconds
WEBAPI_GATEWAY_SPRING_CLOUD_GATEWAY_HTTPCLIENT_CONNECT_TIMEOUT=15000
WEBAPI_GATEWAY_SPRING_CLOUD_GATEWAY_HTTPCLIENT_RESPONSE_TIMEOUT=5m
@@ -563,11 +563,13 @@ WEBAPI_GATEWAY_LOADBALANCER_METRIC_STYLE=CPU_MEMORY
# ############################################
# Official grafana image from: https://hub.docker.com/r/grafana/grafana/
-OFFICIAL_GRAFANA_IMAGE=docker.io/grafana/grafana:11.6.2-ubuntu
+OFFICIAL_GRAFANA_IMAGE=docker.io/grafana/grafana:12.1.1-ubuntu
GF_SECURITY_ANGULAR_SUPPORT_ENABLED=true
# Image tag used by grafana-proxy and grafana-init
-GRAFANA_UTILS_VERSION=2025.1.1
+GRAFANA_UTILS_VERSION=2026.0.0
GF_AUTH_GENERIC_OAUTH_SCOPES=email,openid
+GRAFANA_PROXY_REQUEST_TIMEOUT=60 # seconds
+GF_DATAPROXY_TIMEOUT=60 # seconds
#
# Grafana Proxy
@@ -599,7 +601,7 @@ GF_SERVER_ROOT_URL=
#
# ############################################
-LETSENCRYPT_VERSION=2025.1.1
+LETSENCRYPT_VERSION=2026.0.0
# ############################################
#
@@ -607,7 +609,7 @@ LETSENCRYPT_VERSION=2025.1.1
#
# ############################################
-DDM_VERSION=2025.1.1
+DDM_VERSION=2026.0.0
# ############################################
#
@@ -615,7 +617,7 @@ DDM_VERSION=2025.1.1
#
# ############################################
-LANDING_PAGE_VERSION=2025.1.1
+LANDING_PAGE_VERSION=2026.0.0
LANDING_PAGE_SSO_CLIENT_ID=landing-page
LANDING_PAGE_SSO_CLIENT_SECRET=
LANDING_PAGE_DEBUG=false
@@ -651,10 +653,10 @@ DEPLOYED_PANOPTICON=false
#
# ############################################
-PANOPTICON_VIZAPP_VERSION=2025.1.1
-PANOPTICON_VIZAPP_PYTHON_VERSION=2025.1.1
-PANOPTICON_MONETDB_IMAGE_VERSION=2025.1.1
-PANOPTICON_RSERVE_IMAGE_VERSION=2025.1.1
+PANOPTICON_VIZAPP_VERSION=2026.0.0
+PANOPTICON_VIZAPP_PYTHON_VERSION=2026.0.0
+PANOPTICON_MONETDB_IMAGE_VERSION=2026.0.0
+PANOPTICON_RSERVE_IMAGE_VERSION=2026.0.0
PANOPTICON_SSO_CLIENT_ID=panopticon
PANOPTICON_SSO_CLIENT_SECRET=
docker-compose.yml
@@ -77,6 +77,7 @@ services:
volumes:
- ./ssl:/etc/nginx/ssl
- platform-admin-uploaded-vol:/rapidminer/platform-admin/uploaded/
+ - ./proxy/nginx-custom-locations.conf:/etc/nginx/nginx-custom-locations.conf
profiles:
- proxy
- deployment-init
@@ -111,7 +112,7 @@ services:
retries: 5
start_period: 5s
keycloak-db:
- image: "${REGISTRY}postgres-14:${KEYCLOAK_POSTGRES_VERSION}"
+ image: "${REGISTRY}postgres-17:${KEYCLOAK_POSTGRES_VERSION}"
restart: always
hostname: keycloak-db
environment:
@@ -222,6 +223,7 @@ services:
- SPRING_PROFILES_ACTIVE=${LICENSE_PROXY_PROFILES_ACTIVE}
- KEYCLOAK_AUTH_SERVER_URL=${SSO_PUBLIC_URL}/auth/
- KEYCLOAK_REALM=${SSO_IDP_REALM}
+ - MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE=${MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE:-health}
- LICENSE_PROXY_MODE=${LICENSE_PROXY_MODE}
- LICENSE_UNIT_MANAGER_AUTHENTICATION_TYPE=${LICENSE_UNIT_MANAGER_AUTHENTICATION_TYPE}
- LICENSE_UNIT_MANAGER_AUTH_CODE=${LICENSE_UNIT_MANAGER_AUTH_CODE}
@@ -248,13 +250,13 @@ services:
profiles:
- altair-license
healthcheck:
- test: curl -s http://localhost:9898/actuator/health
+ test: curl -s http://localhost:9191/actuator/health
interval: 60s
timeout: 30s
retries: 5
start_period: 15s
aihub-postgresql:
- image: "${REGISTRY}postgres-14:${AIHUB_POSTGRES_VERSION}"
+ image: "${REGISTRY}postgres-17:${AIHUB_POSTGRES_VERSION}"
hostname: aihub-postgresql
restart: always
environment:
@@ -343,7 +345,7 @@ services:
retries: 5
start_period: 15s
aihub-activemq-volume-fix:
- image: docker.io/library/busybox:stable
+ image: ${REGISTRY}busybox:${ACTIVEMQ_VERSION}
hostname: aihub-activemq-volume-fix
restart: "no"
entrypoint: ["/bin/sh", "-c", "chown -R 1001:0 /var/lib/artemis-instance/data && chmod -R 2775 /var/lib/artemis-instance/data"]
@@ -987,7 +989,7 @@ services:
- GF_PANELS_DISABLE_SANITIZE_HTML=${GF_PANELS_DISABLE_SANITIZE_HTML:-true}
- GF_SERVER_SERVE_FROM_SUB_PATH=${GF_SERVER_SERVE_FROM_SUB_PATH:-true}
- GF_AUTH_DISABLE_LOGIN_FORM=${GF_AUTH_DISABLE_LOGIN_FORM:-true}
- - GF_AUTH_OAUTH_AUTO_LOGIN=${GF_AUTH_OAUTH_AUTO_LOGIN:-true}
+ - GF_AUTH_AUTO_LOGIN=${GF_AUTH_AUTO_LOGIN:-true}
- GF_AUTH_BASIC_ENABLED=${GF_AUTH_BASIC_ENABLED:-false}
- GF_AUTH_GENERIC_OAUTH_ENABLED=${GF_AUTH_GENERIC_OAUTH_ENABLED:-true}
- GF_AUTH_GENERIC_OAUTH_ALLOW_SIGN_UP=${GF_AUTH_GENERIC_OAUTH_ALLOW_SIGN_UP:-true}
@@ -996,6 +998,7 @@ services:
- GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH=${GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH:-contains(grafana_roles[*], 'admin') && 'Admin' || contains(grafana_roles[*], 'editor') && 'Editor' || 'Viewer'}
- GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=${GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS:-rapidminer-aihub-datasource}
- GF_AUTH_GENERIC_OAUTH_SCOPES=${GF_AUTH_GENERIC_OAUTH_SCOPES:-email}
+ - GF_DATAPROXY_TIMEOUT=${GF_DATAPROXY_TIMEOUT:-60}
- TZ=${TZ}
volumes:
- grafana-home-vol:/var/lib/grafana
@@ -1029,6 +1032,7 @@ services:
- ENPOINTS_GATEWAY_INTERNAL_URL=${REACT_APP_WEBAPI_GATEWAY_URL}
- GRAFANA_PROXY_LOGGING_LEVEL=${GRAFANA_PROXY_LOGGING_LEVEL}
- LOG_RESPONSE_DATA=${GRAFANA_PROXY_LOG_RESPONSE_DATA}
+ - REQUEST_TIMEOUT=${GRAFANA_PROXY_REQUEST_TIMEOUT}
- TZ=${TZ}
depends_on:
aihub-backend: