diff --git a/software/hexaglobe-watermarking/common.cfg b/software/hexaglobe-watermarking/common.cfg
index 86c2054047a5a1b9a050a8be7201d6710414c8c0..25a582176a4b899cf4f0e4df1a86d4015d07df4c 100644
--- a/software/hexaglobe-watermarking/common.cfg
+++ b/software/hexaglobe-watermarking/common.cfg
@@ -2,6 +2,7 @@
 extends =
   ../../component/dash/buildout.cfg
   ../../component/dcron/buildout.cfg
+  ../../component/curl/buildout.cfg
   ../../component/gzip/buildout.cfg
   ../../component/logrotate/buildout.cfg
   ../../component/nginx/buildout.cfg
@@ -10,59 +11,78 @@ extends =
 
 parts =
   slapos-cookbook
-  watermarkingadmin
   eggs
   instance-profile
 
-develop =
-  ${buildout:directory}/parts/watermarkingadmin
-
-[watermarkingadmin]
+[nginx-rtmp-module]
 recipe = hexagonit.recipe.download
-url = http://easicloud-p.cdn.hexaglobe.net/api10.tar.gz
-#md5sum = 
+url = https://github.com/arut/nginx-rtmp-module/archive/748192877a98fea3088bcc6f9da5819de1b37663.zip
+strip-top-level-dir = true
+
+[nginx]
+recipe = hexagonit.recipe.cmmi
+url = http://nginx.org/download/nginx-1.4.3.tar.gz
+md5sum = 4740dad2f0ed7f5fa16e8caaa8a9438e
+configure-options=
+  --with-ipv6
+  --with-http_ssl_module
+  --with-ld-opt="-L ${zlib:location}/lib -L ${openssl:location}/lib -L ${pcre:location}/lib  -Wl,-rpath=${pcre:location}/lib -Wl,-rpath=${zlib:location}/lib -Wl,-rpath=${openssl:location}/lib"
+  --with-cc-opt="-I ${pcre:location}/include -I ${openssl:location}/include -I ${zlib:location}/include"
+  --add-module=${nginx-rtmp-module:location}
 
 [eggs]
 recipe = zc.recipe.egg
 eggs =
-  watermarkingadmin
   slapos.toolbox
+  collective.recipe.template
+
+
+
+[instance-profile]
+recipe = slapos.recipe.template
+url = ${:_profile_base_location_}/instance.cfg.in
+output = ${buildout:directory}/instance.cfg
+#md5sum = 650cd2527158734fd6ccd9ec374b5e69
+mode = 0644
+
+[instance-streaming-profile]
+recipe = hexagonit.recipe.download
+url = ${:_profile_base_location_}/instance-streaming.cfg.jinja2
+mode = 644
+#md5sum = e16c15f72fdeb92ce1854bc25daf5ad7
+download-only = true
+on-update = true
+
+[instance-streaming-frontend-profile]
+recipe = slapos.recipe.template:jinja2
+template = ${:_profile_base_location_}/instance-streaming-frontend.cfg.jinja2
+rendered = ${buildout:directory}/template-streaming-frontend.cfg
+extensions = jinja2.ext.do
+context =
+    key develop_eggs_directory buildout:develop-eggs-directory
+    key eggs_directory buildout:eggs-directory
+    raw nginx_conf_in ${nginx-frontend.conf.in:location}/nginx-frontend.conf.in
+    raw nginx_executable_location ${nginx:location}/sbin/nginx
+mode = 0644
 
-[watermarkadmin.ini.in]
+[nginx.conf.in]
 recipe = slapos.recipe.download
 url = ${:_profile_base_location_}/template/${:_buildout_section_name_}
-md5sum = 2edc2acd102a465a0f21d8cd982ba4bf
+#md5sum = 7e41dfcb633ce52be42457ffd5b123d8
 download-only = true
 #filename = template.in
 mode = 0644
 location = ${buildout:parts-directory}/${:_buildout_section_name_}
 
-[nginx.conf.in]
+[nginx-frontend.conf.in]
 recipe = slapos.recipe.download
 url = ${:_profile_base_location_}/template/${:_buildout_section_name_}
-md5sum = 7e41dfcb633ce52be42457ffd5b123d8
+#md5sum = 7e41dfcb633ce52be42457ffd5b123d8
 download-only = true
 #filename = template.in
 mode = 0644
 location = ${buildout:parts-directory}/${:_buildout_section_name_}
 
-[instance-profile]
-recipe = slapos.recipe.template
-url = ${:_profile_base_location_}/instance.cfg.in
-output = ${buildout:directory}/instance.cfg
-#md5sum = 650cd2527158734fd6ccd9ec374b5e69
-mode = 0644
-
-[watermarking-instance-profile]
-recipe = slapos.recipe.template
-url = ${:_profile_base_location_}/instance-watermarking.cfg.in
-output = ${buildout:directory}/instance-watermarking.cfg
-#md5sum = 76c88bfc59bc9c2d05fa13cc960349c7
-mode = 0644
+[versions]
+hexagonit.recipe.download = 1.7nxd002
 
