Skip to main content

Instalace Smoke ping na portaineru Raspberry PI

Předpoklady:

  1. Máte funkční Raspberry Pi 5 s nainstalovaným operačním systémem (např. Raspberry Pi OS).
  2. Máte nainstalovaný Docker a Portainer a Portainer běží.
  3. Máte přístup k terminálu (příkazové řádce) vašeho Raspberry Pi 5 (např. přes SSH nebo přímo).
  4. 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):

*** Targets ***

probe = FPing
menu = Hlavní
title = Přehled sítě

+ Unifi_Olomouc
menu = Unifi Olomouc
title = Unifi Olomouc

++ router
menu = Unifi firewall
title = Unifi firewall (192.168.54.1)
host = 192.168.54.1

++ dns1
menu = Pi-hole
title = DNS server Pi-hole 1 (192.168.54.2)
host = 192.168.54.2

++ dns2
menu = Pi-hole 2
title = DNS server Pi-hole 2 (192.168.54.3)
host = 192.168.54.3

++ AplServer1
menu = Aplikační server 1
title = Aplikační server 1 (192.168.54.4)
host = 192.168.54.4

++ AplServer2
menu = Aplikační server 2
title = Aplikační server 2 (192.168.54.6)
host = 192.168.54.6

+ Poskytovatel_internetu
menu = Poskytovatel internetu
title = Sledování trasy k poskytovateli

++ RiomediaO2
menu = Poskytovatel internetu Riomedia - O2
title = Trasa Olomouc - Cloudflare 1.1.1.1 přes Riomedia - O2
host = 1.1.1.1

++ hop1_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 (ns1.riomedia.cz)
host = 94.74.192.250

++ RioMedia_DNS2
menu = Riomedia DNS 2
title = DNS server Riomedia (ns2.riomedia.cz)
host = 94.74.192.245

+ Ceske_DNS_servery
menu = České DNS servery
title = DNS servery českých poskytovatelů

+ O2_Czech_Republic
menu = O2 Czech Republic
title = O2 Czech Republic DNS

++ O2_DNS1
menu = O2 DNS 1 (ns2.o2.cz)
title = O2 DNS 1 - IPv4 (160.218.10.200)
host = 160.218.10.200

++ O2_DNS2
menu = O2 DNS 2 (ns3.o2.cz)
title = O2 DNS 2 - IPv4 (194.228.41.65)
host = 194.228.41.65

++ O2_DNS3
menu = O2 DNS 3 (ns4.o2.cz)
title = O2 DNS 3 - IPv4 (160.218.43.200)
host = 160.218.43.200

++ O2_DNS4
menu = O2 DNS 4 (ns1.o2.cz)
title = O2 DNS 4 - IPv4 (160.218.240.200)
host = 160.218.240.200

+ T_Mobile_Czech_Republic
menu = T-Mobile Czech Republic
title = T-Mobile Czech Republic DNS

++ TMOBILE_DNS1_NEW
menu = T-Mobile DNS 1 (nový)
title = T-Mobile DNS 1 - IPv4 (217.31.204.130)
host = 217.31.204.130

++ TMOBILE_DNS2
menu = T-Mobile DNS 2
title = T-Mobile DNS 2 - IPv4 (212.80.160.153)
host = 212.80.160.153

++ TMOBILE_DNS3
menu = T-Mobile DNS 3
title = T-Mobile DNS 3 - IPv4 (217.31.204.131)
host = 217.31.204.131

+ Vodafone_Czech_Republic
menu = Vodafone Czech Republic
title = Vodafone Czech Republic DNS

++ VODAFONE_DNS1
menu = Vodafone DNS 1
title = Vodafone DNS 1 - IPv4 (82.144.1.1)
host = 82.144.1.1

++ VODAFONE_DNS2
menu = Vodafone DNS 2
title = Vodafone DNS 2 - IPv4 (82.144.64.1)
host = 82.144.64.1

++ VODAFONE_DNS3
menu = Vodafone DNS 3
title = Vodafone DNS 3 - IPv4 (213.129.130.129)
host = 213.129.130.129

