diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 94aff53d0a78eceb3ce21e65c9c2d1021b18c4db..404be2451b7fffe99a0c2b4fe4229eb34b3d904e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -50,7 +50,6 @@ deploy:
             npx @dotenvx/dotenvx@0.45.0 decrypt
             mv .env.production ../../.env
             rm .env.keys
-            cp ../../.env ../.env
 
         # Deploy
         - cd ../../
diff --git a/API b/API
index 9839397a3be3239080d0fa59244e1cdbd692de08..64a454911069e285f830a57db85ca26165ab965f 160000
--- a/API
+++ b/API
@@ -1 +1 @@
-Subproject commit 9839397a3be3239080d0fa59244e1cdbd692de08
+Subproject commit 64a454911069e285f830a57db85ca26165ab965f
diff --git a/docker-compose.yml b/docker-compose.yml
index 8ad62004e9e4774c882b52a7d176c6006e05236f..e5a0ba2ab904c3a2b78228285bba052a2ca61bed 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,4 +1,3 @@
-version: '3.8'
 services:
     dojo-database:
         container_name: dojo-database
@@ -34,7 +33,7 @@ services:
         deploy:
             resources:
                 limits:
-                    cpus: '3.0'
+                    cpus: ${CPU_LIMIT}
         build:
             context: ./API/
             dockerfile: Dockerfile_ExpressAPI
diff --git a/env.example b/env.example
new file mode 100644
index 0000000000000000000000000000000000000000..614324d81f5f8388774eeb5c790f3efe569f6408
--- /dev/null
+++ b/env.example
@@ -0,0 +1,43 @@
+#################################################################################
+# This file have to be copied to .env and filled with the correct values
+#################################################################################
+
+
+########################### Database env vars
+DATABASE_ROOT_PASSWORD=xxxxxxxxxxxxxx
+
+
+########################### Session env vars
+JWT_SECRET_KEY=xxxxxxxxxxxxxx
+
+LOGIN_GITLAB_CLIENT_ID=xxxxxxxxxxxx
+LOGIN_GITLAB_CLIENT_SECRET=xxxxxxxxxxx
+
+
+########################### Checkers env vars
+DOCKERHUB_REPO_ASSIGNMENT_CHECKER=xxxxxxxxxxxxx # HEPIA example: dojohesso/dojo_assignment_checker
+DOCKERHUB_REPO_EXERCISE_CHECKER=xxxxxxxxxxxxx # HEPIA example: dojohesso/dojo_exercise_checker
+
+
+########################### Gitlab env vars
+GITLAB_DOMAIN=xxxxxxxxxxx # HEPIA example: gitedu.hesge.ch
+GITLAB_URL=https://${GITLAB_DOMAIN}/
+GITLAB_URLS='["${GITLAB_URL}"]' # All possible urls for the same gitlab instance (for example HEPIA have https://githepia.hesge.ch too so the value is : '["${GITLAB_URL}", "https://githepia.hesge.ch/"]').
+GITLAB_DOJO_ACCOUNT_ID=xxxx
+GITLAB_DOJO_ACCOUNT_USERNAME=xxxxxxx
+GITLAB_DOJO_ACCOUNT_TOKEN=xxxxxxxx
+GITLAB_GROUP_ROOT_ID=xxxx
+GITLAB_GROUP_TEMPLATES_ID=xxxxx
+GITLAB_GROUP_ASSIGNMENTS_ID=xxxxx
+GITLAB_GROUP_EXERCISES_ID=xxxxx
+GITLAB_GROUP_DELETED_ASSIGNMENTS_ID=xxxxx
+GITLAB_GROUP_DELETED_EXERCISES_ID=xxxxx
+
+
+
+
+
+
+# WARNING: DO NOT MODIFY THE NEXT TWO LINES
+DATABASE_CONNEXION_LIMIT_PER_PROCESS=2
+DATABASE_URL=mysql://root:${DATABASE_ROOT_PASSWORD}@dojo-database:3306/dojo?connection_limit=${DATABASE_CONNEXION_LIMIT_PER_PROCESS}
\ No newline at end of file
diff --git a/env.exemple b/env.exemple
deleted file mode 100644
index 23dbce0c49fabf67dd9ac7b1670356f245049012..0000000000000000000000000000000000000000
--- a/env.exemple
+++ /dev/null
@@ -1,42 +0,0 @@
-########################### Server env vars
-API_PORT=30992
-LOGS_FOLDER=logs
-
-########################### Database env vars
-DATABASE_ROOT_PASSWORD=password
-DATABASE_URL="mysql://root:password@dojo-database:port/database"
-
-
-########################### Session env vars
-JWT_SECRET_KEY=secret
-SESSION_TIMEOUT=0
-
-ROLES_WITH_TEACHING_STAFF_PERMISSIONS='["teacher", "adjsci", "colsci", "assi"]'
-
-########################### Gitlab env vars
-GITLAB_API_URL=url
-GITLAB_URLS='["url"]'
-GITLAB_DOJO_ACCOUNT_ID=0
-GITLAB_DOJO_ACCOUNT_USERNAME=username
-GITLAB_DOJO_ACCOUNT_TOKEN=token
-GITLAB_GROUP_ROOT_ID=0
-GITLAB_GROUP_TEMPLATES_ID=0
-GITLAB_GROUP_ENONCES_ID=0
-GITLAB_GROUP_EXERCICES_ID=0
-
-########################### Enonce env vars
-ENONCE_DEFAULT_DESCRIPTION="description"
-ENONCE_DEFAULT_INIT_README=false
-ENONCE_DEFAULT_SHARED_RUNNERS_ENABLED=true
-ENONCE_DEFAULT_VISIBILITY=internal
-ENONCE_DEFAULT_WIKI_ENABLED=false
-ENONCE_DEFAULT_TEMPLATE=https://{{USERNAME}}:{{TOKEN}}@url.git
-
-########################### Exercice env vars
-EXERCICE_DEFAULT_DESCRIPTION="description"
-EXERCICE_DEFAULT_VISIBILITY=private
-EXERCICE_MAX_SAME_NAME=10
-
-########################### App env vars
-USER_PASSWORD_LENGTH=6
-USER_PASSWORD_SALT_ROUNDS=13
\ No newline at end of file
diff --git a/infra b/infra
index 55af933fb2169b8a560e6c5afca826d301e440e7..56ae464665e191864ba833c99502639e1488035b 100755
--- a/infra
+++ b/infra
@@ -23,13 +23,17 @@ if [ $? -ne 0 ]; then
     DOCKER_COMPOSE_COMMAND="docker-compose"
 fi
 
-${DOCKER_COMPOSE_COMMAND} kill
+CPU_LIMIT=$(($(nproc)-1))
+CPU_LIMIT=$(($CPU_LIMIT <= 0 ? 1 : $CPU_LIMIT))
+
+CPU_LIMIT=${CPU_LIMIT} ${DOCKER_COMPOSE_COMMAND} kill
 
 # If argument is --run, run the docker compose file
 if [ "$1" = "--run" ]; then
     # Check if .env file exists
     if [ -f $ENV_FILE ]; then
-        ${DOCKER_COMPOSE_COMMAND} --env-file ${ENV_FILE} up --build -d
+        cp -f $ENV_FILE API/$ENV_FILE
+        CPU_LIMIT=${CPU_LIMIT} ${DOCKER_COMPOSE_COMMAND} --env-file ${ENV_FILE} up --build -d
     else
         echo "Need a file named ${ENV_FILE} providing environment variables."
         exit 2