diff --git a/base/Dockerfile b/base/Dockerfile
index 82f900034626d417526b83f81512e29e2f9bf9cd..a3fc30b7dc2c1d0fc85d3814065728c17779d2a1 100644
--- a/base/Dockerfile
+++ b/base/Dockerfile
@@ -1,11 +1,8 @@
-FROM docker-registry.ebrains.eu/clb-jupyter-image/ubuntu:focal
+# https://jupyter-docker-stacks.readthedocs.io/en/latest/#using-old-images
+FROM jupyter/minimal-notebook:a374cab4fcb6
 
 LABEL maintainer="Collaboratory Platform <platform@humanbrainproject.eu>"
 
-ARG NB_USER="jovyan"
-ARG NB_UID=1000
-ARG NB_GID=100
-
 ENV GIT_COMMITTER_NAME=platform@humanbrainproject.eu \
     GIT_COMMITTER_EMAIL=platform@humanbrainproject.eu \
     USER="${NB_USER}" \
@@ -24,43 +21,22 @@ RUN ln -sf /usr/share/zoneinfo/Europe/Zurich /etc/localtime
 ENV DEBIAN_FRONTEND noninteractive
 RUN apt-get update --yes && \
     apt-get install --yes \
-    ca-certificates \
     cmake \
     csh \
     curl \
     cython \
     gcc \
     gettext \
-    git \
     llvm \
     lsof \
     mpich \
-    pandoc \
-    python-dev \
-    python3-venv \
-    python3-pip \
     r-base \
     swig \
