Back to Blog

SmokePing in Docker: Latency and packet loss monitoring with a modern interface

📡
SmokePing Docker
Latency and packet loss monitoring with a modern interface

SmokePing has an interface that feels designed to punish you. We've used it for years — the tool is brilliant. Tobi Oetiker created something that works so well it's still relevant decades later. But every time we opened the panel we travelled back to 2005. At everyWAN we kept patching: a script for Telegram alerts, a daemon for traceroute history, a frontend that didn't burn your eyes. Years of patches. Until one day we looked at the Frankenstein we'd built and it worked better than the original. We've packaged it in Docker and we're releasing it today.

What you get

A production-ready Docker image, same base as linuxserver/smokeping but with everything we were missing: modern web interface, traceroute history, Telegram alerts, and single-container deployment.

Modern web interface

Responsive layout, clean navigation, works on mobile. All the SmokePing functionality with a UI that doesn't feel like 2005.

Traceroute history

Every target gets a traceroute panel. Not just the current route — full history. Filter by date and hour, 365 days retention by default.

Telegram alerts

Real-time notifications: packet loss, latency spikes, and real route changes. Route change detection is smart — same provider, different router doesn't spam you.

Master / slave

Deploy a master and multiple slaves across locations. Each slave runs its own traceroute daemon with local history. The master aggregates latency data in one dashboard.

Quick start

One command and you're monitoring:

docker run -d \
  --name smokeping \
  -p 80:80 \
  --cap-add NET_RAW --cap-add NET_ADMIN \
  -v $(pwd)/config:/config \
  -v $(pwd)/data:/data \
  -e TZ=Europe/Madrid \
  sistemasminorisa/smokeping:latest

Open http://localhost and you're monitoring. The image includes example targets (CDNs, DNS, etc.) so you can see it working; then replace them with your own.

Docker Compose and scenarios

We include several compose files for different scenarios:

  • docker-compose.yml — Standalone deployment, port 80
  • docker-compose.swarm.yml — Docker Swarm
  • docker-compose.traefik.yml — Behind an existing Traefik proxy
  • docker-compose.full-stack.yml — Includes Traefik v3
  • docker-compose.slave.yml — Slave instance for multi-location

Customization via environment variables

Logo, colors, company name, intervals, traceroute retention… all configurable via environment variables. No need to rebuild the image or edit files inside the container.

  • TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID — Alerts
  • SMOKEPING_LOGO_URL, SMOKEPING_BRAND_NAME, SMOKEPING_TITLE
  • TRACEPING_INTERVAL, TRACEPING_RETENTION_DAYS

Configuring targets

Targets live in config/Targets. Standard SmokePing format. The hierarchy (+, ++, +++) creates the navigation menu.

*** Targets ***
probe = FPing
menu = Top
title = Network Monitor

+Production
menu = Production
title = Production Infrastructure

++WebServers
menu = Web Servers
title = Web Server Cluster

+++Primary
menu = Primary
title = Primary Web Server
host = web1.example.com
alerts = bigloss,someloss,rttdetect

+++Secondary
menu = Secondary
host = web2.example.com
alerts = bigloss,someloss

Configuring alerts

Alerts are defined in config/Alerts. Packet loss, latency spikes, unreachable… Assign alerts to targets with alerts = bigloss,someloss,rttdetect. For Telegram, set TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID.

*** Alerts ***
to = |/usr/share/webapps/smokeping/telegram_notify.pl
from = smokeping@localhost

+bigloss
type = loss
pattern = ==0%,==0%,==0%,==0%,>0%,>0%,>0%
comment = Packet loss detected (critical)

+someloss
type = loss
pattern = >0%,*12*,>0%,*12*,>0%
comment = Intermittent packet loss

+rttdetect
type = rtt
pattern = <100,<100,<100,<100,<100,<150,>150,>150,>150
comment = Latency spike detected

Traceroute modes

By default traceroute uses ICMP. For hosts behind strict firewalls you can set traceroute_mode = tcp or udp per target.

Mode Protocol When to use
icmpICMP EchoDefault, works most places
udpUDPWhen ICMP is blocked
tcpTCP SYNHosts behind strict firewalls

Multi-location (master / slave)

To monitor from multiple locations: deploy the master with docker-compose.yml, register slaves in config/Slaves and config/smokeping_secrets, deploy each slave with docker-compose.slave.yml (MASTER_URL, SHARED_SECRET), and assign slaves to targets with slaves = nyc-slave london-slave.

*** Slaves ***
secrets=/config/smokeping_secrets

+nyc-slave
display_name = New York
location = New York, USA
color = 00ff00

+london-slave
display_name = London
location = London, UK
color = 0000ff

Environment variables (reference)

Variable Description Default
TZTimezoneUTC
PUID / PGIDUser/group ID1000
TELEGRAM_BOT_TOKENBot token from @BotFather
TELEGRAM_CHAT_IDChat or channel ID
SMOKEPING_LOGO_URLLogo image URLimages/smokeping.png
SMOKEPING_BRAND_NAMECompany name in footer
SMOKEPING_BRAND_URLCompany website
SMOKEPING_COLOR_SIDEBAR_BGSidebar color (hex)#233350
SMOKEPING_TITLEPage titleSmokePing
SMOKEPING_OWNEROwner nameSmokePing Admin
TRACEPING_INTERVALTraceroute interval (seconds)300
TRACEPING_RETENTION_DAYSDays to keep traceroute history365
MASTER_URLMaster URL (slave only)
SHARED_SECRETShared secret (slave only)

Troubleshooting

  • RRD file not found on first run — Normal. SmokePing creates RRD files after the first probe cycle (~5 min).
  • Logo not showing — Ensure SMOKEPING_LOGO_URL is accessible. For local files, mount them and use a path like /config/logo.png.
  • Traceroute panel empty — Ensure the container has NET_RAW and NET_ADMIN capabilities. Check traceroute daemon logs.
  • Slave not connecting to master — Verify MASTER_URL is correct and reachable from the slave, and the secret matches in config/smokeping_secrets and SHARED_SECRET.

Credits

This image wouldn't exist without Tobi Oetiker (SmokePing), LinuxServer.io (base Docker image), and the open source community.

Links and license

Open source, PRs welcome. Based on linuxserver/smokeping and the original SmokePing by Tobi Oetiker. MIT license.

Need help with network monitoring?

At everyWAN we design and operate network and monitoring infrastructure for businesses.

Contact everyWAN

Tags:

Share:

Subscribe to our newsletter

To receive IT stories, everyWAN news and exclusive subscriber offers, sign up to our mailing list

Minorisa de Sistemas Informaticos y Gestión S.L. © 2026
everyWAN
everyWAN