diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -47,3 +47,13 @@
     # If you need other processes, adds a /etc/service/<service name>/run file
 
 That's it.
+
+## How to upgrade this image?
+
+As noted in https://devcentral.nasqueron.org/T787 we need to sync files and novolume/files.
+
+For that, you can use our helper Makefile:
+```
+cd novolume
+make update
+```
diff --git a/novolume/Dockerfile b/novolume/Dockerfile
--- a/novolume/Dockerfile
+++ b/novolume/Dockerfile
@@ -83,7 +83,7 @@
 	chmod 700 /home/app && \
 	chmod 711 /var/wwwroot/default
 
-COPY ../files /
+COPY files /
 
 #
 # Docker properties
diff --git a/novolume/Makefile b/novolume/Makefile
new file mode 100644
--- /dev/null
+++ b/novolume/Makefile
@@ -0,0 +1,9 @@
+all: files
+
+files:
+	cp -Rp ../files .
+
+clean:
+	rm -rf files
+
+update: clean files
diff --git a/novolume/files/etc/nginx/nginx.conf b/novolume/files/etc/nginx/nginx.conf
new file mode 100644
--- /dev/null
+++ b/novolume/files/etc/nginx/nginx.conf
@@ -0,0 +1,43 @@
+# Webserver runs as www-data user
+# PHP code runs as app user
+# This allows to configure a read-only, can execute web directory.
+
+user www-data;
+worker_processes 4;
+pid /run/nginx.pid;
+daemon off;
+
+events {
+	worker_connections 768;
+}
+
+http {
+	sendfile on;
+	tcp_nopush on;
+	tcp_nodelay on;
+	keepalive_timeout 65;
+	types_hash_max_size 2048;
+
+	client_max_body_size 32M;
+
+	include /etc/nginx/mime.types;
+	default_type application/octet-stream;
+
+	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
+	ssl_prefer_server_ciphers on;
+
+	access_log /var/log/nginx/access.log;
+	error_log /var/log/nginx/error.log;
+
+	gzip on;
+	gzip_disable "msie6";
+	gzip_vary on;
+	gzip_proxied any;
+	gzip_comp_level 6;
+	gzip_buffers 16 8k;
+	gzip_http_version 1.1;
+	gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
+
+	include /etc/nginx/conf.d/*.conf;
+	include /etc/nginx/sites-enabled/*;
+}
diff --git a/novolume/files/etc/nginx/sites-available/default b/novolume/files/etc/nginx/sites-available/default
new file mode 100644
--- /dev/null
+++ b/novolume/files/etc/nginx/sites-available/default
@@ -0,0 +1,18 @@
+server {
+	listen 80 default_server;
+	listen [::]:80 default_server;
+	server_name _;
+
+	root /var/wwwroot/default;
+
+	index index.html index.php index.htm;
+
+	location / {
+		try_files $uri $uri/ =404;
+	}
+
+	location ~ \.php$ {
+		include snippets/fastcgi-php.conf;
+		fastcgi_pass 127.0.0.1:9000;
+	}
+}
diff --git a/novolume/files/etc/service/nginx/run b/novolume/files/etc/service/nginx/run
new file mode 100755
--- /dev/null
+++ b/novolume/files/etc/service/nginx/run
@@ -0,0 +1,4 @@
+#!/bin/bash
+exec 2>&1
+source /usr/local/etc/envvars
+exec /usr/sbin/nginx
diff --git a/novolume/files/etc/service/php-fpm/run b/novolume/files/etc/service/php-fpm/run
new file mode 100755
--- /dev/null
+++ b/novolume/files/etc/service/php-fpm/run
@@ -0,0 +1,5 @@
+#!/bin/bash
+exec 2>&1
+source /usr/local/etc/envvars
+php-fpm-env > /usr/local/etc/php-fpm-env.conf
+exec /usr/local/sbin/php-fpm --nodaemonize
diff --git a/novolume/files/usr/local/bin/docker-php-ext-configure b/novolume/files/usr/local/bin/docker-php-ext-configure
new file mode 100755
--- /dev/null
+++ b/novolume/files/usr/local/bin/docker-php-ext-configure
@@ -0,0 +1,19 @@
+#!/bin/bash
+set -e
+
+ext="$1"
+extDir="/usr/src/php/ext/$ext"
+if [ -z "$ext" -o ! -d "$extDir" ]; then
+	echo >&2 "usage: $0 ext-name [configure flags]"
+	echo >&2 "   ie: $0 gd --with-jpeg-dir=/usr/local/something"
+	echo >&2
+	echo >&2 'Possible values for ext-name:'
+	echo >&2 $(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | cut -d/ -f6 | sort)
+	exit 1
+fi
+shift
+
+set -x
+cd "$extDir"
+phpize
+./configure "$@"
diff --git a/novolume/files/usr/local/bin/docker-php-ext-install b/novolume/files/usr/local/bin/docker-php-ext-install
new file mode 100755
--- /dev/null
+++ b/novolume/files/usr/local/bin/docker-php-ext-install
@@ -0,0 +1,60 @@
+#!/bin/bash
+set -e
+
+cd /usr/src/php/ext
+
+usage() {
+	echo "usage: $0 ext-name [ext-name ...]"
+	echo "   ie: $0 gd mysqli"
+	echo "       $0 pdo pdo_mysql"
+	echo
+	echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
+	echo
+	echo 'Possible values for ext-name:'
+	echo $(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | cut -d/ -f6 | sort)
+}
+
+exts=()
+while [ $# -gt 0 ]; do
+	ext="$1"
+	shift
+	if [ -z "$ext" ]; then
+		continue
+	fi
+	if [ ! -d "$ext" ]; then
+		echo >&2 "error: $(pwd -P)/$ext does not exist"
+		echo >&2
+		usage >&2
+		exit 1
+	fi
+	exts+=( "$ext" )
+done
+
+if [ "${#exts[@]}" -eq 0 ]; then
+	usage >&2
+	exit 1
+fi
+
+for ext in "${exts[@]}"; do
+	(
+		cd "$ext"
+		[ -e Makefile ] || docker-php-ext-configure "$ext"
+		make
+		make install
+		ini="/usr/local/etc/php/conf.d/docker-php-ext-$ext.ini"
+		for module in modules/*.so; do
+			if [ -f "$module" ]; then
+				if grep -q zend_extension_entry "$module"; then
+					# https://wiki.php.net/internals/extensions#loading_zend_extensions
+					line="zend_extension=$(basename "$module")"
+				else
+					line="extension=$(basename "$module")"
+				fi
+				if ! grep -q "$line" "$ini"; then
+					echo "$line" >> "/usr/local/etc/php/conf.d/ext-$ext.ini"
+				fi
+			fi
+		done
+		make clean
+	)
+done
diff --git a/novolume/files/usr/local/etc/php-fpm.conf b/novolume/files/usr/local/etc/php-fpm.conf
new file mode 100644
--- /dev/null
+++ b/novolume/files/usr/local/etc/php-fpm.conf
@@ -0,0 +1,13 @@
+[app]
+listen = 127.0.0.1:9000
+user = app
+group = app
+pm = ondemand
+pm.max_children = 10
+pm.process_idle_timeout = 60
+pm.max_requests = 500
+
+php_admin_flag[cgi.fix_pathinfo] = off
+
+include=etc/php-fpm-env.conf
+
diff --git a/novolume/files/usr/local/etc/php/conf.d/apcu.ini b/novolume/files/usr/local/etc/php/conf.d/apcu.ini
new file mode 100644
--- /dev/null
+++ b/novolume/files/usr/local/etc/php/conf.d/apcu.ini
@@ -0,0 +1 @@
+extension=apcu.so
diff --git a/novolume/files/usr/local/etc/php/conf.d/date.ini b/novolume/files/usr/local/etc/php/conf.d/date.ini
new file mode 100644
--- /dev/null
+++ b/novolume/files/usr/local/etc/php/conf.d/date.ini
@@ -0,0 +1,4 @@
+[date]
+date.timezone = UTC
+date.default_latitude = 50.37
+date.default_longitude = 4.49
diff --git a/novolume/files/usr/local/etc/php/conf.d/opcache.ini b/novolume/files/usr/local/etc/php/conf.d/opcache.ini
new file mode 100644
--- /dev/null
+++ b/novolume/files/usr/local/etc/php/conf.d/opcache.ini
@@ -0,0 +1,3 @@
+zend_extension=opcache.so
+opcache.enable=On
+opcache.validate_timestamps=0
diff --git a/novolume/files/usr/local/lib/php-fpm-env/PhpFpmEnvironment.php b/novolume/files/usr/local/lib/php-fpm-env/PhpFpmEnvironment.php
new file mode 100755
--- /dev/null
+++ b/novolume/files/usr/local/lib/php-fpm-env/PhpFpmEnvironment.php
@@ -0,0 +1,103 @@
+#!/usr/bin/env php
+<?php
+
+/**
+ * Allows to get the content of a php-fpm environment configuration file
+ */
+class PhpFpmEnvironment {
+    /**
+     * The temporary directory, used in TMP, TEMP and TMPDIR environment variables
+     * @var string
+     */
+    const TMP = '/tmp';
+
+    /**
+     * The path where to find executables, where sbin should be excluded if you don't run PHP as root.
+     * @var string
+     */
+    const PATH = '/usr/local/bin:/usr/bin:/bin';
+
+    /**
+     * The environment variables to discard
+     * @var Array
+     */
+    const VARIABLES_TO_DISCARD = [
+        '_',           // The caller executable script, not pertinent
+        'HOME',        // Set correctly by php-fpm
+        'TERM',        // Not pertinent in server context
+        'MYSQL_ENV_MYSQL_ROOT_PASSWORD', // from --link …:mysql
+    ];
+
+    /**
+     * Gets an environment array from the current process environment,
+     * with PATH and temp variablesfiltered.
+     *
+     * @return Array
+     */
+    public static function getEnvironmentVariables () {
+        $variables = [];
+
+        foreach ($_ENV as $key => $value) {
+            if (!static::mustIgnoreVariable($key)) {
+	            $variables[$key] = $value;
+            }
+        }
+
+        static::addHardcodedEnvironmentVariables($variables);
+
+        return $variables;
+    }
+
+    /**
+     * Adds hardcoded and always wanted environment variables
+     * (path, temporary directory) to the specified array.
+     *
+     * @paran array $variables the array to add the variables to
+     */
+    public static function addHardcodedEnvironmentVariables (&$variables) {
+        static::addTempEnvironmentVariables ($variables);
+        static::addPathEnvironmentVariables ($variables);
+    }
+
+    /**
+     * Adds temporary directory environment variables to the specified array.
+     *
+     * @paran array $variables the array to add the variables to
+     */
+    public static function addTempEnvironmentVariables (&$variables) {
+        $variables['TMP'] = static::TMP;
+        $variables['TEMP'] = static::TMP;
+        $variables['TMPDIR'] = static::TMP;
+    }
+
+    /**
+     * Adds temporary directory environment variables to the specified array.
+     *
+     * @paran array $variables the array to add the variables to
+     */
+    public static function addPathEnvironmentVariables (&$variables) {
+        $variables['PATH'] = static::PATH;
+    }
+
+    /**
+     * Determines if the variable name must be ignored
+     *
+     * @return bool true if the variable must be ignored; otherwise, false.
+     */
+    public static function mustIgnoreVariable ($variableName) {
+        return in_array($variableName, static::VARIABLES_TO_DISCARD);
+    }
+
+    /**
+     * Prints the environment
+     */
+    public static function printConfig () {
+        $variables = static::getEnvironmentVariables();
+
+        foreach ($variables as $key => $value) {
+            echo 'env["', $key, '"] = "', $value, '"', PHP_EOL;
+        }
+    }
+}
+
+PhpFpmEnvironment::printConfig();
diff --git a/novolume/files/usr/local/sbin/php-fpm-env b/novolume/files/usr/local/sbin/php-fpm-env
new file mode 120000
--- /dev/null
+++ b/novolume/files/usr/local/sbin/php-fpm-env
@@ -0,0 +1 @@
+../lib/php-fpm-env/PhpFpmEnvironment.php
\ No newline at end of file
diff --git a/novolume/files/usr/local/sbin/runsvdir-init b/novolume/files/usr/local/sbin/runsvdir-init
new file mode 100755
--- /dev/null
+++ b/novolume/files/usr/local/sbin/runsvdir-init
@@ -0,0 +1,3 @@
+#!/bin/bash
+export > /usr/local/etc/envvars
+exec /usr/sbin/runsvdir-start