++ VODAFONE_DNS4
menu = Vodafone DNS 4
title = Vodafone DNS 4 - IPv4 (213.129.139.139)
host = 213.129.139.139

+ CETIN
menu = CETIN (UPC/Telekom)
title = CETIN DNS

++ CETIN_DNS1
menu = CETIN DNS 1
title = CETIN DNS 1 - IPv4 (62.168.184.100)
host = 62.168.184.100

++ CETIN_DNS2
menu = CETIN DNS 2
title = CETIN DNS 2 - IPv4 (62.168.185.100)
host = 62.168.185.100

+ Nordic_Telecom
menu = Nordic Telecom (Mitranet)
title = Nordic Telecom DNS

++ NORDIC_DNS1
menu = Nordic DNS 1
title = Nordic Telecom DNS 1 - IPv4 (93.93.32.32)
host = 93.93.32.32

++ NORDIC_DNS2
menu = Nordic DNS 2
title = Nordic Telecom DNS 2 - IPv4 (93.93.33.33)
host = 93.93.33.33

+ CZNIC
menu = CZ.NIC (ODVR)
title = CZ.NIC DNS

++ CZNIC_DNS1
menu = CZ.NIC ODVR 1
title = CZ.NIC Open DNS Validator - IPv4 (193.17.47.1)
host = 193.17.47.1

+ Nove_DNS_servery
menu = Nové DNS servery
title = Nové DNS servery velkých českých IT poskytovatelů

++ WEDOS_DNS1
menu = WEDOS DNS 1
title = WEDOS DNS 1 - IPv4 (217.31.204.1)
host = 217.31.204.1

++ WEDOS_DNS2
menu = WEDOS DNS 2
title = WEDOS DNS 2 - IPv4 (217.31.205.1)
host = 217.31.205.1

++ ACTIVE24_DNS1
menu = ACTIVE24 DNS 1
title = ACTIVE24 DNS 1 - IPv4 (217.16.184.33)
host = 217.16.184.33

++ ACTIVE24_DNS2
menu = ACTIVE24 DNS 2
title = ACTIVE24 DNS 2 - IPv4 (217.16.185.33)
host = 217.16.185.33

++ FORPSI_DNS1
menu = FORPSI DNS 1
title = FORPSI DNS 1 - IPv4 (81.2.194.129)
host = 81.2.194.129

++ FORPSI_DNS2
menu = FORPSI DNS 2
title = FORPSI DNS 2 - IPv4 (81.2.194.142)
host = 81.2.194.142

++ ONEBIT_DNS1
menu = Onebit DNS 1
title = OnebitNet DNS 1 - IPv4 (217.11.232.87)
host = 217.11.232.87

++ ONEBIT_DNS2
menu = Onebit DNS 2
title = OnebitNet DNS 2 - IPv4 (217.11.233.87)
host = 217.11.233.87

++ IGNUM_DNS1
menu = IGNUM DNS 1
title = IGNUM DNS 1 - IPv4 (81.0.225.1)
host = 81.0.225.1

++ IGNUM_DNS2
menu = IGNUM DNS 2
title = IGNUM DNS 2 - IPv4 (81.0.236.1)
host = 81.0.236.1

+ Verejne_DNS
menu = Veřejné DNS
title = Veřejné DNS servery

+ Cloudflare
menu = Cloudflare
title = Cloudflare DNS

++ CloudflareDNS_v4
menu = Cloudflare (1.1.1.1)
title = Cloudflare DNS - IPv4 (1.1.1.1)
host = 1.1.1.1

++ CloudflareDNS_v4_2
menu = Cloudflare 2 (1.0.0.1)
title = Cloudflare DNS 2 - IPv4 (1.0.0.1)
host = 1.0.0.1

+ Google
menu = Google
title = Google DNS

++ GoogleDNS_v4
menu = Google (8.8.8.8)
title = Google DNS - IPv4 (8.8.8.8)
host = 8.8.8.8

