diff --git a/instance-scripts/cloud-init.yml b/instance-scripts/cloud-init.yml
index af2f28e7f90f579e6bea7f5ef9420c343eaa01ed..c255c0aef7aea33eaaed99827cfdb1cbaf620f5e 100644
--- a/instance-scripts/cloud-init.yml
+++ b/instance-scripts/cloud-init.yml
@@ -8,10 +8,11 @@ package_upgrade: true
 packages:
   - curl
   - git
+  - argon2
 
 runcmd:
 #
-# cloud-init execute cmd before HOME and USER are set.
+# Cloud-init execute cmd before HOME and USER are set.
 #
   - "export HOME=/root"
   - "export USER=root"
@@ -26,18 +27,20 @@ runcmd:
 #
 # Install Atrium
 #
-  - "curl https://forge.grandlyon.com/systemes-dinformation/alpha/projects/labo-rust/-/raw/develop/instance-scripts/config-files/atrium.yaml -o root/atrium.yaml"
   - "curl https://forge.grandlyon.com/systemes-dinformation/alpha/projects/labo-rust/-/raw/develop/instance-scripts/scripts/atrium.sh | bash"
 #
-# Install And Run Code Server
+# Install Code Server
 #
-  - "curl https://forge.grandlyon.com/systemes-dinformation/alpha/projects/labo-rust/-/raw/develop/instance-scripts/config-files/config.yaml -o root/config.yaml"
   - "curl https://forge.grandlyon.com/systemes-dinformation/alpha/projects/labo-rust/-/raw/develop/instance-scripts/scripts/code-server.sh | bash"
 #
-# Run Webtop Container
+# Install Webtop
 #
   - "curl https://forge.grandlyon.com/systemes-dinformation/alpha/projects/labo-rust/-/raw/develop/instance-scripts/scripts/webtop.sh | sh"
 #
+# Install ttyd
+#
+  - "curl https://forge.grandlyon.com/systemes-dinformation/alpha/projects/labo-rust/-/raw/develop/instance-scripts/scripts/ttyd.sh | bash"
+#
 # Install Repository
 #
   - "git clone https://github.com/NathanRodet/rust-axum-demo /root/rust-axum-demo"
\ No newline at end of file
diff --git a/instance-scripts/config-files/atrium.yaml b/instance-scripts/config-files/atrium.yaml
index 4aff5a306e5775df7ea1162aa0e30f10f2c78a5b..af50a7c7b6e2fcd6442f0ed44cb2beafa57d63e9 100644
--- a/instance-scripts/config-files/atrium.yaml
+++ b/instance-scripts/config-files/atrium.yaml
@@ -17,4 +17,19 @@ apps: # optional : applications served by atrium
     color: 4292030255
     is_proxy: true
     host: desktop-%atrium_count_index%
-    target: localhost:8081
\ No newline at end of file
+    target: localhost:8081
+  - id: 3
+    name: Terminal %atrium_count_index%
+    icon: terminal
+    color: 4292030255
+    is_proxy: true
+    host: terminal-%atrium_count_index%
+    target: localhost:8082
+    secured: true
+    login: admin
+    password: %user_password%
+users:
+  - login: admin
+    password: %user_password_hash%
+    roles:
+      - ADMINS
\ No newline at end of file
diff --git a/instance-scripts/config-files/ttyd.service b/instance-scripts/config-files/ttyd.service
new file mode 100644
index 0000000000000000000000000000000000000000..9779f7290778a9a423e61d60db815a64b45a50a5
--- /dev/null
+++ b/instance-scripts/config-files/ttyd.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=ttyd web server to allow remote access to terminal
+After=network.target
+
+[Service]
+ExecStart=/root/ttyd/ttyd.86_64 -p 8082 -i lo -c admin:%user_password% -T xterm bash
+
+[Install]
+WantedBy=multi-user.target
\ No newline at end of file
diff --git a/instance-scripts/scripts/atrium.sh b/instance-scripts/scripts/atrium.sh
index 53ccdcc08ef8697d4c94048d93ded5549fbd1638..d522bc87b6aeabced1a3f394cb800464179b7cc7 100644
--- a/instance-scripts/scripts/atrium.sh
+++ b/instance-scripts/scripts/atrium.sh
@@ -4,12 +4,17 @@
 # Install Atrium
 #
 
+export USER_PASSWORD_HASH=$(echo "$(scw-userdata user_password)" | argon2 "$(echo $RANDOM | md5sum | head -c 12)" -i -l 32 -e)
+
 mkdir -p /root/atrium/data && mkdir -p /root/atrium/letsencrypt_cache
