I'm new in the InfluxDB path, and I'm finding it very useful to track data and make analytics in realtime in a very easy way.
I started when the version 2.0.2 was being released, then I'm starting with the new flavors and improvements of InfluxDB, which also brings changes in the configurations, respecting the 1.x versions.
The way for the installation I chose for this service was by means Docker container in a VM which the simple docker command can be found at the Get Started, but this is only usefull when working on local for a dev mode, when working for something to work on production it is required to have more power about the configuration and the use of HTTPS.
As a matter of run InfluxDB with docker-compose we just need a few lines in our
version: '3' services: influxdb: container_name: influxdb image: quay.io/influxdb/influxdb:v2.0.2 restart: always ports: - '8086:8086' volumes: - './data:/root/.influxdbv2'
In this version of InfluxDB the data and configurations of InfluxDB are stored on
~/.influxdbv2, then inside the container, the user is
root and for so the path placed in the _volumes` section.
The most complicated part is to enable the HTTPS because of the management of the certificates and also handle the renew of them, for these reasons I'm gonna use Let's Encrypt which is going to be handling it, and to be able to use an HTTP server to which Let's Encrypt may verify I'll be using Nginx
Note: For some reason I wasn't able to proxy InfluxDB using Nginx and generate the certificates with Let's Encrypt, but due I need Grafana in my setup, I used Grafana for this dutty.
Then to makes work Grafana with the Nginx proxy, we need to set the environment variables
VIRTUAL_PORT, so it can be routed automatically by Nginx:
grafana: image: grafana/grafana container_name: grafana restart: always environment: - VIRTUAL_HOST=influxdb.eulerr.app # adjust to match your domain name - VIRTUAL_PROTO=https - VIRTUAL_PORT=3000 volumes: - grafana-data:/var/lib/grafana nginx-proxy: image: jwilder/nginx-proxy container_name: nginx restart: always ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - ./nginx/html:/usr/share/nginx/html - ./nginx/vhost.d:/etc/nginx/vhost.d
But then, now let's mix up everything with Let's Encrypt, adding the definition of the service and sharing through a volume the certificates created. In the Grafana service is added the
LETSENCRYPT_EMAIL can create a certificate for the Host declared for Grafana.
version: '3' services: influxdb: container_name: influxdb image: quay.io/influxdb/influxdb:v2.0.2 restart: always ports: - '8086:8086' volumes: - './data:/root/.influxdbv2' - ./letsencrypt/certs:/etc/letsencrypt/certs:ro environment: - INFLUXD_TLS_CERT=/etc/letsencrypt/certs/YOUR.DOMAIN.COM.crt # adjust to match your domain name - INFLUXD_TLS_KEY=/etc/letsencrypt/certs/YOUR.DOMAIN.COM.key # adjust to match your domain name grafana: image: grafana/grafana container_name: grafana restart: always environment: - VIRTUAL_HOST=YOUR.DOMAIN.COM # adjust to match your domain name - VIRTUAL_PROTO=https - VIRTUAL_PORT=3000 - LETSENCRYPT_HOST=YOUR.DOMAIN.COM # adjust to match your domain name - LETSENCRYPT_EMAIL=me@DOMAIN.COM # adjust to match your email - GF_SERVER_CERT_FILE=/etc/letsencrypt/certs/YOUR.DOMAIN.COM.crt # adjust to match your domain name - GF_SERVER_CERT_KEY=/etc/letsencrypt/certs/YOUR.DOMAIN.COM.key # adjust to match your domain name - GF_SERVER_PROTOCOL=https - GF_SERVER_DOMAIN=YOUR.DOMAIN.COM # adjust to match your domain name - GF_SECURITY_ADMIN_USER=USER # adjust to create Grafana admin account - GF_SECURITY_ADMIN_PASSWORD=SECRET_PASSWORD # adjust to set Grafana admin password volumes: - ./letsencrypt/certs:/etc/letsencrypt/certs:ro - grafana-data:/var/lib/grafana nginx-proxy: image: jwilder/nginx-proxy container_name: nginx restart: always labels: - com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - ./nginx/html:/usr/share/nginx/html - ./nginx/vhost.d:/etc/nginx/vhost.d - ./letsencrypt/certs:/etc/nginx/certs:ro letsencrypt: image: jrcs/letsencrypt-nginx-proxy-companion container_name: letsencrypt restart: always environment: - NGINX_PROXY_CONTAINER=nginx-proxy - REUSE_PRIVATE_KEYS=true volumes_from: - nginx-proxy volumes: - ./letsencrypt/certs:/etc/nginx/certs:rw - /var/run/docker.sock:/var/run/docker.sock:ro volumes: grafana-data: driver: local
Using this configuration, Grafana is reachable through
YOUR.DOMAIN.COM because is proxied by Nginx, while InfluxDB is directly served by
YOUR.DOMAIN.COM:8086, and _Let's Encrypt` will be checking if the certificates are about to expire and renew them.
I hope this install can serves you as much as me. :)