++ GoogleDNS_v4_2
menu = Google 2 (8.8.4.4)
title = Google DNS 2 - IPv4 (8.8.4.4)
host = 8.8.4.4

+ Quad9
menu = Quad9
title = Quad9 DNS

++ Quad9DNS_v4
menu = Quad9 (9.9.9.9)
title = Quad9 DNS - IPv4 (9.9.9.9)
host = 9.9.9.9

++ Quad9DNS_v4_2
menu = Quad9 2 (149.112.112.112)
title = Quad9 DNS 2 - IPv4 (149.112.112.112)
host = 149.112.112.112

+ OpenDNS
menu = OpenDNS
title = OpenDNS

++ OpenDNS_v4
menu = OpenDNS
title = OpenDNS - IPv4 (208.67.222.222)
host = 208.67.222.222

++ OpenDNS_v4_2
menu = OpenDNS 2
title = OpenDNS 2 - IPv4 (208.67.220.220)
host = 208.67.220.220

+ AdGuard
menu = AdGuard
title = AdGuard DNS

++ AdGuard_v4
menu = AdGuard DNS
title = AdGuard DNS - IPv4 (94.140.14.14)
host = 94.140.14.14

++ AdGuard_v4_2
menu = AdGuard DNS 2
title = AdGuard DNS 2 - IPv4 (94.140.15.15)
host = 94.140.15.15

+ CleanBrowsing
menu = CleanBrowsing
title = CleanBrowsing DNS

++ CleanBrowsing
menu = CleanBrowsing
title = CleanBrowsing DNS - IPv4 (185.228.168.168)
host = 185.228.168.168

++ CleanBrowsing_2
menu = CleanBrowsing 2
title = CleanBrowsing DNS 2 - IPv4 (185.228.169.168)
host = 185.228.169.168

+ NextDNS
menu = NextDNS
title = NextDNS

++ NextDNS
menu = NextDNS
title = NextDNS - IPv4 (45.90.28.0)
host = 45.90.28.0

++ NextDNS_2
menu = NextDNS 2
title = NextDNS 2 - IPv4 (45.90.30.0)
host = 45.90.30.0

+ UncensoredDNS
menu = UncensoredDNS
title = UncensoredDNS

++ UncensoredDNS
menu = Uncensored DNS
title = Uncensored DNS - IPv4 (91.239.100.100)
host = 91.239.100.100

+ ControlD
menu = ControlD
title = ControlD DNS

++ ControlD
menu = ControlD DNS
title = ControlD Standard DNS - IPv4 (76.76.2.0)
host = 76.76.2.0

+ Verejne_WWW_servery
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
title = Web Zelina.eu
host = zelina.eu

++ Alza
menu = Alza.cz
title = Alza.cz (www.alza.cz)
host = www.alza.cz

++ Heureka
menu = Heureka.cz
title = Heureka.cz (www.heureka.cz)
host = www.heureka.cz

++ Mall
menu = Mall.cz
title = Mall.cz (www.mall.cz)
host = www.mall.cz

++ RootCZ
menu = Root.cz
title = Root.cz (www.root.cz)
host = www.root.cz

++ LupaCZ
menu = Lupa.cz
title = Lupa.cz (www.lupa.cz)
host = www.lupa.cz

+ Nove_WWW_servery
menu = Nové WWW servery
title = Nově přidané WWW servery

++ CSFD
menu = CSFD.cz
title = Česko-Slovenská filmová databáze (www.csfd.cz)
host = www.csfd.cz

++ Netflix
menu = Netflix.com
title = Netflix (www.netflix.com)
host = www.netflix.com

++ YouTube
menu = YouTube.com
title = YouTube (www.youtube.com)
host = www.youtube.com

+ NTP_servery
menu = NTP servery
title = Monitorování NTP časových serverů

++ NIC_CZ
menu = ntp.nic.cz (CZ.NIC)
title = Primární NTP server CZ.NIC (ntp.nic.cz)
host = ntp.nic.cz

++ NIC_CZ_backup
menu = ntp1.nic.cz (záloha)
title = Záložní NTP server CZ.NIC (ntp1.nic.cz)
host = ntp1.nic.cz

