In diesem Artikel möchte ich kurz darauf eingehen, wie man die Datenvisualisierungslösung Grafana mit sauberem HTTPS auf Ubuntu 18.04 aufsetzen kann.
Ich würde euch wie immer empfehlen Dienste nicht Nativ auf einem Server laufen zu lassen sondern zu Virtualisieren.

Siehe: Virtualisieren mit KVM

Installation

Wir gehen einfach nach der Offiziellen Anleitung auf der Grafana Website vor.

LetsEncrypt

Um unsere Seite mit einem Validen SSL Zertifikat laufen zu lassen, generieren wir ein Zertifikat mit LetsEncrypt.
Certbot ist bei ubuntu 18.04 bereits vorinstalliert.

sudo certbot certonly -d your.website

Die Pfade der fullchain.pem und privkey.pem solltet Ihr euch merken.
Diese tragen wir gleich in die grafana.ini ein.

Zunächst müssen wir aber noch dafür sorgen, dass Grafana auf die Zertifikate zugreifen kann.
Dazu erstellen wir zunächst eine neue Gruppe.

sudo groupadd sslcerts

/etc/letsencrypt gehört dem user root und der gruppe root.
Wir ändern jetzt die Gruppe von /etc/letsencrypt rekursiv auf sslcerts.

user chown -R root:sslcerts /etc/letsencrypt/

Anschließend fürgen wir den Benutzer grafana (wird bei der Grafana Installation angelegt) dieser Gruppe hinzu.

sudo usermod -G sslcerts -a grafana

Jetzt müssen wir noch die Permissions auf /etc/letsencrypt/live und /etc/letsencrypt/archive anpassen.

sudo chmod 755 /etc/letsencrypt/live
sudo chmod 755 /etc/letsencrypt/archive

Anpassung der /etc/grafana/grafana.ini

In der Grafa Konfigurationsdatei müsst ihr nun folgende Zeilen anpassen:

30 [server]
31 # Protocol (http, https, socket)
32 protocol = https

37 # The http port to use
38 http_port = 443

40 # The public facing domain name used to access grafana from a browser
41 domain = your.grafana.url

47 # The full public facing url you use in browser, used for redirects and emails
48 # If you use reverse proxy and sub path specify full url (with sub path)
49 root_url = https://your.grafana.url

60 # https certs & key file
61 cert_file = /etc/letsencrypt/live/your.grafana.url/fullchain.pem
62 cert_key = /etc/letsencrypt/live/your.grafana.url/privkey.pem

Grafana die Möglichkeit geben 443 zu binden

Der Grafana Dienst wird nicht als root ausgeführt, darum wird in der defaultconfig auch ein highport verwendet.
Wir wollen aber 443 nutzen…

Daher erlauben wir grafana explizit, dass es das darf mit setcap.
sudo setcap 'cap_net_bind_service=+ep' /usr/sbin/grafana-server

Siehe:
https://wiki.apache.org/httpd/NonRootPortBinding
https://wiki.archlinux.org/index.php/Capabilities

Startet anschließend den Grafana dienst neu.

sudo systemctl restart grafana-server.service

Wenn Ihr alles richtig gemacht habt, sollte euch ein sauberes HTTPS begrüßen.
Falls nein, hilft es sich das log anzusehen.

sudo tail -f /var/log/grafana/grafana.log

An dieser Weboberfläche solltet Ihr euch jetzt mit admin admin einloggen können.
Ihr werdet daraufhin aufgefordert das Passwort zu ändern.

Jetzt könnt Ihr mit diesem Guide weitermachen: https://grafana.com/docs/guides/getting_started/

Cheers,
Ori