[PATCH] gnu: Add netdata.

OpenSubmitted by Léo Le Bouter.
Details
One participant
  • Léo Le Bouter
Owner
unassigned
Severity
normal
L
L
Léo Le Bouter wrote on 11 Feb 2021 09:09
(address . guix-patches@gnu.org)(name . Léo Le Bouter)(address . lle-bout@zaclys.net)
20210211080944.11165-1-lle-bout@zaclys.net
* gnu/packages/monitoring.scm (netdata): New variable.
* gnu/packages/patches/netdata-0001-use-system-python.patch,
gnu/packages/patches/netdata-0002-use-system-exim4.patch,
gnu/packages/patches/netdata-0003-use-python3.patch,
gnu/packages/patches/netdata-0004-use-sh.patch,
gnu/packages/patches/netdata-0005-use-bash.patch,
gnu/packages/patches/netdata-no-files-in-etc-and-var.patch,
gnu/packages/patches/netdata-web-remove-antifeatures-spyware.patch: New
patches.
* gnu/local.mk (dist_patch_DATA): Register them.
---
gnu/local.mk | 7 +
gnu/packages/monitoring.scm | 106 +
.../netdata-0001-use-system-python.patch | 131 +
.../netdata-0002-use-system-exim4.patch | 12 +
.../patches/netdata-0003-use-python3.patch | 29 +
.../patches/netdata-0004-use-sh.patch | 12 +
.../patches/netdata-0005-use-bash.patch | 13 +
.../netdata-no-files-in-etc-and-var.patch | 129 +
...data-web-remove-antifeatures-spyware.patch | 4466 +++++++++++++++++
9 files changed, 4905 insertions(+)
create mode 100644 gnu/packages/patches/netdata-0001-use-system-python.patch
create mode 100644 gnu/packages/patches/netdata-0002-use-system-exim4.patch
create mode 100644 gnu/packages/patches/netdata-0003-use-python3.patch
create mode 100644 gnu/packages/patches/netdata-0004-use-sh.patch
create mode 100644 gnu/packages/patches/netdata-0005-use-bash.patch
create mode 100644 gnu/packages/patches/netdata-no-files-in-etc-and-var.patch
create mode 100644 gnu/packages/patches/netdata-web-remove-antifeatures-spyware.patch

Toggle diff (4993 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 8a31bfef64..8d1e6a6fa5 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1388,6 +1388,13 @@ dist_patch_DATA =						\
   %D%/packages/patches/m4-gnulib-libio.patch			\
   %D%/packages/patches/ncompress-fix-softlinks.patch		\
   %D%/packages/patches/netcdf-date-time.patch			\
+  %D%/packages/patches/netdata-0001-use-system-python.patch	\
+  %D%/packages/patches/netdata-0002-use-system-exim4.patch	\
+  %D%/packages/patches/netdata-0003-use-python3.patch		\
+  %D%/packages/patches/netdata-0004-use-sh.patch		\
+  %D%/packages/patches/netdata-0005-use-bash.patch		\
+  %D%/packages/patches/netdata-no-files-in-etc-and-var.patch	\
+  %D%/packages/patches/netdata-web-remove-antifeatures-spyware.patch
   %D%/packages/patches/netpbm-CVE-2017-2586.patch		\
   %D%/packages/patches/netpbm-CVE-2017-2587.patch		\
   %D%/packages/patches/netsurf-message-timestamp.patch		\
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index 75a422921c..b0673c8321 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -41,24 +41,31 @@
   #:use-module (gnu packages curl)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cups)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages disk)
   #:use-module (gnu packages django)
+  #:use-module (gnu packages gawk)
   #:use-module (gnu packages gd)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages image)
   #:use-module (gnu packages mail)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
+  #:use-module (gnu packages node)
   #:use-module (gnu packages libevent)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages rrdtool)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu packages web))
 
 (define-public nagios
@@ -575,3 +582,102 @@ future system load (i.e., capacity planning).")
     ;; license:gpl2 for other plugins
     (license (list license:expat license:gpl2))))
 
