Instalace Smoke ping na portaineru Raspberry PI
Předpoklady:
- Máte funkční Raspberry Pi 5 s nainstalovaným operačním systémem (např. Raspberry Pi OS).
- Máte nainstalovaný Docker a Portainer a Portainer běží.
- Máte přístup k terminálu (příkazové řádce) vašeho Raspberry Pi 5 (např. přes SSH nebo přímo).
- Máte nainstalovaný textový editor pro terminál, např.
nano
(sudo apt update && sudo apt install nano
pokud nemáte).
Krok 1: Připojení k Raspberry Pi a otevření terminálu
Připojte se k vašemu Raspberry Pi přes SSH nebo otevřete terminál přímo na zařízení.
Krok 2: Zjištění vašeho User ID (UID) a Group ID (GID)
Pro správné nastavení oprávnění souborů, které bude kontejner používat, je dobré zjistit UID a GID vašeho uživatele (obvykle výchozí uživatel pi
nebo ten, kterého jste vytvořili). Zadejte příkaz:
id
Výstup bude vypadat nějak takto: uid=1000(pi) gid=1000(pi) groups=1000(pi),4(adm),20(dialout),...
Poznamenejte si čísla za uid=
(např. 1000
) a gid=
(např. 1000
). Toto jsou vaše PUID a PGID, které použijeme později.
Krok 3: Vytvoření adresářové struktury na hostiteli (RPi)
Vytvoříme adresáře pod /opt/
, kam bude Smokeping ukládat svou konfiguraci a data.
sudo mkdir -p /opt/smokeping/config
sudo mkdir /opt/smokeping/data
/opt/smokeping/config
: Zde budou uloženy konfigurační soubory Smokepingu (např.Targets
,Probes
,General
). Budeme je moci snadno editovat přímo z Raspberry Pi./opt/smokeping/data
: Zde bude Smokeping ukládat RRD soubory (data pro grafy) a cache obrázků.
Krok 4: Vytvoření základního konfiguračního souboru Targets
(Volitelné, ale doporučené)
Aby Smokeping po spuštění hned něco monitoroval, je dobré vytvořit základní soubor s cíli. Pokud tento krok přeskočíte, kontejner by si měl vytvořit výchozí konfiguraci, ale ta nemusí být hned užitečná.
Vytvořte a otevřete soubor Targets
v adresáři /opt/smokeping/config
:
sudo nano /opt/smokeping/config/Targets
Vložte do něj následující jednoduchý příklad (můžete si ho upravit):
*** General ***
owner = Marcel Zelina
contact = admin@zelina.eu
mailhost = 127.0.0.1
sendmail = /usr/sbin/sendmail
imgcache = /data/img
imgurl = ../img
datadir = /data/rrd
piddir = /data/var
cgiurl = http://localhost
smokemail = /config/smokemail
tmail = /config/tmail
*** Alerts ***
to = admin@zelina.eu
from = smokeping@zelina.eu
+lossdetect
type = loss
pattern = >20%,>20%,>20%
comment = Více než 20% ztrát tři cykly po sobě
*** Database ***
step = 300
pings = 20
*** Presentation ***
template = /config/basepage.html
+ charts
width = 600
height = 200
range = 10h
*** Probes ***
+ FPing
binary = /usr/sbin/fping
+ EchoPingHttps
binary = /usr/bin/echoping
forks = 5
offset = 50%
timeout = 10
step = 300
+ EchoPingSmtp
binary = /usr/bin/echoping
protocol = smtp
+ EchoPing
binary = /usr/bin/echoping
+ EchoPingDns
binary = /usr/bin/echoping
protocol = dns
*** Targets ***
probe = FPing
menu = DomuTop
title = TestyPřehled připojenísítě
remark# =--- SledujiSekce dostupnostpro různýchlokální služebzařízení zvenčí.v Olomouci ---
+ DomaciSitOlomouc
menu = Domácí síťOlomouc
title = DomácíMoje zařízení v Olomouci
++ Routerrouter
menu = RouterUnifi firewall
title = MůjUnifi routerfirewall (Router)
host = 192.168.54.1
++ dns1
menu = Pi-hole
title = DNS server (Pi-hole 1)
host = 192.168.54.2
++ dns2
menu = Pi-hole 2
title = DNS server (Pi-hole 2)
host = 192.168.54.3
++ AplServer
menu = Aplikační server
title = Aplikační server
host = 192.168.54.6
# --- Sekce pro poskytovatele internetu ---
+ RiomediaO2
menu = Poskytovatel internetu Riomedia - O2
title = Trasa k 1.1.1.1 přes Riomedia a O2
++ VerejneSluzbyhop1_rionet
menu = Rionet hop 1
title = Rionet - olostu-bb-QFX02 (94.74.218.1)
host = 94.74.218.1
++ hop2_rionet
menu = Rionet hop 2
title = Rionet - oloStu-bb-QFX01 (188.175.255.220)
host = 188.175.255.220
++ hop3_rionet
menu = Rionet hop 3
title = Rionet - další router (188.175.255.240)
host = 188.175.255.240
++ hop4_o2
menu = O2 hop
title = O2 - rcp.o2.cz (90.182.199.220)
host = 90.182.199.220
++ hop5_cogent
menu = Cogent hop
title = Cogent - ccr21.prg01 (154.54.77.125)
host = 154.54.77.125
++ hop6_cogent
menu = Cogent další
title = Cogent - 149.6.24.234
host = 149.6.24.234
++ hop7_cloudflare
menu = Cloudflare edge
title = Cloudflare - 141.101.94.37
host = 141.101.94.37
++ RioMedia_DNS1
menu = Riomedia DNS 1
title = DNS server Riomedia (dns1.rixnet.cz)
host = 93.99.2.240
++ RioMedia_DNS2
menu = Riomedia DNS 2
title = DNS server Riomedia (dns2.rixnet.cz)
host = 93.99.3.240
++ O2_DNS1
menu = O2 DNS 1
title = DNS server O2 (ns2.o2.cz)
host = 160.218.10.200
++ O2_DNS2
menu = O2 DNS 2
title = DNS server O2 (ns3.o2.cz)
host = 194.228.41.65
++ O2_DNS3
menu = O2 DNS 3
title = DNS server O2 (ns4.o2.cz)
host = 160.218.43.200
++ Mitranet_Nordic_1
menu = Mitranet/Nordic DNS 1
title = DNS Mitranet-Nordic Telecom (93.93.32.32)
host = 93.93.32.32
++ Mitranet_Nordic_2
menu = Mitranet/Nordic DNS 2
title = DNS Mitranet-Nordic Telecom (93.93.33.33)
host = 93.93.33.33
# --- Sekce pro veřejné DNS servery ---
+ VerejneDNS
menu = Veřejné službyDNS servery
title = ServeryDostupnost a odezva veřejnéejných DNS serverů
++ ZelinaHttpsCloudflareDNS
menu = WebCloudflare ZelinaDNS
title = zelina.Cloudflare Public DNS (1.1.1.1)
host = 1.1.1.1
++ GoogleDNS
menu = Google DNS
title = Google Public DNS (8.8.8.8)
host = 8.8.8.8
++ Quad9DNS
menu = Quad9 DNS
title = Quad9 Public DNS (9.9.9.9)
host = 9.9.9.9
++ OpenDNS
menu = OpenDNS
title = OpenDNS / Cisco Umbrella (208.67.222.222)
host = 208.67.222.222
++ ComodoDNS
menu = Comodo Secure DNS
title = Comodo Secure DNS (8.26.56.26)
host = 8.26.56.26
++ AdGuardDNS
menu = AdGuard DNS
title = AdGuard Public DNS (non-blocking) (94.140.14.14)
host = 94.140.14.14
++ CZ_NIC_ODVR
menu = CZ.NIC ODVR
title = CZ.NIC Open DNSSEC Validating Resolver (193.17.47.1)
host = 193.17.47.1
++ DNSWatch
menu = DNS.WATCH
title = DNS.WATCH (No logging) (84.200.69.80)
host = 84.200.69.80
++ CleanBrowseSec
menu = CleanBrowse Sec
title = CleanBrowse Security Filter (185.228.168.9)
host = 185.228.168.9
++ NeustarDNS
menu = Neustar UltraDNS
title = Neustar UltraDNS Public (64.6.64.6)
host = 64.6.64.6
++ YandexDNS
menu = Yandex DNS
title = Yandex.DNS Basic (77.88.8.8)
host = 77.88.8.8
++ AlternateDNS
menu = Alternate DNS
title = Alternate DNS (76.76.19.19)
host = 76.76.19.19
# --- Sekce pro veřejné WWW servery ---
+ VerejneWWW
menu = Veřejné WWW servery
title = Dostupnost a odezva veřejných WWW serverů
++ GoogleCZ
menu = Google.cz
title = Google Česká Republika (google.cz)
host = google.cz
++ Facebook
menu = Facebook.com
title = Facebook (facebook.com)
host = facebook.com
++ SeznamCZ
menu = Seznam.cz
title = Seznam (seznam.cz)
host = seznam.cz
++ ZelinaEU
menu = Zelina.eu
(HTTPS)title = Web Zelina.eu
host = zelina.eu
probe# =--- EchoPingHttpsSekce pro NTP servery ---
++ MailSMTPNTPservery
menu = MailNTP SMTPservery
title = zelina.euMonitorování NTP časových serverů
++ NIC_CZ
menu = ntp.nic.cz
title = NTP server CZ.NIC (SMTP)ntp.nic.cz)
host = mail.zelina.eu
probe = EchoPingSmtpntp.nic.cz
++ MailSMTPSNordic_Tel
menu = Mail SMTPSNordic.tel
title = zelina.euNTP server Nordic.tel (SMTPS 465)78.136.138.33)
host = mail.zelina.eu
probe = EchoPing
port = 46578.136.138.33
++ MailIMAPZelinaNTP
menu = Mail IMAPntp.zelina.eu
title = zelina.euVlastní NTP server (IMAP)ntp.zelina.eu)
host = mail.ntp.zelina.eu
probe = EchoPing
port = 143
++ MailIMAPSDE_Pool
menu = MailNTP IMAPSPool DE
title = zelina.euNěmecký NTP pool (IMAPS 993)de.pool.ntp.org)
host = mail.zelina.eu
probe = EchoPing
port = 993de.pool.ntp.org
++ DNSCZ_Pool
menu = DNSNTP zelinaPool CZ
title = DNSČeský zelina.euNTP pool (cz.pool.ntp.org)
host = dns1.zelina.eu
probe = EchoPingDnscz.pool.ntp.org
++ DoHSK_Pool
menu = DNS-over-HTTPSNTP Pool SK
title = dns1.zelina.euSlovenský NTP pool (DoH 443)sk.pool.ntp.org)
host = dns1.zelina.eu
probe = EchoPing
port = 443sk.pool.ntp.org
++ TVHeadendEU_Pool
menu = TVNTP StreamPool EU
title = tvheadend.zelina.euEvropský NTP pool (europe.pool.ntp.org)
host = tvheadend.zelina.eu
probe = EchoPingHttps
++ Grafana
menu = Grafana
title = grafana.zelina.eu
host = grafana.zelina.eu
probe = EchoPingHttpseurope.pool.ntp.org
- DŮLEŽITÉ: Nahraďte
192.168.1.1
skutečnou IP adresou vašeho routeru (výchozí brány). Můžete ji zjistit např. příkazemip r | grep default
. - Uložte soubor (v
nano
stiskněteCtrl+O
, potvrďteEnter
, a pakCtrl+X
pro ukončení).
Krok 5: Nastavení vlastnictví adresářů
Aby kontejner Smokeping (který poběží pod specifickým uživatelem definovaným PUID/PGID) mohl zapisovat do vytvořených adresářů, musíme jim nastavit správné vlastnictví. Použijte UID a GID, které jste zjistili v Kroku 2. Nahraďte VASE_PUID
a VASE_PGID
skutečnými čísly.
sudo chown -R VASE_PUID:VASE_PGID /opt/smokeping
1000
:sudo chown -R 1000:1000 /opt/smokeping
Krok 6: Vytvoření Stacku v Portaineru
- Otevřete webové rozhraní Portaineru ve vašem prohlížeči.
- V levém menu vyberte vaše Docker prostředí (obvykle pojmenované
primary
nebolocal
). - Přejděte do sekce "Stacks".
- Klikněte na tlačítko "+ Add stack".
- Zadejte název stacku, například
smokeping
. - V části "Build method" vyberte "Web editor".
- Do velkého textového pole vložte následující
docker-compose.yml
konfiguraci:
version: '3.8'
services:
smokeping:
image: lscr.io/linuxserver/smokeping:latest
container_name: smokeping
environment:
- PUID=1000 # <--- ZMĚŇTE NA VAŠE PUID z Kroku 2
- PGID=1000 # <--- ZMĚŇTE NA VAŠE PGID z Kroku 2
- TZ=Europe/Prague # <--- NASTAVTE VAŠI ČASOVOU ZÓNU
volumes:
- /opt/smokeping/config:/config
- /opt/smokeping/data:/data
ports:
- 8080:80 # <--- Hostitelský port : Port kontejneru (můžete změnit 8080, pokud je obsazený)
restart: unless-stopped
- DŮLEŽITÉ ÚPRAVY V YAML:
- Nahraďte
1000
uPUID
aPGID
hodnotami, které jste zjistili v Kroku 2. - Zkontrolujte a případně upravte časovou zónu
TZ
. Seznam zón najdete např. na Wikipedii (List of tz database time zones).Europe/Prague
je pro Česko správně. ports:
: Mapuje port8080
na vašem Raspberry Pi na port80
uvnitř kontejneru Smokeping. Pokud už port8080
používáte pro jinou službu, změňte první číslo (např. na8081:80
). Port80
vpravo (uvnitř kontejneru) neměňte.
- Nahraďte
Krok 7: Nasazení Stacku
- Pečlivě zkontrolujte vložený YAML kód, zejména úpravy PUID/PGID a portu.
- Sjeďte dolů a klikněte na tlačítko "Deploy the stack".
- Portainer stáhne potřebný Docker obraz (pokud ho ještě nemáte lokálně) a spustí kontejner podle vaší definice. Může to chvíli trvat.
Krok 8: Kontrola a přístup ke Smokepingu
-
Po nasazení byste měli vidět stack
smokeping
v seznamu stacků a kontejnersmokeping
v seznamu kontejnerů jako běžící (running
). -
Pokud se vyskytnou problémy, můžete se podívat na logy kontejneru kliknutím na ikonu logu u kontejneru
smokeping
v Portaineru. -
Otevřete webový prohlížeč a zadejte adresu vašeho Raspberry Pi následovanou portem, který jste definovali v
docker-compose.yml
(v našem příkladu8586
):http://<IP_ADRESA_VAŠEHO_RPI>:8586
Například:
http://192.168.1.50:8586
(IP adresu vašeho RPi zjistíte např. příkazem
hostname -I
v terminálu RPi). -
Měli byste vidět webové rozhraní Smokepingu s grafy pro cíle, které jste definovali v souboru
Targets
. Může trvat několik minut, než se začnou objevovat první data v grafech.
Krok 9: Další konfigurace
Pokud chcete přidat další cíle, změnit typy sond (probe) nebo upravit jiné aspekty Smokepingu:
- Editujte konfigurační soubory v adresáři
/opt/smokeping/config
na vašem Raspberry Pi (např.sudo nano /opt/smokeping/config/Targets
). - Po uložení změn je potřeba restartovat kontejner Smokeping, aby se změny načetly. To můžete udělat v Portaineru:
- Přejděte do sekce "Containers".
- Najděte kontejner
smokeping
. - Klikněte na tlačítko "Restart".
Hotovo! Nyní máte Smokeping běžící v Docker kontejneru na vašem Raspberry Pi 5, spravovaný přes Portainer, s konfigurací a daty uloženými na hostitelském systému.