-    unzip \
     vim  && \
     apt-get clean && rm -rf /var/lib/apt/lists/*
 
-# install nodejs
-RUN curl -fsSL https://deb.nodesource.com/setup_17.x | bash
-RUN apt-get install -y nodejs
-
-# install min texlive (necessary for nb exports)
-RUN apt-get update --yes && \
-    apt-get install --yes --no-install-recommends \
-    wget \
-    texlive-xetex \
-    texlive-fonts-recommended \
-    texlive-plain-generic && \
-    apt-get clean && rm -rf /var/lib/apt/lists/*
-
 # jupyter install in /opt/app-root/ for legacy reasons (previously based on centos base image)
 RUN mkdir -p /opt/app-root/etc /opt/app-root/clb/ /opt/app-root/src
-COPY base/jupyter_notebook_config.py /opt/app-root/etc/
 
 # folders for drive integration
 RUN mkdir -p /mnt/user/
@@ -73,10 +49,6 @@ ENV HOME=/opt/app-root/src/
 COPY base/requirements.txt /tmp
 RUN pip install --no-cache-dir -r /tmp/requirements.txt
 
-# fix missing template issue in nbgitpuller: https://github.com/jupyterhub/nbgitpuller/issues/235
-# remove this once it has been fixed in project
-RUN ln -s /usr/local/lib/python3.8/dist-packages/nbgitpuller/templates/status.html /usr/local/lib/python3.8/dist-packages/notebook/templates/
-
 # disable ipcluster extension
 RUN jupyter labextension disable ipcluster \
                               ipyparallel-labextension
@@ -103,9 +75,8 @@ RUN R --slave -e "IRkernel::installspec(name = 'ir363', displayname = 'R 3.6.3')
 # disable core dumps
 RUN echo "* - core 0" >> /etc/security/limits.conf
 
-# fix permissions so NB_USER has permissions to run notebooks and install packages
-COPY base/fix-permissions /usr/local/bin/fix-permissions
-RUN chmod +x /usr/local/bin/fix-permissions
+# allow the script to fail (because of symlinks) without failing the build (TODO: fix)
+RUN sed -i 's/set -e/set +e/' $(which fix-permissions)
 
 # copy user setup file
 COPY base/user_setup.sh /opt/app-root/etc/
@@ -113,19 +84,12 @@ RUN chmod +x /opt/app-root/etc/user_setup.sh
 
 RUN fix-permissions /opt/app-root/ && \
     fix-permissions /tmp/cache/ && \
-    fix-permissions /usr/local/share/jupyter/ && \
-    fix-permissions /usr/local/etc/jupyter && \
-    fix-permissions /usr/local/lib/R/site-library && \
-    fix-permissions /usr/etc/jupyter/
+    fix-permissions /opt/conda/share/jupyter/ && \
+    fix-permissions /opt/conda/etc/jupyter && \
+    fix-permissions /usr/local/lib/R/site-library
 
-COPY base/start-notebook.sh /opt/app-root/etc/
 COPY base/.spynnaker.cfg /opt/app-root/src/
-RUN chmod +x /opt/app-root/etc/start-notebook.sh
 
 WORKDIR /opt/app-root/src/
 
-EXPOSE 8080
-
 USER ${NB_UID}
-
-CMD /opt/app-root/etc/start-notebook.sh
diff --git a/base/fix-permissions b/base/fix-permissions
deleted file mode 100644
index 45354c0dccbadfef143fc32333a8b240430d3d89..0000000000000000000000000000000000000000
--- a/base/fix-permissions
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-# source: https://github.com/sclorg/s2i-base-container/blob/master/core/root/usr/bin/fix-permissions
-
-# Allow this script to fail without failing a build
-set +e
-
-SYMLINK_OPT=${2:--L}
-
-# Fix permissions on the given directory or file to allow group read/write of
-# regular files and execute of directories.
-
-[ $(id -u) -ne 0 ] && CHECK_OWNER=" -uid $(id -u)"
-
-# If argument does not exist, script will still exit with 0,
-# but at least we'll see something went wrong in the log
-if ! [ -e "$1" ] ; then
-  echo "ERROR: File or directory $1 does not exist." >&2
-  # We still want to end successfully
-  exit 0
-fi
-
-find $SYMLINK_OPT "$1" ${CHECK_OWNER} \! -gid 0 -exec chgrp 0 {} +
-find $SYMLINK_OPT "$1" ${CHECK_OWNER} \! -perm -g+rw -exec chmod g+rw {} +
-find $SYMLINK_OPT "$1" ${CHECK_OWNER} -perm /u+x -a \! -perm /g+x -exec chmod g+x {} +
-find $SYMLINK_OPT "$1" ${CHECK_OWNER} -type d \! -perm /g+x -exec chmod g+x {} +
-
-# Always end successfully
-exit 0
\ No newline at end of file
diff --git a/base/jupyter_notebook_config.py b/base/jupyter_notebook_config.py
deleted file mode 100644
index 6b9fc72094b87c9749d64cced15572d7fb6a21ac..0000000000000000000000000000000000000000
--- a/base/jupyter_notebook_config.py
+++ /dev/null
@@ -1,26 +0,0 @@
-import os
-
-port = int(os.environ.get('JUPYTER_NOTEBOOK_PORT', '8080'))
-
-c.NotebookApp.ip = '0.0.0.0'
-c.NotebookApp.port = port
-c.NotebookApp.open_browser = False
-c.NotebookApp.quit_button = False
-
-c.WebPDFExporter.enabled = False
-
-if os.environ.get('JUPYTERHUB_SERVICE_PREFIX'):
-    c.NotebookApp.base_url = os.environ.get('JUPYTERHUB_SERVICE_PREFIX')
-
-password = os.environ.get('JUPYTER_NOTEBOOK_PASSWORD')
-if password:
-    import notebook.auth
-    c.NotebookApp.password = notebook.auth.passwd(password)
-    del password
-    del os.environ['JUPYTER_NOTEBOOK_PASSWORD']
-
-image_config_file = '/opt/app-root/src/.jupyter/jupyter_notebook_config.py'
-
-if os.path.exists(image_config_file):
-    with open(image_config_file) as fp:
-        exec(compile(fp.read(), image_config_file, 'exec'), globals())
diff --git a/base/requirements.txt b/base/requirements.txt
index cb25f19118c1dde5c863f0cfaa7020317aca841a..9929e0c05e0521fd9767f225f25d0013859d70cc 100644
--- a/base/requirements.txt
+++ b/base/requirements.txt
@@ -1,9 +1,6 @@
-beautifulsoup4==4.10.0
 bluepyopt==1.11.5
 bokeh==2.4.2
 Cython==0.29.26
-cffi==1.14.5
-cryptography==36.0.1
 ebrains-drive==0.5.0
 h5py==3.6.0
 ipympl==0.8.5
@@ -11,10 +8,7 @@ ipywidgets==7.6.5
 jupyterlab-widgets==1.0.2
 jupyterlab-topbar==0.6.1
 jupyterlab-system-monitor==0.8.0
-jupyterhub==1.5.0
-jupyterlab==3.2.8
 jupyterlab-git==0.34.1
-jupyter-server==1.13.5
 lazyarray==0.5.1
 lxml==4.7.1
 matplotlib==3.5.3
@@ -31,9 +25,7 @@ numpy==1.23.5
 pandas==1.3.5
 patsy==0.5.2
 plotly==5.5.0
-Pygments==2.11.2
 python-swiftclient==3.13.0
-PyJWT==2.3.0
 pyOpenSSL==22.0.0 # TODO: Issue with 22.1 https://github.com/pyca/pyopenssl/issues/1154
 pyunicore==0.15.0
 requests-oauthlib==1.3.0
diff --git a/base/start-notebook.sh b/base/start-notebook.sh
deleted file mode 100644
index 4c2eb7c368cd4baf9da4a7deda9ac389ddf21edb..0000000000000000000000000000000000000000
--- a/base/start-notebook.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-set -e
-# Disable core dumps
-ulimit -c 0
-exec jupyter labhub --NotebookApp.default_url=/lab --config=/opt/app-root/etc/jupyter_notebook_config.py $@