++ CESNET_NTP
menu = ntp.cesnet.cz
title = CESNET NTP server (ntp.cesnet.cz)
host = ntp.cesnet.cz

++ CESNET_NTP_backup
menu = ntp1.cesnet.cz
title = Záložní CESNET NTP (ntp1.cesnet.cz)
host = ntp1.cesnet.cz

++ Nordic_Tel
menu = Nordic Telecom
title = NTP server Nordic Telecom (78.136.138.33)
host = 78.136.138.33

++ ZelinaNTP
menu = Vlastní NTP
title = Vlastní NTP server (ntp.zelina.eu)
host = ntp.zelina.eu

# NTP pooly podle zemí
++ CZ_Pool_primary
menu = CZ Pool (cz.pool.ntp.org)
title = Český NTP pool - primární
host = 0.cz.pool.ntp.org

++ CZ_Pool_secondary
menu = CZ Pool 2
title = Český NTP pool - sekundární
host = 1.cz.pool.ntp.org

++ SK_Pool
menu = SK Pool (sk.pool.ntp.org)
title = Slovenský NTP pool
host = 0.sk.pool.ntp.org

++ DE_Pool
menu = DE Pool (de.pool.ntp.org)
title = Německý NTP pool
host = 0.de.pool.ntp.org

++ EU_Pool
menu = EU Pool (europe.pool.ntp.org)
title = Evropský NTP pool
host = 0.europe.pool.ntp.org

# Důležité veřejné NTP servery
++ NIST_NTP
menu = NIST (USA)
title = NIST NTP Server (time.nist.gov)
host = time.nist.gov

++ PTB_Germany
menu = PTB Německo
title = Physikalisch-Technische Bundesanstalt (ptbtime1.ptb.de)
host = ptbtime1.ptb.de

++ Microsoft_NTP
menu = Microsoft
title = Microsoft NTP server (time.windows.com)
host = time.windows.com

++ Apple_NTP
menu = Apple
title = Apple NTP server (time.apple.com)
host = time.apple.com

++ Google_NTP
menu = Google
title = Google NTP server (time.google.com)
host = time.google.com
  • 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říkazem ip r | grep default.
  • Uložte soubor (v nano stiskněte Ctrl+O, potvrďte Enter, a pak Ctrl+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
Například, pokud vaše PUID i PGID bylo 1000:


sudo chown -R 1000:1000 /opt/smokeping

Krok 6: Vytvoření Stacku v Portaineru

  1. Otevřete webové rozhraní Portaineru ve vašem prohlížeči.
  2. V levém menu vyberte vaše Docker prostředí (obvykle pojmenované primary nebo local).
  3. Přejděte do sekce "Stacks".
  4. Klikněte na tlačítko "+ Add stack".
  5. Zadejte název stacku, například smokeping.
  6. V části "Build method" vyberte "Web editor".
  7. 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 u PUID a PGID 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 port 8080 na vašem Raspberry Pi na port 80 uvnitř kontejneru Smokeping. Pokud už port 8080 používáte pro jinou službu, změňte první číslo (např. na 8081:80). Port 80 vpravo (uvnitř kontejneru) neměňte.

Krok 7: Nasazení Stacku

  1. Pečlivě zkontrolujte vložený YAML kód, zejména úpravy PUID/PGID a portu.
  2. Sjeďte dolů a klikněte na tlačítko "Deploy the stack".
  3. 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

  1. Po nasazení byste měli vidět stack smokeping v seznamu stacků a kontejner smokeping v seznamu kontejnerů jako běžící (running).

  2. Pokud se vyskytnou problémy, můžete se podívat na logy kontejneru kliknutím na ikonu logu u kontejneru smokeping v Portaineru.

  3. 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říkladu 8586):

    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).

  4. 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:

  1. Editujte konfigurační soubory v adresáři /opt/smokeping/config na vašem Raspberry Pi (např. sudo nano /opt/smokeping/config/Targets).
  2. 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.