-[edge-instance-profile]
-recipe = slapos.recipe.template
-url = ${:_profile_base_location_}/instance-edge.cfg.in
-output = ${buildout:directory}/instance-edge.cfg
-#md5sum = 650cd2527158734fd6ccd9ec374b5e69
-mode = 0644
diff --git a/software/hexaglobe-watermarking/instance-edge.cfg.in b/software/hexaglobe-watermarking/instance-edge.cfg.in
deleted file mode 100644
index ce7004bac9f6459ba499eb603fc04d92b021d756..0000000000000000000000000000000000000000
--- a/software/hexaglobe-watermarking/instance-edge.cfg.in
+++ /dev/null
@@ -1,26 +0,0 @@
-# This instance will request other instances of lamp-generic depending on a
-# list of countries.
-
-[buildout]
-
-parts =
-  request-edge
-  publish-connection-parameter
-
-eggs-directory = ${buildout:eggs-directory}
-develop-eggs-directory = ${buildout:develop-eggs-directory}
-offline = true
-
-[request-edge]
-<= slap-connection
-recipe = slapos.cookbook:request.edge
-# This magic parameter triggers several requests, one request per country.
-name = watermark
-country-list = $${slap-parameter:country-list}
-software-url = $${slap-connection:software-release-url}
-software-type = default
-return = url admin-url admin-url-ipv6
-
-[publish-connection-parameter]
-recipe = slapos.cookbook:publishsection
-section-list = request-edge
diff --git a/software/hexaglobe-watermarking/instance-streaming-frontend.cfg.jinja2 b/software/hexaglobe-watermarking/instance-streaming-frontend.cfg.jinja2
new file mode 100644
index 0000000000000000000000000000000000000000..9a2b3c379ebb2461d6d0ade4631267cf1bdc1192
--- /dev/null
+++ b/software/hexaglobe-watermarking/instance-streaming-frontend.cfg.jinja2
@@ -0,0 +1,67 @@
+[buildout]
+parts =
+  directory
+  nginx
+  nginx-promise
+  publish-connection-parameter
+
+# Define egg directories to be the one from Software Release
+# (/opt/slapgrid/...)
+eggs-directory = {{ eggs_directory }}
+develop-eggs-directory = {{ develop_eggs_directory }}
+offline = true
+
+# Create needed directories
+[directory]
+recipe = slapos.cookbook:mkdirectory
+home = ${buildout:directory}
+bin = ${:home}/bin
+etc = ${:home}/etc
+srv = ${:home}/srv
+service = ${:etc}/service
+promise = ${:etc}/promise
+var = ${:home}/var
+
+backup = ${:srv}/backup
+log = ${:var}/log
+run = ${:var}/run
+
+nginx-configuration = ${:etc}/nginx
+nginx-vhost-configuration = ${:nginx-configuration}/vhost
+nginx-log = ${:home}/logs
+nginx-cache = ${:var}/cache
+nginx-temp-path = ${:srv}/nginx-proxy
+
+
+# Deploy nginx
+[nginx-configuration]
+recipe = collective.recipe.template
+input = {{ nginx_conf_in }}
+output = ${directory:nginx-configuration}/nginx.conf
+frontend-port = 1935
+frontend-http-port = 8080
+frontend-ip = [${slap-network-information:global-ipv6}]
+backend-port = ${slap-parameter:backend-port}
+backend-host = ${slap-parameter:backend-host}
+home-directory = ${buildout:directory}
+mode = 700
+
+[nginx]
+recipe = slapos.cookbook:wrapper
+command-line = {{ nginx_executable_location }} -c ${nginx-configuration:output} -p ${directory:home}
+wrapper-path = ${directory:service}/nginx
+
+[nginx-promise]
+recipe = slapos.cookbook:check_port_listening
+path = ${directory:promise}/nginx-promise
+hostname = ${slap-network-information:global-ipv6}
+port = ${nginx-configuration:frontend-port}
+
+
+
+# Publish instance connection parameters
+[publish-connection-parameter]
+recipe = slapos.cookbook:publish
+url = rtmp://${nginx-configuration:frontend-ip}
+stat-url = http://${nginx-configuration:frontend-ip}:${nginx-configuration:frontend-http-port}/stat
+
diff --git a/software/hexaglobe-watermarking/instance-streaming.cfg.jinja2 b/software/hexaglobe-watermarking/instance-streaming.cfg.jinja2
new file mode 100644
index 0000000000000000000000000000000000000000..ef5e1a6eea77f7311effc3668eb270b563219e3d
--- /dev/null
+++ b/software/hexaglobe-watermarking/instance-streaming.cfg.jinja2
@@ -0,0 +1,107 @@
+{% set frontend_count = slapparameter_dict.get('frontend-count', 2)|int %}
+[buildout]
+parts =
+  directory
+  nginx
+  nginx-promise
+  publish-connection-parameter
+{% for i in range(frontend_count) %}
+  request-frontend-{{i}}
+{% endfor %}
+
+# Define egg directories to be the one from Software Release
+# (/opt/slapgrid/...)
+eggs-directory = {{ eggs_directory }}
+develop-eggs-directory = {{ develop_eggs_directory }}
+offline = true
+
+# XXX: shoudl disappear in favor of slapparameter given by jinja
+[slap-parameter]
+# Set default parameters
+backend-port = 1935
+frontend-port = 1935
+
+# Create needed directories
+[directory]
+recipe = slapos.cookbook:mkdirectory
+home = ${buildout:directory}
+bin = ${:home}/bin
+etc = ${:home}/etc
+srv = ${:home}/srv
+service = ${:etc}/service
+promise = ${:etc}/promise
+var = ${:home}/var
+
+backup = ${:srv}/backup
+log = ${:var}/log
+run = ${:var}/run
+
+nginx-configuration = ${:etc}/nginx
+nginx-vhost-configuration = ${:nginx-configuration}/vhost
+nginx-log = ${:home}/logs
+nginx-cache = ${:var}/cache
+nginx-temp-path = ${:srv}/nginx-proxy
+
+
+
+# Deploy nginx
+[nginx-configuration]
+recipe = collective.recipe.template
+input = {{ nginx_conf_in }}
+output = ${directory:nginx-configuration}/nginx.conf
+backend-port = ${slap-parameter:backend-port}
+backend-ip = [${slap-network-information:global-ipv6}]
+home-directory = ${buildout:directory}
+mode = 700
+
+[nginx]
+recipe = slapos.cookbook:wrapper
+command-line = {{ nginx_executable_location }} -c ${nginx-configuration:output} -p ${directory:home}
+wrapper-path = ${directory:service}/nginx
+
+[nginx-promise]
+recipe = slapos.cookbook:check_port_listening
+path = ${directory:promise}/nginx-promise
+hostname = ${slap-network-information:global-ipv6}
+port = ${nginx-configuration:backend-port}
+
+
+
+
+# Request frontends for streaming
+{% for i in range(frontend_count) %}
+[request-frontend-{{i}}]
+recipe = slapos.cookbook:request
+
+software-url = ${slap-parameter:frontend-software-url}
+server-url = ${slap-connection:server-url}
+key-file = ${slap-connection:key-file}
+cert-file = ${slap-connection:cert-file}
+computer-id = ${slap-connection:computer-id}
+partition-id = ${slap-connection:partition-id}
+
+name = frontend-{{i}}
+software-url = ${slap-connection:software-release-url}
+software-type = frontend
+config = backend-port backend-host
+config-backend-port = ${nginx-configuration:backend-port}
+config-backend-host = ${nginx-configuration:backend-ip}
+config-frontend-port = ${slap-parameter:frontend-port}
+return = url stat-url
+
+sla = mode
+sla-mode = unique_by_network
+
+[publish-connection-parameter]
+frontend-{{i}}-url = ${request-frontend-{{i}}:connection-url}
+frontend-{{i}}-stat-url = ${request-frontend-{{i}}:connection-stat-url}
+
+{% endfor %}
+
+
+
+# Publish instance connection parameters
+[publish-connection-parameter]
+recipe = slapos.cookbook:publish
+backend-url = rtmp://[${slap-network-information:global-ipv6}]:${nginx-configuration:backend-port}
+
diff --git a/software/hexaglobe-watermarking/instance-watermarking.cfg.in b/software/hexaglobe-watermarking/instance-watermarking.cfg.in
deleted file mode 100644
index f5e418bdb760a6bdd44db1dc1544e20295f98685..0000000000000000000000000000000000000000
--- a/software/hexaglobe-watermarking/instance-watermarking.cfg.in
+++ /dev/null
@@ -1,195 +0,0 @@
-[buildout]
-parts =
-  directory
-  nginx
-  watermarkadmin
-  logrotate
-  logrotate-entry-nginx
-  cron
-  cron-entry-logrotate
-  watermarkadmin-promise
-  publish-connection-parameter
-
-# Define egg directories to be the one from Software Release
-# (/opt/slapgrid/...)
-eggs-directory = ${buildout:eggs-directory}
-develop-eggs-directory = ${buildout:develop-eggs-directory}
-offline = true
-
-# Fetch parameters defined in SlapOS Master for this instance
-[instance-parameter]
-recipe = slapos.cookbook:slapconfiguration
-computer = $${slap-connection:computer-id}
-partition = $${slap-connection:partition-id}
-url = $${slap-connection:server-url}
-key = $${slap-connection:key-file}
-cert = $${slap-connection:cert-file}
-
-# Set default parameters
-http-port = 8080
-administration-port = 5000
-
-
-# Create needed directories
-[directory]
-recipe = slapos.cookbook:mkdirectory
-home = $${buildout:directory}
-bin = $${:home}/bin
-etc = $${:home}/etc
-srv = $${:home}/srv
-service = $${:etc}/service
-promise = $${:etc}/promise
-var = $${:home}/var
-
-backup = $${:srv}/backup
-log = $${:var}/log
-run = $${:var}/run
-
-nginx-configuration = $${:etc}/nginx
-nginx-vhost-configuration = $${:nginx-configuration}/vhost
-nginx-log = $${:home}/logs
-nginx-cache = $${:var}/cache
-nginx-temp-path = $${:srv}/nginx-proxy
-
-cron-entries = $${:etc}/cron.d
-crontabs = $${:etc}/crontabs
-cronstamps = $${:etc}/cronstamps
-
-logrotate-entries = $${:etc}/logrotate.d
-logrotate-backup = $${:backup}/logrotate
-
-
-# Deploy nginx
-[nginx-configuration]
-recipe = slapos.cookbook:configurationfile
-configuration-template-path = ${nginx.conf.in:location}/nginx.conf.in
-configuration-file-path = $${directory:nginx-configuration}/nginx.conf
-
-vhost-configuration-directory-location = $${directory:nginx-vhost-configuration}
-nginx-prefix = ${nginx-enable-sub:location}
-nginx-temp-path = $${directory:nginx-temp-path}
-pid-file = $${directory:run}/nginx.pid
-home-directory = $${directory:home}
-
-
-[nginx]
-recipe = slapos.cookbook:wrapper
-nginx-executable = $${:nginx-prefix}/sbin/nginx
-nginx-prefix = ${nginx-enable-sub:location}
-command-line = $${:nginx-executable} -c $${nginx-configuration:configuration-file-path} -p $${directory:home}
-wrapper-path = $${directory:service}/nginx
-
-
-# Deploy administration API server
-[watermarkadmin-configuration]
-recipe = slapos.cookbook:configurationfile
-configuration-template-path = ${watermarkadmin.ini.in:location}/watermarkadmin.ini.in
-configuration-file-path = $${directory:etc}/watermarkadmin.ini
-
-flask-database-location = $${directory:srv}/flask.db
-
-nginx-prefix = $${directory:home}
-nginx-port = $${instance-parameter:http-port}
-nginx-configuration-file-location = $${nginx-configuration:configuration-file-path}
-nginx-executable-location = $${nginx:nginx-executable}
-nginx-pidfile-location = $${nginx-configuration:pid-file}
-nginx-vhost-configuration-directory-location = $${directory:nginx-vhost-configuration}
-nginx-log-directory-location = $${directory:nginx-log}
-nginx-cache-directory-location = $${directory:nginx-cache}
-global-ip = $${instance-parameter:ipv6-random}
-
-[watermarkadmin]
-recipe = slapos.cookbook:wrapper
-command-line =
-  ${buildout:directory}/bin/api $${watermarkadmin-configuration:configuration-file-path}
-wrapper-path = $${directory:service}/watermarkingadmin
-
-
-# Deploy logrotate
-[logrotate]
-recipe = slapos.cookbook:logrotate
-# Binaries
-logrotate-binary = ${logrotate:location}/usr/sbin/logrotate
-gzip-binary = ${gzip:location}/bin/gzip
-gunzip-binary = ${gzip:location}/bin/gunzip
-# Directories
-wrapper = $${directory:bin}/logrotate
-conf = $${directory:etc}/logrotate.conf
-logrotate-entries = $${directory:logrotate-entries}
-backup = $${directory:logrotate-backup}
-state-file = $${directory:srv}/logrotate.status
-
-[logrotate-entry-nginx]
-<= logrotate
-recipe = slapos.cookbook:logrotate.d
-name = nginx
-log = $${watermarkadmin-configuration:nginx-log-directory-location}/*.log
-frequency = daily
-rotate-num = 30
-post = ${buildout:bin-directory}/killpidfromfile $${nginx-configuration:pid-file} SIGUSR1
-sharedscripts = true
-notifempty = true
-create = true
-
-
-# Deploy cron and configure it
-[cron-simplelogger]
-recipe = slapos.cookbook:simplelogger
-wrapper = $${directory:bin}/cron_simplelogger
-log = $${directory:log}/crond.log
-
-[cron]
-recipe = slapos.cookbook:cron
-dcrond-binary = ${dcron:location}/sbin/crond
-cron-entries = $${directory:cron-entries}
-crontabs = $${directory:crontabs}
-cronstamps = $${directory:cronstamps}
-catcher = $${cron-simplelogger:wrapper}
-binary = $${directory:service}/crond
-
-[cron-entry-logrotate]
-<= cron
-recipe = slapos.cookbook:cron.d
-name = logrotate
-frequency = 0 0 * * *
-command = $${logrotate:wrapper}
-
-
-
-
-# Request frontend
-[request-frontend]
-<= slap-connection
-recipe = slapos.cookbook:requestoptional
-name = Frontend for $${slap-connection:computer-id} $${slap-connection:partition-id}
-# XXX We have hardcoded SR URL here.
-software-url = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg
-slave = true
-config = url
-config-url = http://[$${instance-parameter:ipv6-random}]:5000
-return = site_url
-
-
-# Check promises
-[watermarkadmin-promise]
-recipe = slapos.cookbook:check_port_listening
-path = $${directory:promise}/watermarkadmin-promise
-hostname = $${instance-parameter:ipv6-random}
-port = $${instance-parameter:administration-port}
-
-[watermarkadmin-promise-frontend]
-recipe = slapos.cookbook:check_page_content
-path = $${directory:promises}/watermarkadmin-frontend-promise
-url = $${request-frontend:connection-site_url}
-dash_path = ${dash:location}/bin/dash
-curl_path = ${curl:location}/bin/curl
-match = If you entered the URL manually please check your spelling and try again.
-
-# Publish instance connection parameters
-[publish-connection-parameter]
-recipe = slapos.cookbook:publish
-url = http://[$${instance-parameter:ipv6-random}]:$${instance-parameter:http-port}
-# XXX-Cedric: hardcoded
-admin-url-ipv6 = http://[$${instance-parameter:ipv6-random}]:5000
-admin-url = $${request-frontend:connection-site_url}
-
diff --git a/software/hexaglobe-watermarking/instance.cfg.in b/software/hexaglobe-watermarking/instance.cfg.in
index 3f2c196140ceadb5f7f994a96868d3a14f510f85..6023a59f5ecefe4789df761767540c4bfed101d7 100644
--- a/software/hexaglobe-watermarking/instance.cfg.in
+++ b/software/hexaglobe-watermarking/instance.cfg.in
@@ -8,7 +8,29 @@ offline = true
 
 [switch-softwaretype]
 recipe = slapos.cookbook:softwaretype
-default = ${watermarking-instance-profile:output}
-watermarking = ${watermarking-instance-profile:output}
-edge = ${edge-instance-profile:output}
+default = $${:backend}
+backend = $${dynamic-template-streaming:rendered}
+frontend = ${instance-streaming-frontend-profile:rendered}
+
+
+[slap-configuration]
+recipe = slapos.cookbook:slapconfiguration.serialised
+computer = $${slap-connection:computer-id}
+partition = $${slap-connection:partition-id}
+url = $${slap-connection:server-url}
+key = $${slap-connection:key-file}
+cert = $${slap-connection:cert-file}
+
+[dynamic-template-streaming]
+recipe = slapos.recipe.template:jinja2
+template = ${instance-streaming-profile:location}/instance-streaming.cfg.jinja2
+rendered = $${buildout:directory}/template-streaming.cfg
+extensions = jinja2.ext.do
+context =
+    key develop_eggs_directory buildout:develop-eggs-directory
+    key eggs_directory buildout:eggs-directory
+    key slapparameter_dict slap-configuration:configuration
+    raw nginx_conf_in ${nginx.conf.in:location}/nginx.conf.in
+    raw nginx_executable_location ${nginx:location}/sbin/nginx
+mode = 0644
 
diff --git a/software/hexaglobe-watermarking/software.cfg b/software/hexaglobe-watermarking/software.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..af4c9312009ea333cf93d1946a66c153848e561f
--- /dev/null
+++ b/software/hexaglobe-watermarking/software.cfg
@@ -0,0 +1,120 @@
+[buildout]
+extends = common.cfg
+
+
+[networkcache]
+# signature certificates of the following uploaders.
+#   Romain Courteaud
+#   Sebastien Robin
+#   Kazuhiko Shiozaki
+#   Cedric de Saint Martin
+#   Yingjie Xu
+#   Gabriel Monnerat
+#   Test Agent (Automatic update from tests)
+#   Aurélien Calonne
+signature-certificate-list =
+  -----BEGIN CERTIFICATE-----
+  MIIB4DCCAUkCADANBgkqhkiG9w0BAQsFADA5MQswCQYDVQQGEwJGUjEZMBcGA1UE
+  CBMQRGVmYXVsdCBQcm92aW5jZTEPMA0GA1UEChMGTmV4ZWRpMB4XDTExMDkxNTA5
+  MDAwMloXDTEyMDkxNTA5MDAwMlowOTELMAkGA1UEBhMCRlIxGTAXBgNVBAgTEERl
+  ZmF1bHQgUHJvdmluY2UxDzANBgNVBAoTBk5leGVkaTCBnzANBgkqhkiG9w0BAQEF
+  AAOBjQAwgYkCgYEApYZv6OstoqNzxG1KI6iE5U4Ts2Xx9lgLeUGAMyfJLyMmRLhw
+  boKOyJ9Xke4dncoBAyNPokUR6iWOcnPHtMvNOsBFZ2f7VA28em3+E1JRYdeNUEtX
+  Z0s3HjcouaNAnPfjFTXHYj4um1wOw2cURSPuU5dpzKBbV+/QCb5DLheynisCAwEA
+  ATANBgkqhkiG9w0BAQsFAAOBgQBCZLbTVdrw3RZlVVMFezSHrhBYKAukTwZrNmJX
+  mHqi2tN8tNo6FX+wmxUUAf3e8R2Ymbdbn2bfbPpcKQ2fG7PuKGvhwMG3BlF9paEC
+  q7jdfWO18Zp/BG7tagz0jmmC4y/8akzHsVlruo2+2du2freE8dK746uoMlXlP93g
+  QUUGLQ==
+  -----END CERTIFICATE-----
+  -----BEGIN CERTIFICATE-----
+  MIIB8jCCAVugAwIBAgIJAPu2zchZ2BxoMA0GCSqGSIb3DQEBBQUAMBIxEDAOBgNV
+  BAMMB3RzeGRldjMwHhcNMTExMDE0MTIxNjIzWhcNMTIxMDEzMTIxNjIzWjASMRAw
+  DgYDVQQDDAd0c3hkZXYzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrPbh+
+  YGmo6mWmhVb1vTqX0BbeU0jCTB8TK3i6ep3tzSw2rkUGSx3niXn9LNTFNcIn3MZN
+  XHqbb4AS2Zxyk/2tr3939qqOrS4YRCtXBwTCuFY6r+a7pZsjiTNddPsEhuj4lEnR
+  L8Ax5mmzoi9nE+hiPSwqjRwWRU1+182rzXmN4QIDAQABo1AwTjAdBgNVHQ4EFgQU
+  /4XXREzqBbBNJvX5gU8tLWxZaeQwHwYDVR0jBBgwFoAU/4XXREzqBbBNJvX5gU8t
+  LWxZaeQwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQA07q/rKoE7fAda
+  FED57/SR00OvY9wLlFEF2QJ5OLu+O33YUXDDbGpfUSF9R8l0g9dix1JbWK9nQ6Yd
+  R/KCo6D0sw0ZgeQv1aUXbl/xJ9k4jlTxmWbPeiiPZEqU1W9wN5lkGuLxV4CEGTKU
+  hJA/yXa1wbwIPGvX3tVKdOEWPRXZLg==
+  -----END CERTIFICATE-----
+  -----BEGIN CERTIFICATE-----
+  MIIB7jCCAVegAwIBAgIJAJWA0jQ4o9DGMA0GCSqGSIb3DQEBBQUAMA8xDTALBgNV
+  BAMMBHg2MXMwIBcNMTExMTI0MTAyNDQzWhgPMjExMTEwMzExMDI0NDNaMA8xDTAL
+  BgNVBAMMBHg2MXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANdJNiFsRlkH
+  vq2kHP2zdxEyzPAWZH3CQ3Myb3F8hERXTIFSUqntPXDKXDb7Y/laqjMXdj+vptKk
+  3Q36J+8VnJbSwjGwmEG6tym9qMSGIPPNw1JXY1R29eF3o4aj21o7DHAkhuNc5Tso
+  67fUSKgvyVnyH4G6ShQUAtghPaAwS0KvAgMBAAGjUDBOMB0GA1UdDgQWBBSjxFUE
+  RfnTvABRLAa34Ytkhz5vPzAfBgNVHSMEGDAWgBSjxFUERfnTvABRLAa34Ytkhz5v
+  PzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAFLDS7zNhlrQYSQO5KIj
+  z2RJe3fj4rLPklo3TmP5KLvendG+LErE2cbKPqnhQ2oVoj6u9tWVwo/g03PMrrnL
+  KrDm39slYD/1KoE5kB4l/p6KVOdeJ4I6xcgu9rnkqqHzDwI4v7e8/D3WZbpiFUsY
+  vaZhjNYKWQf79l6zXfOvphzJ
+  -----END CERTIFICATE-----
+  -----BEGIN CERTIFICATE-----
+  MIIB9jCCAV+gAwIBAgIJAO4V/jiMoICoMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
+  BAMMCENPTVAtMjMyMCAXDTEyMDIxNjExMTAyM1oYDzIxMTIwMTIzMTExMDIzWjAT
+  MREwDwYDVQQDDAhDT01QLTIzMjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
+  wi/3Z8W9pUiegUXIk/AiFDQ0UJ4JFAwjqr+HSRUirlUsHHT+8DzH/hfcTDX1I5BB
+  D1ADk+ydXjMm3OZrQcXjn29OUfM5C+g+oqeMnYQImN0DDQIOcUyr7AJc4xhvuXQ1
+  P2pJ5NOd3tbd0kexETa1LVhR6EgBC25LyRBRae76qosCAwEAAaNQME4wHQYDVR0O
+  BBYEFMDmW9aFy1sKTfCpcRkYnP6zUd1cMB8GA1UdIwQYMBaAFMDmW9aFy1sKTfCp
+  cRkYnP6zUd1cMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAskbFizHr
+  b6d3iIyN+wffxz/V9epbKIZVEGJd/6LrTdLiUfJPec7FaxVCWNyKBlCpINBM7cEV
+  Gn9t8mdVQflNqOlAMkOlUv1ZugCt9rXYQOV7rrEYJBWirn43BOMn9Flp2nibblby
+  If1a2ZoqHRxoNo2yTmm7TSYRORWVS+vvfjY=
+  -----END CERTIFICATE-----
+  -----BEGIN CERTIFICATE-----
+  MIIB9jCCAV+gAwIBAgIJAIlBksrZVkK8MA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
+  BAMMCENPTVAtMzU3MCAXDTEyMDEyNjEwNTUyOFoYDzIxMTIwMTAyMTA1NTI4WjAT
+  MREwDwYDVQQDDAhDT01QLTM1NzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
+  ts+iGUwi44vtIfwXR8DCnLtHV4ydl0YTK2joJflj0/Ws7mz5BYkxIU4fea/6+VF3
+  i11nwBgYgxQyjNztgc9u9O71k1W5tU95yO7U7bFdYd5uxYA9/22fjObaTQoC4Nc9
+  mTu6r/VHyJ1yRsunBZXvnk/XaKp7gGE9vNEyJvPn2bkCAwEAAaNQME4wHQYDVR0O
+  BBYEFKuGIYu8+6aEkTVg62BRYaD11PILMB8GA1UdIwQYMBaAFKuGIYu8+6aEkTVg
+  62BRYaD11PILMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAMoTRpBxK
+  YLEZJbofF7gSrRIcrlUJYXfTfw1QUBOKkGFFDsiJpEg4y5pUk1s5Jq9K3SDzNq/W
+  it1oYjOhuGg3al8OOeKFrU6nvNTF1BAvJCl0tr3POai5yXyN5jlK/zPfypmQYxE+
+  TaqQSGBJPVXYt6lrq/PRD9ciZgKLOwEqK8w=
+  -----END CERTIFICATE-----
+  -----BEGIN CERTIFICATE-----
+  MIIB9jCCAV+gAwIBAgIJAPHoWu90gbsgMA0GCSqGSIb3DQEBBQUAMBQxEjAQBgNV
+  BAMMCXZpZmlibm9kZTAeFw0xMjAzMTkyMzIwNTVaFw0xMzAzMTkyMzIwNTVaMBQx
+  EjAQBgNVBAMMCXZpZmlibm9kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
+  ozBijpO8PS5RTeKTzA90vi9ezvv4vVjNaguqT4UwP9+O1+i6yq1Y2W5zZxw/Klbn
+  oudyNzie3/wqs9VfPmcyU9ajFzBv/Tobm3obmOqBN0GSYs5fyGw+O9G3//6ZEhf0
+  NinwdKmrRX+d0P5bHewadZWIvlmOupcnVJmkks852BECAwEAAaNQME4wHQYDVR0O
+  BBYEFF9EtgfZZs8L2ZxBJxSiY6eTsTEwMB8GA1UdIwQYMBaAFF9EtgfZZs8L2ZxB
+  JxSiY6eTsTEwMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAc43YTfc6
+  baSemaMAc/jz8LNLhRE5dLfLOcRSoHda8y0lOrfe4lHT6yP5l8uyWAzLW+g6s3DA
+  Yme/bhX0g51BmI6gjKJo5DoPtiXk/Y9lxwD3p7PWi+RhN+AZQ5rpo8UfwnnN059n
+  yDuimQfvJjBFMVrdn9iP6SfMjxKaGk6gVmI=
+  -----END CERTIFICATE-----
+  -----BEGIN CERTIFICATE-----
+  MIIB9jCCAV+gAwIBAgIJAKRvzcy7OH0UMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
+  BAMMCENPTVAtNzcyMCAXDTEyMDgxMDE1NDI1MVoYDzIxMTIwNzE3MTU0MjUxWjAT
+  MREwDwYDVQQDDAhDT01QLTc3MjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
+  o7aipd6MbnuGDeR1UJUjuMLQUariAyQ2l2ZDS6TfOwjHiPw/mhzkielgk73kqN7A
+  sUREx41eTcYCXzTq3WP3xCLE4LxLg1eIhd4nwNHj8H18xR9aP0AGjo4UFl5BOMa1
+  mwoyBt3VtfGtUmb8whpeJgHhqrPPxLoON+i6fIbXDaUCAwEAAaNQME4wHQYDVR0O
+  BBYEFEfjy3OopT2lOksKmKBNHTJE2hFlMB8GA1UdIwQYMBaAFEfjy3OopT2lOksK
+  mKBNHTJE2hFlMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAaNRx6YN2
+  M/p3R8/xS6zvH1EqJ3FFD7XeAQ52WuQnKSREzuw0dsw12ClxjcHiQEFioyTiTtjs
+  5pW18Ry5Ie7iFK4cQMerZwWPxBodEbAteYlRsI6kePV7Gf735Y1RpuN8qZ2sYL6e
+  x2IMeSwJ82BpdEI5niXxB+iT0HxhmR+XaMI=
+  -----END CERTIFICATE-----
+  -----BEGIN CERTIFICATE-----
+  MIIB+DCCAWGgAwIBAgIJAKGd0vpks6T/MA0GCSqGSIb3DQEBBQUAMBQxEjAQBgNV
+  BAMMCUNPTVAtMTU4NDAgFw0xMzA2MjAxMjE5MjBaGA8yMTEzMDUyNzEyMTkyMFow
+  FDESMBAGA1UEAwwJQ09NUC0xNTg0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+  gQDZTH9etPUC+wMZQ3UIiOwyyCfHsJ+7duCFYjuo1uZrhtDt/fp8qb8qK9ob+df3
+  EEYgA0IgI2j/9jNUEnKbc5+OrfKznzXjrlrH7zU8lKBVNCLzQuqBKRNajZ+UvO8R
+  nlqK2jZCXP/p3HXDYUTEwIR5W3tVCEn/Vda4upTLcPVE5wIDAQABo1AwTjAdBgNV
+  HQ4EFgQU7KXaNDheQWoy5uOU01tn1M5vNkEwHwYDVR0jBBgwFoAU7KXaNDheQWoy
+  5uOU01tn1M5vNkEwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQASmqCU
+  Znbvu6izdicvjuE3aKnBa7G++Fdp2bdne5VCwVbVLYCQWatB+n4crKqGdnVply/u
+  +uZ16u1DbO9rYoKgWqjLk1GfiLw5v86pd5+wZd5I9QJ0/Sbz2vZk5S4ciMIGwArc
+  m711+GzlW5xe6GyH9SZaGOPAdUbI6JTDwLzEgA==
+  -----END CERTIFICATE-----
+
diff --git a/software/hexaglobe-watermarking/template/nginx-frontend.conf.in b/software/hexaglobe-watermarking/template/nginx-frontend.conf.in
new file mode 100644
index 0000000000000000000000000000000000000000..6b22d81962e4da70809f58cf66ebb7fcb293d22b
--- /dev/null
+++ b/software/hexaglobe-watermarking/template/nginx-frontend.conf.in
@@ -0,0 +1,33 @@
+rtmp_auto_push on;
+rtmp_auto_push_reconnect 1s;
+
+daemon off;
+
+events {
+   worker_connections 1024;
+}
+
+rtmp_socket_dir ${:home-directory};
+
+rtmp {
+  server {
+    listen ${:frontend-ip}:${:frontend-port};
+    deny publish all;
+    allow play all;
+
+    application easicloud {
+      live on;
+      pull rtmp://${:backend-host}:${:backend-port}/easicloud/live;
+      session_relay on;
+    }
+  }
+}
+
+http {
+  server {
+    listen ${:frontend-ip}:${:frontend-http-port};
+    location /stat {
+      rtmp_stat all;
+    }
+  }
+}
diff --git a/software/hexaglobe-watermarking/template/nginx.conf.in b/software/hexaglobe-watermarking/template/nginx.conf.in
index 1c666d3b0aa3a35be476da3a8c8d738a4d6c17f3..1e2372b27d9da51759c11dbbc1717984e04aa1f4 100644
--- a/software/hexaglobe-watermarking/template/nginx.conf.in
+++ b/software/hexaglobe-watermarking/template/nginx.conf.in
@@ -1,30 +1,26 @@
-daemon off;
+rtmp_auto_push on;
+rtmp_auto_push_reconnect 1s;
 
-worker_processes  1;
+daemon off;
+worker_processes 1;
 
-pid %(pid-file)s;
+# XXX: add pid
 
 events {
-    worker_connections  1024;
+   worker_connections 1024;
 }
 
-http {
-    log_format up_log '$remote_addr - $remote_user [$time_local]  $request '
-                  'upstream_response_time $upstream_response_time '
-                  'msec $msec request_time $request_time'
-                  'cache_status $upstream_cache_status';
-
-    log_format  sysl  '"$time_local", "$http_referer", "$host", "$request", '
-                  '"$status", "$http_user_agent", "$remote_addr", '
-                  '"$bytes_sent", "$request_time"';
+rtmp_socket_dir ${:home-directory};
 
-    proxy_temp_path   %(nginx-temp-path)s;
+rtmp {
+  server {
+    listen ${:backend-ip}:${:backend-port};
+    allow publish all;
+    allow play all;
 
-    include       %(nginx-prefix)s/conf/mime.types;
-    default_type  application/octet-stream;
-    sendfile        on;
-
-    keepalive_timeout  65;
-
-    include %(vhost-configuration-directory-location)s/*.conf;
+    application easicloud {
+      live on;
+    }
+  }
 }
+
diff --git a/software/hexaglobe-watermarking/template/watermarkadmin.ini.in b/software/hexaglobe-watermarking/template/watermarkadmin.ini.in
deleted file mode 100644
index 5f91db5ab6feb218f3a852cbdf4ae9881c15c995..0000000000000000000000000000000000000000
--- a/software/hexaglobe-watermarking/template/watermarkadmin.ini.in
+++ /dev/null
@@ -1,20 +0,0 @@
-[nginx]
-vhosts   = %(nginx-vhost-configuration-directory-location)s
-log      = %(nginx-log-directory-location)s
-data     = %(nginx-cache-directory-location)s
-max_size = 1024m
-inactive = 120m
-port     = %(nginx-port)s
-pidfile  = %(nginx-pidfile-location)s
-nginx_bin = %(nginx-executable-location)s
-conf     = %(nginx-configuration-file-location)s
-prefix   = %(nginx-prefix)s
-
-[flask]
-DATABASE = %(flask-database-location)s
-MAX_CONTENT_LENGTH = 4096
-
-[api]
-user = admin
-pass = 276eeed9056ac2486f9c0237bb0be227
-ip   = %(global-ip)s