diff --git a/.env.sample b/.env.sample
index 451e8270bb3a275e1d179f7be5e455ea8378da21..7a4a3bdbfc4afaa0d132abc52dfbaa4ddcbbc1c3 100644
--- a/.env.sample
+++ b/.env.sample
@@ -1,3 +1,5 @@
+# TIMEOUT in minutes after which the service will automatically stop, 90 minutes if not set
+TIMEOUT=
 # Hosts to put down ex `dev.tetras-lab.io`,`reporting.tetras-lab.io`
 HOSTS=
 # Hosts to put down ex `127.0.0.1`,`109.190.86.26`
diff --git a/docker-compose.yml b/docker-compose.yml
index b2478d2fed9656d7ac0c5cb67b3f8c62eac27114..5491139f401a318b01c7bdaf06b88b0b355c12ae 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -2,7 +2,7 @@ version: '3'
 
 services:
   maintenance:
-    image: nginx
+    build: docker
     volumes:
       - "./www:/usr/share/nginx/html:ro"
       - "./nginx.conf:/etc/nginx/nginx.conf:ro"
@@ -16,6 +16,8 @@ services:
       - "traefik.http.routers.maintenance.entrypoints=web,websecure"
       - "traefik.http.routers.maintenance.middlewares=hardening@docker"
       - "traefik.http.routers.maintenance.priority=99999"
+    environment:
+      TIMEOUT:
 
 networks:
   traefik:
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..417ca0b2d8395bbb7b6ea6cb0eb7284fb830a1b2
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,5 @@
+FROM nginx:latest
+
+COPY entrypoint.sh /entrypoint.sh
+
+ENTRYPOINT '/entrypoint.sh'
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
new file mode 100755
index 0000000000000000000000000000000000000000..67a7d001004e1c4ae16fd3126c4c457b24d990c8
--- /dev/null
+++ b/docker/entrypoint.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+if [ -z "$TIMEOUT" ]; then
+    TIMEOUT=90
+fi
+
+/docker-entrypoint.sh $@ &
+while [[ $TIMEOUT -gt 0 ]]; do
+    echo "Maintenance system is up, timeout in $TIMEOUT minutes"
+    sleep 60
+    TIMEOUT=$(($TIMEOUT - 1))
+done
+exit