diff --git a/.gitignore b/.gitignore
index ca642a3d8effbfb4206e360d8a673ae94f360056..fb33413d8e9c49907525751db221e78a3076e731 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
 .env
 homedir
+.*.sw?
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index 32446b9ca58834a5ee1b55c2f64233b7ec618064..0000000000000000000000000000000000000000
--- a/Dockerfile
+++ /dev/null
@@ -1,26 +0,0 @@
-FROM kasmweb/core-ubuntu-noble:1.16.0 as kasmvnc-base
-
-ARG SPYDER
-ARG ANACONDA
-
-USER root
-
-RUN apt-get update
-RUN mkdir /install
-
-WORKDIR /install
-# === Install Spyder === #
-
-RUN if [ "$SPYDER" = true ] ; then apt-get install -y python3-spyder; fi
-
-# === Install anaconda === #
-RUN if [ "$ANACONDA" = true ] ; then \
-    wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh; \
-    bash Anaconda3-2024.02-1-Linux-x86_64.sh -b; \
-    chmod u+x /home/kasm-user/anaconda3/etc/profile.d/conda.sh; \
-    echo "source ~/anaconda3/etc/profile.d/conda.sh" >> /home/kasm-default-profile/.bashrc; \
-    echo "conda activate" >> /home/kasm-default-profile/.bashrc; \
-    fi
-
-WORKDIR /home/kasm-user
-USER 1000
diff --git a/docker-compose.yml b/docker-compose.yml
index 5377c43cdab29dd51e431f448123d2572f5e6254..2dba154047bb65fed2ab4d1d0f342d79b0f4761f 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,7 +1,7 @@
 services:
   kasm:
     build:
-      context: ./
+      context: ./docker/
       target: kasmvnc-base
       args:
         - SPYDER=${SPYDER}
@@ -9,10 +9,14 @@ services:
     image: "kasmvnc-ubuntu-noble:spyder-${SPYDER}_anaconda-${ANACONDA}"
     container_name: KasmVNC-ubuntu
     volumes:
-      - ./homedir:/home/kasm_user:rw
+      - homedir:/home/:rw
+      - etc_shadow:/opt/shadow
     environment:
       - VNC_PW=${PASS}
+      - SPYDER=${SPYDER}
+      - ANACONDA=${ANACONDA}
 
 
 volumes:
   homedir:
+  etc_shadow:
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..a6cc1bece834eb46b98df4cd2f255374d8261da1
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,57 @@
+FROM kasmweb/core-ubuntu-noble:1.16.0 as kasmvnc-base
+USER root
+
+ENV HOME /home/kasm-default-profile
+ENV STARTUPDIR /dockerstartup
+ENV INST_SCRIPTS $STARTUPDIR/install
+WORKDIR $HOME
+
+######### Customize Container Here ###########
+
+ARG SPYDER
+ARG ANACONDA
+ARG ANACONDA_VERS=Anaconda3-2024.02-1
+
+
+RUN apt-get update && \
+    apt-get purge -y language-pack-* && \
+    apt-get -y dist-upgrade && \
+    apt-get install -y \
+                    firefox \
+                    gnome-system-tools \
+                    inotify-tools \
+                    language-pack-fr \
+                    language-pack-fr-base \
+                    language-pack-en  \
+                    language-pack-en-base && \
+    locale-gen --purge fr_FR.UTF-8 en_US.UTF-8
+RUN mkdir /install
+
+WORKDIR /install
+# === Install Spyder === #
+
+RUN if [ "$SPYDER" = true ] ; then apt-get install -y python3-spyder; fi
+
+# === Install anaconda === #
+RUN if [ "$ANACONDA" = true ] ; then \
+    wget https://repo.anaconda.com/archive/${ANACONDA_VERS}-Linux-x86_64.sh; \
+    bash ${ANACONDA_VERS}-Linux-x86_64.sh -b; \
+    chmod u+x $HOME/anaconda3/etc/profile.d/conda.sh; \
+    echo "source ~/anaconda3/etc/profile.d/conda.sh" >> /home/kasm-default-profile/.bashrc; \
+    echo "conda activate" >> /home/kasm-default-profile/.bashrc; \
+    fi
+
+RUN rm -rf $HOME/.cache
+
+COPY custom_startup.sh $STARTUPDIR/custom_startup.sh
+COPY shadow_monitor.sh /
+
+######### End Customizations ###########
+
+RUN chown 1000:0 $HOME
+
+ENV HOME /home/kasm-user
+WORKDIR $HOME
+RUN mkdir -p $HOME && chown -R 1000:0 $HOME
+
+USER 1000
diff --git a/docker/custom_startup.sh b/docker/custom_startup.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d4b11c816c449d0431ee57eca31bcf1758cde415
--- /dev/null
+++ b/docker/custom_startup.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+VNC_USER=kasm-user
+
+sed -i -e "s@kasm-default-profile@$VNC_USER@g" ~/anaconda3/etc/profile.d/conda.sh
+
+# Add changepassword icon
+mkdir -p /home/$VNC_USER/Desktop
+cat <<EOF > /home/$VNC_USER/Desktop/users.desktop
+[Desktop Entry]
+Type=Link
+Name=Change password
+Icon=config-users
+URL=/usr/share/applications/users.desktop
+terminal=true
+EOF
+
+if [ $ANACONDA == 'true' ]; then
+cat <<eof > /home/$VNC_USER/Desktop/anaconda.desktop
+[Desktop Entry]
+Type=Application
+Name=Anaconda
+Terminal=true
+Icon=/home/$VNC_USER/anaconda3/lib/python3.8/site-packages/anaconda_navigator/static/images/anaconda.png
+Exec=/home/$VNC_USER/anaconda3/bin/anaconda-navigator
+eof
+fi
+
+if [ $SPYDER == 'true' ]; then
+cat <<eof > /home/$VNC_USER/Desktop/spyder.desktop
+[Desktop Entry]
+Type=Application
+Name=Spyder
+Terminal=true
+Icon=/home/$VNC_USER/anaconda3/share/icons/spyder.png
+Exec=$(which spyder)
+eof
+fi
+
+if [ -f "/opt/shadow/shadow" ]
+then
+    echo "Copying shadow file"
+    cp /opt/shadow/shadow /etc/shadow
+    sync
+fi
+
+/shadow_monitor.sh
diff --git a/docker/shadow_monitor.sh b/docker/shadow_monitor.sh
new file mode 100755
index 0000000000000000000000000000000000000000..4f3c25233bd677a301a87694ca239d21541e5674
--- /dev/null
+++ b/docker/shadow_monitor.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+sleep 10
+
+while true; do
+    modif=$(inotifywait --event move /etc)
+    echo "Modif : '$modif'"
+    if [ ! -z "$(echo $modif | grep 'MOVED_FROM nshadow')" ]; then
+        echo "Shadow file has changed"
+        sync
+        cp /etc/shadow /opt/shadow/shadow
+    fi
+done
+