diff --git a/roles/shinyproxy/files/eci-users/proxer/application.in.yml b/roles/shinyproxy/files/eci-users/proxer/application.in.yml
index bff07ba5352aba641293b67b34da3b5a74d6dac2..9c5aa8a8b0a0e2e8751e37ed73aebf1394db0417 100644
--- a/roles/shinyproxy/files/eci-users/proxer/application.in.yml
+++ b/roles/shinyproxy/files/eci-users/proxer/application.in.yml
@@ -23,6 +23,9 @@ proxy:
     container-cpu-limit: 4
     display-name: Shinyscreen
     port: 7777
+    heartbeat-enabled: false
+    stop-on-logout: false
+    max-lifetime: 1440
     container-volumes: [ "/eci-users:/scratch" ]
     container-cmd: [ "R", "-e", "library(future);future::plan('multisession');usdir=Sys.getenv('SHINYPROXY_USERNAME');indir=file.path('/scratch',usdir);shinyscreen::serve(indir=indir,topuserdir='/scratch',user=usdir)"]
     access-groups: [overseers,eci]
diff --git a/roles/shinyproxy/files/eci-users/proxer/run_shinyproxy.sh b/roles/shinyproxy/files/eci-users/proxer/run_shinyproxy.sh
new file mode 100755
index 0000000000000000000000000000000000000000..61d730c66e8cb5c0cb04d3b3fb7c294b7ae21d68
--- /dev/null
+++ b/roles/shinyproxy/files/eci-users/proxer/run_shinyproxy.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+cd /eci-users/proxer
+exec java -jar shinyproxy.jar
diff --git a/roles/shinyproxy/files/etc/systemd/system/shinyproxy.service b/roles/shinyproxy/files/etc/systemd/system/shinyproxy.service
index feb0a3a0bf8ac598fd2563be4cb8a29cba2c7677..888c5e2422b3c65f0ab791c19c020d397d55aab4 100644
--- a/roles/shinyproxy/files/etc/systemd/system/shinyproxy.service
+++ b/roles/shinyproxy/files/etc/systemd/system/shinyproxy.service
@@ -6,10 +6,11 @@ ReloadPropagatedFrom=docker.service nginx.service
 
 [Service]
 Type=simple
-ExecStart=/usr/bin/java -jar shinyproxy.jar
+TimeoutStartSec=15s
+ExecStart=/eci-users/proxer/run_shinyproxy.sh
+RestartSec=5s
 Restart=on-failure
 User=proxer
-WorkingDirectory=/eci_users/proxer
 
 [Install]
 WantedBy=multi-user.target
diff --git a/roles/shinyproxy/handlers/main.yml b/roles/shinyproxy/handlers/main.yml
index d2a275cccca94d780cadeeca4446c94b0b64f6a5..0caa6c6cf5c3624f6c4559c9eb7484f2c94e776d 100644
--- a/roles/shinyproxy/handlers/main.yml
+++ b/roles/shinyproxy/handlers/main.yml
@@ -26,4 +26,5 @@
   ansible.builtin.service:
     name: shinyproxy
     state: restarted
+    daemon_reload: yes
     enabled: yes        
diff --git a/roles/shinyproxy/tasks/main.yml b/roles/shinyproxy/tasks/main.yml
index a6dde436b0524f854c53357215d21647432372d1..b45ed3011fab9d4cd4a64b09f46051361252aae7 100644
--- a/roles/shinyproxy/tasks/main.yml
+++ b/roles/shinyproxy/tasks/main.yml
@@ -115,6 +115,15 @@
     chdir: /eci-users/proxer
     executable: python3
 
+- name: Copy shinyproxy script.
+  tags: shinyproxy-conf
+  notify: shinyproxy-service
+  ansible.builtin.copy:
+    src: eci-users/proxer/run_shinyproxy.sh
+    dest: /eci-users/proxer/run_shinyproxy.sh
+    owner: proxer
+    mode: '0744'
+
 - name: Copy service file for shinyproxy.
   tags: shinyproxy-conf
   notify: shinyproxy-service