diff --git a/Dockerfile b/Dockerfile
index f95e060fda307576a58e843aff7cb0729a8d8114..c1ac1e25e740a628aa8d860e4c07258800d0b279 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,15 +1,16 @@
-FROM     ubuntu:16.04
+FROM     ubuntu:18.04
 LABEL maintainer="benoit [dot] lavenier [at] e-is [dot] pro"
 
 ENV DEBIAN_FRONTEND=noninteractive \
     ANDROID_HOME=/opt/android-sdk-linux \
     NODE_VERSION=6.17.1 \
-    NPM_VERSION=6.10.3 \
+    NPM_VERSION=6.13.4 \
     IONIC_VERSION=1.7.16 \
-    BOWER_VERSION=1.8.0 \
+    BOWER_VERSION=1.8.8 \
     CORDOVA_VERSION=9.0.0 \
     GRADLE_VERSION=4.1 \
-    NDK_VERSION=r10e
+    ANDROID_NDK_VERSION=r19c \
+    ANDROID_SDK_VERSION=r29.0.0
 
 # Install basics
 RUN apt-get update &&  \
@@ -38,26 +39,26 @@ RUN echo ANDROID_HOME="${ANDROID_HOME}" >> /etc/environment && \
 
 # Install Android SDK
 RUN cd /opt && \
-    wget --output-document=android-sdk.tgz --quiet http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz && \
+    wget --output-document=android-sdk.tgz --quiet http://dl.google.com/android/android-sdk_${ANDROID_SDK_VERSION}-linux.tgz && \
     tar xzf android-sdk.tgz && \
     rm -f android-sdk.tgz && \
     chown -R root. /opt
 
 RUN cd /opt/ && \
-  wget --output-document=android-ndk.zip --quiet  https://dl.google.com/android/repository/android-ndk-$NDK_VERSION-linux-x86_64.zip && \
+  wget --output-document=android-ndk.zip --quiet  https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux-x86_64.zip && \
   unzip android-ndk.zip && \
   rm android-ndk.zip && \
   chown -R root. /opt
 
 # Install Gradle
-RUN wget https://services.gradle.org/distributions/gradle-"$GRADLE_VERSION"-bin.zip && \
+RUN wget https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip && \
     mkdir /opt/gradle && \
-    unzip -d /opt/gradle gradle-"$GRADLE_VERSION"-bin.zip && \
-    rm -rf gradle-"$GRADLE_VERSION"-bin.zip
+    unzip -d /opt/gradle gradle-${GRADLE_VERSION}-bin.zip && \
+    rm -rf gradle-${GRADLE_VERSION}-bin.zip
 
 # Setup environment
 
-ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:/opt/tools:/opt/gradle/gradle-"$GRADLE_VERSION"/bin
+ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:/opt/tools:/opt/gradle/gradle-${GRADLE_VERSION}/bin
 
 # Install sdk elements
 COPY resources/android/build/tools /opt/tools
@@ -82,4 +83,4 @@ RUN cd cesium && \
 
 WORKDIR cesium
 EXPOSE 8100 35729
-CMD ["ionic", "serve"]
+CMD ["npm", "start"]
diff --git a/bower.json b/bower.json
index 84eaeeb415ba2682b3930ccea456d9a7e2c8cecc..8065f6bb5d1afdf02dfe6735035a49fff786a6f6 100644
--- a/bower.json
+++ b/bower.json
@@ -6,7 +6,7 @@
     "ionic-material": "0.4.2"
   },
   "dependencies": {
-    "angular-messages": "~1.3.13",
+    "angular-messages": "~1.5.11",
     "robotodraft": "1.1.0",
     "angular": "^1.5.11",
     "angular-moment": "^0.10.3",
@@ -17,9 +17,9 @@
     "angular-image-crop": "^2.0.0",
     "angular-ui-router": "^0.2.18",
     "angular-cache": "^4.6.0",
-    "ng-idle": "angular-idle#^1.3.2",
+    "angular-idle": "^1.3.2",
     "chart.js": "2.9.3",
-    "Leaflet.awesome-markers": "leaflet.awesome-markers#2.0.2",
+    "leaflet.awesome-markers": "2.0.2",
     "leaflet-search": "2.7.2",
     "angular-leaflet-directive": "angular-leaflet#^0.10.0",
     "Leaflet.EasyButton": "^2.4.0",
@@ -38,9 +38,8 @@
     "moment": "^2.24.0",
     "numeral": "1.5.6",
     "underscore": "1.8.3",
-    "qrcode.js": "davidshimjs/qrcodejs",
     "aes-js": "ricmoo/aes-js#3.1.2",
-    "ngCordova": "0.1.26-alpha",
+    "ngCordova": "0.1.27-alpha",
     "js-scrypt": "1.2.0",
     "js-nacl": "1.3.2",
     "angular-translate": "^2.18.1"
diff --git a/release.sh b/release.sh
index 6d243caa2508dc88f4990366544055111d5ba495..6a77ccc494e0a83ac1d007f7407637b894f5af5e 100755
--- a/release.sh
+++ b/release.sh
@@ -1,5 +1,8 @@
 #!/bin/bash
 
+DIRNAME=$(dirname "$0")
+cd $DIRNAME
+
 ### Control that the script is run on `dev` branch
 branch=`git rev-parse --abbrev-ref HEAD`
 if [[ ! "$branch" = "master" ]];
@@ -8,8 +11,6 @@ then
   exit 1
 fi
 
-DIRNAME=`pwd`
-
 ### Get current version (package.json)
 current=`grep -oP "version\": \"\d+.\d+.\d+((a|b)[0-9]+)?" package.json | grep -m 1 -oP "\d+.\d+.\d+((a|b)[0-9]+)?"`
 if [[ "_$current" == "_" ]]; then
diff --git a/www/index.html b/www/index.html
index 67aa45854cafb99748c1020779d0c8d25649414c..7d3d5f27bfbe5f190286b49d954216967aaba647 100644
--- a/www/index.html
+++ b/www/index.html
@@ -97,7 +97,7 @@
     <script src="lib/angular-bind-notifier/dist/angular-bind-notifier.min.js"></script>
     <script src="lib/angular-image-crop/image-crop.js"></script>
     <script src="lib/angular-file-saver/dist/angular-file-saver.bundle.js"></script>
-    <script src="lib/ng-idle/angular-idle.js"></script>
+    <script src="lib/angular-idle/angular-idle.js"></script>
     <script src="lib/angular-simple-logger/dist/angular-simple-logger.light.js"></script>
     <script src="lib/ui-leaflet/dist/ui-leaflet.js"></script>
     <script src="lib/ion-digit-keyboard/dist/ion-digit-keyboard.min.js"></script>
@@ -119,7 +119,7 @@
 
     <!--removeIf(no-plugin)-->
     <script src="lib/leaflet/dist/leaflet.js"></script>
-    <script src="lib/Leaflet.awesome-markers/dist/leaflet.awesome-markers.min.js"></script>
+    <script src="lib/leaflet.awesome-markers/dist/leaflet.awesome-markers.min.js"></script>
     <script src="lib/leaflet-search/dist/leaflet-search.src.js"></script>
     <script src="lib/Leaflet.EasyButton/src/easy-button.js"></script>
     <script src="lib/leaflet.loading/src/Control.Loading.js"></script>