+(define-public netdata
+  ;; TODO: Support go plugins, if not more.
+  (package
+    (name "netdata")
+    (version "1.29.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/netdata/netdata")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "137qx7m9h2qk1pcy3i8rf7yk744zi7ps3867psy2r45l7k3flrss"))
+              (patches
+               (search-patches
+                ;; Remove Google Analytics, Google Tag Manager, update popups,
+                ;; global default registry and Netdata Cloud support (nonfree
+                ;; service).
+                "netdata-web-remove-antifeatures-spyware.patch"
+                ;; From Nix
+                "netdata-no-files-in-etc-and-var.patch"
+                ;; From Debian
+                "netdata-0001-use-system-python.patch"
+                "netdata-0002-use-system-exim4.patch"
+                "netdata-0003-use-python3.patch"
+                "netdata-0004-use-sh.patch"
+                "netdata-0005-use-bash.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags (list "--localstatedir=/var"
+                               "--sysconfdir=/etc"
+                               "--disable-cloud")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-netdata
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (wrap-program
+                 (string-append (assoc-ref outputs "out") "/sbin/netdata")
+               `("DO_NOT_TRACK" = (,"1"))
+               `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))
+               `("PATH" ":" prefix ,(map
+                                     (lambda (input)
+                                       (string-append
+                                        (assoc-ref inputs input)
+                                        "/bin"))
+                                     '("coreutils" "grep" "findutils" "sed"
+                                       "dmidecode" "hddtemp" "iproute2"
+                                       "iw" "lm-sensors" "netcat" "curl"
+                                       "fping" "procps" "which" "gawk"
+                                       "node"))))
+             #t)))))
+    (native-inputs
+     `(("git" ,git-minimal)
+       ("pkg-config" ,pkg-config)
+       ("protobuf-c" ,protobuf-c)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)))
+    (inputs
+     ;; TODO: Add optional libnetfilter-acct
+     `(("util-linux:lib" ,util-linux "lib") ;; for libuuid
+       ("libuv" ,libuv)
+       ("zlib" ,zlib)
+       ("openssl" ,openssl)
+       ("lz4" ,lz4)
+       ("libcap" ,libcap)
+       ("libmnl" ,libmnl)
+       ("snappy" ,snappy)
+       ("cups" ,cups-minimal)
+       ("python" ,python)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-urllib3" ,python-urllib3)
+       ("python-six" ,python-six)
+       ("python-psycopg2" ,python-psycopg2)
+       ("python-pymysql" ,python-pymysql)
+       ("python-requests" ,python-requests)
+       ;; TODO: Add apcupsd
+       ("coreutils" ,coreutils)
+       ("grep" ,grep)
+       ("findutils" ,findutils)
+       ("sed" ,sed)
+       ("dmidecode" ,dmidecode)
+       ("hddtemp" ,hddtemp)
+       ("iproute2" ,iproute)
+       ("iw" ,iw)
+       ("lm-sensors" ,lm-sensors)
+       ("netcat" ,netcat-openbsd)
+       ("curl" ,curl)
+       ("fping" ,fping)
+       ("procps" ,procps)
+       ("which" ,which)
+       ("gawk" ,gawk)
+       ("node" ,node)))
+    (home-page "https://www.netdata.cloud/")
+    (synopsis "Zero-configuration real-time performance monitoring")
+    (description "Netdata's distributed, real-time monitoring Agent collects
+thousands of metrics from systems, hardware, containers, and applications with
+zero configuration.")
+    (license license:gpl3)))
diff --git a/gnu/packages/patches/netdata-0001-use-system-python.patch b/gnu/packages/patches/netdata-0001-use-system-python.patch
new file mode 100644
index 0000000000..5a14159d52
--- /dev/null
+++ b/gnu/packages/patches/netdata-0001-use-system-python.patch
@@ -0,0 +1,131 @@
+Author: Lennart Weller <lhw@ring0.de>
+Description: Ignore embedded python modules.
+
+diff -Naurp netdata.orig/collectors/python.d.plugin/Makefile.am netdata/collectors/python.d.plugin/Makefile.am
+--- netdata.orig/collectors/python.d.plugin/Makefile.am
++++ netdata/collectors/python.d.plugin/Makefile.am
+@@ -145,109 +145,3 @@ dist_third_party_DATA = \
+     python_modules/third_party/monotonic.py \
+     python_modules/third_party/filelock.py \
+     $(NULL)
+-
+-pythonyaml2dir=$(pythonmodulesdir)/pyyaml2
+-dist_pythonyaml2_DATA = \
+-    python_modules/pyyaml2/__init__.py \
+-    python_modules/pyyaml2/composer.py \
+-    python_modules/pyyaml2/constructor.py \
+-    python_modules/pyyaml2/cyaml.py \
+-    python_modules/pyyaml2/dumper.py \
+-    python_modules/pyyaml2/emitter.py \
+-    python_modules/pyyaml2/error.py \
+-    python_modules/pyyaml2/events.py \
+-    python_modules/pyyaml2/loader.py \
+-    python_modules/pyyaml2/nodes.py \
+-    python_modules/pyyaml2/parser.py \
+-    python_modules/pyyaml2/reader.py \
+-    python_modules/pyyaml2/representer.py \
+-    python_modules/pyyaml2/resolver.py \
+-    python_modules/pyyaml2/scanner.py \
+-    python_modules/pyyaml2/serializer.py \
+-    python_modules/pyyaml2/tokens.py \
+-    $(NULL)
+-
+-pythonyaml3dir=$(pythonmodulesdir)/pyyaml3
+-dist_pythonyaml3_DATA = \
+-    python_modules/pyyaml3/__init__.py \
+-    python_modules/pyyaml3/composer.py \
+-    python_modules/pyyaml3/constructor.py \
+-    python_modules/pyyaml3/cyaml.py \
+-    python_modules/pyyaml3/dumper.py \
+-    python_modules/pyyaml3/emitter.py \
+-    python_modules/pyyaml3/error.py \
+-    python_modules/pyyaml3/events.py \
+-    python_modules/pyyaml3/loader.py \
+-    python_modules/pyyaml3/nodes.py \
+-    python_modules/pyyaml3/parser.py \
+-    python_modules/pyyaml3/reader.py \
+-    python_modules/pyyaml3/representer.py \
+-    python_modules/pyyaml3/resolver.py \
+-    python_modules/pyyaml3/scanner.py \
+-    python_modules/pyyaml3/serializer.py \
+-    python_modules/pyyaml3/tokens.py \
+-    $(NULL)
+-
+-python_urllib3dir=$(pythonmodulesdir)/urllib3
+-dist_python_urllib3_DATA = \
+-    python_modules/urllib3/__init__.py \
+-    python_modules/urllib3/_collections.py \
+-    python_modules/urllib3/connection.py \
+-    python_modules/urllib3/connectionpool.py \
+-    python_modules/urllib3/exceptions.py \
+-    python_modules/urllib3/fields.py \
+-    python_modules/urllib3/filepost.py \
+-    python_modules/urllib3/response.py \
+-    python_modules/urllib3/poolmanager.py \
+-    python_modules/urllib3/request.py \
+-    $(NULL)
+-
+-python_urllib3_utildir=$(python_urllib3dir)/util
+-dist_python_urllib3_util_DATA = \
+-    python_modules/urllib3/util/__init__.py \
+-    python_modules/urllib3/util/connection.py \
+-    python_modules/urllib3/util/request.py \
+-    python_modules/urllib3/util/response.py \
+-    python_modules/urllib3/util/retry.py \
+-    python_modules/urllib3/util/selectors.py \
+-    python_modules/urllib3/util/ssl_.py \
+-    python_modules/urllib3/util/timeout.py \
+-    python_modules/urllib3/util/url.py \
+-    python_modules/urllib3/util/wait.py \
+-    $(NULL)
+-
+-python_urllib3_packagesdir=$(python_urllib3dir)/packages
+-dist_python_urllib3_packages_DATA = \
+-    python_modules/urllib3/packages/__init__.py \
+-    python_modules/urllib3/packages/ordered_dict.py \
+-    python_modules/urllib3/packages/six.py \
+-    $(NULL)
+-
+-python_urllib3_backportsdir=$(python_urllib3_packagesdir)/backports
+-dist_python_urllib3_backports_DATA = \
+-    python_modules/urllib3/packages/backports/__init__.py \
+-    python_modules/urllib3/packages/backports/makefile.py \
+-    $(NULL)
+-
+-python_urllib3_ssl_match_hostnamedir=$(python_urllib3_packagesdir)/ssl_match_hostname
+-dist_python_urllib3_ssl_match_hostname_DATA = \
+-    python_modules/urllib3/packages/ssl_match_hostname/__init__.py \
+-    python_modules/urllib3/packages/ssl_match_hostname/_implementation.py \
+-    $(NULL)
+-
+-python_urllib3_contribdir=$(python_urllib3dir)/contrib
+-dist_python_urllib3_contrib_DATA = \
+-    python_modules/urllib3/contrib/__init__.py \
+-    python_modules/urllib3/contrib/appengine.py \
+-    python_modules/urllib3/contrib/ntlmpool.py \
+-    python_modules/urllib3/contrib/pyopenssl.py \
+-    python_modules/urllib3/contrib/securetransport.py \
+-    python_modules/urllib3/contrib/socks.py \
+-    $(NULL)
+-
+-python_urllib3_securetransportdir=$(python_urllib3_contribdir)/_securetransport
+-dist_python_urllib3_securetransport_DATA = \
+-    python_modules/urllib3/contrib/_securetransport/__init__.py \
+-    python_modules/urllib3/contrib/_securetransport/bindings.py \
+-    python_modules/urllib3/contrib/_securetransport/low_level.py \
+-    $(NULL)
+diff -Naurp netdata.orig/collectors/python.d.plugin/python_modules/bases/loaders.py netdata/collectors/python.d.plugin/python_modules/bases/loaders.py
+--- netdata.orig/collectors/python.d.plugin/python_modules/bases/loaders.py
++++ netdata/collectors/python.d.plugin/python_modules/bases/loaders.py
+@@ -9,10 +9,7 @@ from sys import version_info
+ PY_VERSION = version_info[:2]
+ 
+ try:
+-    if PY_VERSION > (3, 1):
+-        from pyyaml3 import SafeLoader as YamlSafeLoader
+-    else:
+-        from pyyaml2 import SafeLoader as YamlSafeLoader
++    from yaml import SafeLoader as YamlSafeLoader
+ except ImportError:
+     from yaml import SafeLoader as YamlSafeLoader
+ 
diff --git a/gnu/packages/patches/netdata-0002-use-system-exim4.patch b/gnu/packages/patches/netdata-0002-use-system-exim4.patch
new file mode 100644
index 0000000000..0e23618399
--- /dev/null
+++ b/gnu/packages/patches/netdata-0002-use-system-exim4.patch
@@ -0,0 +1,12 @@
+Author: Sven Hartge <sven@svenhartge.de>
+Description: Debian has exim in /usr/sbin which is not in the default path.
+
+diff -Naurp netdata.orig/collectors/python.d.plugin/exim/exim.conf netdata/collectors/python.d.plugin/exim/exim.conf
+--- netdata.orig/collectors/python.d.plugin/exim/exim.conf
++++ netdata/collectors/python.d.plugin/exim/exim.conf
+@@ -88,4 +88,4 @@ update_every: 10
+ # AUTO-DETECTION JOBS
+ 
+ local:
+-  command: 'exim -bpc'
++  command: '/usr/sbin/exim -bpc'
diff --git a/gnu/packages/patches/netdata-0003-use-python3.patch b/gnu/packages/patches/netdata-0003-use-python3.patch
new file mode 100644
index 0000000000..e55089271a
--- /dev/null
+++ b/gnu/packages/patches/netdata-0003-use-python3.patch
@@ -0,0 +1,29 @@
+Author: Sander Klein <debian-bugs@roedie.nl>
+Description: Debian uses by default python 2 instead of python3.
+
+diff -Naurp netdata.orig/collectors/python.d.plugin/python.d.plugin.in netdata/collectors/python.d.plugin/python.d.plugin.in
+--- netdata.orig/collectors/python.d.plugin/python.d.plugin.in
++++ netdata/collectors/python.d.plugin/python.d.plugin.in
+@@ -1,21 +1,4 @@
+-#!/usr/bin/env bash
+-'''':;
+-pybinary=$(which python || which python3 || which python2)
+-filtered=()
+-for arg in "$@"
+-do
+-    case $arg in
+-        -p*) pybinary=${arg:2}
+-              shift 1          ;;
+-        *)  filtered+=("$arg") ;;
+-    esac
+-done
+-if [ "$pybinary" = "" ]
+-then
+-    echo "ERROR python IS NOT AVAILABLE IN THIS SYSTEM"
+-    exit 1
+-fi
+-exec "$pybinary"  "$0" "${filtered[@]}" # '''
++#!/usr/bin/python3
+ 
+ # -*- coding: utf-8 -*-
+ # Description:
diff --git a/gnu/packages/patches/netdata-0004-use-sh.patch b/gnu/packages/patches/netdata-0004-use-sh.patch
new file mode 100644
index 0000000000..6c8e93bfba
--- /dev/null
+++ b/gnu/packages/patches/netdata-0004-use-sh.patch
@@ -0,0 +1,12 @@
+Author: Daniel Baumann <daniel.baumann@progress-linux.org>
+Description: Fix shebang hack to not depend on bash.
+
+diff -Naurp netdata.orig/collectors/node.d.plugin/node.d.plugin.in netdata/collectors/node.d.plugin/node.d.plugin.in
+--- netdata.orig/collectors/node.d.plugin/node.d.plugin.in
++++ netdata/collectors/node.d.plugin/node.d.plugin.in
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env bash
++#!/bin/sh
+ ':' //; exec "$(command -v nodejs || command -v node || echo "ERROR node IS NOT AVAILABLE IN THIS SYSTEM")" "$0" "$@"
+ 
+ // shebang hack from:
diff --git a/gnu/packages/patches/netdata-0005-use-bash.patch b/gnu/packages/patches/netdata-0005-use-bash.patch
new file mode 100644
index 0000000000..53b7fc5b31
--- /dev/null
+++ b/gnu/packages/patches/netdata-0005-use-bash.patch
@@ -0,0 +1,13 @@
+Author: Daniel Baumann <daniel.baumann@progress-linux.org>
+Description: Using bash instead of sh for edit-config.
+ It reads /etc/profile which often contains bash specific configuration.
+
+diff -Naurp netdata.orig/system/edit-config.in netdata/system/edit-config.in
+--- netdata.orig/system/edit-config.in
++++ netdata/system/edit-config.in
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env sh
++#!/bin/bash
+ 
+ [ -f /etc/profile ] && . /etc/profile
+ 
diff --git a/gnu/packages/patches/netdata-no-files-in-etc-and-var.patch b/gnu/packages/patches/netdata-no-files-in-etc-and-var.patch
new file mode 100644
index 0000000000..594805fdf1
--- /dev/null
+++ b/gnu/packages/patches/netdata-no-files-in-etc-and-var.patch
@@ -0,0 +1,129 @@
+From 4ecc1475be94a384c122594b5f7d455beb64a2f0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= <joerg@thalheim.io>
+Date: Sat, 22 Feb 2020 06:42:14 +0000
+Subject: [PATCH] no files in etc and var
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Jörg Thalheim <joerg@thalheim.io>
+---
+ collectors/Makefile.am                 | 2 +-
+ collectors/charts.d.plugin/Makefile.am | 2 +-
+ collectors/node.d.plugin/Makefile.am   | 2 +-
+ collectors/python.d.plugin/Makefile.am | 2 +-
+ collectors/statsd.plugin/Makefile.am   | 2 +-
+ health/Makefile.am                     | 2 +-
+ system/Makefile.am                     | 3 +--
+ web/Makefile.am                        | 2 +-
+ 8 files changed, 8 insertions(+), 9 deletions(-)
+
+diff --git a/collectors/Makefile.am b/collectors/Makefile.am
+index 9bb52958..c9799165 100644
+--- a/collectors/Makefile.am
++++ b/collectors/Makefile.am
+@@ -32,7 +32,7 @@ usercustompluginsconfigdir=$(configdir)/custom-plugins.d
+ usergoconfigdir=$(configdir)/go.d
+ 
+ # Explicitly install directories to avoid permission issues due to umask
+-install-exec-local:
++no-install-exec-local:
+ 	$(INSTALL) -d $(DESTDIR)$(usercustompluginsconfigdir)
+ 	$(INSTALL) -d $(DESTDIR)$(usergoconfigdir)
+ 
+diff --git a/collectors/charts.d.plugin/Makefile.am b/collectors/charts.d.plugin/Makefile.am
+index 03c7f0a9..01985db0 100644
+--- a/collectors/charts.d.plugin/Makefile.am
++++ b/collectors/charts.d.plugin/Makefile.am
+@@ -34,7 +34,7 @@ dist_userchartsconfig_DATA = \
+     $(NULL)
+ 
+ # Explicitly install directories to avoid permission issues due to umask
+-install-exec-local:
++no-install-exec-local:
+ 	$(INSTALL) -d $(DESTDIR)$(userchartsconfigdir)
+ 
+ chartsconfigdir=$(libconfigdir)/charts.d
+diff --git a/collectors/node.d.plugin/Makefile.am b/collectors/node.d.plugin/Makefile.am
+index c3142d43..95e32445 100644
+--- a/collectors/node.d.plugin/Makefile.am
++++ b/collectors/node.d.plugin/Makefile.am
+@@ -26,7 +26,7 @@ dist_usernodeconfig_DATA = \
+     $(NULL)
+ 
+ # Explicitly install directories to avoid permission issues due to umask
+-install-exec-local:
++no-install-exec-local:
+ 	$(INSTALL) -d $(DESTDIR)$(usernodeconfigdir)
+ 
+ nodeconfigdir=$(libconfigdir)/node.d
+diff --git a/collectors/python.d.plugin/Makefile.am b/collectors/python.d.plugin/Makefile.am
+index e678f86a..29a319da 100644
+--- a/collectors/python.d.plugin/Makefile.am
++++ b/collectors/python.d.plugin/Makefile.am
+@@ -32,7 +32,7 @@ dist_userpythonconfig_DATA = \
+     $(NULL)
+ 
+ # Explicitly install directories to avoid permission issues due to umask
+-install-exec-local:
++no-install-exec-local:
+ 	$(INSTALL) -d $(DESTDIR)$(userpythonconfigdir)
+ 
+ pythonconfigdir=$(libconfigdir)/python.d
+diff --git a/collectors/statsd.plugin/Makefile.am b/collectors/statsd.plugin/Makefile.am
+index b01302d1..f5b77da4 100644
+--- a/collectors/statsd.plugin/Makefile.am
++++ b/collectors/statsd.plugin/Makefile.am
+@@ -17,5 +17,5 @@ dist_userstatsdconfig_DATA = \
+     $(NULL)
+ 
+ # Explicitly install directories to avoid permission issues due to umask
+-install-exec-local:
++no-install-exec-local:
+ 	$(INSTALL) -d $(DESTDIR)$(userstatsdconfigdir)
+diff --git a/health/Makefile.am b/health/Makefile.am
+index 853ed0d7..210330a6 100644
+--- a/health/Makefile.am
++++ b/health/Makefile.am
+@@ -19,7 +19,7 @@ dist_userhealthconfig_DATA = \
+     $(NULL)
+ 
+ # Explicitly install directories to avoid permission issues due to umask
+-install-exec-local:
++no-install-exec-local:
+ 	$(INSTALL) -d $(DESTDIR)$(userhealthconfigdir)
+ 
+ healthconfigdir=$(libconfigdir)/health.d
+diff --git a/system/Makefile.am b/system/Makefile.am
+index ad68c655..74f032f9 100644
+--- a/system/Makefile.am
++++ b/system/Makefile.am
+@@ -17,11 +17,10 @@ include $(top_srcdir)/build/subst.inc
+ SUFFIXES = .in
+ 
+ dist_config_SCRIPTS = \
+-    edit-config \
+     $(NULL)
+ 
+ # Explicitly install directories to avoid permission issues due to umask
+-install-exec-local:
++no-install-exec-local:
+ 	$(INSTALL) -d $(DESTDIR)$(configdir)
+ 
+ nodist_noinst_DATA = \
+diff --git a/web/Makefile.am b/web/Makefile.am
+index ccaccd76..16a2977e 100644
+--- a/web/Makefile.am
++++ b/web/Makefile.am
+@@ -12,7 +12,7 @@ SUBDIRS = \
+ usersslconfigdir=$(configdir)/ssl
+ 
+ # Explicitly install directories to avoid permission issues due to umask
+-install-exec-local:
++no-install-exec-local:
+ 	$(INSTALL) -d $(DESTDIR)$(usersslconfigdir)
+ 
+ dist_noinst_DATA = \
+-- 
+2.25.0
+
diff --git a/gnu/packages/patches/netdata-web-remove-antifeatures-spyware.patch b/gnu/packages/patches/netdata-web-remove-antifeatures-spyware.patch
new file mode 100644
index 0000000000..0b3be9a5d2
--- /dev/null
+++ b/gnu/packages/patches/netdata-web-remove-antifeatures-spyware.patch
@@ -0,0 +1,4466 @@
+diff --git a/registry/registry_init.c b/registry/registry_init.c
+index ffdb83f3..2d5460fd 100644
+--- a/registry/registry_init.c
++++ b/registry/registry_init.c
+@@ -36,7 +36,7 @@ int registry_init(void) {
+     registry.save_registry_every_entries = (unsigned long long)config_get_number(CONFIG_SECTION_REGISTRY, "registry save db every new entries", 1000000);
+     registry.persons_expiration = config_get_number(CONFIG_SECTION_REGISTRY, "registry expire idle persons days", 365) * 86400;
+     registry.registry_domain = config_get(CONFIG_SECTION_REGISTRY, "registry domain", "");
+-    registry.registry_to_announce = config_get(CONFIG_SECTION_REGISTRY, "registry to announce", "https://registry.my-netdata.io");
++    registry.registry_to_announce = config_get(CONFIG_SECTION_REGISTRY, "registry to announce", "");
+     registry.hostname = config_get(CONFIG_SECTION_REGISTRY, "registry hostname", netdata_configured_hostname);
+     registry.verify_cookies_redirects = config_get_boolean(CONFIG_SECTION_REGISTRY, "verify browser cookies support", 1);
+ 
+diff --git a/web/gui/Makefile.am b/web/gui/Makefile.am
+index c69380f9..8a8f01e5 100644
+--- a/web/gui/Makefile.am
++++ b/web/gui/Makefile.am
+@@ -46,10 +46,6 @@ dist_noinst_DATA = \
+     $(NULL)
+ 
+ dist_web_DATA = \
+-    demo.html \
+-    demo2.html \
+-    demosites.html \
+-    demosites2.html \
+     dashboard.html \
+     dashboard.js \
+     dashboard_info.js \
+@@ -62,7 +58,6 @@ dist_web_DATA = \
+     main.css \
+     main.js \
+     console.html \
+-    infographic.html \
+     robots.txt \
+     refresh-badges.js \
+     sitemap.xml \
+diff --git a/web/gui/console.html b/web/gui/console.html
+index b85b4ffb..2debd1c5 100644
+--- a/web/gui/console.html
++++ b/web/gui/console.html
+@@ -12,18 +12,6 @@
+     <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
+     <link rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAP9JREFUeNpiYBgFo+A/w34gpiZ8DzWzAYgNiHGAA5UdgA73g+2gcyhgg/0DGQoweB6IBQYyFCCOGOBQwBMd/xnW09ERDtgcoEBHB+zHFQrz6egIBUasocDAcJ9OxWAhE4YQI8MDILmATg7wZ8QRDfQKhQf4Cie6pAVGPA4AhQKo0BCgZRAw4ZSBpIWJNI6CD4wEKikBaFqgVSgcYMIrzcjwgcahcIGRiPYCLUPBkNhWUwP9akVcoQBpatG4MsLviAIqWj6f3Absfdq2igg7IIEKDVQKEzN5ofAenJCp1I8gJRTug5tfkGIdR1FDniMI+QZUjF8Amn5htOdHCAAEGACE6B0cS6mrEwAAAABJRU5ErkJggg==" />
+     <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />
+-    <!-- Google Tag Manager -->
+-    <script>(function (w, d, s, l, i) {
+-            w[l] = w[l] || []; w[l].push({
+-                'gtm.start':
+-                    new Date().getTime(), event: 'gtm.js'
+-            }); var f = d.getElementsByTagName(s)[0],
+-                j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
+-                    'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
+-        })(window, document, 'script', 'dataLayer', 'GTM-N6CBMJD');
+-        window.dataLayer = window.dataLayer || [];
+-    </script>
+-    <!-- End Google Tag Manager -->
+     <script>
+         function loadJSFile(filename) {
+             const s = document.createElement("script")
+@@ -39,28 +27,13 @@
+             l.setAttribute("href", filename)
+             document.getElementsByTagName("head")[0].appendChild(l)
+         }
+-
+-        var cloudBaseURL = localStorage.getItem("cloud.baseURL") || "https://netdata.cloud"
+-
+-        loadCSSFile(`${cloudBaseURL}/static/console/main.css?v=4`)
+     </script>
+ </head>
+ 
+ <body class="mdc-theme--background mdc-typography">
+-    <!-- Google Tag Manager (noscript) -->
+-    <noscript>
+-        <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-N6CBMJD" height="0" width="0"
+-            style="display:none;visibility:hidden"></iframe>
+-    </noscript>
+-    <!-- End Google Tag Manager (noscript) -->
+     <main id="app" class="console-app" data-host="agent"></main>
+     <script>
+         const main = document.getElementById("app")
+-        main.setAttribute("data-static-base-url", cloudBaseURL)
+-        main.setAttribute("data-api-base-url", cloudBaseURL)
+-        main.setAttribute("data-api-base-url-v2", cloudBaseURL)
+-
+-        loadJSFile(`${cloudBaseURL}/static/console/main.js?v=4`)
+     </script>
+     <script>
+         var netdataTheme = "white"
+diff --git a/web/gui/dashboard.js b/web/gui/dashboard.js
+index 53e9090b..0afa0d0f 100644
+--- a/web/gui/dashboard.js
++++ b/web/gui/dashboard.js
+@@ -9926,25 +9926,14 @@ NETDATA.alarms = {
+ 
+ NETDATA.registry = {
+     server: null,         // the netdata registry server
+-    isCloudEnabled: false,// is netdata.cloud functionality enabled?
+-    cloudBaseURL: null,   // the netdata cloud base url
+     person_guid: null,    // the unique ID of this browser / user
+     machine_guid: null,   // the unique ID the netdata server that served dashboard.js
+     hostname: 'unknown',  // the hostname of the netdata server that served dashboard.js
+     machines: null,       // the user's other URLs
+     machines_array: null, // the user's other URLs in an array
+     person_urls: null,
+-    anonymous_statistics_checked: false,
+     MASKED_DATA: "***",
+ 
+-    isUsingGlobalRegistry: function() {
+-        return NETDATA.registry.server == "https://registry.my-netdata.io";
+-    },
+-
+-    isRegistryEnabled: function() {
+-        return !(NETDATA.registry.isUsingGlobalRegistry() || isSignedIn())
+-    },
+-
+     parsePersonUrls: function (person_urls) {
+         NETDATA.registry.person_urls = person_urls;
+ 
+@@ -9998,26 +9987,8 @@ NETDATA.registry = {
+         NETDATA.registry.hello(NETDATA.serverDefault, function (data) {
+             if (data) {
+                 NETDATA.registry.server = data.registry;
+-                if (data.cloud_base_url !== "") {
+-                    NETDATA.registry.isCloudEnabled = true;
+-                    NETDATA.registry.cloudBaseURL = data.cloud_base_url;
+-                } else {
+-                    NETDATA.registry.isCloudEnabled = false;
+-                    NETDATA.registry.cloudBaseURL = "";
+-                }
+                 NETDATA.registry.machine_guid = data.machine_guid;
+                 NETDATA.registry.hostname = data.hostname;
+-                if (!NETDATA.registry.anonymous_statistics_checked) {
+-                    NETDATA.registry.anonymous_statistics_checked=true;
+-                    if (data.anonymous_statistics) {
+-                        (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
+-                                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
+-                            j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=false;j.src=
+-                            'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
+-                        })(window,document,'script','dataLayer','GTM-N6CBMJD');
+-                        dataLayer.push({"anonymous_statistics" : "true", "machine_guid" : data.machine_guid});
+-                    }
+-                }
+                 NETDATA.registry.access(2, function (person_urls) {
+                     NETDATA.registry.parsePersonUrls(person_urls);
+                 });    
+@@ -10066,12 +10037,8 @@ NETDATA.registry = {
+         let name = NETDATA.registry.MASKED_DATA;
+         let url = NETDATA.registry.MASKED_DATA;
+ 
+-        if (!NETDATA.registry.isUsingGlobalRegistry()) {
+-            // If the user is using a private registry keep sending identifiable
+-            // data.
+-            name = NETDATA.registry.hostname;
+-            url = NETDATA.serverDefault;
+-        } 
++        name = NETDATA.registry.hostname;
++        url = NETDATA.serverDefault;
+ 
+         console.log("ACCESS", name, url);
+ 
+diff --git a/web/gui/dashboard_info.js b/web/gui/dashboard_info.js
+index 1f289ba0..889b6827 100644
+--- a/web/gui/dashboard_info.js
++++ b/web/gui/dashboard_info.js
+@@ -196,11 +196,6 @@ netdataDashboard.menu = {
+         info: 'Performance metrics for the operation of netdata itself and its plugins.'
+     },
+ 
+-    'aclk_test': {
+-        title: 'ACLK Test Generator',
+-        info: 'For internal use to perform integration testing.'
+-    },
+-
+     'example': {
+         title: 'Example Charts',
+         info: 'Example charts, demonstrating the external plugin architecture.'
+@@ -3353,21 +3348,6 @@ netdataDashboard.context = {
+         info: 'Difference between the number of process created and the number of threads created per period(<code>process</code> dimension), it also shows the number of possible zombie process running on system.'
+     },
+ 
+-    // ------------------------------------------------------------------------
+-    // ACLK Internal Stats
+-    'netdata.aclk_status': {
+-        valueRange: "[0, 1]",
+-        info: 'This chart shows if ACLK was online during entirety of the sample duration.'
+-    },
+-
+-    'netdata.aclk_query_per_second': {
+-        info: 'This chart shows how many queries were added for ACLK_query thread to process and how many it was actually able to process.'
+-    },
+-
+-    'netdata.aclk_latency_mqtt': {
+-        info: 'Measures latency between MQTT publish of the message and it\'s PUB_ACK being received'
+-    },
+-
+     // ------------------------------------------------------------------------
+     // VerneMQ
+ 
+diff --git a/web/gui/demo.html b/web/gui/demo.html
+deleted file mode 100644
+index b096bef3..00000000
+--- a/web/gui/demo.html
++++ /dev/null
+@@ -1,51 +0,0 @@
+-<!DOCTYPE html>
+-<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
+-<html lang="en">
+-<head>
+-    <title>NetData Dashboard</title>
+-    <meta name="application-name" content="netdata">
+-
+-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+-    <meta charset="utf-8">
+-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+-    <meta name="viewport" content="width=device-width, initial-scale=1">
+-    <meta name="apple-mobile-web-app-capable" content="yes">
+-    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+-    <meta name="author" content="costa@tsaousis.gr">
+-
+-    <meta property="og:locale" content="en_US" />
+-    <meta property="og:image" content="https://cloud.githubusercontent.com/assets/2662304/22945737/e98cd0c6-f2fd-11e6-96f1-5501934b0955.png"/>
+-    <meta property="og:url" content="http://my-netdata.io/"/>
+-    <meta property="og:type" content="website"/>
+-    <meta property="og:site_name" content="netdata"/>
+-    <meta property="og:title" content="netdata - real-time performance monitoring, done right!"/>
+-    <meta property="og:description" content="Stunning real-time dashboards, blazingly fast and extremely interactive. Zero configuration, zero dependencies, zero maintenance." />
+-</head>
+-<script type="text/javascript" src="dashboard.js?v20190902-0"></script>
+-<body>
+-
+-<div style="width: 100%; text-align: center;">
+-    <div data-netdata="netdata.server_cpu"
+-            data-dimensions="user"
+-            data-chart-library="gauge"
+-            data-width="150px"
+-            data-after="-60"
+-            data-points="60"
+-            data-title="Yes! Realtime!"
+-            data-units="I am alive!"
+-            data-colors="#FF5555"
+-            ></div>
+-    <br/>
+-    <div data-netdata="netdata.server_cpu"
+-            data-dimensions="user"
+-            data-chart-library="dygraph"
+-            data-dygraph-theme="sparkline"
+-            data-width="200px"
+-            data-height="30px"
+-            data-after="-60"
+-            data-points="60"
+-            data-colors="#FF5555"
+-            ></div>
+-</div>
+-</body>
+-</html>
+diff --git a/web/gui/demo2.html b/web/gui/demo2.html
+deleted file mode 100644
+index 650acfe0..00000000
+--- a/web/gui/demo2.html
++++ /dev/null
+@@ -1,143 +0,0 @@
+-<!DOCTYPE html>
+-<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
+-<html lang="en">
+-<head>
+-    <title>NetData Dashboard</title>
+-    <meta name="application-name" content="netdata">
+-
+-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+-    <meta charset="utf-8">
+-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+-    <meta name="viewport" content="width=device-width, initial-scale=1">
+-    <meta name="apple-mobile-web-app-capable" content="yes">
+-    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+-    <meta name="author" content="costa@tsaousis.gr">
+-
+-    <meta property="og:locale" content="en_US" />
+-    <meta property="og:image" content="https://cloud.githubusercontent.com/assets/2662304/22945737/e98cd0c6-f2fd-11e6-96f1-5501934b0955.png"/>
+-    <meta property="og:url" content="https://my-netdata.io/"/>
+-    <meta property="og:type" content="website"/>
+-    <meta property="og:site_name" content="netdata"/>
+-    <meta property="og:title" content="netdata - real-time performance monitoring, done right!"/>
+-    <meta property="og:description" content="Stunning real-time dashboards, blazingly fast and extremely interactive. Zero configuration, zero dependencies, zero maintenance." />
+-</head>
+-<script>var netdataTheme = 'slate';</script>
+-<script type="text/javascript" src="https://my-netdata.io/dashboard.js?v20190902-0"></script>
+-<body>
+-
+-<div class="container" style="width: 90%; padding-top: 10px; text-align: center; color: #AAA">
+-    <div style="font-size: 7vw;">why netdata?</div>
+-    <br/>
+-    <div style="font-size: 2vw; color: white;">These charts visualize the same data...</div>
+-
+-
+-    <!-- Nav tabs -->
+-    <ul class="nav nav-tabs" role="tablist">
+-        <li role="presentation" class="active"><a href="#gauge" aria-controls="gauge" role="tab" data-toggle="tab">Gauge.js</a></li>
+-        <li role="presentation"><a href="#easypiechart" aria-controls="easypiechart" role="tab" data-toggle="tab">Easy Pie Chart</a></li>
+-    </ul>
+-
+-    <!-- Tab panes -->
+-    <div class="tab-content">
+-        <div role="tabpanel" class="tab-pane active" id="gauge">
+-
+-            <div style="display: inline-block; width: 35.8%">
+-                <div style="font-size: 1.2vw; color: #666; padding-top: 10px;"><i class="fa fa-comment"></i> I can trace an issue like this</div>
+-                <br/>
+-                <div data-netdata="example.random2"
+-                        data-dimensions="random"
+-                        data-chart-library="gauge"
+-                        data-gauge-max-value="32767"
+-                        data-width="100%"
+-                        data-after="-600"
+-                        data-points="600"
+-                        data-title="1/second (netdata&nbsp;default)"
+-                        data-units="important metric"
+-                        data-colors="#5A5"
+-                        ></div>
+-            </div>
+-            <div style="display: inline-block; width: 50%">
+-                <div style="font-size: 1.2vw; color: #666;"><i class="fa fa-comment"></i> Can you trace an issue like these?<br/>&nbsp;<br/></div>
+-                <div data-netdata="example.random2"
+-                        data-dimensions="random"
+-                        data-chart-library="gauge"
+-                        data-gauge-max-value="32767"
+-                        data-width="45%"
+-                        data-after="-600"
+-                        data-points="60"
+-                        data-title="Updates Every 10&nbsp;Sec"
+-                        data-units="important metric"
+-                        data-colors="#C55"
+-                        ></div>
+-                <div data-netdata="example.random2"
+-                        data-dimensions="random"
+-                        data-chart-library="gauge"
+-                        data-gauge-max-value="32767"
+-                        data-width="45%"
+-                        data-after="-600"
+-                        data-points="2"
+-                        data-title="Updates Every 5&nbsp;Mins"
+-                        data-units="important metric"
+-                        data-colors="#C55"
+-                        ></div>
+-            </div>
+-        </div>
+-        <div role="tabpanel" class="tab-pane" id="easypiechart">
+-
+-            <div style="display: inline-block; width: 25%">
+-                <div style="font-size: 1.2vw; color: #666; padding-top: 10px;"><i class="fa fa-comment"></i> I can trace an issue like this</div>
+-                <br/>
+-                <div data-netdata="example.random2"
+-                        data-dimensions="random"
+-                        data-chart-library="easypiechart"
+-                        data-easypiechart-max-value="32767"
+-                        data-width="100%"
+-                        data-after="-600"
+-                        data-points="600"
+-                        data-title="1/second (netdata&nbsp;default)"
+-                        data-units="important metric"
+-                        data-colors="#5A5"
+-                        ></div>
+-            </div>
+-            <div style="display: inline-block; width: 40%">
+-                <div style="font-size: 1.2vw; color: #666;"><i class="fa fa-comment"></i> Can you trace an issue like these?<br/>&nbsp;<br/></div>
+-                <div data-netdata="example.random2"
+-                        data-dimensions="random"
+-                        data-chart-library="easypiechart"
+-                        data-easypiechart-max-value="32767"
+-                        data-width="45%"
+-                        data-after="-600"
+-                        data-points="60"
+-                        data-title="Updates Every 10&nbsp;Sec"
+-                        data-units="important metric"
+-                        data-colors="#C55"
+-                        ></div>
+-                <div data-netdata="example.random2"
+-                        data-dimensions="random"
+-                        data-chart-library="easypiechart"
+-                        data-easypiechart-max-value="32767"
+-                        data-width="45%"
+-                        data-after="-600"
+-                        data-points="2"
+-                        data-title="Updates Every 5&nbsp;Mins"
+-                        data-units="important metric"
+-                        data-colors="#C55"
+-                        ></div>
+-            </div>
+-        </div>
+-    </div>
+-    <div style="font-size: 1.5vw;">Hover on the chart below, to see the selected value on the charts above!</div>
+-    <div data-netdata="example.random2"
+-            data-dimensions="random"
+-            data-dygraph-theme="sparkline"
+-            data-width="100%"
+-            data-height="20vh"
+-            data-after="-600"
+-            data-points="600"
+-            data-title="1/second (netdata&nbsp;default)"
+-            data-units="something"
+-            data-colors="#888"
+-            ></div>
+-</div>
+-</body>
+-</html>
+diff --git a/web/gui/demosites.html b/web/gui/demosites.html
+deleted file mode 100644
+index e8a310a1..00000000
+--- a/web/gui/demosites.html
++++ /dev/null
+@@ -1,1469 +0,0 @@
+-<!doctype html>
+-<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
+-<html lang=en-us xmlns="http://www.w3.org/1999/html">
+-<head>
+-    <meta http-equiv="Refresh" content="0; url=https://www.netdata.cloud">
+-    <meta charset=utf-8>
+-    <title>NetData: Get control of your Linux Servers. Simple. Effective. Awesome.</title>
+-    <meta name=author content="Costa Tsaousis">
+-    <meta name=description content="Unparalleled insights, in real-time, of everything happening on your Linux systems and applications, with stunning, interactive web dashboards and powerful performance and health alarms.">
+-
+-    <meta name=viewport content="width=device-width,initial-scale=1">
+-    <link rel=apple-touch-icon href=apple-touch-icon.png>
+-    <link rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAP9JREFUeNpiYBgFo+A/w34gpiZ8DzWzAYgNiHGAA5UdgA73g+2gcyhgg/0DGQoweB6IBQYyFCCOGOBQwBMd/xnW09ERDtgcoEBHB+zHFQrz6egIBUasocDAcJ9OxWAhE4YQI8MDILmATg7wZ8QRDfQKhQf4Cie6pAVGPA4AhQKo0BCgZRAw4ZSBpIWJNI6CD4wEKikBaFqgVSgcYMIrzcjwgcahcIGRiPYCLUPBkNhWUwP9akVcoQBpatG4MsLviAIqWj6f3Absfdq2igg7IIEKDVQKEzN5ofAenJCp1I8gJRTug5tfkGIdR1FDniMI+QZUjF8Amn5htOdHCAAEGACE6B0cS6mrEwAAAABJRU5ErkJggg==" />
+-
+-    <meta property="og:url"                content="https://my-netdata.io" />
+-    <meta property="og:type"               content="website" />
+-    <meta property="og:title"              content="Get control of your Linux Servers. Simple. Effective. Awesome." />
+-    <meta property="og:description"        content="Unparalleled insights, in real-time, of everything happening on your Linux systems and applications, with stunning, interactive web dashboards and powerful performance and health alarms." />
+-    <meta property="og:image"              content="https://cloud.githubusercontent.com/assets/2662304/22945737/e98cd0c6-f2fd-11e6-96f1-5501934b0955.png" />
+-    <meta property="og:image:type"         content="image/png" />
+-    <meta property="fb:app_id"             content="1200089276712916" />
+-
+-    <meta name="twitter:card"              content="summary" />
+-    <meta name="twitter:site"              content="@linuxnetdata" />
+-    <meta name="twitter:title"             content="Get control of your Linux Servers. Simple. Effective. Awesome." />
+-    <meta name="twitter:description"       content="Unparalleled insights, in real-time, of everything happening on your Linux systems and applications, with stunning, interactive web dashboards and powerful performance and health alarms." />
+-    <meta name="twitter:image"             content="https://cloud.githubusercontent.com/assets/2662304/14092712/93b039ea-f551-11e5-822c-beadbf2b2a2e.gif" />
+-
+-    <meta name="google-site-verification" content="3Xmk2kyCvai8p9HEnYHoQ9RBW20-b1NvPAgu07Fkkds" />
+-    <meta name="msvalidate.01" content="896DCA31C9A664CE359FCF1A645DD476" />
+-
+-    <style>/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */
+-html {
+-    line-height: 1.15;
+-    -ms-text-size-adjust: 100%;
+-    -webkit-text-size-adjust: 100%;
+-    color: #fff;
+-    font: 17px/1.4 'Open Sans', sans-serif;
+-    text-align: center
+-}
+-
+-body {
+-    margin: 0;
+-    background-color: #2f3135;
+-    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA9BAMAAAAOkGejAAAAGFBMVEUKCgoUFBQAAAAPDw8ZGRkeHh4jIyMFBQUUJmucAAAACHRSTlMzMzMzMzMzM85JBgUAAAV1SURBVDjLBQC3tkMA9OqrbtWtCKwErLoVhDUP5PffAUvqhtJFWytU/UqOWbf0nG8ZSVyyfSPwrjqzxYailPJtJu/uihN7np+51RrBgYosPTzBElTZCg8JieV4W/HJciqhFwhQLBmkX5JnNzzMlOGvQChGCKbanFWBgVeRCr9L6BZCgZxB/0wN7zTO2QuP80SIL3F5Ydbnhz12iE/nSOMrqwK/OMfbAYHkioJlnlj9CKUbeomN61U5LQ6nWRmg+tfrDusm2LHGDnRDdHUp5CLTvoHrwgtZlIr/+FyoPz2tz/HiQzc8x1TWqAZp99yto4qGuAs20qucNqPyUAyqHuAp2Hhv0OR1LC+g2voMngjB2uvyVvf0aFhD1Mi/f5Q6MER7SzJWu2AW3my9l8mB4W3WfCqwf+ikfc7pudFVvOMy0ikuSoF47zw6UYPxdqWRRSRo91RZtWYa/sQeri7tMPKcCao0vs9QTQC+8CuoReAkHuKRZCi2qtv9zJLAHfSoRltH/+sj9rlgdBTsfUbTEb7oTbTJ8acxbjMQnaftBkRVVerOeKhKr3jkRzTzqS6RpJNvF0MhOBQm/BRXor/MU/YjObdYIu1/iaQ+IviYnlsG6r3cbQoB7cj4SPgMSkLzgIM24+LSjb2sYxWDtIhCdzBfS5Kh768XgH5jkSLjrvRX/nQnv+SXQMvagpPVScAZwWhVbvPdPqcr3X/u8z558ddIdjmVMH9CIVvrW+8rPVq6M54Pf+tebGkIXwPevaCgdQ59wWbULrPB4dPT8suLWr13YKUuDNTpGBspJ9fPGSNOEjp2TYXTIgF8QgEtzX0gIbXRP8JGMbxh1uHA/CwE4a/KHUc8KzV868fO4o+8GNcNvdPaKfzprkunXIthFS9MqpEG1p7ozWTJTcnAlvUnjixEaGn5ll1yuZbtIgS/r2ISBSDE2nsksYx7YFwH2ytB0rXzqh52qJowchJSI3RJmxHeJGZFDq37LWVmzvkgA7zjT2iOsHsdb9viBQLPx3gUmys1cQG6HOEsopo6glj0VXdyli/FJsnSbg5FQLpDO1xiy0ozQy0InDVNZTuXbhENG9gu28ZoHg/de53YTAVqCwl966V7VX/g+AW3ysMyMjXNhOuaLFmBJ2Z1x9LfG55m/34snAnOgXbMqZIbaop8Zjk5P3fAw9h8vkwHKZAC7yqW6+85ZdpAFD8iAjbVRj8BI3PMYJ2oiKNrZHKSnfNJ2UZwtcT9IryvNrGxdqtCx4vc74z39odPA/h5f/MJu46HKUOcbURZd/E2QH6Kgv8Aa2PSevG2gMfoYHWdN38kadbiFHonAjv50PjgyFZwannFGebUjVmxFnokoTbwWBNVd7qx9KG1joZ69npEk0jRr7/aBYQ5ipNcGRvqjeT+kFjTgv7n33L0zlBIH6CoeaPm9eQN6uKmSwE/LAtDPgMNAOQ5X1Vr8Zd0BQlLTV88U6LzD+6iwQp9NSHD5uCcqml/N0NgRmDN9vNS6A/QJBm2jvBbFTLvly/mtLX1rg5kwgPvA4rA+LIdN3bkVvhrqk8OUYZpuYxaXW/gPVlDxtru6+3Z0KY5DMac3pQzo8y7hO2qxdd6lnvUSdXfFRduigV0YuZv9peBHwHix+d4M7fL/Y44jX6S5ZdOzBoEC2fEohdSE7PTjRBUT3T+jclLxWbKdEOoiuB81dV0xo2pFPOXZmpEMueTDrAjAr8k6y15pMsoCHOyT5qlyWn85HLLuyyAWMlmmjYSNKnv9nRsTib5DSbWLPkJjoVihW/eRQqy/dja151zycTHTBmuroDeXRvVzJ3VFWB65e+L6xu+D5fa+D0BESL4VjlKSKrvs9W69lhj2345pBjIr3+RSJFuS0A/sQAAAABJRU5ErkJggg==)
+-}
+-
+-a {
+-    background-color: transparent;
+-    -webkit-text-decoration-skip: objects;
+-    color: #069;
+-    text-decoration: none
+-}
+-
+-a:active, a:hover {
+-    outline-width: 0
+-}
+-
+-strong {
+-    font-weight: bolder
+-}
+-
+-h1 {
+-    font-size: 2.9em;
+-    line-height: 1.2em;
+-    margin: 0 .5em .75em
+-}
+-
+-img {
+-    border-style: none;
+-    vertical-align: middle
+-}
+-
+-[type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner, button::-moz-focus-inner {
+-    border-style: none;
+-    padding: 0
+-}
+-
+-[type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring, button:-moz-focusring {
+-    outline: 1px dotted ButtonText
+-}
+-
+-a:active, a:focus, a:hover {
+-    text-decoration: underline;
+-}
+-
+-::-moz-selection {
+-    background-color: #b3d4fc;
+-    text-shadow: none;
+-}
+-
+-::selection {
+-    background-color: #b3d4fc;
+-    text-shadow: none;
+-}
+-
+-h2 {
+-    font-size: 2em;
+-    margin: 1.5em 0;
+-}
+-
+-h3 {
+-    color: #555;
+-    font-size: 1.5em;
+-    margin: 0 0 .5em;
+-}
+-
+-p {
+-    margin: 0 0 2em;
+-}
+-
+-.quote {
+-    font-size: 1.15em;
+-    margin: 0 0 .5em;
+-    text-align: center;
+-}
+-
+-.title {
+-    /* opacity: 0; */
+-    /* transition: opacity 500ms; */
+-}
+-
+-.titlefadein {
+-    opacity: 1;
+-    transition: opacity 500ms;
+-}
+-
+-.grid {
+-    margin: 0 -15px;
+-    letter-spacing: -.31em;
+-    word-spacing: -.43em;
+-    text-rendering: optimizespeed
+-}
+-
+-.grid-title {
+-    text-align: left;
+-}
+-
+-.grid-cell {
+-    display: inline-block;
+-    letter-spacing: normal;
+-    text-align: left;
+-    text-rendering: auto;
+-    vertical-align: top;
+-    width: 50%;
+-    word-spacing: normal
+-}
+-
+-.grid-cell > * {
+-    padding: 0 15px
+-}
+-
+-.inline-block-list {
+-    list-style-type: none;
+-    margin: 0;
+-    padding: 0
+-}
+-
+-.inline-block-list li {
+-    display: inline-block;
+-    margin: 0 0 0 1.5em;
+-    padding: 0;
+-    vertical-align: top
+-}
+-
+-.inline-block-list li:first-child {
+-    margin-left: 0
+-}
+-
+-.flex-embed {
+-    background-color: #000;
+-    box-shadow: 0 0 10px #000;
+-    height: 0;
+-    overflow: hidden;
+-    padding-bottom: 56.25%;
+-    position: relative
+-}
+-
+-.flex-embed a, .flex-embed img {
+-    bottom: 0;
+-    height: 100%;
+-    left: 0;
+-    position: absolute;
+-    top: 0;
+-    width: 100%
+-}
+-
+-.flex-embed .play-btn {
+-    background: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBkPSJNMjU2LDkyLjQ4MWM0NC40MzMsMCw4Ni4xOCwxNy4wNjgsMTE3LjU1Myw0OC4wNjRDNDA0Ljc5NCwxNzEuNDExLDQyMiwyMTIuNDEzLDQyMiwyNTUuOTk5cy0xNy4yMDYsODQuNTg4LTQ4LjQ0OCwxMTUuNDU1Yy0zMS4zNzIsMzAuOTk0LTczLjEyLDQ4LjA2NC0xMTcuNTUyLDQ4LjA2NHMtODYuMTc5LTE3LjA3LTExNy41NTItNDguMDY0QzEwNy4yMDYsMzQwLjU4Nyw5MCwyOTkuNTg1LDkwLDI1NS45OTlzMTcuMjA2LTg0LjU4OCw0OC40NDgtMTE1LjQ1M0MxNjkuODIxLDEwOS41NSwyMTEuNTY4LDkyLjQ4MSwyNTYsOTIuNDgxIE0yNTYsNTIuNDgxIGMtMTEzLjc3MSwwLTIwNiw5MS4xMTctMjA2LDIwMy41MThjMCwxMTIuMzk4LDkyLjIyOSwyMDMuNTIsMjA2LDIwMy41MmMxMTMuNzcyLDAsMjA2LTkxLjEyMSwyMDYtMjAzLjUyQzQ2MiwxNDMuNTk5LDM2OS43NzIsNTIuNDgxLDI1Niw1Mi40ODFMMjU2LDUyLjQ4MXogTTIwNi41NDQsMzU3LjE2MVYxNTkuODMzbDE2MC45MTksOTguNjY2TDIwNi41NDQsMzU3LjE2MXoiPjwvcGF0aD48L3N2Zz4K);
+-    height: 150px;
+-    left: 50%;
+-    margin-left: -75px;
+-    margin-top: -75px;
+-    position: absolute;
+-    top: 50%;
+-    -webkit-transition: 1s;
+-    transition: 1s;
+-    width: 150px
+-}
+-
+-.flex-embed:hover .play-btn {
+-    opacity: .5
+-}
+-
+-.clearfix:after, .clearfix:before {
+-    content: ' ';
+-    display: table
+-}
+-
+-.clearfix:after {
+-    clear: both
+-}
+-
+-.clearfix {
+-    *zoom: 1
+-}
+-
+-.container {
+-    margin: 0 auto;
+-    max-width: 760px;
+-    padding: 0 10px
+-}
+-
+-.aside {
+-    background-color: #eee;
+-    border: solid #e3e3e3;
+-    border-width: 1px 0;
+-    font-size: 1.125em;
+-    padding: 1em 0
+-}
+-
+-.btn, .cta-option {
+-    display: inline-block;
+-    position: relative
+-}
+-
+-.cta-option {
+-    margin: 2.5em .5em 0;
+-    vertical-align: top
+-}
+-
+-.btn {
+-    color: #fff;
+-    font-size: 1.5em;
+-    padding: .6em 1em;
+-    text-decoration: none;
+-    text-shadow: 0 -1px 0 rgba(0, 0, 0, .5);
+-    vertical-align: middle;
+-    border-radius: 4px;
+-    border: 1px solid #333
+-}
+-
+-.btn:active, .btn:focus, .btn:hover {
+-    text-decoration: none
+-}
+-
+-.btn-download {
+-    background-color: #d9750b;
+-    background-image: -webkit-linear-gradient(#f90 10%, #e76a00 100%);
+-    background-image: linear-gradient(#f90 10%, #e76a00 100%);
+-    box-shadow: 0 1px 0 rgba(255, 255, 255, .5) inset, 0 1px 3px rgba(0, 0, 0, .2);
+-    border: 1px solid #995309
+-}
+-
+-.btn-download:active, .btn-download:focus, .btn-download:hover {
+-    background-color: #e0811b;
+-    background-image: -webkit-linear-gradient(#f0a100 10%, #f70 100%);
+-    background-image: linear-gradient(#f0a100 10%, #f70 100%)
+-}
+-
+-.btn-download:active {
+-    background-color: #cf6a00;
+-    box-shadow: 0 2px 3px 0 rgba(0, 0, 0, .2) inset
+-}
+-
+-.btn-alt {
+-    background-color: #444;
+-    border-color: #222;
+-    box-shadow: none;
+-    font-size: 1.25em;
+-    margin-top: .25em
+-}
+-
+-.btn-alt:active, .btn-alt:focus, .btn-alt:hover {
+-    background-color: #555
+-}
+-
+-.star {
+-    color: #e08524
+-}
+-
+-.Icon {
+-    display: inline-block;
+-    height: 16px;
+-    margin: -3px 1px 0 0;
+-    vertical-align: middle;
+-    width: 16px
+-}
+-
+-.Icon--github {
+-    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjEgMTIxIj48ZyBmaWxsPSIjMTkxNzE3Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTYwLjUgMS42Yy0zMy4zIDAtNjAuNCAyNy02MC40IDYwLjQgMCAyNi43IDE3LjMgNDkuMyA0MS4zIDU3LjMgMyAuNiA0LjEtMS4zIDQuMS0yLjkgMC0xLjQtLjEtNi4yLS4xLTExLjItMTYuNyAzLjYtMjAuMy03LjItMjAuMy03LjItMi43LTctNi43LTguOC02LjctOC44LTUuNS0zLjcuNC0zLjcuNC0zLjcgNi4xLjQgOS4zIDYuMiA5LjMgNi4yIDUuNCA5LjIgMTQuMSA2LjYgMTcuNiA1IC41LTMuOSAyLjEtNi42IDMuOC04LjEtMTMuNC0xLjQtMjcuNS02LjYtMjcuNS0yOS44IDAtNi42IDIuNC0xMiA2LjItMTYuMi0uNi0xLjUtMi43LTcuNy42LTE2IDAgMCA1LjEtMS42IDE2LjYgNi4yIDQuOC0xLjMgMTAtMiAxNS4xLTJzMTAuMy43IDE1LjEgMmMxMS41LTcuOCAxNi42LTYuMiAxNi42LTYuMiAzLjMgOC4zIDEuMiAxNC41LjYgMTYgMy45IDQuMiA2LjIgOS42IDYuMiAxNi4yIDAgMjMuMi0xNC4xIDI4LjMtMjcuNSAyOS44IDIuMiAxLjkgNC4xIDUuNSA0LjEgMTEuMiAwIDguMS0uMSAxNC42LS4xIDE2LjYgMCAxLjYgMS4xIDMuNSA0LjEgMi45IDI0LTggNDEuMy0zMC42IDQxLjMtNTcuMyAwLTMzLjQtMjctNjAuNC02MC40LTYwLjR6Ii8+PHBhdGggZD0iTTIzIDg4LjNjLS4xLjMtLjYuNC0xIC4ycy0uNy0uNi0uNS0uOWMuMS0uMy42LS40IDEtLjJzLjYuNi41Ljl6bS0uOC0uNU0yNS40IDkxYy0uMy4zLS45LjEtMS4yLS4zLS40LS40LS41LTEtLjItMS4zLjMtLjMuOC0uMSAxLjIuMy41LjUuNSAxLjEuMiAxLjN6bS0uNS0uNk0yNy44IDk0LjVjLS40LjMtMSAwLTEuMy0uNS0uNC0uNS0uNC0xLjIgMC0xLjQuNC0uMyAxIDAgMS4zLjUuNC41LjQgMS4xIDAgMS40em0wIDBNMzEuMSA5Ny45Yy0uMy40LTEgLjMtMS42LS4yLS41LS41LS43LTEuMi0uMy0xLjUuMy0uNCAxLS4zIDEuNi4yLjUuNC42IDEuMS4zIDEuNXptMCAwTTM1LjYgOTkuOGMtLjEuNS0uOC43LTEuNS41LS43LS4yLTEuMS0uOC0xLTEuMi4xLS41LjgtLjcgMS41LS41LjcuMiAxLjEuNyAxIDEuMnptMCAwTTQwLjUgMTAwLjJjMCAuNS0uNi45LTEuMy45LS43IDAtMS4zLS40LTEuMy0uOXMuNi0uOSAxLjMtLjljLjcgMCAxLjMuNCAxLjMuOXptMCAwTTQ1LjEgOTkuNGMuMS41LS40IDEtMS4xIDEuMS0uNy4xLTEuMy0uMi0xLjQtLjctLjEtLjUuNC0xIDEuMS0xLjEuNy0uMSAxLjMuMiAxLjQuN3ptMCAwIi8+PC9nPjwvc3ZnPgo=)
+-}
+-
+-.Icon--html5 {
+-    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjUwIDEwMSA0MTIgNDEyIj48cGF0aCBmaWxsPSIjRTQ0RDI2IiBkPSJNMTA3LjY0NCA0NzAuODc3bC0zMy4wMTEtMzcwLjI1N2gzNjIuNzM0bC0zMy4wNDYgMzcwLjE5OS0xNDguNTQzIDQxLjE4MXoiLz48cGF0aCBmaWxsPSIjRjE2NTI5IiBkPSJNMjU2IDQ4MC41MjNsMTIwLjAzLTMzLjI3NyAyOC4yNC0zMTYuMzUyaC0xNDguMjd6Ii8+PHBhdGggZmlsbD0iI0VCRUJFQiIgZD0iTTI1NiAyNjguMjE3aC02MC4wOWwtNC4xNS00Ni41MDFoNjQuMjR2LTQ1LjQxMWgtMTEzLjg2OGwxLjA4NyAxMi4xODMgMTEuMTYxIDEyNS4xMzloMTAxLjYyem0wIDExNy45MzZsLS4xOTkuMDUzLTUwLjU3NC0xMy42NTYtMy4yMzMtMzYuMjE3aC00NS41ODVsNi4zNjIgNzEuMzAxIDkzLjAyIDI1LjgyMy4yMDktLjA1OHoiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMjU1Ljg0MyAyNjguMjE3djQ1LjQxaDU1LjkxOGwtNS4yNzEgNTguODk0LTUwLjY0NyAxMy42N3Y0Ny4yNDRsOTMuMDk0LTI1LjgwMS42ODMtNy42NzIgMTAuNjcxLTExOS41NTEgMS4xMDgtMTIuMTk0aC0xMi4yMzd6bTAtOTEuOTEydjQ1LjQxMWgxMDkuNjg4bC45MTEtMTAuMjA3IDIuMDY5LTIzLjAyMSAxLjA4Ni0xMi4xODN6Ii8+PC9zdmc+Cg==)
+-}
+-
+-.Icon--stackoverflow {
+-    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjMgMi44IDU4LjIgNTgiPjxwYXRoIGQ9Ik05LjMwNSAzNi44NDhsNC40MDEuMDQzLS4xNTMgMTkuNTk4aDI5LjI5MXYtMTkuNTI4aDQuNjM4djI0LjI4N2gtMzguMjAxbC4wMjQtMjQuNDAxem03LjE3NyAxMS41ODZoMjIuOTQ1djQuODgyaC0yMi45NDV6IiBmaWxsPSIjOTE5MTkxIi8+PHBhdGggZmlsbD0iI2E3OGI2OCIgZD0iTTE3LjAyIDM5LjY0OGwyMi45NiAyLjIxNi0uNDgxIDQuOTgxLTIyLjk2LTIuMjE2eiIvPjxwYXRoIGZpbGw9IiNjMTk2NTMiIGQ9Ik0xOS4xMjEgMjkuNzEzbDIyLjIgNi4yNjYtMS4zNTkgNC44MTYtMjIuMi02LjI2NnoiLz48cGF0aCBmaWxsPSIjZDQ4YzI4IiBkPSJNMjQuNTAxIDE4LjQ4NGwxOS43NDUgMTEuOTI2LTIuNTg3IDQuMjgzLTE5Ljc0NS0xMS45MjZ6Ii8+PHBhdGggZmlsbD0iI2ZlODkwOCIgZD0iTTM1LjczMyA3Ljg0OWwxMy40MzUgMTguNzUxLTQuMDY4IDIuOTE0LTEzLjQzNS0xOC43NTF6Ii8+PHBhdGggZmlsbD0iI2ZmN2ExNSIgZD0iTTUxLjM0IDIuNzUxbDMuODAyIDIyLjc1Mi00LjkzNi44MjUtMy44MDItMjIuNzUyeiIvPjwvc3ZnPgo=)
+-}
+-
+-.site-header {
+-    padding-top: 50px
+-}
+-
+-.site-logo {
+-    color: #fff;
+-    float: left;
+-    font-size: 25px;
+-    font-weight: 700;
+-    line-height: 32px;
+-    text-decoration: none;
+-    text-shadow: 2px 2px 0 #000;
+-    text-transform: uppercase
+-}
+-
+-.site-nav {
+-    float: right;
+-    list-style-type: none;
+-    margin: 7px 0 0;
+-    padding: 0
+-}
+-
+-.site-nav a {
+-    color: #ffa000;
+-    display: block;
+-    text-decoration: none;
+-    text-transform: uppercase
+-}
+-
+-.site-nav a:active, .site-nav a:focus, .site-nav a:hover {
+-    color: #fff
+-}
+-
+-.site-promo {
+-    padding: 4em 0 6em;
+-    color: white;
+-}
+-
+-.site-promo .description {
+-    color: #ddd;
+-    font-size: 1.2em;
+-    margin: 1em 2em 0
+-}
+-
+-.last-update {
+-    color: #999;
+-    display: block;
+-    font-size: .75em;
+-    margin-top: 10px
+-}
+-
+-.site-section {
+-    background-color: #f9f9f9;
+-    color: #333;
+-    overflow: hidden;
+-    padding: 2em 0 2em
+-}
+-
+-.site-section-gray {
+-    background-color: #f5f5f5;
+-    color: #333;
+-    overflow: hidden;
+-    padding: 2em 0 2em
+-}
+-
+-.site-section-dark {
+-    background-color: transparent;
+-    color: #fff;
+-    text-align: center;
+-    padding: 2em 0 3em
+-}
+-
+-.site-section-dark .content {
+-    max-width: 720px;
+-    margin: auto;
+-    padding: 10px
+-}
+-
+-.site-section-dark h2 {
+-    margin: 1em 0
+-}
+-.site-section-dark h3 {
+-    color: white;
+-}
+-
+-.in-the-wild {
+-    font-size: 1.25em;
+-    margin: 0 auto;
+-    max-width: 720px
+-}
+-
+-.site-footer {
+-    font-size: .875em;
+-    padding: 2em
+-}
+-
+-.site-footer a {
+-    color: #ffa000
+-}
+-
+-@media only screen and (max-width: 800px) {
+-    .site-logo, .site-nav {
+-        float: none
+-    }
+-
+-    .site-nav li {
+-        margin: 0 .5em
+-    }
+-
+-    .site-header {
+-        padding-top: 40px
+-    }
+-
+-    .site-promo {
+-        padding: 3em 0;
+-        color: white;
+-    }
+-
+-    .site-section {
+-        padding: 0 1em 4em
+-    }
+-}
+-
+-@media only screen and (max-width: 600px) {
+-    html {
+-        font-size: 14px
+-    }
+-
+-    .last-update, .site-footer {
+-        font-size: 1em
+-    }
+-}
+-
+-@media only screen and (max-width: 460px) {
+-    .grid-cell {
+-        width: 100%
+-    }
+-}
+-
+-@media only screen and (max-width: 420px) {
+-    h1 {
+-        font-size: 2.5em
+-    }
+-
+-    html {
+-        font-size: 13px
+-    }
+-}
+-
+-@media print {
+-    * {
+-        background-color: transparent !important;
+-        box-shadow: none !important;
+-        color: #000 !important;
+-        text-shadow: none !important
+-    }
+-
+-    a, a:visited {
+-        text-decoration: underline
+-    }
+-
+-    img {
+-        page-break-inside: avoid;
+-        max-width: 100% !important
+-    }
+-
+-    h1 {
+-        padding: 1em 0 0
+-    }
+-
+-    .site-promo {
+-        margin: 1em;
+-        padding: 0;
+-        color: white;
+-    }
+-
+-    .site-section {
+-        padding: 0;
+-        margin: 2em 1em
+-    }
+-
+-    .site-section-dark {
+-        display: none
+-    }
+-
+-    h2, h3, p {
+-        orphans: 3;
+-        widows: 3
+-    }
+-
+-    h2, h3 {
+-        page-break-after: avoid
+-    }
+-}
+-</style>
+-
+-<script>
+-    // --- OPTIONS FOR THE DASHBOARD --
+-
+-    // this section has to appear before loading dashboard.js
+-
+-    // Select a theme.
+-    // uncomment on of the two themes:
+-
+-    // var netdataTheme = 'default'; // this is white
+-    var netdataTheme = 'slate'; // this is dark
+-
+-    var netdataNoBootstrap = true;
+-
+-    // Set the default netdata server.
+-    // on charts without a 'data-host', this one will be used.
+-    // the default is the server that dashboard.js is downloaded from.
+-
+-    // var netdataServer = 'http://my.server:19999/';
+-</script>
+-
+-<!--
+-    --- LOAD dashboard.js ---
+-
+-    to host this HTML file on your web server,
+-    you have to load dashboard.js from the netdata server.
+-
+-    So, pick one the two below
+-    If you pick the first, set the server name/IP.
+-
+-    The second assumes you host this file on /usr/share/netdata/web
+-    and that you have chown it to be owned by netdata:netdata
+--->
+-<!-- <script type="text/javascript" src="http://my.server:19999/dashboard.js"></script> -->
+-<script type="text/javascript" src="dashboard.js?v20190902-0"></script>
+-
+-<script>
+-    // --- OPTIONS FOR THE CHARTS --
+-
+-    // destroy charts not shown (lowers memory on the browsers)
+-    // set this to 'true' to destroy, 'false' to hide the charts
+-    NETDATA.options.current.destroy_on_hide = false;
+-
+-    // set this to false, to always show all dimensions
+-    NETDATA.options.current.eliminate_zero_dimensions = true;
+-
+-    // set this to false, to lower the pressure on the browser
+-    NETDATA.options.current.concurrent_refreshes = true;
+-
+-    // if you need to support slow mobile phones, set this to false
+-    NETDATA.options.current.parallel_refresher = true;
+-
+-    // set this to false, to always update the charts, even if focus is lost
+-    NETDATA.options.current.stop_updates_when_focus_is_lost = true;
+-
+-    // since we have many servers and limited sockets,
+-    // abort ajax calls when we scroll
+-    NETDATA.options.current.abort_ajax_on_scroll = true;
+-
+-    // do not to give errors on netdata demo servers for 60 seconds
+-    NETDATA.options.current.retries_on_data_failures = 60;
+-</script>
+-
+-<style>
+-    .mygauge-combo {
+-        display: inline-block;
+-    }
+-
+-    .mygauge-combo20 {
+-        display: inline-block;
+-        min-width: 150px;
+-        width: 49%;
+-        padding-top: 40px;
+-        text-align: center;
+-    }
+-
+-    .mygauge-combo30 {
+-        display: inline-block;
+-        min-width: 150px;
+-        width: 32%;
+-        padding-top: 40px;
+-        text-align: center;
+-    }
+-
+-    .mygauge {
+-        position: relative;
+-        display: block;
+-        width: 171px;
+-        /* height: 150px; */
+-    }
+-
+-    .mygauge-button {
+-        display: block;
+-    }
+-
+-    .mygauge-legend-button {
+-        font-size: 13px;
+-    }
+-
+-    .mygause-donation {
+-        font-size: 9px;
+-        color: #999;
+-    }
+-
+-    .mysparkline {
+-        position: relative;
+-        display: inline-block;
+-        width: 100%;
+-        height: 50px;
+-        text-align: left;
+-    }
+-
+-    .mysparkline-overchart-label {
+-        position: absolute;
+-        display: block;
+-        top: -15px;
+-        left: 10px;
+-        bottom: 0;
+-        right: 0;
+-        font-size: 14px;
+-        z-index: 1;
+-        pointer-events: none;
+-    }
+-
+-    .mysparkline-overchart-label2 {
+-        position: absolute;
+-        display: block;
+-        top: -15px;
+-        left: 10px;
+-        bottom: 0;
+-        right: 0;
+-        font-size: 8px;
+-        color: #676b70;
+-        z-index: 1;
+-        pointer-events: none;
+-    }
+-
+-    .mysparkline-overchart-value {
+-        position: absolute;
+-        display: block;
+-        top: 0px;
+-        left: 10px;
+-        bottom: 0;
+-        right: 0;
+-        font-size: 40px;
+-        z-index: 2;
+-        text-shadow: #333 0px 0px 2px;
+-        pointer-events: none;
+-    }
+-
+-    .mysparkline-overchart-value-center {
+-        position: absolute;
+-        display: block;
+-        top: 5px;
+-        left: 0px;
+-        bottom: 0;
+-        right: 0;
+-        font-size: 35px;
+-        font-weight: bold;
+-        text-align: center;
+-        z-index: 2;
+-        text-shadow: #333 0px 0px 2px;
+-        pointer-events: none;
+-    }
+-
+-    .fb-share-button span {
+-        top: 0px;
+-    }
+-    .fb-like span {
+-        top: 0px;
+-    }
+-    .fb-follow span {
+-        top: 0px;
+-    }
+-
+-</style>
+-</head>
+-<body>
+-<div class=container>
+-    <div class="site-header clearfix" role=banner>
+-        <div class=site-logo>my-netdata.io</div>
+-        <ul class="site-nav inline-block-list">
+-            <li><a href=https://github.com/netdata/netdata data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label="Source code" target="_blank">Source code</a>
+-            <li><a href=https://docs.netdata.cloud data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=Docs target="_blank">Docs</a>
+-        </ul>
+-    </div>
+-    <div class=site-promo><h1><span class="title">Monitor your systems and applications, the right way!</span></h1>
+-        <p class=description>
+-            <strong>Unparalleled</strong> insights, in <strong>real-time</strong>,
+-            of <strong>everything</strong> happening on your systems and applications,
+-            with stunning, <strong>interactive</strong> web dashboards
+-            and powerful <strong>performance</strong> and <strong>health</strong> alarms.
+-        <div class=cta-option>
+-            <a class="btn btn-download" href="https://docs.netdata.cloud/packaging/installer/" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=Install><strong>Install netdata now</strong></a>
+-            <a class=last-update href="https://github.com/netdata/netdata/releases" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=Releases>See netdata releases</a></div>
+-        <div class=cta-option>
+-            <a class="btn btn-alt" href="#demosites" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=Demo>netdata live demo</a>
+-        </div>
+-    </div>
+-</div>
+-<div class=site-section>
+-    <div class=container><h2>Enter the world of Netdata!</h2>
+-        <div class="grid-title">
+-            <h3><span class=star>&#x2605;</span> 1s granularity</h3>
+-        </div>
+-        <div class=grid>
+-            <div class=grid-cell>
+-                <p>
+-                    <b>Per second</b> data collection and visualization, for all metrics!
+-                </p>
+-                <p>
+-                    Netdata <b>zooms into the problems</b> by providing higher resolution information, compared to any other monitoring solution.
+-                </p>
+-            </div>
+-            <div class=grid-cell>
+-                <p class="quote"><i>
+-                    The world goes real-time.
+-                    <br/>&nbsp;<br/>
+-                    High resolution metrics are required to effectively monitor and troubleshoot systems and applications, especially on virtual environments.
+-                </i></p>
+-            </div>
+-        </div>
+-    </div>
+-    <div>
+-        <a href="https://docs.netdata.cloud/docs/why-netdata/1s-granularity/">Learn more about high resolution metrics</a>
+-    </div>
+-</div>
+-
+-<div class="site-section site-section-gray">
+-    <div class=container>
+-        <div class="grid-title">
+-            <h3><span class=star>&#x2605;</span> Unlimited metrics</h3>
+-        </div>
+-        <div class=grid>
+-            <div class=grid-cell>
+-                <p>
+-                    Use all the metrics, from all available sources!
+-                </p>
+-                <p>
+-                    Netdata collects all the metrics native console tools do. It has been <b>designed to kill the console</b> for troubleshooting infrastructure slowdowns and outages.
+-                </p>
+-            </div>
+-            <div class=grid-cell>
+-                <p class="quote"><i>
+-                    All metrics are important and all should be available when you need them.
+-                    <br/>&nbsp;<br/>
+-                    Filtering out most metrics is like reading a book by skipping most of its pages.
+-                </i></p>
+-            </div>
+-        </div>
+-    </div>
+-    <div>
+-        <a href="https://docs.netdata.cloud/docs/why-netdata/unlimited-metrics/">Learn more about unlimited metrics</a>
+-    </div>
+-</div>
+-<div class="site-section">
+-    <div class=container>
+-        <div class="grid-title">
+-            <h3><span class=star>&#x2605;</span> Meaningful presentation</h3>
+-        </div>
+-        <div class=grid>
+-            <div class=grid-cell>
+-                <p>
+-                    Explore all metrics in a meaningful, easy to understand way!
+-                </p>
+-                <p>
+-                    Netdata engineers and experts on our community organize metrics in a meaningful way, so that you can learn and understand them right on the job, while troubleshooting issues of your infrastructure.
+-                </p>
+-            </div>
+-            <div class=grid-cell>
+-                <p class="quote"><i>
+-                    Metrics are a lot more than name-value pairs over time.
+-                    <br/> <br/>
+-                    It is just not practical to require from all users to have a deep understanding of all metrics for monitoring their systems and applications.
+-                </i></p>
+-            </div>
+-        </div>
+-    </div>
+-    <div>
+-        <a href="https://docs.netdata.cloud/docs/why-netdata/meaningful-presentation/">Learn more about meaningful presentation</a>
+-    </div>
+-</div>
+-
+-<div class="site-section site-section-gray">
+-    <div class=container>
+-        <div class="grid-title">
+-            <h3><span class=star>&#x2605;</span> Immediate results</h3>
+-        </div>
+-        <div class=grid>
+-            <div class=grid-cell>
+-                <p>
+-                    Install and use immediately! Get fully functional visualization and alarms, in just a couple of seconds after installation!
+-                </p>
+-                <p>
+-                    Netdata <b>decouples your skills from your monitoring infrastructure</b>.
+-                    No matter how skillful or novice you are, Netdata will apply all the community knowledge and expertise to your monitoring infrastructure.
+-                </p>
+-            </div>
+-            <div class=grid-cell>
+-                <p class="quote"><i>
+-                    Most of our infrastructure is based on standardized systems and applications.
+-                    <br/>&nbsp;<br/>
+-                    It is a tremendous waste of time and effort, in a global scale, to require from all users to configure their infrastructure dashboards and alarms metric by metric.
+-                </i></p>
+-            </div>
+-        </div>
+-    </div>
+-    <div>
+-        <a href="https://docs.netdata.cloud/docs/why-netdata/immediate-results/">Learn more about immediate results</a>
+-    </div>
+-</div>
+-
+-<div class="site-section site-section-dark">
+-    <div class=container><h2>How it works</h2>
+-        <div style="padding-bottom: 1em">
+-            <p>
+-                Netdata is a monitoring agent you install on all your systems:
+-            <br/>
+-                <b>physical servers</b>, <b>virtual servers</b>, <b>containers</b>, <b>IoT</b>.
+-            </p>
+-            <p>
+-                Netdata is lightweight, designed to permanently run on all systems without disrupting their core function.
+-                By default, it needs just 1% CPU of a single core, a few MB or RAM and no disk I/O at all.
+-            </p>
+-            <p>
+-                Each Netdata is (by default) autonomous, taking care of all the following.
+-                <br/>But all your Netdata are integrated into one large distributed application.
+-            </p>
+-        </div>
+-        <div class=grid>
+-            <div class=grid-cell><h3><span class=star>&#x2605;</span> Collect</h3>
+-                <p>
+-                    Netdata automatically detects data collection sources on the host it runs.
+-                    It comes with hundreds of plugins for collecting system and application metrics,
+-                    including databases, web servers, and commonly used application servers.
+-                    <br/> <br/>
+-                    Netdata is also a high performance, distributed <b>statsd server</b>, allowing custom
+-                    application metrics to be collected and visualized.
+-                </p>
+-            </div>
+-            <div class=grid-cell><h3><span class=star>&#x2605;</span> Check (alarms)</h3>
+-                <p>
+-                    Each Netdata spawns a thread that examines the metrics as they get collected,
+-                    evaluates pre-configured alarm expressions and triggers alarm notifications.
+-                    <br/> <br/>
+-                    Netdata comes with hundreds of alarms to detect common system and application issues,
+-                    that are automatically attached to the collected metrics,
+-                    supporting dozens of alarm notification integrations.
+-                </p>
+-            </div>
+-            <div class=grid-cell><h3><span class=star>&#x2605;</span> Stream</h3>
+-                <p>
+-                    Each Netdata can stream its metrics, in real-time, to any other Netdata.
+-                    Streaming allows Netdata to be used in ephemeral nodes and containers in auto-scaled environments,
+-                    but it also allows building Netdata hierarchies for aggregating the metrics of multiple Netdata nodes.
+-                </p>
+-            </div>
+-            <div class=grid-cell><h3><span class=star>&#x2605;</span> Store</h3>
+-                <p>
+-                    Each Netdata has its own internal metrics database. This database is optimized
+-                    for minimal memory footprint, and due to its lockless design allows one writer
+-                    and multiple readers per metric, concurrently, contributing significantly to
+-                    the performance of Netdata.
+-                </p>
+-            </div>
+-            <div class=grid-cell><h3><span class=star>&#x2605;</span> Archive</h3>
+-                <p>
+-                    Netdata can archive its metrics to time-series databases (prometheus, graphite, opentsdb, json document dbs, etc)
+-                    so that Netdata can be integrated to existing monitoring tool-chains.
+-                </p>
+-            </div>
+-            <div class=grid-cell><h3><span class=star>&#x2605;</span> Visualize</h3>
+-                <p>
+-                    The best part of Netdata is its visualization. Low latency, speedy and snazzy.
+-                    <br/> <br/>
+-                    Netdata dashboards are optimized for visual anomaly detection, a powerful tool to troubleshoot
+-                    performance issues.
+-                </p>
+-            </div>
+-        </div>
+-    </div>
+-</div>
+-
+-<div class="site-section">
+-    &nbsp;
+-</div>
+-
+-
+-<div id="demosites" class="site-section site-section-dark"><h2>netdata live demo sites</h2>
+-    <div class="content">
+-        <div class="container" style="text-align: center;">
+-
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                         data-host="//london.my-netdata.io"
+-                         data-title="EU - London"
+-                         data-chart-library="gauge"
+-                         data-decimal-digits="0"
+-                         data-common-max="top-gauges"
+-                         data-width="100%"
+-                         data-after="-300"
+-                         data-points="300"
+-                         data-colors="#558855"
+-                    ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <a class="btn btn-alt mygauge-legend-button" href=//london.my-netdata.io/default.html data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=DemoLondon><strong>Enter London!</strong></a>
+-                    <div class="mygause-donation">
+-                        Donated by DigitalOcean.com
+-                    </div>
+-                </div>
+-            </div>
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                         data-host="//atlanta.my-netdata.io"
+-                         data-title="US - Atlanta"
+-                         data-chart-library="gauge"
+-                         data-decimal-digits="0"
+-                         data-common-max="top-gauges"
+-                         data-width="100%"
+-                         data-after="-300"
+-                         data-points="300"
+-                         data-colors="#AA5555"
+-                    ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <a class="btn btn-alt mygauge-legend-button" href=//atlanta.my-netdata.io/default.html data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=DemoAtlanta><strong>Enter Atlanta!</strong></a>
+-                    <div class="mygause-donation">
+-                        Donated by CDN77.com
+-                    </div>
+-                </div>
+-            </div>
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                         data-host="//sanfrancisco.my-netdata.io"
+-                         data-title="US - California"
+-                         data-chart-library="gauge"
+-                         data-decimal-digits="0"
+-                         data-common-max="top-gauges"
+-                         data-width="100%"
+-                         data-after="-300"
+-                         data-points="300"
+-                         data-colors="#5555AA"
+-                    ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <a class="btn btn-alt mygauge-legend-button" href=//sanfrancisco.my-netdata.io/default.html data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=DemoSanfrancisco><strong>Enter California!</strong></a>
+-                    <div class="mygause-donation">
+-                        Donated by DigitalOcean.com
+-                    </div>
+-                </div>
+-            </div>
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                         data-host="//toronto.my-netdata.io"
+-                         data-title="Canada"
+-                         data-chart-library="gauge"
+-                         data-decimal-digits="0"
+-                         data-common-max="top-gauges"
+-                         data-width="100%"
+-                         data-after="-300"
+-                         data-points="300"
+-                         data-colors="#885588"
+-                    ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <a class="btn btn-alt mygauge-legend-button" href=//toronto.my-netdata.io/default.html data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=DemoToronto><strong>Enter Canada!</strong></a>
+-                    <div class="mygause-donation">
+-                        Donated by DigitalOcean.com
+-                    </div>
+-                </div>
+-            </div>
+-            <br/>&nbsp;<br/>
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                         data-host="//frankfurt.my-netdata.io"
+-                         data-title="EU - Germany"
+-                         data-chart-library="easypiechart"
+-                         data-decimal-digits="0"
+-                         data-common-max="top-gauges"
+-                         data-width="75%"
+-                         data-after="-300"
+-                         data-points="300"
+-                         data-colors="#AAAA55"
+-                    ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <a class="btn btn-alt mygauge-legend-button" href=//frankfurt.my-netdata.io/default.html data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=DemoFrankfurt><strong>Enter Germany!</strong></a>
+-                    <div class="mygause-donation">
+-                        Donated by DigitalOcean.com
+-                    </div>
+-                </div>
+-            </div>
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                         data-host="//newyork.my-netdata.io"
+-                         data-title="US - New York"
+-                         data-chart-library="easypiechart"
+-                         data-decimal-digits="0"
+-                         data-common-max="top-gauges"
+-                         data-width="75%"
+-                         data-after="-300"
+-                         data-points="300"
+-                         data-colors="#BB5533"
+-                    ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <a class="btn btn-alt mygauge-legend-button" href=//newyork.my-netdata.io/default.html data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=DemoNewYork><strong>Enter New York!</strong></a>
+-                    <div class="mygause-donation">
+-                        Donated by DigitalOcean.com
+-                    </div>
+-                </div>
+-            </div>
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                         data-host="//singapore.my-netdata.io"
+-                         data-title="Singapore"
+-                         data-chart-library="easypiechart"
+-                         data-decimal-digits="0"
+-                         data-common-max="top-gauges"
+-                         data-width="75%"
+-                         data-after="-300"
+-                         data-points="300"
+-                         data-colors="#5588BB"
+-                    ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <a class="btn btn-alt mygauge-legend-button" href=//singapore.my-netdata.io/default.html data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=DemoSingapore><strong>Enter Singapore!</strong></a>
+-                    <div class="mygause-donation">
+-                        Donated by DigitalOcean.com
+-                    </div>
+-                </div>
+-            </div>
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                         data-host="//bangalore.my-netdata.io"
+-                         data-title="India"
+-                         data-chart-library="easypiechart"
+-                         data-decimal-digits="0"
+-                         data-common-max="top-gauges"
+-                         data-width="75%"
+-                         data-after="-300"
+-                         data-points="300"
+-                         data-colors="#BB55BB"
+-                    ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <a class="btn btn-alt mygauge-legend-button" href=//bangalore.my-netdata.io/default.html data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=DemoBangalore><strong>Enter India!</strong></a>
+-                    <div class="mygause-donation">
+-                        Donated by DigitalOcean.com
+-                    </div>
+-                </div>
+-            </div>
+-            <div style="padding-top: 20px;">
+-                <div class="mygauge-combo">
+-                    <div class="mygauge">
+-                        <div style="padding-bottom: 20px; font-size: 10px; color: #676b70;">
+-                            <b>Israel</b>
+-                        </div>
+-                        <div class="mysparkline">
+-                            <div class="mysparkline-overchart-label2">
+-                                requests/s
+-                            </div>
+-                            <div class="mysparkline-overchart-value" id="octopuscs.requests.netdata" >
+-                            </div>
+-                            <div data-netdata="netdata.requests"
+-                                 data-dimensions="requests"
+-                                 data-host="//octopuscs.my-netdata.io"
+-                                 data-common-max="top-gauges"
+-                                 data-decimal-digits="0"
+-                                 data-chart-library="dygraph"
+-                                 data-dygraph-theme="sparkline"
+-                                 data-dygraph-type="area"
+-                                 data-width="100%"
+-                                 data-height="100%"
+-                                 data-after="-300"
+-                                 data-colors="#4BFF91"
+-                                 data-show-value-of-requests-at="octopuscs.requests.netdata"
+-                            ></div>
+-                        </div>
+-                    </div>
+-                    <div class="mygauge-button">
+-                        <a class="btn btn-alt mygauge-legend-button" href=//octopuscs.my-netdata.io/default.html data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=DemoOctopuscs><strong>Enter Israel!</strong></a>
+-                        <div class="mygause-donation">
+-                            Donated by octopuscs.com
+-                        </div>
+-                    </div>
+-                </div>
+-
+-                <div class="mygauge-combo">
+-                    <div class="mygauge">
+-                        <div style="padding-bottom: 20px; font-size: 10px; color: #676b70;">
+-                            <b>EU - Spain</b>
+-                        </div>
+-                        <div class="mysparkline">
+-                            <div class="mysparkline-overchart-label2">
+-                                requests/s
+-                            </div>
+-                            <div class="mysparkline-overchart-value" id="stackscale.requests.netdata" >
+-                            </div>
+-                            <div data-netdata="netdata.requests"
+-                                 data-dimensions="requests"
+-                                 data-host="//stackscale.my-netdata.io"
+-                                 data-common-max="top-gauges"
+-                                 data-decimal-digits="0"
+-                                 data-chart-library="dygraph"
+-                                 data-dygraph-theme="sparkline"
+-                                 data-dygraph-type="area"
+-                                 data-width="100%"
+-                                 data-height="100%"
+-                                 data-after="-300"
+-                                 data-colors="#4B91FF"
+-                                 data-show-value-of-requests-at="stackscale.requests.netdata"
+-                            ></div>
+-                        </div>
+-                    </div>
+-                    <div class="mygauge-button">
+-                        <a class="btn btn-alt mygauge-legend-button" href=//stackscale.my-netdata.io/default.html data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=DemoStackScale><strong>Enter Madrid!</strong></a>
+-                        <div class="mygause-donation">
+-                            Donated by stackscale.com
+-                        </div>
+-                    </div>
+-                </div>
+-                <div class="mygauge-combo">
+-                    <div class="mygauge">
+-                    </div>
+-                </div>
+-            </div>
+-        </div>
+-
+-        <div class="container" style="padding-top: 40px; text-align: center;">
+-            Charts are coming from all servers, <b>in parallel</b>.
+-            <br/>
+-            The servers are <b>not aware</b> of this multi-server dashboard.
+-        </div>
+-
+-        <div class="container" style="padding-top: 40px; padding-bottom: 40px; text-align: center;">
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>EU - London</b> connected clients
+-                </div>
+-                <div class="mysparkline-overchart-value" id="nginx_local.connections.netdata" >
+-                </div>
+-                <div data-netdata="nginx_local.connections"
+-                     data-dimensions="active"
+-                     data-host="//london.my-netdata.io"
+-                     data-decimal-digits="0"
+-                     data-common-max="web-connections"
+-                     data-chart-library="dygraph"
+-                     data-dygraph-theme="sparkline"
+-                     data-dygraph-type="area"
+-                     data-width="100%"
+-                     data-height="100%"
+-                     data-after="-300"
+-                     data-colors="#558855"
+-                     data-show-value-of-active-at="nginx_local.connections.netdata"
+-                ></div>
+-            </div>
+-        </div>
+-
+-        <div class="container" style="padding-top: 0px; text-align: center;">
+-            Each server is <b>not aware</b> of the other servers.
+-            <br/>
+-            But on this dashboard <b>they are one</b>! (hover on the chart above)
+-        </div>
+-
+-
+-        <!--
+-        <div style="padding-top: 40px; color: #999;">
+-            <small>We would love to show demos of IoT devices running netdata.<br/>
+-                If you can host at your DC an RPi or a Linux IoT, <a href="mailto:costa@tsaousis.gr?subject=I can host IoT for netdata&body=Hi Costa,%0D%0A%0D%0AI would love to host an IoT device to demo netdata on it.%0D%0A%0D%0A-- please tell me who you are and what infrastructure you have --%0D%0A-- Take into account I would need SSH access to it --%0D%0A-- You have to have a DC - a home is not good enough - sorry. --%0D%0A%0D%0AThanks!">contact me</a>.</small>
+-        </div>
+-        -->
+-    </div>
+-</div>
+-
+-<div class=site-section><h2>Who uses netdata?</h2>
+-    <div class="content">
+-        <div class="container" style="text-align: center;">
+-            <p>
+-                Netdata is used by hundreds of thousands of users all over the world.
+-                <br/>&nbsp;<br/>
+-                Check our <a href="https://github.com/netdata/netdata/watchers">GitHub watchers</a> list.
+-                <br/>
+-                You will find people working for <b>Amazon</b>, <b>Atos</b>, <b>Baidu</b>, <b>Cisco Systems</b>, <b>Citrix</b>,
+-                <b>Deutsche Telekom</b>, <b>DigitalOcean</b>, <b>Elastic</b>, <b>EPAM Systems</b>, <b>Ericsson</b>, <b>Google</b>,
+-                <b>Groupon</b>, <b>Hortonworks</b>, <b>HP</b>, <b>Huawei</b>, <b>IBM</b>, <b>Microsoft</b>, <b>NewRelic</b>,
+-                <b>Nvidia</b>, <b>Red Hat</b>, <b>SAP</b>, <b>Selectel</b>, <b>TicketMaster</b>, <b>Vimeo</b>, and many more!
+-            </p>
+-            <small>
+-            The following figures come from users using the <a href="https://github.com/netdata/netdata/tree/master/registry" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=GlobalRegistry>netdata public global registry</a>.<br/>Counting since May 16th 2016. Actual figures may be a lot higher.<br/></small>
+-            <div class="container" style="padding-top: 40px; text-align: center; width: 30%; min-width: 220px; display: inline-block;">
+-                <div class="mysparkline">
+-                    <div class="mysparkline-overchart-label">
+-                        netdata <b>unique users</b>
+-                    </div>
+-                    <div class="mysparkline-overchart-value-center" id="netdata.registry_entries.persons.netdata" >
+-                    </div>
+-                    <div data-netdata="netdata.registry_entries"
+-                         data-dimensions="persons"
+-                         data-host="//london.my-netdata.io"
+-                         data-decimal-digits="0"
+-                         data-chart-library="dygraph"
+-                         data-dygraph-theme="sparkline"
+-                         data-dygraph-type="area"
+-                         data-width="100%"
+-                         data-height="100%"
+-                         data-after="-300"
+-                         data-colors="#558855"
+-                         data-show-value-of-persons-at="netdata.registry_entries.persons.netdata"
+-                    ></div>
+-                </div>
+-            </div>
+-            <div class="container" style="padding-top: 40px; text-align: center; width: 30%; min-width: 220px; display: inline-block;">
+-                <div class="mysparkline">
+-                    <div class="mysparkline-overchart-label">
+-                        netdata <b>monitored servers</b>
+-                    </div>
+-                    <div class="mysparkline-overchart-value-center" id="netdata.registry_entries.machines.netdata" >
+-                    </div>
+-                    <div data-netdata="netdata.registry_entries"
+-                         data-dimensions="machines"
+-                         data-host="//london.my-netdata.io"
+-                         data-decimal-digits="0"
+-                         data-chart-library="dygraph"
+-                         data-dygraph-theme="sparkline"
+-                         data-dygraph-type="area"
+-                         data-width="100%"
+-                         data-height="100%"
+-                         data-after="-300"
+-                         data-colors="#558855 #558855 #558855"
+-                         data-show-value-of-machines-at="netdata.registry_entries.machines.netdata"
+-                    ></div>
+-                </div>
+-            </div>
+-            <div class="container" style="padding-top: 40px; text-align: center; width: 30%; min-width: 220px; display: inline-block;">
+-                <div class="mysparkline">
+-                    <div class="mysparkline-overchart-label">
+-                        netdata <b>sessions served</b>
+-                    </div>
+-                    <div class="mysparkline-overchart-value-center" id="netdata.registry_sessions.sessions.netdata" >
+-                    </div>
+-                    <div data-netdata="netdata.registry_sessions"
+-                         data-dimensions="sessions"
+-                         data-host="//london.my-netdata.io"
+-                         data-decimal-digits="0"
+-                         data-chart-library="dygraph"
+-                         data-dygraph-theme="sparkline"
+-                         data-dygraph-type="area"
+-                         data-width="100%"
+-                         data-height="100%"
+-                         data-after="-300"
+-                         data-colors="#558855 #558855 #558855"
+-                         data-show-value-of-sessions-at="netdata.registry_sessions.sessions.netdata"
+-                    ></div>
+-                </div>
+-            </div>
+-            <p>
+-
+-        <!--
+-            <embed src="//registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=persons&label=user%20base&units=null&value_color=blue&precision=0&refresh=30&v42" type="image/svg+xml" height="20" />
+-            <embed src="//registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=machines&label=servers%20monitored&units=null&value_color=orange&precision=0&refresh=30&v42" type="image/svg+xml" height="20" />
+-            <embed src="//registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_sessions&label=sessions%20served&units=null&value_color=yellowgreen&precision=0&refresh=30&v42" type="image/svg+xml" height="20" />
+-            <br/><i>(figures come from <a href="https://github.com/netdata/netdata/tree/master/registry" target="_blank">the public netdata registry</a> data, showing only installations that use this registry, counting since May 16th 2016)</i>
+-            <br/>
+-        -->
+-            </p>
+-            <p>
+-                <small>
+-                netdata can generate auto-refreshing <strong><a href="https://github.com/netdata/netdata/tree/master/web/api/badges#netdata-badges" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=Badges>badges</a></strong>, like these:
+-                </small>
+-            <br/>
+-            <embed style="padding-top: 10px; padding-bottom: 25px;" src="//registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=persons&after=-86400&options=unaligned&group=incremental-sum&label=new%20users%20today&units=null&value_color=blue&precision=0&refresh=60&v42" type="image/svg+xml" height="20" />
+-            <embed style="padding-top: 10px; padding-bottom: 25px;" src="//registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=machines&group=incremental-sum&after=-86400&options=unaligned&label=servers%20added%20today&units=null&value_color=orange&precision=0&refresh=60&v42" type="image/svg+xml" height="20" />
+-            <embed style="padding-top: 10px; padding-bottom: 25px;" src="//registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_sessions&after=-86400&group=incremental-sum&options=unaligned&label=sessions%20served%20today&units=null&value_color=yellowgreen&precision=0&refresh=60&v42" type="image/svg+xml" height="20" />
+-            <br/>
+-            <small>These badges auto-refresh every minute.</small>
+-            </p>
+-        </div>
+-        <div class="container" style="text-align: center;">
+-		<strong>netdata</strong> is featured at the <a href="https://octoverse.github.com/2016/" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=Octoverse>GitHub's state of the Octoverse 2016</a>
+-            <div style="padding-top: 10px;">
+-                <a href="https://octoverse.github.com/2016/" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=OctoverseImage>
+-                <img src="https://cloud.githubusercontent.com/assets/2662304/21743260/23ebe62c-d507-11e6-80c0-76b95f53e464.png" width="90%" style="border-radius: 4px; border: 1px solid #fff;"/>
+-                </a>
+-            </div>
+-        </div>
+-        <div class=cta-option>
+-            <a class="btn btn-download" href="https://docs.netdata.cloud/packaging/installer/" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=InstallAfterDemo><strong>Install netdata now</strong></a>
+-        </div>
+-    </div>
+-</div>
+-<div class=aside>
+-    <div class=container>
+-                <!-- Place this tag where you want the button to render. -->
+-                <a class="github-button" href="https://github.com/netdata/netdata/subscription" data-style="mega" data-show-count="true" aria-label="Watch netdata/netdata on GitHub"><img src="https://img.shields.io/github/watchers/netdata/netdata.svg?style=flat&label=Github%20Watchers"></a>
+-                <!-- Place this tag where you want the button to render. -->
+-                <a class="github-button" href="https://github.com/netdata/netdata" data-style="mega" data-show-count="true" aria-label="Star netdata/netdata on GitHub"><img src="https://img.shields.io/github/stars/netdata/netdata.svg?style=flat&label=Github%20Stars"></a>
+-                <!-- Place this tag where you want the button to render. -->
+-                <a class="github-button" href="https://github.com/netdata/netdata/fork" data-style="mega" data-show-count="true" aria-label="Fork netdata/netdata on GitHub"><img src="https://img.shields.io/github/forks/netdata/netdata.svg?style=flat&label=Github%20Repo%20Forks"></a>
+-    </div>
+-</div>
+-
+-<!-- the footer -->
+-<div class=site-footer role=contentinfo>
+-    <p>
+-    <div style="display: inline-block;">
+-        <div style="vertical-align:top;display:inline-block; height: 34px;">twitter:</div>
+-        <div style="vertical-align:top;display:inline-block; height: 34px;"><a class=twitter-share-button href=https://twitter.com/share data-count=none data-lang=en data-via=linuxnetdata data-size=small data-text="Get control of your Linux servers. Simple. Effective. Awesome." data-url=https://my-netdata.io/ >Tweet</a></div>
+-        <div style="vertical-align:top;display:inline-block; height: 34px;"><a class=twitter-follow-button href=https://twitter.com/linuxnetdata data-show-count=false data-lang=en data-size=small>Follow @linuxnetdata</a></div>
+-    </div>
+-    <div style="display: inline-block;">
+-        <div style="vertical-align:top;display:inline-block; height: 34px; padding-left: 10px;">facebook:</div>
+-        <div class="fb-like" data-href="https://my-netdata.io/" data-layout="button" data-action="like" data-show-faces="false" data-share="false" style="vertical-align:top;display:inline-block; height: 34px;"></div>
+-        <div class="fb-share-button" data-href="https://my-netdata.io/" data-layout="button" data-size="small" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fmy-netdata.io%2F&amp;src=sdkpreparse" style="vertical-align:top;display:inline-block; height: 34px;">Share</a></div>
+-        <div class="fb-follow" data-href="https://www.facebook.com/linuxnetdata/" data-layout="standard" data-size="small" data-show-faces="false" data-colorscheme="dark" width="225" style="vertical-align:top;display:inline-block; height: 34px;"></div>
+-    </div>
+-    </p>
+-    <p>
+-        <strong>netdata</strong><br/>
+-        &copy; Copyright 2018-2019, <a href="https://github.com/netdata" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=NetdataInc>Netdata</a><br/>
+-        &copy; Copyright 2016-2018, <a href="https://github.com/ktsaou" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=CostaTsaousis>Costa Tsaousis</a><br/>
+-        Released under <a href="https://github.com/netdata/netdata/blob/master/LICENSE.md" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=License>GPL v3+</a><br/>
+-    </p>
+-    </p>
+-    <p style="padding-top: 20px;">
+-        netdata has received significant contributions from:<br/>&nbsp;<br/>
+-        <a href="https://github.com/philwhineray" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=Phil>Phil Whineray</a> (release management),<br/>
+-        <a href="https://github.com/alonbl" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=Alon>Alon Bar-Lev</a> (autoconf and automake),<br/>
+-        <a href="https://github.com/titpetric" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=titpetric>Tit Petric</a> (docker image maintainer),<br/>
+-        <a href="https://github.com/paulfantom" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=Pawel>PaweĊ‚ Krupa</a> (python.d.plugin and modules),<br/>
+-        <a href="https://github.com/simonnagl" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=simonnagl>simonnagl</a> (disk plugin and more),<br/>
+-        <a href="https://github.com/fredericopissarra" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=Frederico>Frederico Lamberti Pissarra</a> (performance improvements)<br/>
+-        <a href="https://github.com/vlvkobal" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=VladimirKobal>Vladimir Kobal</a> (FreeBSD port)<br/>
+-        <a href="https://github.com/l2isbad" target="_blank" data-ga-category="Outbound links" data-ga-action="Nav click" data-ga-label=l2isbad>Ilya Mashchenko</a> (python plugin modules)<br/>
+-        &nbsp;<br/>
+-        and dozens more enthusiasts, engineers and professionals.<br/>&nbsp;<br/>
+-    </p>
+-    </p>
+-        Thank you! You are awesome!
+-    <p>
+-</div>
+-</body>
+-
+-<script>
+-    if(window.location.hostname != 'my-netdata.io' || window.location.protocol != 'https:') {
+-        var canonical = document.createElement('link');
+-        canonical.rel = 'canonical';
+-        canonical.href = 'https://my-netdata.io/';
+-        document.head.appendChild(canonical);
+-    }
+-</script>
+-
+-<script>!function (t, e) {
+-    "use strict";
+-    function a(t, n) {
+-        return t.hasAttribute(n) === !0 ? t : t.parentNode !== r.body ? a(t.parentNode, n) : e
+-    }
+-
+-    function n(n) {
+-        var o, i, r, c, g, u = a(n.target, "data-ga-action"), l = !1;
+-        u !== e && (o = u.getAttribute("data-ga-action") || e, i = u.getAttribute("data-ga-category") || e, r = u.getAttribute("data-ga-label") || e, c = u.getAttribute("href"), g = parseInt(u.getAttribute("data-ga-value"), 10) || e, ga !== e && i !== e && o !== e && (n.preventDefault(), "Download" !== i && n.ctrlKey !== !0 && n.metaKey !== !0 && 2 !== n.which || (l = !0, t.open(c)), function (a) {
+-            var n;
+-            ga("send", "event", i, o, r, g, {
+-                hitCallback: function () {
+-                    l === !1 && (n !== e && clearTimeout(n), t.location = a)
+-                }
+-            }), n = setTimeout(function () {
+-                l === !1 && (t.location.href = a)
+-            }, 1e3)
+-        }(c)))
+-    }
+-
+-    function o() {
+-        !function (t, e, a, n, o, i) {
+-            t.GoogleAnalyticsObject = n, t[n] || (t[n] = function () {
+-                (t[n].q = t[n].q || []).push(arguments)
+-            }), t[n].l = +new Date, o = e.createElement(a), i = e.getElementsByTagName(a)[0], o.src = "//www.google-analytics.com/analytics.js", i.parentNode.insertBefore(o, i)
+-        }(t, r, "script", "ga"), ga("create", "UA-64295674-3", "auto"), ga("send", "pageview", "/site"+window.location.pathname), t.document.addEventListener("click", n)
+-    }
+-
+-    function i() {
+-        !function (t, e, a) {
+-            var n, o = t.getElementsByTagName(e)[0];
+-            t.getElementById(a) || (n = t.createElement(e), n.id = a, n.src = "//platform.twitter.com/widgets.js", o.parentNode.insertBefore(n, o))
+-        }(r, "script", "twitter-wjs")
+-    }
+-
+-    var r = t.document;
+-    o(), t.onload = i
+-}(window)</script>
+-
+-<!-- facebook sdk -->
+-<div id="fb-root"></div>
+-<script>
+-    window.fbAsyncInit = function() {
+-        FB.init({
+-            appId      : '1200089276712916',
+-            xfbml      : true,
+-            version    : 'v2.8'
+-        });
+-    };
+-
+-    (function(d, s, id){
+-        var js, fjs = d.getElementsByTagName(s)[0];
+-        if (d.getElementById(id)) {return;}
+-        js = d.createElement(s); js.id = id;
+-        js.src = "//connect.facebook.net/en_US/sdk.js";
+-        fjs.parentNode.insertBefore(js, fjs);
+-    }(document, 'script', 'facebook-jssdk'));
+-</script>
+-
+-<script>
+-    var allTitles = [
+-          'Get control<br/>of your Linux servers'
+-        , 'Get control<br/>of your FreeBSD servers'
+-        , 'Monitor<br/>your containers'
+-        , 'Monitor<br/>your virtual machines'
+-        , 'Monitor<br/>your web servers'
+-        , 'Monitor<br/>your databases'
+-        , 'Monitor<br/>your applications'
+-        , 'Monitor<br/>your SNMP devices'
+-        , 'Monitor<br/>your IoT devices'
+-        , 'Monitor<br/>your MacOS systems'
+-    ];
+-    var lastTitle = -1;
+-
+-    function updateTitle(){
+-        lastTitle++;
+-        if(lastTitle >= allTitles.length)
+-            lastTitle = 0;
+-
+-        var os = document.getElementsByClassName('title');
+-        var len = os.length;
+-        while (len--) {
+-            var el = os[len];
+-            el.innerHTML = allTitles[lastTitle];
+-            el.classList.add('titlefadein');
+-        }
+-
+-        setTimeout(function() {
+-            var os = document.getElementsByClassName('title');
+-            var len = os.length;
+-            while (len--)
+-                os[len].classList.remove('titlefadein');
+-
+-        }, 5750);
+-        setTimeout(updateTitle, 6000);
+-    }
+-    //updateTitle();
+-</script>
+-
+-<!-- Start of HubSpot Embed Code -->
+-<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/4567453.js"></script>
+-<!-- End of HubSpot Embed Code -->
+diff --git a/web/gui/demosites2.html b/web/gui/demosites2.html
+deleted file mode 100644
+index fe35cfb6..00000000
+--- a/web/gui/demosites2.html
++++ /dev/null
+@@ -1,1112 +0,0 @@
+-<!DOCTYPE html>
+-<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
+-<html lang="en">
+-<head>
+-    <title>NetData - Real-time performance monitoring, done right!</title>
+-    <meta name="application-name" content="netdata">
+-
+-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+-    <meta charset="utf-8">
+-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+-    <meta name="viewport" content="width=device-width, initial-scale=1">
+-    <meta name="apple-mobile-web-app-capable" content="yes">
+-    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+-
+-    <meta property="og:locale" content="en_US" />
+-    <meta property="og:image" content="https://cloud.githubusercontent.com/assets/2662304/22945737/e98cd0c6-f2fd-11e6-96f1-5501934b0955.png"/>
+-    <meta property="og:url" content="http://my-netdata.io/"/>
+-    <meta property="og:type" content="website"/>
+-    <meta property="og:site_name" content="netdata"/>
+-    <meta property="og:title" content="netdata - real-time performance monitoring, done right!"/>
+-    <meta property="og:description" content="Stunning real-time dashboards, blazingly fast and extremely interactive. Zero configuration, zero dependencies, zero maintenance." />
+-</head>
+-
+-<script>
+-    // --- OPTIONS FOR THE DASHBOARD --
+-
+-    // this section has to appear before loading dashboard.js
+-
+-    // Select a theme.
+-    // uncomment on of the two themes:
+-
+-    // var netdataTheme = 'default'; // this is white
+-    var netdataTheme = 'slate'; // this is dark
+-
+-
+-    // Set the default netdata server.
+-    // on charts without a 'data-host', this one will be used.
+-    // the default is the server that dashboard.js is downloaded from.
+-
+-    // var netdataServer = 'http://my.server:19999/';
+-    </script>
+-
+-    <!--
+-        --- LOAD dashboard.js ---
+-
+-        to host this HTML file on your web server,
+-        you have to load dashboard.js from the netdata server.
+-
+-        So, pick one the two below
+-        If you pick the first, set the server name/IP.
+-
+-        The second assumes you host this file on /usr/share/netdata/web
+-        and that you have chown it to be owned by netdata:netdata
+-    -->
+-    <!-- <script type="text/javascript" src="http://my.server:19999/dashboard.js"></script> -->
+-    <script type="text/javascript" src="dashboard.js?v20190902-0"></script>
+-
+-    <script>
+-    // --- OPTIONS FOR THE CHARTS --
+-
+-    // destroy charts not shown (lowers memory on the browsers)
+-    // set this to 'true' to destroy, 'false' to hide the charts
+-    NETDATA.options.current.destroy_on_hide = false;
+-    
+-    // set this to false, to always show all dimensions
+-    NETDATA.options.current.eliminate_zero_dimensions = true;
+-    
+-    // set this to false, to lower the pressure on the browser
+-    NETDATA.options.current.concurrent_refreshes = true;
+-
+-    // if you need to support slow mobile phones, set this to false
+-    NETDATA.options.current.parallel_refresher = true;
+-
+-    // set this to false, to always update the charts, even if focus is lost
+-    NETDATA.options.current.stop_updates_when_focus_is_lost = true;
+-
+-    // since we have many servers and limited sockets,
+-    // abort ajax calls when we scroll
+-    NETDATA.options.current.abort_ajax_on_scroll = true;
+-</script>
+-<style>
+-    body {
+-        font-size: 1vw;
+-    }
+-
+-    .mysparkline {
+-        position: relative;
+-        display: inline-block;
+-        min-height: 50px;
+-        width: 100%;
+-        height: 7vmax;
+-        text-align: left;
+-    }
+-
+-    .mysparkline-overchart-label {
+-        position: absolute;
+-        display: block;
+-        top: 0;
+-        left: 10px;
+-        bottom: 0;
+-        right: 0;
+-        font-size: 1vmax;
+-        z-index: 1;
+-    }
+-
+-    .mysparkline-overchart-value {
+-        position: absolute;
+-        display: block;
+-        top: 1.1vmax;
+-        left: 10px;
+-        bottom: 0;
+-        right: 0;
+-        font-size: 5vmax;
+-        z-index: 2;
+-        text-shadow: #333 0px 0px 2px;
+-    }
+-
+-    .myfullchart {
+-        position: relative;
+-        display: inline-block;
+-        width: 100%;
+-        height: 12vmax;
+-        min-height: 150px;
+-        text-align: left;
+-    }
+-
+-    .mygauge-combo {
+-        display: inline-block;
+-    }
+-
+-    .mygauge {
+-        position: relative;
+-        display: block;
+-        width: 18vw;
+-        height: 11vw;
+-    }
+-
+-    .mygauge-button {
+-        display: block;
+-    }
+-
+-    .mytitle {
+-        padding-top: 6vw;
+-        padding-bottom: 1vw;
+-        text-align: center;
+-        font-size: 2.4vw;
+-    }
+-
+-    .mysubtitle {
+-        padding-top: 2vw;
+-        padding-bottom: 1vw;
+-        text-align: center;
+-        font-size: 1.8vw;
+-    }
+-
+-    .mycontent {
+-        text-align: center;
+-        font-size: 1.5vw;
+-    }
+-
+-    @media only screen and (min-width : 992px) {
+-        .container {
+-            width: 80%;
+-        }
+-    }
+-    @media only screen and (max-width : 992px) {
+-        .container {
+-            width: 100%;
+-        }
+-    }
+-</style>
+-
+-<body style="text-align: center; background-color: #272b30;">
+-
+-<div class="container">
+-
+-    <div style="text-align: center; font-size: 13vw; height: 14vw;">
+-        <b>netdata</b>
+-    </div>
+-    <div style="text-align: center; font-size: 2vw; height: 2.5vw;">
+-        real-time performance monitoring
+-    </div>
+-    <div style="width:80%; text-align: right; font-size: 2.7vw;">
+-        <strong>scaled out</strong>!
+-    </div>
+-    <div class="mytitle">
+-        pick a <b>netdata</b> demo server
+-    </div>
+-    <div class="mycontent">
+-        these demo servers show what you will get by installing <b>netdata</b>
+-    </div>
+-
+-    <div style="width: 100%; text-align: center; padding-top: 2vw;">
+-        <div style="width: 100%; text-align: center;">
+-
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                            data-host="//london.my-netdata.io"
+-                            data-title="EU - London"
+-                            data-chart-library="gauge"
+-                            data-decimal-digits="0"
+-                            data-common-max="top-gauges"
+-                            data-width="100%"
+-                            data-after="-300"
+-                            data-points="300"
+-                            data-colors="#558855"
+-                            ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <br/>&nbsp;<br/>
+-                    <button type="button" class="btn btn-default" data-toggle="button" aria-pressed="false" autocomplete="off" onclick="window.location='//london.my-netdata.io/default.html'" style="font-size: 1.0vw;">Enter London!</button>
+-                    <div style="font-size: 0.8vw;">
+-                        Donated by DigitalOcean.com
+-                    </div>
+-                </div>
+-            </div>
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                            data-host="//atlanta.my-netdata.io"
+-                            data-title="US - Atlanta"
+-                            data-chart-library="gauge"
+-                            data-decimal-digits="0"
+-                            data-common-max="top-gauges"
+-                            data-width="100%"
+-                            data-after="-300"
+-                            data-points="300"
+-                            data-colors="#AA5555"
+-                            ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <br/>&nbsp;<br/>
+-                    <button type="button" class="btn btn-default" data-toggle="button" aria-pressed="false" autocomplete="off" onclick="window.location='//atlanta.my-netdata.io/default.html'" style="font-size: 1.0vw;">Enter Atlanta!</button>
+-                    <div style="font-size: 0.8vw;">
+-                        Donated by CDN77.com
+-                    </div>
+-                </div>
+-            </div>
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                            data-host="//sanfrancisco.netdata.rocks"
+-                            data-title="US - California"
+-                            data-chart-library="gauge"
+-                            data-decimal-digits="0"
+-                            data-common-max="top-gauges"
+-                            data-width="100%"
+-                            data-after="-300"
+-                            data-points="300"
+-                            data-colors="#5555AA"
+-                            ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <br/>&nbsp;<br/>
+-                    <button type="button" class="btn btn-default" data-toggle="button" aria-pressed="false" autocomplete="off" onclick="window.location='//sanfrancisco.netdata.rocks/default.html'" style="font-size: 1.0vw;">Enter California!</button>
+-                    <div style="font-size: 0.8vw;">
+-                        Donated by DigitalOcean.com
+-                    </div>
+-                </div>
+-            </div>
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                            data-host="//toronto.netdata.rocks"
+-                            data-title="Canada"
+-                            data-chart-library="gauge"
+-                            data-decimal-digits="0"
+-                            data-common-max="top-gauges"
+-                            data-width="100%"
+-                            data-after="-300"
+-                            data-points="300"
+-                            data-colors="#885588"
+-                            ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <br/>&nbsp;<br/>
+-                    <button type="button" class="btn btn-default" data-toggle="button" aria-pressed="false" autocomplete="off" onclick="window.location='//toronto.netdata.rocks/default.html'" style="font-size: 1.0vw;">Enter Canada!</button>
+-                    <div style="font-size: 0.8vw;">
+-                        Donated by DigitalOcean.com
+-                    </div>
+-                </div>
+-            </div>
+-            <br/>&nbsp;<br/>
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                            data-host="//frankfurt.netdata.rocks"
+-                            data-title="EU - Germany"
+-                            data-chart-library="easypiechart"
+-                            data-decimal-digits="0"
+-                            data-common-max="top-gauges"
+-                            data-width="75%"
+-                            data-after="-300"
+-                            data-points="300"
+-                            data-colors="#AAAA55"
+-                            ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <br/>&nbsp;<br/>
+-                    <button type="button" class="btn btn-default" data-toggle="button" aria-pressed="false" autocomplete="off" onclick="window.location='//frankfurt.netdata.rocks/default.html'" style="font-size: 1.0vw;">Enter Germany!</button>
+-                    <div style="font-size: 0.8vw;">
+-                        Donated by DigitalOcean.com
+-                    </div>
+-                </div>
+-            </div>
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                            data-host="//newyork.netdata.rocks"
+-                            data-title="US - New York"
+-                            data-chart-library="easypiechart"
+-                            data-decimal-digits="0"
+-                            data-common-max="top-gauges"
+-                            data-width="75%"
+-                            data-after="-300"
+-                            data-points="300"
+-                            data-colors="#BB5533"
+-                            ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <br/>&nbsp;<br/>
+-                    <button type="button" class="btn btn-default" data-toggle="button" aria-pressed="false" autocomplete="off" onclick="window.location='//newyork.netdata.rocks/default.html'" style="font-size: 1.0vw;">Enter New York!</button>
+-                    <div style="font-size: 0.8vw;">
+-                        Donated by DigitalOcean.com
+-                    </div>
+-                </div>
+-            </div>
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                            data-host="//singapore.netdata.rocks"
+-                            data-title="Singapore"
+-                            data-chart-library="easypiechart"
+-                            data-decimal-digits="0"
+-                            data-common-max="top-gauges"
+-                            data-width="75%"
+-                            data-after="-300"
+-                            data-points="300"
+-                            data-colors="#5588BB"
+-                            ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <br/>&nbsp;<br/>
+-                    <button type="button" class="btn btn-default" data-toggle="button" aria-pressed="false" autocomplete="off" onclick="window.location='//singapore.netdata.rocks/default.html'" style="font-size: 1.0vw;">Enter Singapore!</button>
+-                    <div style="font-size: 0.8vw;">
+-                        Donated by DigitalOcean.com
+-                    </div>
+-                </div>
+-            </div>
+-            <div class="mygauge-combo">
+-                <div class="mygauge">
+-                    <div data-netdata="netdata.requests"
+-                            data-host="//bangalore.netdata.rocks"
+-                            data-title="India"
+-                            data-chart-library="easypiechart"
+-                            data-decimal-digits="0"
+-                            data-common-max="top-gauges"
+-                            data-width="75%"
+-                            data-after="-300"
+-                            data-points="300"
+-                            data-colors="#BB55BB"
+-                            ></div>
+-                </div>
+-                <div class="mygauge-button">
+-                    <br/>&nbsp;<br/>
+-                    <button type="button" class="btn btn-default" data-toggle="button" aria-pressed="false" autocomplete="off" onclick="window.location='//bangalore.netdata.rocks/default.html'" style="font-size: 1.0vw;">Enter India!</button>
+-                    <div style="font-size: 0.8vw;">
+-                        Donated by DigitalOcean.com
+-                    </div>
+-                </div>
+-            </div>
+-        </div>
+-    </div>
+-
+-    <div class="mytitle">
+-        this page is a custom <b>netdata</b> dashboard
+-    </div>
+-    <div class="mycontent">
+-        charts are coming from 8 servers, in parallel
+-        <br/>
+-        the servers are not aware of this multi-server dashboard,
+-        <br/>
+-        each server is not aware of the other servers,
+-        <br/>
+-        but on this dashboard <b>they are one</b>!
+-    </div>
+-    <div style="padding-top: 1vw; width: 100%; text-align: center; font-size: 1.5vw;">
+-        <i class="fa fa-comment" aria-hidden="true"></i>
+-        hover on a chart below, or drag it to show the past - <b>the others will follow</b>!
+-        <br/>
+-        double click on a chart to reset them all
+-    </div>
+-
+-    <div class="mytitle">
+-        our <code>nginx</code> performance
+-    </div>
+-    <div class="mycontent">
+-        (we proxy netdata through nginx, on the demo sites)
+-    </div>
+-
+-    <!-- Nav tabs -->
+-    <ul class="nav nav-tabs" role="tablist" style="padding-top: 1vw;">
+-        <li role="presentation" class="active"><a href="#nginx_requests" aria-controls="nginx_requests" role="tab" data-toggle="tab">Requests</a></li>
+-        <li role="presentation"><a href="#nginx_connections" aria-controls="nginx_connections" role="tab" data-toggle="tab">Connections</a></li>
+-    </ul>
+-
+-    <!-- Tab panes -->
+-    <div class="tab-content">
+-        <div role="tabpanel" class="tab-pane active" id="nginx_requests">
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>EU - London</b> web requests/s
+-                </div>
+-                <div class="mysparkline-overchart-value" id="nginx_local.requests.netdata" >
+-                </div>
+-                <div data-netdata="nginx_local.requests"
+-                        data-dimensions="requests"
+-                        data-host="//london.my-netdata.io"
+-                        data-decimal-digits="0"
+-                        data-common-max="web-requests"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#558855"
+-                        data-show-value-of-requests-at="nginx_local.requests.netdata"
+-                        ></div>
+-            </div>
+-
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>US - Atlanta</b> web requests/s
+-                </div>
+-                <div class="mysparkline-overchart-value" id="nginx_local.requests.netdata2" >
+-                </div>
+-                <div data-netdata="nginx_local.requests"
+-                        data-dimensions="requests"
+-                        data-host="//atlanta.my-netdata.io"
+-                        data-decimal-digits="0"
+-                        data-common-max="web-requests"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#AA5555"
+-                        data-show-value-of-requests-at="nginx_local.requests.netdata2"
+-                        ></div>
+-            </div>
+-
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>US - California</b> web requests/s
+-                </div>
+-                <div class="mysparkline-overchart-value" id="nginx_local.requests.netdata3" >
+-                </div>
+-                <div data-netdata="nginx_local.requests"
+-                        data-dimensions="requests"
+-                        data-host="//sanfrancisco.netdata.rocks"
+-                        data-decimal-digits="0"
+-                        data-common-max="web-requests"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#5555AA"
+-                        data-show-value-of-requests-at="nginx_local.requests.netdata3"
+-                        ></div>
+-            </div>
+-
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>Canada</b> web requests/s
+-                </div>
+-                <div class="mysparkline-overchart-value" id="nginx_local.requests.netdata4" >
+-                </div>
+-                <div data-netdata="nginx_local.requests"
+-                        data-dimensions="requests"
+-                        data-host="//toronto.netdata.rocks"
+-                        data-decimal-digits="0"
+-                        data-common-max="web-requests"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#885588"
+-                        data-show-value-of-requests-at="nginx_local.requests.netdata4"
+-                        ></div>
+-            </div>
+-        </div>
+-
+-        <div role="tabpanel" class="tab-pane" id="nginx_connections">
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>EU - London</b> active connections
+-                </div>
+-                <div class="mysparkline-overchart-value" id="nginx_local.connections.netdata1" >
+-                </div>
+-                <div data-netdata="nginx_local.connections"
+-                        data-dimensions="active"
+-                        data-host="//london.my-netdata.io"
+-                        data-decimal-digits="0"
+-                        data-common-max="web-connections"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#558855"
+-                        data-show-value-of-active-at="nginx_local.connections.netdata1"
+-                        ></div>
+-            </div>
+-
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>US - Atlanta</b> active connections
+-                </div>
+-                <div class="mysparkline-overchart-value" id="nginx_local.connections.netdata2" >
+-                </div>
+-                <div data-netdata="nginx_local.connections"
+-                        data-dimensions="active"
+-                        data-host="//atlanta.my-netdata.io"
+-                        data-decimal-digits="0"
+-                        data-common-max="web-connections"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#AA5555"
+-                        data-show-value-of-active-at="nginx_local.connections.netdata2"
+-                        ></div>
+-            </div>
+-
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>US - California</b> active connections
+-                </div>
+-                <div class="mysparkline-overchart-value" id="nginx_local.connections.netdata3" >
+-                </div>
+-                <div data-netdata="nginx_local.connections"
+-                        data-dimensions="active"
+-                        data-host="//sanfrancisco.netdata.rocks"
+-                        data-decimal-digits="0"
+-                        data-common-max="web-connections"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#5555AA"
+-                        data-show-value-of-active-at="nginx_local.connections.netdata3"
+-                        ></div>
+-            </div>
+-
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>Canada</b> active connections
+-                </div>
+-                <div class="mysparkline-overchart-value" id="nginx_local.connections.netdata4" >
+-                </div>
+-                <div data-netdata="nginx_local.connections"
+-                        data-dimensions="active"
+-                        data-host="//toronto.netdata.rocks"
+-                        data-decimal-digits="0"
+-                        data-common-max="web-connections"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#885588"
+-                        data-show-value-of-active-at="nginx_local.connections.netdata4"
+-                        ></div>
+-            </div>
+-        </div>
+-    </div>
+-
+-    <div style="width: 100%; text-align: right; font-size: 1vw;">
+-        <i class="fa fa-comment" aria-hidden="true"></i> these charts are draggable and touchable, double click them to reset them
+-    </div>
+-
+-
+-    <div class="mytitle">
+-        bandwidth consumption on the demo sites
+-    </div>
+-    <div class="mycontent">
+-        Linux QoS is configured by <a href="https://github.com/netdata/netdata/tree/master/collectors/tc.plugin#tcplugin">FireQOS</a>
+-    </div>
+-
+-    <!-- Nav tabs -->
+-    <ul class="nav nav-tabs" role="tablist" style="padding-top: 1vw;">
+-        <li role="presentation" class="active"><a href="#outbout" aria-controls="outbout" role="tab" data-toggle="tab">Outbound</a></li>
+-        <li role="presentation"><a href="#inbound" aria-controls="inbound" role="tab" data-toggle="tab">Inbound</a></li>
+-    </ul>
+-
+-    <!-- Tab panes -->
+-    <div class="tab-content">
+-        <div role="tabpanel" class="tab-pane active" id="outbout">
+-            <div class="myfullchart">
+-                <div data-netdata="tc.world_out"
+-                    data-host="//london.my-netdata.io"
+-                    data-common-max="tc-world-out"
+-                    data-chart-library="dygraph"
+-                    data-title="EU - London, traffic we send per service"
+-                    data-width="100%"
+-                    data-height="100%"
+-                    data-after="-300"
+-                    ></div>
+-            </div>
+-
+-            <div class="myfullchart">
+-                <div data-netdata="tc.world_out"
+-                    data-host="//atlanta.my-netdata.io"
+-                    data-chart-library="dygraph"
+-                    data-common-max="tc-world-out"
+-                    data-title="US - Atlanta, traffic we send per service"
+-                    data-width="100%"
+-                    data-height="100%"
+-                    data-after="-300"
+-                    ></div>
+-
+-            </div>
+-
+-            <div class="myfullchart">
+-                <div data-netdata="tc.world_out"
+-                    data-host="//sanfrancisco.netdata.rocks"
+-                    data-chart-library="dygraph"
+-                    data-common-max="tc-world-out"
+-                    data-title="US - California, traffic we send per service"
+-                    data-width="100%"
+-                    data-height="100%"
+-                    data-after="-300"
+-                    ></div>
+-            </div>
+-
+-            <div class="myfullchart">
+-                <div data-netdata="tc.world_out"
+-                    data-host="//toronto.netdata.rocks"
+-                    data-chart-library="dygraph"
+-                    data-common-max="tc-world-out"
+-                    data-title="Canada, traffic we send per service"
+-                    data-width="100%"
+-                    data-height="100%"
+-                    data-after="-300"
+-                    ></div>
+-            </div>
+-        </div>
+-
+-        <div role="tabpanel" class="tab-pane" id="inbound">
+-            <div class="myfullchart">
+-                <div data-netdata="tc.world_in"
+-                    data-host="//london.my-netdata.io"
+-                    data-common-max="tc-world-in"
+-                    data-chart-library="dygraph"
+-                    data-title="EU - London, traffic we receive per service"
+-                    data-width="100%"
+-                    data-height="100%"
+-                    data-after="-300"
+-                    ></div>
+-
+-            </div>
+-
+-            <div class="myfullchart">
+-                <div data-netdata="tc.world_in"
+-                    data-host="//atlanta.my-netdata.io"
+-                    data-common-max="tc-world-in"
+-                    data-chart-library="dygraph"
+-                    data-title="US - Atlanta, traffic we receive per service"
+-                    data-width="100%"
+-                    data-height="100%"
+-                    data-after="-300"
+-                    ></div>
+-
+-            </div>
+-
+-            <div class="myfullchart">
+-                <div data-netdata="tc.world_in"
+-                    data-host="//sanfrancisco.netdata.rocks"
+-                    data-common-max="tc-world-in"
+-                    data-chart-library="dygraph"
+-                    data-title="US - California, traffic we receive per service"
+-                    data-width="100%"
+-                    data-height="100%"
+-                    data-after="-300"
+-                    ></div>
+-            </div>
+-
+-            <div class="myfullchart">
+-                <div data-netdata="tc.world_in"
+-                    data-host="//toronto.netdata.rocks"
+-                    data-common-max="tc-world-in"
+-                    data-chart-library="dygraph"
+-                    data-title="Canada, traffic we receive per service"
+-                    data-width="100%"
+-                    data-height="100%"
+-                    data-after="-300"
+-                    ></div>
+-            </div>
+-        </div>
+-    </div>
+-    <div style="width: 100%; text-align: right; font-size: 1vw;">
+-        <i class="fa fa-comment" aria-hidden="true"></i> <i>these legends are interactive and the charts are resizable here ^^^</i>
+-    </div>
+-
+-    <div class="mytitle">
+-        DDoS protection performance on the demo sites
+-    </div>
+-    <div class="mycontent">
+-        iptables SYNPROXY configured by <a href="https://github.com/netdata/netdata/blob/master/collectors/proc.plugin/README.md#linux-anti-ddos">FireHOL</a>
+-    </div>
+-
+-    <div style="padding-top: 4vw; width: 100%; text-align: center; font-size: 1.5vw;">
+-
+-        <div class="mysparkline">
+-            <div class="mysparkline-overchart-label">
+-                <b>EU - London</b>, TCP SYN packets/s received
+-            </div>
+-            <div class="mysparkline-overchart-value" id="netfilter.synproxy_syn_received.netdata1" >
+-            </div>
+-            <div data-netdata="netfilter.synproxy_syn_received"
+-                    data-dimensions="received"
+-                    data-host="//london.my-netdata.io"
+-                    data-decimal-digits="0"
+-                    data-common-max="synproxy-in"
+-                    data-chart-library="dygraph"
+-                    data-dygraph-theme="sparkline"
+-                    data-dygraph-type="area"
+-                    data-width="100%"
+-                    data-height="100%"
+-                    data-after="-300"
+-                    data-colors="#558855"
+-                    data-show-value-of-received-at="netfilter.synproxy_syn_received.netdata1"
+-                    ></div>
+-        </div>
+-
+-        <div class="mysparkline">
+-            <div class="mysparkline-overchart-label">
+-                <b>US - Atlanta</b>, TCP SYN packets/s received
+-            </div>
+-            <div class="mysparkline-overchart-value" id="netfilter.synproxy_syn_received.netdata2" >
+-            </div>
+-            <div data-netdata="netfilter.synproxy_syn_received"
+-                    data-dimensions="received"
+-                    data-host="//atlanta.my-netdata.io"
+-                    data-decimal-digits="0"
+-                    data-common-max="synproxy-in"
+-                    data-chart-library="dygraph"
+-                    data-dygraph-theme="sparkline"
+-                    data-dygraph-type="area"
+-                    data-width="100%"
+-                    data-height="100%"
+-                    data-after="-300"
+-                    data-colors="#885555"
+-                    data-show-value-of-received-at="netfilter.synproxy_syn_received.netdata2"
+-                    ></div>
+-        </div>
+-
+-        <div class="mysparkline">
+-            <div class="mysparkline-overchart-label">
+-                <b>US - California</b>, TCP SYN packets/s received
+-            </div>
+-            <div class="mysparkline-overchart-value" id="netfilter.synproxy_syn_received.netdata3" >
+-            </div>
+-            <div data-netdata="netfilter.synproxy_syn_received"
+-                    data-dimensions="received"
+-                    data-host="//sanfrancisco.netdata.rocks"
+-                    data-decimal-digits="0"
+-                    data-common-max="synproxy-in"
+-                    data-chart-library="dygraph"
+-                    data-dygraph-theme="sparkline"
+-                    data-dygraph-type="area"
+-                    data-width="100%"
+-                    data-height="100%"
+-                    data-after="-300"
+-                    data-colors="#555588"
+-                    data-show-value-of-received-at="netfilter.synproxy_syn_received.netdata3"
+-                    ></div>
+-        </div>
+-
+-        <div class="mysparkline">
+-            <div class="mysparkline-overchart-label">
+-                <b>Canada</b>, TCP SYN packets/s received
+-            </div>
+-            <div class="mysparkline-overchart-value" id="netfilter.synproxy_syn_received.netdata4" >
+-            </div>
+-            <div data-netdata="netfilter.synproxy_syn_received"
+-                    data-dimensions="received"
+-                    data-host="//toronto.netdata.rocks"
+-                    data-decimal-digits="0"
+-                    data-common-max="synproxy-in"
+-                    data-chart-library="dygraph"
+-                    data-dygraph-theme="sparkline"
+-                    data-dygraph-type="area"
+-                    data-width="100%"
+-                    data-height="100%"
+-                    data-after="-300"
+-                    data-colors="#885588"
+-                    data-show-value-of-received-at="netfilter.synproxy_syn_received.netdata4"
+-                    ></div>
+-        </div>
+-    </div>
+-    <div style="width: 100%; text-align: right; font-size: 1vw;">
+-        <i class="fa fa-comment" aria-hidden="true"></i> <i>did you notice the decimal numbers?
+-        <br/>netdata interpolates collected values at second boundaries, with nanosecond detail!</i>
+-    </div>
+-
+-
+-    <div class="mytitle">
+-        CPU Utilization of the demo sites
+-    </div>
+-
+-    <div style="padding-top: 1vw;">
+-        <div class="myfullchart">
+-            <div data-netdata="system.cpu"
+-                data-host="//london.my-netdata.io"
+-                data-chart-library="dygraph"
+-                data-title="EU - London, CPU Usage"
+-                data-width="100%"
+-                data-height="100%"
+-                data-after="-300"
+-                data-dygraph-valuerange="[0, 100]"
+-                ></div>
+-        </div>
+-
+-        <div class="myfullchart">
+-            <div data-netdata="system.cpu"
+-                data-host="//atlanta.my-netdata.io"
+-                data-chart-library="dygraph"
+-                data-title="US - Atlanta, CPU Usage"
+-                data-width="100%"
+-                data-height="100%"
+-                data-after="-300"
+-                data-dygraph-valuerange="[0, 100]"
+-                ></div>
+-        </div>
+-
+-        <div class="myfullchart">
+-            <div data-netdata="system.cpu"
+-                data-host="//sanfrancisco.netdata.rocks"
+-                data-chart-library="dygraph"
+-                data-title="US - California, CPU Usage"
+-                data-width="100%"
+-                data-height="100%"
+-                data-after="-300"
+-                data-dygraph-valuerange="[0, 100]"
+-                ></div>
+-        </div>
+-
+-        <div class="myfullchart">
+-            <div data-netdata="system.cpu"
+-                data-host="//toronto.netdata.rocks"
+-                data-chart-library="dygraph"
+-                data-title="Canada, CPU Usage"
+-                data-width="100%"
+-                data-height="100%"
+-                data-after="-300"
+-                data-dygraph-valuerange="[0, 100]"
+-                ></div>
+-        </div>
+-    </div>
+-    <div style="width: 100%; text-align: right; font-size: 1vw;">
+-        <i class="fa fa-comment" aria-hidden="true"></i> <i>what is using so much CPU?
+-        <br/>The site <a href="//iplists.firehol.org/">iplists.firehol.org</a> is maintained by FireHOL - the CPU is used for comparing security IP Lists.</i>
+-    </div>
+-
+-    <div class="mytitle">
+-        Netdata performance
+-    </div>
+-    <div class="mycontent">
+-        netdata monitors <b>users</b>, <b>user groups</b>, <b>applications (process trees)</b>
+-        <br/>
+-        <b>containers</b> (<code>lxc</code>, <code>docker</code>, etc.) and SNMP devices.
+-    </div>
+-
+-    <!-- Nav tabs -->
+-    <ul class="nav nav-tabs" role="tablist" style="padding-top: 1vw;">
+-        <li role="presentation" class="active"><a href="#netdata_cpu" aria-controls="netdata_cpu" role="tab" data-toggle="tab">CPU</a></li>
+-        <li role="presentation"><a href="#netdata_avgtime" aria-controls="netdata_avgtime" role="tab" data-toggle="tab">Average Response Time</a></li>
+-    </ul>
+-
+-    <!-- Tab panes -->
+-    <div class="tab-content">
+-        <div role="tabpanel" class="tab-pane active" id="netdata_cpu">
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>EU - London</b>, CPU % of a single core
+-                </div>
+-                <div class="mysparkline-overchart-value" id="users.cpu.netdata1" >
+-                </div>
+-                <div data-netdata="apps.cpu"
+-                        data-dimensions="netdata"
+-                        data-common-max="users-cpu"
+-                        data-decimal-digits="1"
+-                        data-host="//london.my-netdata.io"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#558855"
+-                        data-show-value-of-netdata-at="users.cpu.netdata1"
+-                        ></div>
+-            </div>
+-
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>US - Atlanta</b>, CPU % of a single core
+-                </div>
+-                <div class="mysparkline-overchart-value" id="users.cpu.netdata2" >
+-                </div>
+-                <div data-netdata="apps.cpu"
+-                        data-dimensions="netdata"
+-                        data-common-max="users-cpu"
+-                        data-decimal-digits="1"
+-                        data-host="//atlanta.my-netdata.io"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#885555"
+-                        data-show-value-of-netdata-at="users.cpu.netdata2"
+-                        ></div>
+-            </div>
+-
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>US - California</b>, CPU % of a single core
+-                </div>
+-                <div class="mysparkline-overchart-value" id="users.cpu.netdata3" >
+-                </div>
+-                <div data-netdata="apps.cpu"
+-                        data-dimensions="netdata"
+-                        data-common-max="users-cpu"
+-                        data-decimal-digits="1"
+-                        data-host="//sanfrancisco.netdata.rocks"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#555588"
+-                        data-show-value-of-netdata-at="users.cpu.netdata3"
+-                        ></div>
+-            </div>
+-
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>Toronto</b>, CPU % of a single core
+-                </div>
+-                <div class="mysparkline-overchart-value" id="users.cpu.netdata4" >
+-                </div>
+-                <div data-netdata="apps.cpu"
+-                        data-dimensions="netdata"
+-                        data-common-max="users-cpu"
+-                        data-decimal-digits="1"
+-                        data-host="//toronto.netdata.rocks"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#885588"
+-                        data-show-value-of-netdata-at="users.cpu.netdata4"
+-                        ></div>
+-            </div>
+-
+-            <div style="width: 100%; text-align: right; font-size: 1vw;">
+-                <i class="fa fa-comment" aria-hidden="true"></i> <i>this utilization is about the whole netdata process tree and the percentage is of <b>a single core</b>!
+-                <br/>including <b>BASH</b> plugins (it monitors <code>mysql</code> on the demo sites), <b>node.js</b> plugins (it monitors <code>bind9</code> on the demo sites), etc.
+-                <br/>and including the chart refreshes for the dashboards of all viewers.</i>
+-            </div>
+-        </div>
+-
+-        <div role="tabpanel" class="tab-pane" id="netdata_avgtime">
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>EU - London</b>, API average response time in milliseconds
+-                </div>
+-                <div class="mysparkline-overchart-value" id="netdata.response_time1" >
+-                </div>
+-                <div data-netdata="netdata.response_time"
+-                        data-host="//london.my-netdata.io"
+-                        data-common-max="netdata-response-time"
+-                        data-decimal-digits="1"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#558855 #356835"
+-                        data-show-value-of-average-at="netdata.response_time1"
+-                        ></div>
+-            </div>
+-
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>US - Atlanta</b>, API average response time in milliseconds
+-                </div>
+-                <div class="mysparkline-overchart-value" id="netdata.response_time2" >
+-                </div>
+-                <div data-netdata="netdata.response_time"
+-                        data-host="//atlanta.my-netdata.io"
+-                        data-common-max="netdata-response-time"
+-                        data-decimal-digits="1"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#885555 #683535"
+-                        data-show-value-of-average-at="netdata.response_time2"
+-                        ></div>
+-            </div>
+-
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>US - California</b>, API average response time in milliseconds
+-                </div>
+-                <div class="mysparkline-overchart-value" id="netdata.response_time3" >
+-                </div>
+-                <div data-netdata="netdata.response_time"
+-                        data-host="//sanfrancisco.netdata.rocks"
+-                        data-common-max="netdata-response-time"
+-                        data-decimal-digits="1"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#555588 #353568"
+-                        data-show-value-of-average-at="netdata.response_time3"
+-                        ></div>
+-            </div>
+-
+-            <div class="mysparkline">
+-                <div class="mysparkline-overchart-label">
+-                    <b>Canada</b>, API average response time in milliseconds
+-                </div>
+-                <div class="mysparkline-overchart-value" id="netdata.response_time4" >
+-                </div>
+-                <div data-netdata="netdata.response_time"
+-                        data-host="//toronto.netdata.rocks"
+-                        data-decimal-digits="1"
+-                        data-common-max="netdata-response-time"
+-                        data-chart-library="dygraph"
+-                        data-dygraph-theme="sparkline"
+-                        data-dygraph-type="area"
+-                        data-width="100%"
+-                        data-height="100%"
+-                        data-after="-300"
+-                        data-colors="#885588 #683568"
+-                        data-show-value-of-average-at="netdata.response_time4"
+-                        ></div>
+-            </div>
+-
+-            <div style="width: 100%; text-align: right; font-size: 1vw;">
+-                <i class="fa fa-comment" aria-hidden="true"></i> <i>netdata is really <b>fast</b> (the values are milliseconds!)
+-                <br/>
+-                These values include everything, from the reception of the first byte to the dispatch of the last, including gzip compression.
+-                <br/>
+-                Values above 2-3ms are usually chart refreshes of charts with several dimensions, charts with very long durations (zoomed out), or file transfers.
+-                </i>
+-            </div>
+-        </div>
+-    </div>
+-
+-    <div style="padding-top: 6vw; width: 100%; text-align: center; font-size: 2vw;">
+-        want to know more?
+-        <br/>
+-        jump to <a href="https://github.com/netdata/netdata/">the netdata page at github</a>
+-        <br/>
+-        it needs just 3 mins to be installed on your servers!
+-        <br/>
+-        &nbsp;
+-    </div>
+-</div>
+-</body>
+-<script>
+-    // google analytics when this is used for the home page of the demo sites
+-    // you don't need this if you customize this dashboard for your needs
+-    setTimeout(function() {
+-        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+-        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+-        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+-        })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+-
+-        ga('create', 'UA-64295674-3', 'auto');
+-        ga('send', 'pageview');
+-    }, 2000);
+-</script>
+-</html>
+diff --git a/web/gui/goto-host-from-alarm.html b/web/gui/goto-host-from-alarm.html
+index 7d12f848..af9db7ea 100644
+--- a/web/gui/goto-host-from-alarm.html
++++ b/web/gui/goto-host-from-alarm.html
+@@ -2,13 +2,6 @@
+ <!-- SPDX-License-Identifier: GPL-3.0-or-later -->
+ <html lang="en">
+ <head>
+-    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
+-            new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
+-        j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
+-        'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
+-    })(window,document,'script','dataLayer','GTM-N6CBMJD');
+-    dataLayer.push({"anonymous_statistics" : "false"});
+-    </script>    
+     <title>Goto a host you know...</title>
+     <meta name="application-name" content="netdata">
+     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff --git a/web/gui/index.html b/web/gui/index.html
+index d3099101..47baa548 100644
+--- a/web/gui/index.html
++++ b/web/gui/index.html
+@@ -17,22 +17,6 @@
+ 
+     <link rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAP9JREFUeNpiYBgFo+A/w34gpiZ8DzWzAYgNiHGAA5UdgA73g+2gcyhgg/0DGQoweB6IBQYyFCCOGOBQwBMd/xnW09ERDtgcoEBHB+zHFQrz6egIBUasocDAcJ9OxWAhE4YQI8MDILmATg7wZ8QRDfQKhQf4Cie6pAVGPA4AhQKo0BCgZRAw4ZSBpIWJNI6CD4wEKikBaFqgVSgcYMIrzcjwgcahcIGRiPYCLUPBkNhWUwP9akVcoQBpatG4MsLviAIqWj6f3Absfdq2igg7IIEKDVQKEzN5ofAenJCp1I8gJRTug5tfkGIdR1FDniMI+QZUjF8Amn5htOdHCAAEGACE6B0cS6mrEwAAAABJRU5ErkJggg==" />
+ 
+-    <meta property="og:locale"             content="en_US" />
+-    <meta property="og:url"                content="https://my-netdata.io" />
+-    <meta property="og:type"               content="website" />
+-    <meta property="og:site_name"          content="netdata"/>
+-    <meta property="og:title"              content="Get control of your Linux Servers. Simple. Effective. Awesome." />
+-    <meta property="og:description"        content="Unparalleled insights, in real-time, of everything happening on your Linux systems and applications, with stunning, interactive web dashboards and powerful performance and health alarms." />
+-    <meta property="og:image"              content="https://cloud.githubusercontent.com/assets/2662304/22945737/e98cd0c6-f2fd-11e6-96f1-5501934b0955.png" />
+-    <meta property="og:image:type"         content="image/png" />
+-    <meta property="fb:app_id"             content="1200089276712916" />
+-
+-    <meta name="twitter:card"              content="summary" />
+-    <meta name="twitter:site"              content="@linuxnetdata" />
+-    <meta name="twitter:title"             content="Get control of your Linux Servers. Simple. Effective. Awesome." />
+-    <meta name="twitter:description"       content="Unparalleled insights, in real-time, of everything happening on your Linux systems and applications, with stunning, interactive web dashboards and powerful performance and health alarms." />
+-    <meta name="twitter:image"             content="https://cloud.githubusercontent.com/assets/2662304/14092712/93b039ea-f551-11e5-822c-beadbf2b2a2e.gif" />
+-
+     <script src="main.js?v20190905-0"></script>
+ </head>
+ 
+@@ -90,13 +74,9 @@
+             </div>
+             <nav class="collapse navbar-collapse navbar-right" role="navigation">
+                 <ul class="nav navbar-nav">
+-                    <li title="Nodes view" data-toggle="tooltip" data-placement="bottom"><a onclick="openAuthenticatedUrl('console.html');" class="btn" target="_blank"><i class="fas fa-tv"></i>&nbsp;<span class="hidden-sm hidden-md">Nodes<sup class="beta"> beta</sup></span></a></li>
+                     <li id="alarmsButton"  title="check the health monitoring alarms and their log" data-toggle="tooltip" data-placement="bottom"><a href="#" class="btn" data-toggle="modal" data-target="#alarmsModal"><i class="fas fa-bell"></i>&nbsp;<span class="hidden-sm hidden-md">Alarms&nbsp;</span><span id="alarms_count_badge" class="badge"></span></a></li>
+                     <li title="change dashboard settings" data-toggle="tooltip" data-placement="bottom"><a href="#" class="btn" data-toggle="modal" data-target="#optionsModal"><i class="fas fa-cog"></i>&nbsp;<span class="hidden-sm hidden-md">Settings</span></a></li>
+-                    <li title="check for netdata updates<br/>you should keep your netdata updated" data-toggle="tooltip" data-placement="bottom" class="hidden-sm" id="updateButton"><a href="#" class="btn" data-toggle="modal" data-target="#updateModal"><i class="fas fa-cloud-download-alt"></i> <span class="hidden-sm hidden-md">Update </span><span id="update_badge" class="badge"></span></a></li>
+                     <li title="the netdata wiki home at github<br/>remember to <b>give netdata a <i class=&quot;fas fa-star&quot;></i></b> !" data-toggle="tooltip" data-placement="bottom" class="hidden-xs hidden-sm hidden-md"><a href="https://github.com/netdata/netdata" class="btn" target="_blank"><i class="fab fa-github"></i></a></li>
+-                    <li title="follow netdata on twitter" data-toggle="tooltip" data-placement="bottom" class="hidden-xs hidden-sm hidden-md"><a href="https://twitter.com/linuxnetdata" class="btn" target="_blank"><i class="fab fa-twitter"></i></a></li>
+-                    <li title="like netdata on facebook" data-toggle="tooltip" data-placement="bottom" class="hidden-xs hidden-sm hidden-md"><a href="https://www.facebook.com/linuxnetdata/" class="btn" target="_blank"><i class="fab fa-facebook"></i></a></li>
+                     <li title="import / load a netdata snapshot" data-toggle="tooltip" data-placement="bottom" id="loadButton"><a href="#" class="btn" data-toggle="modal" data-target="#loadSnapshotModal"><i class="fas fa-download"></i>&nbsp;<span class="hidden-sm hidden-md hidden-lg">Import</span></a></li>
+                     <li title="export / save a netdata snapshot" data-toggle="tooltip" data-placement="bottom" id="saveButton"><a href="#" class="btn" data-toggle="modal" data-target="#saveSnapshotModal"><i class="fas fa-upload"></i>&nbsp;<span class="hidden-sm hidden-md hidden-lg">Export</span></a></li>
+                     <li title="print this dashboard to PDF" data-toggle="tooltip" data-placement="bottom" id="printButton"><a href="#" class="btn" data-toggle="modal" data-target="#printPreflightModal"><i class="fas fa-print"></i>&nbsp;<span class="hidden-sm hidden-md hidden-lg">Print</span></a></li>
+@@ -109,17 +89,6 @@
+     <div class="navbar-highlight">
+         <div id="navbar-highlight-content" class="navbar-highlight-content"></div>
+     </div>
+-
+-    <div id="sign-in-banner" style="display: none">
+-        <div class="container">
+-            Like what you see? 
+-            <strong><a href="#" class="__link" onclick="signInDidClick(event); return false">Sign in</a> 
+-            to experience the full-range of netdata capabilities!</strong>
+-            <div class="__close" onclick="closeSignInBannerDidClick(event)">
+-                Close <i class="fas fa-times"></i>
+-            </div>
+-        </div>
+-    </div>
+     
+     <div id="masthead" style="display: none;">
+         <div class="container">
+@@ -1140,92 +1109,6 @@
+         </div>
+     </div>
+ 
+-
+-    <div class="modal fade" id="updateModal" tabindex="-1" role="dialog" aria-labelledby="updateModalLabel">
+-        <div class="modal-dialog" role="document">
+-            <div class="modal-content">
+-                <div class="modal-header">
+-                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+-                    <h4 class="modal-title" id="updateModalLabel">Update Check</h4>
+-                </div>
+-                <div class="modal-body">
+-                    Your netdata version: <b><code><span id="netdataVersion">Unknown</span></code></b><br/>
+-                    <br/>
+-                    <div style="padding: 10px;"></div>
+-                    <div id="versionCheckLog">Not checked yet. Please press the Check Now button.</div>
+-                    <div>
+-                        <hr/>
+-                    </div>
+-                    <div>
+-                        For progress reports and key netdata updates: <strong><a href="https://twitter.com/linuxnetdata" target="_blank">follow netdata on <i class="fab fa-twitter"></i> twitter</a></strong>.
+-                        <br/>
+-                        You can also <a href="https://www.facebook.com/linuxnetdata/" target="_blank">follow netdata on <i class="fab fa-facebook"></i> facebook</a>,
+-                        or <a href="https://github.com/netdata/netdata" target="_blank">watch netdata on <i class="fab fa-github"></i> github</a>.
+-                    </div>
+-                </div>
+-                <div class="modal-footer">
+-                    <a href="#" onclick="notifyForUpdate(true); return false;" type="button" class="btn btn-default">Check Now</a>
+-                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+-                </div>
+-            </div>
+-        </div>
+-    </div>
+-
+-    <div class="modal fade" id="signInModal" tabindex="-1" role="dialog" aria-labelledby="signInModalLabel">
+-        <div class="modal-dialog" role="document">
+-            <div class="modal-content">
+-                <div class="modal-header">
+-                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+-                    <h4 class="modal-title" id="signInModalLabel">Sign In</h4>
+-                </div>
+-                <div class="modal-body">
+-                    <p>
+-                        Signing-in to netdata.cloud will synchronize the list of 
+-                        your netdata monitored nodes known at registry 
+-                        <strong><span id="sim-registry"></span></strong>. This 
+-                        may include server hostnames, urls and identification 
+-                        GUIDs.
+-                    </p>
+-                    <p>
+-                        After you upgrade all your netdata servers, your private 
+-                        registry will not be needed any more.
+-                    </p>
+-                    <p>
+-                        Are you sure you want to proceed?
+-                    </p>
+-                </div>
+-                <div class="modal-footer">
+-                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+-                    <a href="#" onclick="explicitlySignIn(); return false;" type="button" class="btn btn-success">Sign In</a>
+-                </div>
+-            </div>
+-        </div>
+-    </div>
+-
+-    <div class="modal fade" id="syncRegistryModal" tabindex="-1" role="dialog" aria-labelledby="syncRegistryModalLabel">
+-        <div class="modal-dialog" role="document">
+-            <div class="modal-content">
+-                <div class="modal-header">
+-                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+-                    <h4 class="modal-title" id="syncRegistryModalLabel">Synchronize netdata.cloud with registry?</h4>
+-                </div>
+-                <div class="modal-body">
+-                    <p>
+-                        You are about to synchronize your netdata.cloud account with data from the registry at <strong><span id="sync-registry-modal-registry"></span></strong>.
+-                        This may include server hostnames, urls and identification GUIDs.
+-                    </p>
+-                    <p>
+-                        Are you sure you want to proceed?
+-                    </p>
+-                </div>
+-                <div class="modal-footer">
+-                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+-                    <a href="#" onclick="explicitlySyncAgents(); return false;" type="button" class="btn btn-success">Synchronize</a>
+-                </div>
+-            </div>
+-        </div>
+-    </div>
+-
+     <div class="modal fade" id="deleteRegistryModal" tabindex="-1" role="dialog" aria-labelledby="deleteRegistryModalLabel">
+         <div class="modal-dialog" role="document">
+             <div class="modal-content">
+diff --git a/web/gui/infographic.html b/web/gui/infographic.html
+deleted file mode 100644
+index 24ff8f4e..00000000
+--- a/web/gui/infographic.html
++++ /dev/null
+@@ -1,171 +0,0 @@
+-<!doctype html>
+-<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
+-<html lang=en-us>
+-<head>
+-    <meta charset=utf-8>
+-    <title>NetData: Get control of your Linux Servers. Simple. Effective. Awesome.</title>
+-    <meta name=author content="Costa Tsaousis">
+-    <meta name=description content="Unparalleled insights, in real-time, of everything happening on your Linux systems and applications, with stunning, interactive web dashboards and powerful performance and health alarms.">
+-
+-    <meta name=viewport content="width=device-width,initial-scale=1">
+-    <link rel=apple-touch-icon href=apple-touch-icon.png>
+-    <link rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAP9JREFUeNpiYBgFo+A/w34gpiZ8DzWzAYgNiHGAA5UdgA73g+2gcyhgg/0DGQoweB6IBQYyFCCOGOBQwBMd/xnW09ERDtgcoEBHB+zHFQrz6egIBUasocDAcJ9OxWAhE4YQI8MDILmATg7wZ8QRDfQKhQf4Cie6pAVGPA4AhQKo0BCgZRAw4ZSBpIWJNI6CD4wEKikBaFqgVSgcYMIrzcjwgcahcIGRiPYCLUPBkNhWUwP9akVcoQBpatG4MsLviAIqWj6f3Absfdq2igg7IIEKDVQKEzN5ofAenJCp1I8gJRTug5tfkGIdR1FDniMI+QZUjF8Amn5htOdHCAAEGACE6B0cS6mrEwAAAABJRU5ErkJggg==" />
+-
+-    <meta property="og:url"                content="https://my-netdata.io/infographic.html" />
+-    <meta property="og:type"               content="website" />
+-    <meta property="og:title"              content="netdata infographic" />
+-    <meta property="og:description"        content="Unparalleled insights, in real-time, of everything happening on your Linux systems and applications, with stunning, interactive web dashboards and powerful performance and health alarms." />
+-    <meta property="og:image"              content="https://user-images.githubusercontent.com/43294513/60951037-8ba5d180-a2f8-11e9-906e-e27356f168bc.png" />
+-    <meta property="og:image:type"         content="image/png" />
+-    <meta property="fb:app_id"             content="1200089276712916" />
+-
+-    <meta name="twitter:card"              content="summary" />
+-    <meta name="twitter:site"              content="@linuxnetdata" />
+-    <meta name="twitter:title"             content="netdata infographic" />
+-    <meta name="twitter:description"       content="Unparalleled insights, in real-time, of everything happening on your Linux systems and applications, with stunning, interactive web dashboards and powerful performance and health alarms." />
+-    <meta name="twitter:image"             content="https://cloud.githubusercontent.com/assets/2662304/25580009/bf7016a4-2e85-11e7-9a7a-b36c57db7b91.png" />
+-
+-    <meta name="google-site-verification" content="3Xmk2kyCvai8p9HEnYHoQ9RBW20-b1NvPAgu07Fkkds" />
+-    <meta name="msvalidate.01" content="896DCA31C9A664CE359FCF1A645DD476" />
+-
+-    <style>/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */
+-    html {
+-        line-height: 1.15;
+-        -ms-text-size-adjust: 100%;
+-        -webkit-text-size-adjust: 100%;
+-        font: 17px/1.4 'Open Sans', sans-serif;
+-        text-align: center
+-    }
+-    </style>
+-</head>
+-<body>
+-<div style="width: 100%;text-align:center;">
+-    <div>
+-        <p style="font-size: 16pt">
+-        <b>Interactive infographic of netdata features and functions</b>
+-        </p>
+-        <p>
+-            Hover and click on the infographic, to open the related wiki page.
+-            <br/>
+-            <small>
+-                The links and the docs are still a work in progress.
+-                The interactive infographic is a feature of <b>draw.io</b>.
+-            </small>
+-        </p>
+-    </div>
+-    <div class=site-footer role=contentinfo>
+-        <p>
+-        <div style="display: inline-block;">
+-            <div style="vertical-align:top;display:inline-block; height: 34px;margin-top:3px;"><a class=twitter-share-button href=https://twitter.com/share data-count=none data-lang=en data-via=linuxnetdata data-size=small data-text="Get control of your Linux servers. Simple. Effective. Awesome." data-url=https://my-netdata.io/infographic.html >Tweet</a></div>
+-            <div style="vertical-align:top;display:inline-block; height: 34px;margin-top:3px;"><a class=twitter-follow-button href=https://twitter.com/linuxnetdata data-show-count=false data-lang=en data-size=small>Follow @linuxnetdata</a></div>
+-        </div>
+-        <div style="display: inline-block;">
+-            <div class="fb-like" data-href="https://my-netdata.io/" data-layout="button" data-action="like" data-show-faces="false" data-share="false" style="vertical-align:top;display:inline-block; height: 34px;"></div>
+-            <div class="fb-share-button" data-href="https://my-netdata.io/" data-layout="button" data-size="small" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fmy-netdata.io%2Finfographic.html&amp;src=sdkpreparse" style="vertical-align:top;display:inline-block; height: 34px;">Share</a></div>
+-        </div>
+-    </div>
+-    <div>
+-        <p style="font-size: 14pt">
+-            <b>New to netdata?</b> <a href="//my-netdata.io" target="_blank">Have a look at a netdata demo</a>. You will love it!
+-        </p>
+-        <p>
+-            <embed style="padding-top: 10px; padding-botton: 25px;" src="//registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=persons&label=user%20base&units=null&value_color=blue&precision=0&v42" type="image/svg+xml" height="20" />
+-            <embed style="padding-top: 10px; padding-botton: 25px;" src="//registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=machines&label=servers%20monitored&units=null&value_color=orange&precision=0&v42" type="image/svg+xml" height="20" />
+-            <embed style="padding-top: 10px; padding-botton: 25px;" src="//registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_sessions&label=sessions%20served&units=null&value_color=yellowgreen&precision=0&v42" type="image/svg+xml" height="20" />
+-        </p>
+-        <hr/>
+-    </div>
+-    <div style="width:90%;display:inline-block;max-width:1300px;text-align:left;">
+-        <div id="drawing" class="mxgraph" style="max-width:100%;border:1px solid transparent;"></div>
+-    </div>
+-</div>
+-</body>
+-
+-<script>
+-    var opts = {
+-		"highlight":"#0000ff",
+-		"target":"blank",
+-		"lightbox":false,
+-		"nav":false,
+-		"resize":true,
+-		"toolbar":"",
+-		"auto-fit":true,
+-		"check-visible-state":false,
+-		"edit":"https://raw.githubusercontent.com/netdata/netdata/master/diagrams/netdata-overview.xml",
+-		"url":"https://raw.githubusercontent.com/netdata/netdata/master/diagrams/netdata-overview.xml"
+-	};
+-	document.getElementById("drawing").dataset.mxgraph = JSON.stringify(opts);
+-</script>
+-
+-<script>
+-    if(window.location.hostname != 'my-netdata.io' || window.location.protocol != 'https:') {
+-        var canonical = document.createElement('link');
+-        canonical.rel = 'canonical';
+-        canonical.href = 'https://my-netdata.io/infographic.html';
+-        document.head.appendChild(canonical);
+-    }
+-</script>
+-
+-<script>!function (t, e) {
+-    "use strict";
+-    function a(t, n) {
+-        return t.hasAttribute(n) === !0 ? t : t.parentNode !== r.body ? a(t.parentNode, n) : e
+-    }
+-
+-    function n(n) {
+-        var o, i, r, c, g, u = a(n.target, "data-ga-action"), l = !1;
+-        u !== e && (o = u.getAttribute("data-ga-action") || e, i = u.getAttribute("data-ga-category") || e, r = u.getAttribute("data-ga-label") || e, c = u.getAttribute("href"), g = parseInt(u.getAttribute("data-ga-value"), 10) || e, ga !== e && i !== e && o !== e && (n.preventDefault(), "Download" !== i && n.ctrlKey !== !0 && n.metaKey !== !0 && 2 !== n.which || (l = !0, t.open(c)), function (a) {
+-            var n;
+-            ga("send", "event", i, o, r, g, {
+-                hitCallback: function () {
+-                    l === !1 && (n !== e && clearTimeout(n), t.location = a)
+-                }
+-            }), n = setTimeout(function () {
+-                l === !1 && (t.location.href = a)
+-            }, 1e3)
+-        }(c)))
+-    }
+-
+-    function o() {
+-        !function (t, e, a, n, o, i) {
+-            t.GoogleAnalyticsObject = n, t[n] || (t[n] = function () {
+-                (t[n].q = t[n].q || []).push(arguments)
+-            }), t[n].l = +new Date, o = e.createElement(a), i = e.getElementsByTagName(a)[0], o.src = "//www.google-analytics.com/analytics.js", i.parentNode.insertBefore(o, i)
+-        }(t, r, "script", "ga"), ga("create", "UA-64295674-3", "auto"), ga("send", "pageview"), t.document.addEventListener("click", n)
+-    }
+-
+-    function i() {
+-        !function (t, e, a) {
+-            var n, o = t.getElementsByTagName(e)[0];
+-            t.getElementById(a) || (n = t.createElement(e), n.id = a, n.src = "//platform.twitter.com/widgets.js", o.parentNode.insertBefore(n, o))
+-        }(r, "script", "twitter-wjs")
+-    }
+-
+-    var r = t.document;
+-    o(), t.onload = i
+-}(window)</script>
+-
+-<!-- facebook sdk -->
+-<div id="fb-root"></div>
+-<script>
+-    window.fbAsyncInit = function() {
+-        FB.init({
+-            appId      : '1200089276712916',
+-            xfbml      : true,
+-            version    : 'v2.8'
+-        });
+-    };
+-
+-    (function(d, s, id){
+-        var js, fjs = d.getElementsByTagName(s)[0];
+-        if (d.getElementById(id)) {return;}
+-        js = d.createElement(s); js.id = id;
+-        js.src = "//connect.facebook.net/en_US/sdk.js";
+-        fjs.parentNode.insertBefore(js, fjs);
+-    }(document, 'script', 'facebook-jssdk'));
+-</script>
+-
+-<script type="text/javascript" src="https://www.draw.io/embed2.js?s=arrows2;mscae/cloud;azure;office/users;office/servers&fetch=https%3A%2F%2Fraw.githubusercontent.com%2Fnetdata%2Fnetdata%2Fmaster%2Fdiagrams%2Fnetdata-overview.xml"></script>
+-
+-</html>
+-
+diff --git a/web/gui/main.js b/web/gui/main.js
+index 5bf11e5f..d30192b4 100644
+--- a/web/gui/main.js
++++ b/web/gui/main.js
+@@ -17,9 +17,6 @@ var netdataServer = undefined;
+ var netdataServerStatic = undefined;
+ var netdataCheckXSS = undefined;
+ 
+-// control the welcome modal and analytics
+-var this_is_demo = null;
+-
+ function escapeUserInputHTML(s) {
+     return s.toString()
+         .replace(/&/g, '&amp;')
+@@ -206,7 +203,6 @@ var urlOptions = {
+ 
+                 netdataShowAlarms = false;
+                 netdataRegistry = false;
+-                this_is_demo = false;
+                 break;
+ 
+             case 'live':
+@@ -678,32 +674,6 @@ function renderMachines(machinesArray) {
+                 </div>`
+             )
+         }
+-
+-        html += `<hr />`;
+-        html += `<div class="info-item">Demo netdata nodes</div>`;
+-
+-        const demoServers = [
+-            { url: "//london.netdata.rocks/default.html", title: "UK - London (DigitalOcean.com)" },
+-            { url: "//newyork.netdata.rocks/default.html", title: "US - New York (DigitalOcean.com)" },
+-            { url: "//sanfrancisco.netdata.rocks/default.html", title: "US - San Francisco (DigitalOcean.com)" },
+-            { url: "//atlanta.netdata.rocks/default.html", title: "US - Atlanta (CDN77.com)" },
+-            { url: "//frankfurt.netdata.rocks/default.html", title: "Germany - Frankfurt (DigitalOcean.com)" },
+-            { url: "//toronto.netdata.rocks/default.html", title: "Canada - Toronto (DigitalOcean.com)" },
+-            { url: "//singapore.netdata.rocks/default.html", title: "Japan - Singapore (DigitalOcean.com)" },
+-            { url: "//bangalore.netdata.rocks/default.html", title: "India - Bangalore (DigitalOcean.com)" },
+-
+-        ]
+-
+-        for (var server of demoServers) {
+-            html += (
+-                `<div class="agent-item">
+-                    <i class="fas fa-chart-bar" style="color: #fff"></i>
+-                    <a href="${server.url}">${server.title}</a>
+-                    <div></div>
+-                </div>
+-                `
+-            );
+-        }
+     }
+ 
+     return html;
+@@ -723,25 +693,9 @@ function clearMyNetdataMenu() {
+ }
+ 
+ function errorMyNetdataMenu() {
+-    setMyNetdataMenu(`<div class="agent-item" style="padding: 0 8px">
+-        <i class="fas fa-exclamation-triangle" style="color: red"></i>
+-        Cannot load known Netdata agents from Netdata Cloud! Please make sure you have the latest version of Netdata.
+-    </div>`);
+ }
+ 
+ function restrictMyNetdataMenu() {
+-    setMyNetdataMenu(`<div class="info-item" style="white-space: nowrap">
+-        <span>Please <a href="#" onclick="signInDidClick(event); return false">sign in to netdata.cloud</a> to view your nodes!</span>
+-        <div></div>
+-    </div>`);
+-}
+-
+-function openAuthenticatedUrl(url) {
+-    if (isSignedIn()) {
+-        window.open(url);
+-    } else {
+-        window.open(`${NETDATA.registry.cloudBaseURL}/account/sign-in-agent?id=${NETDATA.registry.machine_guid}&name=${encodeURIComponent(NETDATA.registry.hostname)}&origin=${encodeURIComponent(window.location.origin + "/")}&redirect_uri=${encodeURIComponent(window.location.origin + "/" + url)}`);
+-    }
+ }
+ 
+ function renderMyNetdataMenu(machinesArray) {
+@@ -750,42 +704,10 @@ function renderMyNetdataMenu(machinesArray) {
+ 
+     if (machinesArray == registryAgents) {
+         console.log("Rendering my-netdata menu from registry");
+-    } else {
+-        console.log("Rendering my-netdata menu from netdata.cloud", machinesArray);
+     }
+ 
+     let html = '';
+ 
+-    if (!isSignedIn()) {
+-        if (!NETDATA.registry.isRegistryEnabled()) {
+-            html += (
+-                `<div class="info-item" style="white-space: nowrap">
+-                    <span>Please <a href="#" onclick="signInDidClick(event); return false">sign in to netdata.cloud</a> to view your nodes!</span>
+-                    <div></div>
+-                </div>
+-                <hr />`
+-            );
+-        }
+-    }
+-
+-    if (isSignedIn()) {
+-        html += (
+-            `<div class="filter-control">
+-                <input 
+-                    id="my-netdata-menu-filter-input"
+-                    type="text" 
+-                    placeholder="filter nodes..."
+-                    autofocus
+-                    autocomplete="off"
+-                    value="${myNetdataMenuFilterValue}" 
+-                    onkeydown="myNetdataFilterDidChange(event)"
+-                />
+-                <span class="filter-control__clear" onclick="myNetdataFilterClearDidClick(event)"><i class="fas fa-times"></i><span>
+-            </div>
+-            <hr />`
+-        );
+-    }
+-
+     // options.hosts = [
+     //     {
+     //         hostname: "streamed1",
+@@ -799,73 +721,15 @@ function renderMyNetdataMenu(machinesArray) {
+         html += `<div id="my-netdata-menu-streamed">${renderStreamedHosts(options)}</div><hr />`;
+     }
+ 
+-    if (isSignedIn() || NETDATA.registry.isRegistryEnabled()) {
++    if (NETDATA.registry.isRegistryEnabled()) {
+         html += `<div id="my-netdata-menu-machines">${renderMachines(machinesArray)}</div><hr />`;
+     }
+ 
+-    if (!isSignedIn()) {
+-        html += (
+-            `<div class="agent-item">
+-                <i class="fas fa-cog""></i>
+-                <a href="#" onclick="switchRegistryModalHandler(); return false;">Switch Identity</a>
+-                <div></div>
+-            </div>
+-            <div class="agent-item">
+-                <i class="fas fa-question-circle""></i>
+-                <a href="https://github.com/netdata/netdata/tree/master/registry#netdata-registry" target="_blank">What is this?</a>
+-                <div></div>
+-            </div>`
+-        )
+-    } else {
+-        html += (
+-            `<div class="agent-item">
+-                <i class="fas fa-tv"></i>
+-                <a onclick="openAuthenticatedUrl('console.html');" target="_blank">Nodes<sup class="beta"> beta</sup></a>
+-                <div></div>
+-            </div>
+-            <div class="agent-item">
+-                <i class="fas fa-sync"></i>
+-                <a href="#" onclick="showSyncModal(); return false">Synchronize with netdata.cloud</a>
+-                <div></div>
+-            </div>
+-            <div class="agent-item">
+-                <i class="fas fa-question-circle""></i>
+-                <a href="https://netdata.cloud/about" target="_blank">What is this?</a>
+-                <div></div>
+-            </div>`
+-        )
+-    }
+-
+     el.innerHTML = html;
+ 
+     gotoServerInit();
+ }
+ 
+-function isdemo() {
+-    if (this_is_demo !== null) {
+-        return this_is_demo;
+-    }
+-    this_is_demo = false;
+-
+-    try {
+-        if (typeof document.location.hostname === 'string') {
+-            if (document.location.hostname.endsWith('.my-netdata.io') ||
+-                document.location.hostname.endsWith('.mynetdata.io') ||
+-                document.location.hostname.endsWith('.netdata.rocks') ||
+-                document.location.hostname.endsWith('.netdata.ai') ||
+-                document.location.hostname.endsWith('.netdata.live') ||
+-                document.location.hostname.endsWith('.firehol.org') ||
+-                document.location.hostname.endsWith('.netdata.online') ||
+-                document.location.hostname.endsWith('.netdata.cloud')) {
+-                this_is_demo = true;
+-            }
+-        }
+-    }
+-    catch (error) {
+-    }
+-    return this_is_demo;
+-}
+-
+ function netdataURL(url, forReload) {
+     if (typeof url === 'undefined')
+     // url = document.location.toString();
+@@ -973,28 +837,26 @@ function gotoServerModalHandler(guid) {
+         gotoServerValidateUrl(count++, guid, url);
+     }
+ 
+-    if (!isSignedIn()) {
+-        // When the registry is enabled, if the user's known URLs are not working
+-        // we consult the registry to get additional URLs.
+-        setTimeout(function () {
+-            if (gotoServerStop === false) {
+-                document.getElementById('gotoServerResponse').innerHTML = '<b>Added all the known URLs for this machine.</b>';
+-                NETDATA.registry.search(guid, function (data) {
+-                    // console.log(data);
+-                    len = data.urls.length;
+-                    while (len--) {
+-                        var url = data.urls[len][1];
+-                        // console.log(url);
+-                        if (typeof checked[url] === 'undefined') {
+-                            gotoServerValidateRemaining++;
+-                            checked[url] = true;
+-                            gotoServerValidateUrl(count++, guid, url);
+-                        }
++    // When the registry is enabled, if the user's known URLs are not working
++    // we consult the registry to get additional URLs.
++    setTimeout(function () {
++        if (gotoServerStop === false) {
++            document.getElementById('gotoServerResponse').innerHTML = '<b>Added all the known URLs for this machine.</b>';
++            NETDATA.registry.search(guid, function (data) {
++                // console.log(data);
++                len = data.urls.length;
++                while (len--) {
++                    var url = data.urls[len][1];
++                    // console.log(url);
++                    if (typeof checked[url] === 'undefined') {
++                        gotoServerValidateRemaining++;
++                        checked[url] = true;
++                        gotoServerValidateUrl(count++, guid, url);
+                     }
+-                });
+-            }
+-        }, 2000);
+-    }
++                }
++            });
++        }
++    }, 2000);
+ 
+     return false;
+ }
+@@ -1057,34 +919,15 @@ function notifyForDeleteRegistry() {
+     const responseEl = document.getElementById('deleteRegistryResponse');
+ 
+     if (deleteRegistryUrl) {
+-        if (isSignedIn()) {
+-            deleteCloudAgentURL(deleteRegistryGuid, deleteRegistryUrl)
+-                .then((count) => {
+-                    if (!count) {
+-                        responseEl.innerHTML = "<b>Sorry, this command was rejected by netdata.cloud!</b>";
+-                        return;
+-                    }
+-                    NETDATA.registry.delete(deleteRegistryUrl, function (result) {
+-                        if (result === null) {
+-                            console.log("Received error from registry", result);
+-                        }
+-
+-                        deleteRegistryUrl = null;
+-                        $('#deleteRegistryModal').modal('hide');
+-                        NETDATA.registry.init();
+-                    });
+-                });
+-        } else {
+-            NETDATA.registry.delete(deleteRegistryUrl, function (result) {
+-                if (result !== null) {
+-                    deleteRegistryUrl = null;
+-                    $('#deleteRegistryModal').modal('hide');
+-                    NETDATA.registry.init();
+-                } else {
+-                    responseEl.innerHTML = "<b>Sorry, this command was rejected by the registry server!</b>";
+-                }
+-            });
+-        }
++        NETDATA.registry.delete(deleteRegistryUrl, function (result) {
++            if (result !== null) {
++                deleteRegistryUrl = null;
++                $('#deleteRegistryModal').modal('hide');
++                NETDATA.registry.init();
++            } else {
++                responseEl.innerHTML = "<b>Sorry, this command was rejected by the registry server!</b>";
++            }
++        });
+     }
+ }
+ 
+@@ -2367,11 +2210,7 @@ function alarmsUpdateModal() {
+                     void ($element);
+                     let main_url;
+                     let common_url = "&host=" + encodeURIComponent(row['hostname']) + "&chart=" + encodeURIComponent(row['chart']) + "&family=" + encodeURIComponent(row['family']) + "&alarm=" + encodeURIComponent(row['name']) + "&alarm_unique_id=" + row['unique_id'] + "&alarm_id=" + row['alarm_id'] + "&alarm_event_id=" +  row['alarm_event_id'] + "&alarm_when=" + row['when'];
+-                    if (NETDATA.registry.isUsingGlobalRegistry() && NETDATA.registry.machine_guid != null) {
+-                        main_url = "https://netdata.cloud/alarms/redirect?agentID=" + NETDATA.registry.machine_guid + common_url;
+-                    } else {
+-                        main_url = NETDATA.registry.server + "/goto-host-from-alarm.html?" + common_url ;
+-                    }
++                    main_url = NETDATA.registry.server + "/goto-host-from-alarm.html?" + common_url ;
+                     window.open(main_url,"_blank");
+                 },
+                 rowStyle: function (row, index) {
+@@ -2803,7 +2642,6 @@ function initializeDynamicDashboardWithData(data) {
+         // update the dashboard hostname
+         document.getElementById('hostname').innerHTML = '<span id="hostnametext">' + options.hostname + ((netdataSnapshotData !== null) ? ' (snap)' : '').toString() + '</span>&nbsp;&nbsp;<strong class="caret">';
+         document.getElementById('hostname').href = NETDATA.serverDefault;
+-        document.getElementById('netdataVersion').innerHTML = options.version;
+ 
+         if (netdataSnapshotData !== null) {
+             $('#alarmsButton').hide();
+@@ -2836,7 +2674,7 @@ function initializeDynamicDashboardWithData(data) {
+         renderChartsAndMenu(data);
+ 
+         // Ensure MyNetdata menu is rendered with latest host info #5370
+-        renderMyNetdataMenu(isSignedIn() ? cloudAgents : registryAgents);
++        renderMyNetdataMenu(registryAgents);
+     }
+ }
+ 
+@@ -4136,18 +3974,10 @@ function runOnceOnDashboardWithjQuery() {
+     // ------------------------------------------------------------------------
+     // sidebar / affix
+ 
+-    if (shouldShowSignInBanner()) {
+-        const el = document.getElementById("sign-in-banner");
+-        if (el) {
+-            el.style.display = "initial";
+-            el.classList.add(`theme-${netdataTheme}`);
+-        }
+-    }
+-
+     $('#sidebar')
+         .affix({
+             offset: {
+-                top: (isdemo()) ? 150 : 0,
++                top: 0,
+                 bottom: 0
+             }
+         })
+@@ -4457,32 +4287,6 @@ function finalizePage() {
+     $(".shorten").shorten();
+     enableTooltipsAndPopovers();
+ 
+-    if (isdemo()) {
+-        // do not to give errors on netdata demo servers for 60 seconds
+-        NETDATA.options.current.retries_on_data_failures = 60;
+-
+-        // google analytics when this is used for the home page of the demo sites
+-        // this does not run on user's installations
+-        setTimeout(function () {
+-            (function (i, s, o, g, r, a, m) {
+-                i['GoogleAnalyticsObject'] = r;
+-                i[r] = i[r] || function () {
+-                    (i[r].q = i[r].q || []).push(arguments)
+-                }, i[r].l = 1 * new Date();
+-                a = s.createElement(o),
+-                    m = s.getElementsByTagName(o)[0];
+-                a.async = 1;
+-                a.src = g;
+-                m.parentNode.insertBefore(a, m)
+-            })(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
+-
+-            ga('create', 'UA-64295674-3', 'auto');
+-            ga('send', 'pageview', '/demosite/' + window.location.host);
+-        }, 2000);
+-    } else {
+-        notifyForUpdate();
+-    }
+-
+     if (urlOptions.show_alarms === true) {
+         setTimeout(function () {
+             $('#alarmsModal').modal('show');
+@@ -4547,12 +4351,9 @@ var netdataPrepCallback = function () {
+         }
+     });
+ 
+-    if (isdemo()) {
+-        document.getElementById('masthead').style.display = 'block';
+-    } else {
+-        if (urlOptions.update_always === true) {
+-            NETDATA.setOption('stop_updates_when_focus_is_lost', !urlOptions.update_always);
+-        }
++
++    if (urlOptions.update_always === true) {
++        NETDATA.setOption('stop_updates_when_focus_is_lost', !urlOptions.update_always);
+     }
+ };
+ 
+@@ -4614,542 +4415,4 @@ var selected_server_timezone = function (timezone, status) {
+ // our entry point
+ // var netdataStarted = performance.now();
+ 
+-var netdataCallback = initializeDynamicDashboard;
+-
+-// =================================================================================================
+-// netdata.cloud
+-
+-let registryAgents = [];
+-
+-let cloudAgents = [];
+-
+-let myNetdataMenuFilterValue = "";
+-
+-let cloudAccountID = null;
+-
+-let cloudAccountName = null;
+-
+-let cloudToken = null;
+-
+-/// Enforces a maximum string length while retaining the prefix and the postfix of
+-/// the string.
+-function truncateString(str, maxLength) {
+-    if (str.length <= maxLength) {
+-        return str;
+-    }
+-
+-    const spanLength = Math.floor((maxLength - 3) / 2);
+-    return `${str.substring(0, spanLength)}...${str.substring(str.length - spanLength)}`;
+-}
+-
+-// -------------------------------------------------------------------------------------------------
+-// netdata.cloud API Client
+-// -------------------------------------------------------------------------------------------------
+-
+-function isValidAgent(a) {
+-    return a.urls != null && a.urls.length > 0;
+-}
+-
+-// https://github.com/netdata/hub/issues/146
+-function getCloudAccountAgents() {
+-    if (!isSignedIn()) {
+-        return [];
+-    }
+-
+-    return fetch(
+-        `${NETDATA.registry.cloudBaseURL}/api/v1/accounts/${cloudAccountID}/agents`,
+-        {
+-            method: "GET",
+-            mode: "cors",
+-            headers: {
+-                "Authorization": `Bearer ${cloudToken}`
+-            }
+-        }
+-    ).then((response) => {
+-        if (!response.ok) {
+-            throw Error("Cannot fetch known accounts");
+-        }
+-        return response.json();
+-    }).then((payload) => {
+-        const agents = payload.result ? payload.result.agents : null;
+-
+-        if (!agents) {
+-            return [];
+-        }
+-
+-        return agents.filter((a) => isValidAgent(a)).map((a) => {
+-            return {
+-                "guid": a.id,
+-                "name": a.name,
+-                "url": a.urls[0],
+-                "alternate_urls": a.urls
+-            }
+-        })
+-    }).catch(function (error) {
+-        console.log(error);
+-        return null;
+-    });
+-}
+-
+-/** Updates the lastAccessTime and accessCount properties of the agent for the account. */
+-function touchAgent() {
+-    if (!isSignedIn()) {
+-        return [];
+-    }
+-
+-    const touchUrl = `${NETDATA.registry.cloudBaseURL}/api/v1/agents/${NETDATA.registry.machine_guid}/touch?account_id=${cloudAccountID}`;
+-    return fetch(
+-        touchUrl,
+-        {
+-            method: "post",
+-            body: "",
+-            mode: "cors",
+-            headers: {
+-                "Authorization": `Bearer ${cloudToken}`
+-            }
+-        }
+-    ).then((response) => {
+-        if (!response.ok) {
+-            throw Error("Cannot touch agent" + JSON.stringify(response));
+-        }
+-        return response.json();
+-    }).then((payload) => {
+-
+-    }).catch(function (error) {
+-        console.log(error);
+-        return null;
+-    });
+-}
+-
+-// https://github.com/netdata/hub/issues/128
+-function postCloudAccountAgents(agentsToSync) {
+-    if (!isSignedIn()) {
+-        return [];
+-    }
+-
+-    const maskedURL = NETDATA.registry.MASKED_DATA;
+-
+-    const agents = agentsToSync.map((a) => {
+-        const urls = a.alternate_urls.filter((url) => url != maskedURL);
+-
+-        return {
+-            "id": a.guid,
+-            "name": a.name,
+-            "urls": urls
+-        }
+-    }).filter((a) => isValidAgent(a))
+-
+-    const payload = {
+-        "accountID": cloudAccountID,
+-        "agents": agents,
+-        "merge": false,
+-    };
+-
+-    return fetch(
+-        `${NETDATA.registry.cloudBaseURL}/api/v1/accounts/${cloudAccountID}/agents`,
+-        {
+-            method: "POST",
+-            mode: "cors",
+-            headers: {
+-                "Content-Type": "application/json; charset=utf-8",
+-                "Authorization": `Bearer ${cloudToken}`
+-            },
+-            body: JSON.stringify(payload)
+-        }
+-    ).then((response) => {
+-        return response.json();
+-    }).then((payload) => {
+-        const agents = payload.result ? payload.result.agents : null;
+-
+-        if (!agents) {
+-            return [];
+-        }
+-
+-        return agents.filter((a) => isValidAgent(a)).map((a) => {
+-            return {
+-                "guid": a.id,
+-                "name": a.name,
+-                "url": a.urls[0],
+-                "alternate_urls": a.urls
+-            }
+-        })
+-    });
+-}
+-
+-function deleteCloudAgentURL(agentID, url) {
+-    if (!isSignedIn()) {
+-        return [];
+-    }
+-
+-    return fetch(
+-        `${NETDATA.registry.cloudBaseURL}/api/v1/accounts/${cloudAccountID}/agents/${agentID}/url?value=${encodeURIComponent(url)}`,
+-        {
+-            method: "DELETE",
+-            mode: "cors",
+-            headers: {
+-                "Content-Type": "application/json; charset=utf-8",
+-                "Authorization": `Bearer ${cloudToken}`
+-            },
+-        }
+-    ).then((response) => {
+-        return response.json();
+-    }).then((payload) => {
+-        const count = payload.result ? payload.result.count : 0;
+-        return count;
+-    });
+-}
+-
+-// -------------------------------------------------------------------------------------------------
+-
+-function signInDidClick(e) {
+-    e.preventDefault();
+-    e.stopPropagation();
+-
+-    if (!NETDATA.registry.isUsingGlobalRegistry()) {
+-        // If user is using a private registry, request his consent for
+-        // synchronizing with cloud.
+-        showSignInModal();
+-        return;
+-    }
+-
+-    signIn();
+-}
+-
+-function shouldShowSignInBanner() {
+-    return false;
+-}
+-
+-function closeSignInBanner() {
+-    localStorage.setItem("signInBannerClosed", "true");
+-    const el = document.getElementById("sign-in-banner");
+-    if (el) {
+-        el.style.display = "none";
+-    }
+-}
+-
+-function closeSignInBannerDidClick(e) {
+-    closeSignInBanner();
+-}
+-
+-function signOutDidClick(e) {
+-    e.preventDefault();
+-    e.stopPropagation();
+-    signOut();
+-}
+-
+-// -------------------------------------------------------------------------------------------------
+-
+-function updateMyNetdataAfterFilterChange() {
+-    const machinesEl = document.getElementById("my-netdata-menu-machines")
+-    machinesEl.innerHTML = renderMachines(cloudAgents);
+-
+-    if (options.hosts.length > 1) {
+-        const streamedEl = document.getElementById("my-netdata-menu-streamed")
+-        streamedEl.innerHTML = renderStreamedHosts(options);
+-    }
+-}
+-
+-function myNetdataMenuDidShow() {
+-    const filterEl = document.getElementById("my-netdata-menu-filter-input");
+-    if (filterEl) {
+-        filterEl.focus();
+-    }
+-}
+-
+-function myNetdataFilterDidChange(e) {
+-    const inputEl = e.target;
+-    setTimeout(() => {
+-        myNetdataMenuFilterValue = inputEl.value;
+-        updateMyNetdataAfterFilterChange();
+-    }, 1);
+-}
+-
+-function myNetdataFilterClearDidClick(e) {
+-    e.preventDefault();
+-    e.stopPropagation();
+-
+-    const inputEl = document.getElementById("my-netdata-menu-filter-input");
+-    inputEl.value = "";
+-    myNetdataMenuFilterValue = "";
+-
+-    updateMyNetdataAfterFilterChange();
+-
+-    inputEl.focus();
+-}
+-
+-// -------------------------------------------------------------------------------------------------
+-
+-function clearCloudVariables() {
+-    cloudAccountID = null;
+-    cloudAccountName = null;
+-    cloudToken = null;
+-}
+-
+-function clearCloudLocalStorageItems() {
+-    localStorage.removeItem("cloud.baseURL");
+-    localStorage.removeItem("cloud.agentID");
+-    localStorage.removeItem("cloud.sync");
+-}
+-
+-function signIn() {
+-    const url = `${NETDATA.registry.cloudBaseURL}/account/sign-in-agent?id=${NETDATA.registry.machine_guid}&name=${encodeURIComponent(NETDATA.registry.hostname)}&origin=${encodeURIComponent(window.location.origin + "/")}`;
+-    window.open(url);
+-}
+-
+-function signOut() {
+-    cloudSSOSignOut();
+-}
+-
+-function handleMessage(e) {
+-    switch (e.data.type) {
+-        case "sign-in":
+-            handleSignInMessage(e);
+-            break;
+-
+-        case "sign-out":
+-            handleSignOutMessage(e);
+-            break;
+-
+-        default:
+-            return;
+-    }
+-}
+-
+-function handleSignInMessage(e) {
+-    closeSignInBanner();
+-    localStorage.setItem("cloud.baseURL", NETDATA.registry.cloudBaseURL);
+-
+-    cloudAccountID = e.data.accountID;
+-    cloudAccountName = e.data.accountName;
+-    cloudToken = e.data.token;
+-
+-    netdataRegistryCallback(registryAgents);
+-    if (e.data.redirectURI && !window.location.href.includes(e.data.redirectURI)) {
+-        // lgtm false-positive - redirectURI does not come from user input, but from iframe callback
+-        window.location.replace(e.data.redirectURI); // lgtm[js/client-side-unvalidated-url-redirection]
+-    }
+-}
+-
+-function handleSignOutMessage(e) {
+-    clearCloudVariables();
+-    renderMyNetdataMenu(registryAgents);
+-}
+-
+-function isSignedIn() {
+-    return cloudToken != null && cloudAccountID != null;
+-}
+-
+-function sortedArraysEqual(a, b) {
+-    if (a.length != b.length) return false;
+-
+-    for (var i = 0; i < a.length; ++i) {
+-        if (a[i] !== b[i]) return false;
+-    }
+-
+-    return true;
+-}
+-
+-// If merging is needed returns the merged agents set, otherwise returns null.
+-function mergeAgents(cloud, local) {
+-    let dirty = false;
+-
+-    const union = new Map();
+-
+-    for (const cagent of cloud) {
+-        union.set(cagent.guid, cagent);
+-    }
+-
+-    for (const lagent of local) {
+-        const cagent = union.get(lagent.guid);
+-        if (cagent) {
+-            for (const u of lagent.alternate_urls) {
+-                if (u === NETDATA.registry.MASKED_DATA) { // TODO: temp until registry is updated.
+-                    continue;
+-                }
+-
+-                if (!cagent.alternate_urls.includes(u)) {
+-                    dirty = true;
+-                    cagent.alternate_urls.push(u);
+-                }
+-            }
+-        } else {
+-            dirty = true;
+-            union.set(lagent.guid, lagent);
+-        }
+-    }
+-
+-    if (dirty) {
+-        return Array.from(union.values());
+-    }
+-
+-    return null;
+-}
+-
+-function showSignInModal() {
+-    document.getElementById("sim-registry").innerHTML = NETDATA.registry.server;
+-    $("#signInModal").modal("show");
+-}
+-
+-function explicitlySignIn() {
+-    $("#signInModal").modal("hide");
+-    signIn();
+-}
+-
+-function showSyncModal() {
+-    document.getElementById("sync-registry-modal-registry").innerHTML = NETDATA.registry.server;
+-    $("#syncRegistryModal").modal("show");
+-}
+-
+-function explicitlySyncAgents() {
+-    $("#syncRegistryModal").modal("hide");
+-
+-    const json = localStorage.getItem("cloud.sync");
+-    const sync = json ? JSON.parse(json) : {};
+-    delete sync[cloudAccountID];
+-    localStorage.setItem("cloud.sync", JSON.stringify(sync));
+-
+-    NETDATA.registry.init();
+-}
+-
+-function syncAgents(callback) {
+-    const json = localStorage.getItem("cloud.sync");
+-    const sync = json ? JSON.parse(json) : {};
+-
+-    const currentAgent = {
+-        guid: NETDATA.registry.machine_guid,
+-        name: NETDATA.registry.hostname,
+-        url: NETDATA.serverDefault,
+-        alternate_urls: [NETDATA.serverDefault],
+-    }
+-
+-    const localAgents = sync[cloudAccountID]
+-        ? [currentAgent]
+-        : registryAgents.concat([currentAgent]);
+-
+-    console.log("Checking if sync is needed.", localAgents);
+-
+-    const agentsToSync = mergeAgents(cloudAgents, localAgents);
+-
+-    if ((!sync[cloudAccountID]) || agentsToSync) {
+-        sync[cloudAccountID] = new Date().getTime();
+-        localStorage.setItem("cloud.sync", JSON.stringify(sync));
+-    }
+-
+-    if (agentsToSync) {
+-        console.log("Synchronizing with netdata.cloud.");
+-
+-        postCloudAccountAgents(agentsToSync).then((agents) => {
+-            // TODO: clear syncTime on error!
+-            cloudAgents = agents;
+-            callback(cloudAgents);
+-        });
+-
+-        return
+-    }
+-
+-    callback(cloudAgents);
+-}
+-
+-let isCloudSSOInitialized = false;
+-
+-function cloudSSOInit() {
+-    const iframeEl = document.getElementById("ssoifrm");
+-    const url = `${NETDATA.registry.cloudBaseURL}/account/sso-agent?id=${NETDATA.registry.machine_guid}`;
+-    iframeEl.src = url;
+-    isCloudSSOInitialized = true;
+-}
+-
+-function cloudSSOSignOut() {
+-    const iframe = document.getElementById("ssoifrm");
+-    const url = `${NETDATA.registry.cloudBaseURL}/account/sign-out-agent`;
+-    iframe.src = url;
+-}
+-
+-function initCloud() {
+-    if (!NETDATA.registry.isCloudEnabled) {
+-        clearCloudVariables();
+-        clearCloudLocalStorageItems();
+-        return;
+-    }
+-
+-    if (NETDATA.registry.cloudBaseURL != localStorage.getItem("cloud.baseURL")) {
+-        clearCloudVariables();
+-        clearCloudLocalStorageItems();
+-        if (NETDATA.registry.cloudBaseURL) {
+-            localStorage.setItem("cloud.baseURL", NETDATA.registry.cloudBaseURL);
+-        }
+-    }
+-
+-    if (!isCloudSSOInitialized) {
+-        cloudSSOInit();
+-    }
+-
+-    touchAgent();
+-}
+-
+-// This callback is called after NETDATA.registry is initialized.
+-function netdataRegistryCallback(machinesArray) {
+-    localStorage.setItem("cloud.agentID", NETDATA.registry.machine_guid);
+-
+-    initCloud();
+-
+-    registryAgents = machinesArray;
+-
+-    if (isSignedIn()) {
+-        // We call getCloudAccountAgents() here because it requires that
+-        // NETDATA.registry is initialized.
+-        clearMyNetdataMenu();
+-        getCloudAccountAgents().then((agents) => {
+-            if (!agents) {
+-                errorMyNetdataMenu();
+-                return;
+-            }
+-            cloudAgents = agents;
+-            syncAgents((agents) => {
+-                const agentsMap = {}
+-                for (const agent of agents) {
+-                    agentsMap[agent.guid] = agent;
+-                }
+-
+-                NETDATA.registry.machines = agentsMap;
+-                NETDATA.registry.machines_array = agents;
+-
+-                renderMyNetdataMenu(agents);
+-            });
+-        });
+-    } else {
+-        renderMyNetdataMenu(machinesArray)
+-    }
+-};
+-
+-// If we know the cloudBaseURL and agentID from local storage render (eagerly)
+-// the account ui before receiving the definitive response from the web server.
+-// This improves the perceived performance.
+-function tryFastInitCloud() {
+-    const baseURL = localStorage.getItem("cloud.baseURL");
+-    const agentID = localStorage.getItem("cloud.agentID");
+-
+-    if (baseURL && agentID) {
+-        NETDATA.registry.cloudBaseURL = baseURL;
+-        NETDATA.registry.machine_guid = agentID;
+-        NETDATA.registry.isCloudEnabled = true;
+-
+-        initCloud();
+-    }
+-}
+-
+-function initializeApp() {
+-    window.addEventListener("message", handleMessage, false);
+-
+-    //    tryFastInitCloud();
+-}
+-
+-if (document.readyState === "complete") {
+-    initializeApp();
+-} else {
+-    document.addEventListener("readystatechange", () => {
+-        if (document.readyState === "complete") {
+-            initializeApp();
+-        }
+-    });
+-}
++var netdataCallback = initializeDynamicDashboard;
+\ No newline at end of file
+diff --git a/web/gui/old/index.html b/web/gui/old/index.html
+index 94ec12b7..cffa335e 100644
+--- a/web/gui/old/index.html
++++ b/web/gui/old/index.html
+@@ -108,17 +108,6 @@
+     <div class="navbar-highlight">
+         <div id="navbar-highlight-content" class="navbar-highlight-content"></div>
+     </div>
+-
+-    <div id="sign-in-banner" style="display: none">
+-        <div class="container">
+-            Like what you see? 
+-            <strong><a href="#" class="__link" onclick="signInDidClick(event); return false">Sign in</a> 
+-            to experience the full-range of netdata capabilities!</strong>
+-            <div class="__close" onclick="closeSignInBannerDidClick(event)">
+-                Close <i class="fas fa-times"></i>
+-            </div>
+-        </div>
+-    </div>
+     
+     <div id="masthead" style="display: none;">
+         <div class="container">
+@@ -1139,92 +1128,6 @@
+         </div>
+     </div>
+ 
+-
+-    <div class="modal fade" id="updateModal" tabindex="-1" role="dialog" aria-labelledby="updateModalLabel">
+-        <div class="modal-dialog" role="document">
+-            <div class="modal-content">
+-                <div class="modal-header">
+-                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+-                    <h4 class="modal-title" id="updateModalLabel">Update Check</h4>
+-                </div>
+-                <div class="modal-body">
+-                    Your netdata version: <b><code><span id="netdataVersion">Unknown</span></code></b><br/>
+-                    <br/>
+-                    <div style="padding: 10px;"></div>
+-                    <div id="versionCheckLog">Not checked yet. Please press the Check Now button.</div>
+-                    <div>
+-                        <hr/>
+-                    </div>
+-                    <div>
+-                        For progress reports and key netdata updates: <strong><a href="https://twitter.com/linuxnetdata" target="_blank">follow netdata on <i class="fab fa-twitter"></i> twitter</a></strong>.
+-                        <br/>
+-                        You can also <a href="https://www.facebook.com/linuxnetdata/" target="_blank">follow netdata on <i class="fab fa-facebook"></i> facebook</a>,
+-                        or <a href="https://github.com/netdata/netdata" target="_blank">watch netdata on <i class="fab fa-github"></i> github</a>.
+-                    </div>
+-                </div>
+-                <div class="modal-footer">
+-                    <a href="#" onclick="notifyForUpdate(true); return false;" type="button" class="btn btn-default">Check Now</a>
+-                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+-                </div>
+-            </div>
+-        </div>
+-    </div>
+-
+-    <div class="modal fade" id="signInModal" tabindex="-1" role="dialog" aria-labelledby="signInModalLabel">
+-        <div class="modal-dialog" role="document">
+-            <div class="modal-content">
+-                <div class="modal-header">
+-                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+-                    <h4 class="modal-title" id="signInModalLabel">Sign In</h4>
+-                </div>
+-                <div class="modal-body">
+-                    <p>
+-                        Signing-in to netdata.cloud will synchronize the list of 
+-                        your netdata monitored nodes known at registry 
+-                        <strong><span id="sim-registry"></span></strong>. This 
+-                        may include server hostnames, urls and identification 
+-                        GUIDs.
+-                    </p>
+-                    <p>
+-                        After you upgrade all your netdata servers, your private 
+-                        registry will not be needed any more.
+-                    </p>
+-                    <p>
+-                        Are you sure you want to proceed?
+-                    </p>
+-                </div>
+-                <div class="modal-footer">
+-                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+-                    <a href="#" onclick="explicitlySignIn(); return false;" type="button" class="btn btn-success">Sign In</a>
+-                </div>
+-            </div>
+-        </div>
+-    </div>
+-
+-    <div class="modal fade" id="syncRegistryModal" tabindex="-1" role="dialog" aria-labelledby="syncRegistryModalLabel">
+-        <div class="modal-dialog" role="document">
+-            <div class="modal-content">
+-                <div class="modal-header">
+-                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+-                    <h4 class="modal-title" id="syncRegistryModalLabel">Synchronize netdata.cloud with registry?</h4>
+-                </div>
+-                <div class="modal-body">
+-                    <p>
+-                        You are about to synchronize your netdata.cloud account with data from the registry at <strong><span id="sync-registry-modal-registry"></span></strong>.
+-                        This may include server hostnames, urls and identification GUIDs.
+-                    </p>
+-                    <p>
+-                        Are you sure you want to proceed?
+-                    </p>
+-                </div>
+-                <div class="modal-footer">
+-                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+-                    <a href="#" onclick="explicitlySyncAgents(); return false;" type="button" class="btn btn-success">Synchronize</a>
+-                </div>
+-            </div>
+-        </div>
+-    </div>
+-
+     <div class="modal fade" id="deleteRegistryModal" tabindex="-1" role="dialog" aria-labelledby="deleteRegistryModalLabel">
+         <div class="modal-dialog" role="document">
+             <div class="modal-content">
+diff --git a/web/gui/src/dashboard.js/registry.js b/web/gui/src/dashboard.js/registry.js
+index 090ef52f..a2322fb7 100644
+--- a/web/gui/src/dashboard.js/registry.js
++++ b/web/gui/src/dashboard.js/registry.js
+@@ -3,25 +3,14 @@
+ 
+ NETDATA.registry = {
+     server: null,         // the netdata registry server
+-    isCloudEnabled: false,// is netdata.cloud functionality enabled?
+-    cloudBaseURL: null,   // the netdata cloud base url
+     person_guid: null,    // the unique ID of this browser / user
+     machine_guid: null,   // the unique ID the netdata server that served dashboard.js
+     hostname: 'unknown',  // the hostname of the netdata server that served dashboard.js
+     machines: null,       // the user's other URLs
+     machines_array: null, // the user's other URLs in an array
+     person_urls: null,
+-    anonymous_statistics_checked: false,
+     MASKED_DATA: "***",
+ 
+-    isUsingGlobalRegistry: function() {
+-        return NETDATA.registry.server == "https://registry.my-netdata.io";
+-    },
+-
+-    isRegistryEnabled: function() {
+-        return !(NETDATA.registry.isUsingGlobalRegistry() || isSignedIn())
+-    },
+-
+     parsePersonUrls: function (person_urls) {
+         NETDATA.registry.person_urls = person_urls;
+ 
+@@ -75,26 +64,8 @@ NETDATA.registry = {
+         NETDATA.registry.hello(NETDATA.serverDefault, function (data) {
+             if (data) {
+                 NETDATA.registry.server = data.registry;
+-                if (data.cloud_base_url !== "") {
+-                    NETDATA.registry.isCloudEnabled = true;
+-                    NETDATA.registry.cloudBaseURL = data.cloud_base_url;
+-                } else {
+-                    NETDATA.registry.isCloudEnabled = false;
+-                    NETDATA.registry.cloudBaseURL = "";
+-                }
+                 NETDATA.registry.machine_guid = data.machine_guid;
+                 NETDATA.registry.hostname = data.hostname;
+-                if (!NETDATA.registry.anonymous_statistics_checked) {
+-                    NETDATA.registry.anonymous_statistics_checked=true;
+-                    if (data.anonymous_statistics) {
+-                        (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
+-                                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
+-                            j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=false;j.src=
+-                            'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
+-                        })(window,document,'script','dataLayer','GTM-N6CBMJD');
+-                        dataLayer.push({"anonymous_statistics" : "true", "machine_guid" : data.machine_guid});
+-                    }
+-                }
+                 NETDATA.registry.access(2, function (person_urls) {
+                     NETDATA.registry.parsePersonUrls(person_urls);
+                 });    
+@@ -143,12 +114,8 @@ NETDATA.registry = {
+         let name = NETDATA.registry.MASKED_DATA;
+         let url = NETDATA.registry.MASKED_DATA;
+ 
+-        if (!NETDATA.registry.isUsingGlobalRegistry()) {
+-            // If the user is using a private registry keep sending identifiable
+-            // data.
+-            name = NETDATA.registry.hostname;
+-            url = NETDATA.serverDefault;
+-        } 
++        name = NETDATA.registry.hostname;
++        url = NETDATA.serverDefault;
+ 
+         console.log("ACCESS", name, url);
+ 
-- 
2.30.0
L
L
Léo Le Bouter wrote on 11 Feb 2021 09:14
(address . 46435@debbugs.gnu.org)
61f3b1cb29f001ce3a77073cc5816b39b10c8adb.camel@zaclys.net
I would need help to write a service for it.

Here's the systemd service for it:

Thank you
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEFIvLi9gL+xax3g6RRaix6GvNEKYFAmAk510ACgkQRaix6GvN
EKYCkBAAkCBVDletQ3d237w14GBG+cky3K+6I+Kz/7WO+oP7dSM4N5xPTvyKVwI7
PpTq0SMCeZawGLKUzVHGspgl1tADeRZ0ILe/YvCzOMJQGBWFlX2S3Su0ETptIesD
Tw1XoRptqOS6cTPfPoqs22n03ChWB3XgHXRbn6hOIXc/tAHIgWuu9f338Jnpp3BG
suVIeyp2K/zLV2DcUMpf+ir/HzHT/0jO1FsVsT6/cn3XIjl1zaHgGe0AwsMSQdr8
/JSYNFPHc4NSWTe3/KJcIQPmKfKduw7Mfg8FU+6SQUvu/OMmilxwTP/Vh7hgnQT8
iaI6Czjg1GkxPXZOoLzgcpRFU4qn+Albclz356mqGWrZ5ck44cs4A8/NSjsSg/CF
+Gqq7FXI5bvP32rG+/Ak9g/ldWM0RZJzU3QcUSbGyLIH6RaWm2jRdp2L+VAV9U4l
j3u4cTz6wnF4KG8T9ZrRTZvj3uPr0sbyEZEWg5XO3OetgVb6ZEO0ZD9nvRpSkmHJ
KGq6pUqoWHj3SvvXMMVk85QPSWkssXuy0J3hweC8EsIyOrNWiTh+Hf2kQEaCUkr+
chzcIxz/JZlAqBvBlToZIwlLO5AFzLsJWX5BexYK4N39JIhr2lrsMExwGt76tigU
/sGEEpFx7Sr5HsTowkGNIubN+QACWg0e6JkjxybJ8C9OQPtZmWY=
=WGaM
-----END PGP SIGNATURE-----


?