-sed -i "s/%atrium_hostname%/$(scw-userdata atrium_hostname)/g" /root/atrium.yaml
-sed -i "s/%project_domain%/$(scw-userdata project_domain)/g" /root/atrium.yaml
-sed -i "s/%atrium_letsencrypt_email%/$(scw-userdata atrium_letsencrypt_email)/g" /root/atrium.yaml
-sed -i "s/%atrium_count_index%/$(scw-userdata atrium_count_index)/g" /root/atrium.yaml
-mv /root/atrium.yaml /root/atrium/atrium.yaml
+curl https://forge.grandlyon.com/systemes-dinformation/alpha/projects/labo-rust/-/raw/develop/instance-scripts/config-files/atrium.yaml -o root/atrium/atrium.yaml
+
+sed -i "s|%atrium_hostname%|$(scw-userdata atrium_hostname)|g" /root/atrium/atrium.yaml
+sed -i "s|%project_domain%|$(scw-userdata project_domain)|g" /root/atrium/atrium.yaml
+sed -i "s|%atrium_letsencrypt_email%|$(scw-userdata atrium_letsencrypt_email)|g" /root/atrium/atrium.yaml
+sed -i "s|%atrium_count_index%|$(scw-userdata atrium_count_index)|g" /root/atrium/atrium.yaml
+sed -i "s|%user_password_hash%|$USER_PASSWORD_HASH|g" /root/atrium/atrium.yaml
+sed -i "s|%user_password%|$(scw-userdata atrium_count_index)|g" /root/atrium/atrium.yaml
 chown -Rf 1000:1000 /root/atrium
 
 #
@@ -22,3 +27,9 @@ docker run -d --name atrium \
        -v /root/atrium/atrium.yaml:/app/atrium.yaml \
        -v /root/atrium/letsencrypt_cache:/app/letsencrypt_cache \
        -v /root/atrium/data:/app/data nicolaspernoud/atrium:latest
+
+#
+# Example : Generate user_password Argon2 encoded hash for Atrium
+#
+
+# echo $(scw-userdata user_password) | argon2 $(echo $RANDOM | md5sum | head -c 12) -i -l 32 -e
diff --git a/instance-scripts/scripts/code-server.sh b/instance-scripts/scripts/code-server.sh
index 7b0ee1caebdd53c9933134dda77fe530d9c033fc..8c267c08c2ed2453b7a21a102fe3eeb3c1deb2fd 100644
--- a/instance-scripts/scripts/code-server.sh
+++ b/instance-scripts/scripts/code-server.sh
@@ -5,8 +5,8 @@
 #
 
 mkdir -p  /root/.config/code-server/
-sed -i "s/%user_password%/$(scw-userdata user_password)/g" /root/config.yaml
-mv /root/config.yaml /root/.config/code-server/config.yaml
+curl https://forge.grandlyon.com/systemes-dinformation/alpha/projects/labo-rust/-/raw/develop/instance-scripts/config-files/config.yaml -o root/.config/code-server/config.yaml
+sed -i "s/%user_password%/$(scw-userdata user_password)/g" /root/.config/code-server/config.yaml
 curl -fsSL https://code-server.dev/install.sh | sh
 
 #
diff --git a/instance-scripts/scripts/ttyd.sh b/instance-scripts/scripts/ttyd.sh
new file mode 100644
index 0000000000000000000000000000000000000000..cbe16073bc7e42b17d2fdb5c835fde1780f2a6e7
--- /dev/null
+++ b/instance-scripts/scripts/ttyd.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+#
+# Run ttyd service
+#
+
+mkdir -p /root/ttyd
+curl https://github.com/tsl0922/ttyd/releases/download/1.7.2/ttyd.x86_64 -o root/ttyd/ttyd.x86_64
+chmod +x /root/ttyd/ttyd.x86_64
+curl https://forge.grandlyon.com/systemes-dinformation/alpha/projects/labo-rust/-/raw/develop/instance-scripts/config-files/ttyd.service -o etc/systemd/system/ttyd.service
+sed -i "s|%user_password%|$(scw-userdata atrium_count_index)|g" /etc/systemd/system/ttyd.service
+
+systemctl enable ttyd.service && systemctl start ttyd.service
\ No newline at end of file
diff --git a/instance-scripts/scripts/webtop.sh b/instance-scripts/scripts/webtop.sh
index af8685bcf208298a0d47ad26d520cb5cd0008b0c..badf7d00cceca116f8b34f77ac7b14b4ce381a78 100644
--- a/instance-scripts/scripts/webtop.sh
+++ b/instance-scripts/scripts/webtop.sh
@@ -3,6 +3,7 @@
 #
 # Run Webtop Container
 #
+
 docker run -d --name=webtop \
        --security-opt seccomp=unconfined \
        -e PUID=0 \