diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..2043eb98a979bb7a8d93ffa7f5adae6e1ef8b0cd
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+main.env
diff --git a/main.env.sample b/main.env.sample
index 184cb6adaec0d2ab9bdefee23d49c851f01f6d40..782770c02b6740e44b55ae95d06b15790028a6b8 100644
--- a/main.env.sample
+++ b/main.env.sample
@@ -5,3 +5,6 @@ export DOMAIN="dev.tetras-libre.fr"
 export SERVER_ADMIN="admin@dev.tetras-libre.fr"
 # can be set to nginx
 export WEB_SERVER=apache2
+# You can define here some services that are badly detected by checkrestart
+# but often need to be restarted after upgrade
+export EXTRAS_SERVICES_TO_RESTART="systemd-logind"
diff --git a/upgradeAll.sh b/upgradeAll.sh
index 2b07a9279f36aff293296dcf5c619e44e1177259..641ca0fcfd6ad3de3ab516c57d2a55fc258a0d5e 100644
--- a/upgradeAll.sh
+++ b/upgradeAll.sh
@@ -39,6 +39,7 @@ do
         . $script
     fi
 done
-systemctl restart systemd-logind
-systemctl restart `checkrestart | awk '/^service/{print $2} /^systemctl/{print $3}'`
+services="`checkrestart | awk '/^service/{print $2} /^systemctl/{print $3}'` \
+    $EXTRAS_SERVICES_TO_RESTART"
+[ ! -z "$services" ] && systemctl restart $services
 checkrestart
diff --git a/upgradeNextcloud.sh b/upgradeNextcloud.sh
index ba19d8cb39ef9835be886a8e6a742a9e65fcac34..e7caedc0b240904a9d54df16862691cb5588a5e8 100644
--- a/upgradeNextcloud.sh
+++ b/upgradeNextcloud.sh
@@ -22,11 +22,44 @@ htuser=${htuser:-'www-data'}
 ocupdater=${ocupdater:-"$NEXTCLOUD_INSTALL_DIR/updater/updater.phar"}
 occ=$NEXTCLOUD_INSTALL_DIR/occ
 APPS=`sudo -u $htuser php $occ app:list | awk 'BEGIN{ok=1} /^Disabled:/{ok=0} {if(ok==1){print $2}}' | sed 's/:$//'`
+
 if [ ! -d $NEXTCLOUD_INSTALL_DIR ]
 then
     echo "Nextcloud is not installed, aborting"
     exit 1
 fi
+
+if [ -z $MAINTENANCE_LEVEL ]
+then
+    echo "Maintenance level cannot be detected, please update your main.env"
+    exit 1
+fi
+
+current_vesion=`sudo -u www-data php /var/www/nextcloud/occ status \
+    | awk '/versionstring/{print $3}'`
+echo "Nextclous is installed, version $current_vesion"
+if [ $MAINTENANCE_LEVEL == "upgrade" ]
+then
+    echo "Checking version  from changelog page (upgrade)"
+    target_version=`curl -silent https://nextcloud.com/changelog/ \
+        | sed 's/>/>\n/g' | awk '/^<h3 id=/{print $2}' | head -n 1 \
+        | sed -e 's/id="\(.*\)">/\1/' -e 's/-/./g'`
+else
+    echo "Checking version  from install page (security)"
+    target_version=`curl -silent \
+        'https://nextcloud.com/install/#instructions-server' \
+        | sed 's/>/>\n/g'  | awk '/href=.*server\/release/{print $0}' \
+        | head -n 1 | sed 's/.*nextcloud-\(.*\).zip">/\1/'`
+fi
+
+echo "Upstream version is : $target_version"
+
+if [ "$current_vesion" == "$target_version" ]
+then
+    echo "Nextcloud is already up to date"
+    exit 0
+fi
+
 echo "Removing old backup"
 rm -rf $NEXTCLOUD_INSTALL_DIR.bak
 echo "backing up nextcloud"