I created a self hosted droplet procedure for smart time-series analytics

Start your embedded journey with this recipe of 15 docker containers including nmon, netdata, portainer, dozzle, grafana, prometheus, node-exporter, mqtt-exporter, cadvisor, uptime-kuma, traefik, mysql, phpmyadmin, redis, mongodb

I created a self hosted droplet procedure for smart time-series analytics


Documentation: Project README.md

git clone git@github.com:nodejavascript/linux-setup-docker-clean-monitoring.git

Pay smarter.

Pay where the facts are.

  • Offload docker containers proven to require separation from cluster
  • Upgrade instances with CPU or memory if factually it's needed.

BONUS : Supports Tasmota metrics as seen here:

grafana monitoring tasmota metrics via mqtt-exporter and prometheus


Features support r/selfhosted:


List of containers in docker-compose.yml

9000 : portainer
9999 : dozzle
3050 : grafana
9090 : prometheus
9100 : node-exporter
9001 : mqtt-exporter
8080 : cadvisor
3001 : uptime-kuma
80 : traefik
443 : traefik
3306 : mysql
8183 : phpmyadmin
6379 : redis
8081 : rediscommander
27017 : mongodb

cadvisor monitoring all docker listed in docker-compose.yml


The following procedure will give you:

  • Reactive time-series charts from grafana to find anti-patterns and anomalies.

  • The server's 1) CPU, 2) memory, 3) network and 4) disk usage.

  • Each docker container's 1) CPU, 2) memory, 3) network and 4) disk usage.

  • Procedures to install ssh key, cloning repos, installing npm and n

  • Procedures to install treafik with multi-domain example.

  • Ports to open on your firewall.

Persistent monitored data:

  • Metrics history for server and each docker container

  • Find what

    • led to a crash
    • what scripts are taxing your resources
    • containers hogging docker resources

Self hosted integration.

  • ghost blog integrated with

    • traefik, pre-configured to server multiple domains names

    • mailgun SMTP, pre-configured to add your mailgun password.

    • mysql

      • phpmyadmin, to add database for ghost
  • mongodb because it's SO useful

  • redis, pre-configured with rediscommander.

Real-time health monitoring


  • nmon, the last resort command-line monitor you will need if your instance is very unhealthy (for example docker won't boot)

nmon monitoring server

  • netdata, real-time granular metrics for watching:

    • installs,
    • script executions or,
    • real-time services.

    netdata monitoring server

  • portainer, web interface for docker containers standard install

  • dozzle, real-time stdout for running docker containers

dozzle monitoring my MQTT Broker


node-exporter monitoring server


  • prometheus, pre-configured to send necessary metrics to Grafana for you.
    • prometheus, self metrics
    • node-exporter, provides server metrics
    • cadvisor, provides docker metrics
    • mqtt-exporter, provides embedded sensor metrics published to an MQTT broker like mine.

prometheus can scale to many prom-exporters



See README.md for more details.