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 |
|---|---|---|
icmp | ICMP Echo | Default, works most places |
udp | UDP | When ICMP is blocked |
tcp | TCP SYN | Hosts 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 |
|---|---|---|
TZ | Timezone | UTC |
PUID / PGID | User/group ID | 1000 |
TELEGRAM_BOT_TOKEN | Bot token from @BotFather | — |
TELEGRAM_CHAT_ID | Chat or channel ID | — |
SMOKEPING_LOGO_URL | Logo image URL | images/smokeping.png |
SMOKEPING_BRAND_NAME | Company name in footer | — |
SMOKEPING_BRAND_URL | Company website | — |
SMOKEPING_COLOR_SIDEBAR_BG | Sidebar color (hex) | #233350 |
SMOKEPING_TITLE | Page title | SmokePing |
SMOKEPING_OWNER | Owner name | SmokePing Admin |
TRACEPING_INTERVAL | Traceroute interval (seconds) | 300 |
TRACEPING_RETENTION_DAYS | Days to keep traceroute history | 365 |
MASTER_URL | Master URL (slave only) | — |
SHARED_SECRET | Shared 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_URLis accessible. For local files, mount them and use a path like/config/logo.png. - Traceroute panel empty — Ensure the container has
NET_RAWandNET_ADMINcapabilities. Check traceroute daemon logs. - Slave not connecting to master — Verify
MASTER_URLis correct and reachable from the slave, and the secret matches inconfig/smokeping_secretsandSHARED_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