diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..b38b25552c5619a2db1530017cff6ab49eb466be
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,49 @@
+name: ci
+
+on:
+  push:
+    branches:
+      - 'releases/v*'
+      - 'develop'
+    tags:
+      - 'v*.*.*'
+  workflow_dispatch:
+
+jobs:
+  docker:
+    runs-on: [self-hosted, Linux, X64]
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v3
+      - name: Set the environment variable
+        run: echo REPOSITORY_NAME=${GITHUB_REPOSITORY#*\/} >> $GITHUB_ENV
+      - name: Docker meta
+        id: meta
+        uses: docker/metadata-action@v4     
+        with:
+          images: |
+            "${{ secrets.DOCKERHUB_USERNAME }}/${{ env.REPOSITORY_NAME }}"
+          tags: |
+            type=ref,event=branch
+            type=ref,event=pr
+            type=semver,pattern={{version}}
+            type=semver,pattern={{major}}.{{minor}}
+            type=semver,pattern={{major}}
+      - name: Login to DockerHub
+        if: github.event_name != 'pull_request'
+        uses: docker/login-action@v2
+        with:
+          username: ${{ secrets.DOCKERHUB_USERNAME }}
+          password: ${{ secrets.DOCKERHUB_TOKEN }}
+      - name: Set up QEMU
+        uses: docker/setup-qemu-action@v2
+      - name: Set up Docker Buildx
+        uses: docker/setup-buildx-action@v2
+      - name: Build and push
+        uses: docker/build-push-action@v4
+        with:
+          context: .
+          platforms: linux/amd64,linux/arm64/v8
+          push: ${{ github.event_name != 'pull_request' }}
+          tags: ${{ steps.meta.outputs.tags }}
+          labels: ${{ steps.meta.outputs.labels }}
diff --git a/Dockerfile b/Dockerfile
index cf481ee3295e1fe73bab028720304a6f74e76bed..d5e4339641b58fa525d96f7859ae7bafbc013039 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,10 +1,7 @@
-ARG BASE_CONTAINER=brunoe/jupyterutln-default:develop
-FROM $BASE_CONTAINER
+FROM brunoe/jupyter-base:develop
 
 LABEL maintainer="Emmanuel Bruno <emmanuel.bruno@univ-tln.fr>"
 
-ENV PLANTUML_VERSION 1.2022.12
-ENV PLANTUML_SHA1 da1de7f1b3de4c70b2ff501579802085dbc9a05b
 USER root
 
 # Install minimal dependencies 
@@ -12,25 +9,15 @@ RUN --mount=type=cache,target=/var/cache/apt \
 	rm -f /etc/apt/apt.conf.d/docker-clean &&\
 	apt-get update && apt-get install -qq --yes --no-install-recommends\
 		coreutils \
-		curl \
 		dnsutils \
 		gnupg \
-		graphviz \
 		inkscape \
 		iputils-ping \
 		net-tools \
-		pandoc \
-		procps \
 		tree \
 		ttf-bitstream-vera \
-		zsh \
-        	make latexmk fonts-freefont-otf texlive-latex-extra texlive-fonts-extra texlive-xetex latexmk \
 	&& rm -rf /var/lib/apt/lists/*
 
-## ZSH
-ADD zsh/initzsh.sh /tmp/initzsh.sh
-ADD zsh/p10k.zsh $HOME/.p10k.zsh 
-
 RUN --mount=type=cache,target=/var/cache/buildkit/pip \
 	echo -e "\e[93m**** Install Java Kernel for Jupyter ****\e[38;5;241m" && \
         curl -sL https://github.com/SpencerPark/IJava/releases/download/v1.3.0/ijava-1.3.0.zip -o /tmp/ijava-kernel.zip && \
@@ -39,24 +26,6 @@ RUN --mount=type=cache,target=/var/cache/buildkit/pip \
         python3 install.py --sys-prefix && \
 	# jupyter kernelspec install --user java/ && \
         cd && rm -rf /tmp/ijava-kernel /tmp/ijava-kernel.zip && \
-    echo -e "\e[93m**** Install ZSH Kernel for Jupyter ****\e[38;5;241m" && \
-        python3 -m pip install zsh_jupyter_kernel && \
-        python3 -m zsh_jupyter_kernel.install --sys-prefix && \
-    echo -e "\e[93m**** Update Jupyter config ****\e[38;5;241m" && \
-	mkdir -p $HOME/jupyter_data && \
-	jupyter lab --generate-config && \
-	sed -i -e '/c.ServerApp.disable_check_xsrf =/ s/= .*/= True/' \
-	    -e 's/# \(c.ServerApp.disable_check_xsrf\)/\1/' \
-	    -e '/c.ServerApp.data_dir =/ s/= .*/= "\/home\/jovyan\/jupyter_data"/' \
-	    -e "/c.ServerApp.terminado_settings =/ s/= .*/= { 'shell_command': ['\/bin\/zsh'] }/" \
-	    -e 's/# \(c.ServerApp.terminado_settings\)/\1/' \
-	$HOME/.jupyter/jupyter_lab_config.py && \ 
-    echo -e "\e[93m**** Configure a nice zsh environment ****\e[38;5;241m" && \
- 	git clone --recursive https://github.com/sorin-ionescu/prezto.git "$HOME/.zprezto" && \
-	zsh -c /tmp/initzsh.sh && \
-	sed -i -e "s/zstyle ':prezto:module:prompt' theme 'sorin'/zstyle ':prezto:module:prompt' theme 'powerlevel10k'/" $HOME/.zpreztorc && \
-	echo "[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh" >> $HOME/.zshrc && \
-	echo "PATH=/opt/bin:$PATH" >> $HOME/.zshrc && \
     fix-permissions $CONDA_DIR && \
     fix-permissions /home/$NB_USER
 
@@ -106,9 +75,9 @@ RUN echo '#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!' >> $HOME/.
 
 SHELL ["/bin/zsh","-l","-c"]
 
-# Install PlantUML
-RUN curl -L https://repo1.maven.org/maven2/net/sourceforge/plantuml/plantuml/${PLANTUML_VERSION}/plantuml-${PLANTUML_VERSION}.jar -o /usr/local/bin/plantuml.jar && \
-    echo "$PLANTUML_SHA1 */usr/local/bin/plantuml.jar" | sha1sum -c - 
+RUN echo -e "\e[93m**** Install lombok and java dependencies ***\e[38;5;241m" && \
+        mkdir -p "${HOME}/lib/" && \
+        curl -sL https://projectlombok.org/downloads/lombok.jar -o "${HOME}/lib/lombok.jar"
 
 COPY dependencies/* "$HOME/lib/"
 
diff --git a/kernel.json b/kernel.json
index c58e17bcf4d8701dc8281be148672b35d74d9cec..1aaf9c08a2ab92c9844e74e7896f39695ac7f4ca 100644
--- a/kernel.json
+++ b/kernel.json
@@ -1,6 +1,6 @@
 {
     "argv": [
-	    	"java",
+	  "java",
 		"-ea",
 		"-jar",
 		"/opt/conda/share/jupyter/kernels/java/ijava-1.3.0.jar",