Wstęp
W tym artykule stawiam Grafana na Ubuntu i wystawiam ją przez Nginx z SSL.
Grafana to narzędzie do wizualizacji danych – głównie dashboardy, wykresy i metryki. W praktyce wiele osób lubi ją za to, że dashboardy są prostsze i czytelniejsze niż to, co często wychodzi w Kibanie 🙂
To jest drugi artykuł z mojej serii o Elasticu. W pierwszym instalowałem Elasticsearch i Kibanę. Teraz dokładam coś lżejszego, bardziej dashboardowego, bez zbędnej komplikacji.
Uprzedzając: to nie jest super-produkcyjne rozwiązanie. Ale do lokalnych testów, małych aplikacji, side-projektów albo prostego zbierania logów – sprawdza się bardzo dobrze 👍
Całość robię na tym samym Ubuntu, na którym działa już Kibana.
Instalacja
Zaczynam od oficjalnego repozytorium Grafany. To najprostsza i zalecana droga – aktualizacje działają normalnie i nie ma kombinowania.
Najpierw instalujemy wymagane paczki i dodaję repozytorium APT:
sudo apt-get install -y apt-transport-https software-properties-common wget
sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafanaPo tym kroku Grafana jest zainstalowana, ale jeszcze nie jest poprawnie skonfigurowana ani wystawiona na świat.
Konfiguracja
Teraz przechodzę do podstawowej konfiguracji Grafany.
Otwieram główny plik konfiguracyjny:
nano /etc/grafana/grafana.iniNajważniejsze rzeczy, które tu zmieniam:
- ustawiam inny port (
3030), - definiuję publiczny adres URL,
- konfiguruję SMTP, żeby Grafana mogła wysyłać maile (alerty, reset hasła itd.).
Przykładowa konfiguracja:
http_port = 3030
root_url = https://grafana.domain.com/
[smtp]
enabled = true
host = smtp.domain.pl:587
user = [email protected]
password = """<PASS_HERE_IN_TRIPLE_QUOTES>"""
from_address = [email protected]
from_name = GrafanaPotrójne cudzysłowy przy haśle są ważne, jeśli masz znaki specjalne. Oszczędza to nerwów później 😅
[Inne] Certbot – przygotowanie
Zanim ruszę z Nginxem, upewniam się, że Certbot jest dostępny.
Na Ubuntu najprościej zrobić to przez Snap.
apt-get install snapd
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbotNa tym etapie nie uruchamiam jeszcze Certbota. Najpierw muszę mieć gotowego Nginxa.
Instalacja Nginx
Grafana będzie działać lokalnie na porcie 3030, a Nginx zajmie się HTTPS i proxy.
sudo apt install nginx -y
sudo nano /etc/nginx/sites-available/grafanaMój plik konfiguracyjny wygląda tak:
# /etc/nginx/sites-available/grafana
server {
listen 443 ssl http2;
server_name grafana.domain.pl;
# SSL certificate (self-signed for Cloudflare or temporary cert before Certbot)
ssl_certificate /etc/ssl/certs/kibana-for-cloudflare.crt;
ssl_certificate_key /etc/ssl/private/kibana-for-cloudflare.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
access_log /var/log/nginx/grafana-access.log;
error_log /var/log/nginx/grafana-error.log;
location / {
proxy_pass http://127.0.0.1:3030;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
}
}
Na koniec włączam konfigurację i sprawdzam, czy wszystko jest OK:
sudo ln -s /etc/nginx/sites-available/grafana /etc/nginx/sites-enabled/grafana
sudo nginx -t
sudo systemctl enable nginx
sudo systemctl start nginx[Certbot] Ciąg dalszy
Teraz, gdy Nginx działa, mogę uruchomić Certbota:
sudo certbot --nginxCertbot automatycznie podmieni tymczasowy certyfikat na Let’s Encrypt i ustawi auto-odnawianie.
Od tego momentu HTTPS mamy ogarnięte 🔐
Aktywacja Grafany
Czas faktycznie uruchomić Grafanę.
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable grafana-server
sudo /bin/systemctl start grafana-serverPo tej operacji Grafana powinna być dostępna pod skonfigurowaną domeną.
Jeśli używasz CrowdSec
Jeśli, tak jak ja, masz CrowdSec, warto dorzucić logi Grafany do analizy.
Edytujemy plik:
nano /etc/crowdsec/acquis.yamlDodajemy:
filenames:
- /var/log/nginx/grafana-access.log
- /var/log/nginx/grafana-error.log
I restartujemy usługę:
systemctl restart crowdsecGotowe – Grafana też jest objęta ochroną 🛡️
Finał
Na koniec wchodzimy w przeglądarce na Grafanę i logujemy się danymi:
- login:
admin - hasło:
admin
Grafana od razu wymusza zmianę hasła – i bardzo dobrze.
Od tego momentu możesz dodawać źródła danych, dashboardy i alerty 📊
Podsumowanie
Postawiliśmy Grafanę na Ubuntu, wystawiłem ją przez Nginx z HTTPS, skonfigurowałem SMTP i podpiąłem pod CrowdSec.
To prosty i czysty setup – idealny do małych projektów i własnej infrastruktury 👍



