Skip to content

Site map

Maps → Site map shows your estate on a real world map - the geographic analog of a floor plan. Every site with coordinates gets a labelled marker (with its device count); devices that carry their own GPS coordinates appear as small dots colored by role. Click a marker for a popup with counts and a jump-off to the site or device page.

What's on the map

  • Sites - labelled markers with a device count and a health ring: the worst monitoring status across the site's device IPs (green/amber/red), so the map doubles as a NOC view.
  • Devices - any device with GPS coordinates, role-colored, with the same health ring. A role can also carry a Lucide icon (set on the role form next to its color) - it shows inside the device's badge on the map, the sidebar, and the floor planner's palette. Camera-ish devices (roles with has FOV) render a field-of-view cone - direction, angle, and reach in meters, or a full PTZ coverage ring - edited with live preview from the sidebar inspector.
  • Free markers - anything else worth pinning (generators, gates, masts): markers typed by your own floor tile types and device roles (zero pre-filled vocabulary), placed by arming a type in the edit sidebar and clicking the map (it stays armed for stamping several). Camera-ish types get cones too.
  • Connections - site-to-site links drawn as arcs, derived from what you already model, never a separate schema:
    • circuits whose A and Z terminations land on two placed sites (colored by circuit type, then status);
    • tunnels, resolved termination → interface → device → site - two sites make an edge, a hub termination makes a star to its spokes;
    • cross-site cables (dark fiber), aggregated per site pair - a bundle is one arc with a count. Hover thickens an arc and names it with its speed; click opens its popover and the inspector, both showing its link facts - speed, provider, encapsulation, the ports at each end - with jump-offs to both sites and the object. Each kind respects its own view permission.

The layout - the floor planner, on a map

The page is a clone of the floor-plan editor's shell:

  • Header - View / Layout / Cables tabs, a Find on map… search (sites, devices, markers - jump + select), Fit to view, the Satellite toggle, the Objects sidebar toggle, and a Display menu in three parts:
    • Layers - Sites, Devices, Links, Cables, Cable routes, Region boundaries, Camera FOV cones, and Stack nearby markers. Links are circuits and tunnels; Cables toggles the plain cable lines separately, so a map can show just the carrier picture.
    • Labels - Names (the site and device name chips) and Speed (each line's speed on the line, see Link speed).
    • Color by - Type, Status or Speed, for the lines.
  • Left palette rail (Edit mode) - tabbed Sites / Markers, exactly like the plan's palette: click to arm, then click the map. Marker types stay armed so you can stamp several; Esc disarms. Stamping a marker opens a small dialog asking for a name and an optional device link - role markers open the picker pre-filtered to that role. Both are skippable; an unnamed marker displays its linked device's name, then its type name.
  • Right inspector - opens when something is selected. Sites show health, counts, and floor-plan jump-offs; devices show badges, the front image, and the FOV sliders; markers are edited here (label, description, linked device, FOV, delete); links show their endpoints and metadata. Site and device inspectors carry a Details section with the same detail-page rows (and copy buttons) as the popovers - serial, DNS, rack, location, cluster, counts, coordinates, and custom fields - so the answer is on the map either way. A link or a cable shows its link facts, with every link of a bundle. The panel is resizable: drag its left edge (the width is remembered per browser; a small reset button restores the default), and the sliders button in its header picks exactly which detail rows to show - also remembered per browser.
  • Objects - the far-right Objects sidebar, the same one the floor plans and the topology map open: one Search… box over foldable groups - sites by region (a flat list until regions are in use), devices by role (each role headed by its color badge), markers, links grouped by kind, and a Regions list (regions with a stored boundary; click one to fit the map to it). Click a row to fly to it; Enter in the search box jumps to the first hit. Every site/device row carries its monitoring status pill, a Problems section at the top collects everything down or degraded (worst first), and the All · Down · Degraded · Up tabs under the search box (each with its count, named as your status catalog names the states) filter the whole list. Group headers show down/degraded counts even when folded, and fold state is remembered per browser.
  • Hiding part of the map - the eye on a group header takes that group off the map: a device role, or a region's sites. Individual sites have their own eye, since sites are the map's top-level objects and there are rarely many. Roles and regions hide by name, so a device that gets the role tomorrow is hidden too.

    Hiding a site hides everything that belongs to it, not just its pin: its devices, and every circuit, tunnel and cable with an end there - an arc to a hidden site would otherwise hang in the sea. A cable route whose cables are all hidden goes too; a route with no cables is a planned duct and stays. What is left is a map you can actually read.

    Hidden objects stay listed, greyed, so you can bring them back. They drop out of Problems, the triage pill, Find on map, Fit-to-all, the Links and Cable routes lists, and a device's cable count. A "n hidden · Show all" line appears at the top of the sidebar whenever anything is off, and a chip in the map's top-right corner says the same while the sidebar is closed. The choice is remembered per browser. This is finer-grained than Display, which switches whole kinds on and off. The floor plans and the topology map have the same eyes. Keyboard: H hides the selected site, or the selected device's role; Shift+H shows all.

Placed markers are fully editable from the inspector: rename, describe, link/unlink a device, tune FOV, or delete (or press Delete in Edit mode).

The map elsewhere - the Map widget

The same live OSM map (real tiles, your sites/devices, cables, and connection arcs) is reused as a compact MiniMap wherever a map helps:

  • an opt-in Map dashboard widget (Add widget → Map) with an "Open map →" corner link;
  • a collapsible strip above the Circuits table;
  • an "On the map" locator on site and location overviews (the site highlighted; every arc and cable drawn, framed on the site and its direct peers);
  • a Location card on each placed device's page - the device centered, with Site map and Floor plan jump-off buttons.

Markers are clickable everywhere (site → site page, device → device page).

Devices and free markers render as the floor-planner's badge squares (the role/type color, icon or centred dot) rather than plain pins; the selected one gets a primary-colored ring so it's obvious what you clicked.

Deferred (documented, not forgotten)

Multipoint L2VPN / peer-mesh tunnels as mesh overlays, a wireless point-to-point link model, configurable popover fields (the floorplan's registry), and antimeridian-aware arcs.

Popovers

  • Sites - labelled markers with a device count. Click one for a popover with the site page's facts - region, address, time zone, coordinates, and its prefix/VLAN/VM/rack/circuit/contact counts - plus direct links into its floor plans (the map → floor plan drill-down) and a jump to the site page. Copyable values (address, coordinates) carry a copy button.
  • Devices - any device with GPS coordinates: outdoor APs, cameras, gateways, roadside cabinets. Dots are colored by the device's role. The popover shows the configured detail fields first, then the rest of the device page's facts - manufacturer, platform, serial, asset tag, rack and position, location, cluster, OOB IP, interface/IP counts, coordinates - with copy buttons on the copyable ones, and (in edit mode) a Remove from map action. Toggle the Sites / Devices layers in the toolbar.

Placing things

Sites get coordinates two ways:

  • On the map - switch the header tabs to Edit. The palette rail lists sites not yet placed: pick one, click its spot, done. Already-placed pins become draggable. Every change saves immediately (and lands in the change log - you need site.change for what you move).
  • In the form - Site and Device forms both accept decimal-degree Latitude / Longitude, for pasting coordinates from elsewhere.

Devices appear on the map through their coordinates - set them on the device form, stamp a role marker and link the device from the placement dialog, or use the palette's Devices tab: search for any device (the sliders open the advanced filter), then click its spot. Picking an already-placed device moves it. Dragging a placed device or removing it from the map needs device.change.

Danbyte never geocodes addresses - there's no lookup of your street addresses against an external service. You place things yourself.

Chrome and memory

  • Problems pill - when anything on the map is down or degraded, a pill in the top-left corner counts it, one chip per state named as your status catalog names it; each click flies to the next problem, worst first, and opens its popover.
  • Legend - bottom-left, folded to a Legend chip by default; explains pins, badges, cluster chips, the health ring's states (named as your status catalog names them) and the line colors, as Color by draws them: the kinds, the statuses on the lines as their pills, or the speed tiers on the lines. Its ✕ (Hide legend) folds it again.
  • Fullscreen - the expand button in the toolbar puts just the map fullscreen; every control keeps working.
  • A metric scale bar sits bottom-left.
  • The map remembers where you were: the last view (center + zoom) and the layer toggles persist per browser, like the satellite, labels, FOV and Color by choices. Fit to view is always one click to see everything again.

Site colors and icons

Every site can carry a marker color and a Lucide icon, set on the site form (Marker color / Marker icon, next to the coordinates). The map pin takes the color and shows the icon inside it; with nothing set, the pin is the theme color with a standard building glyph. The same pair exists on locations - there they color the location's badge on list and detail pages (locations have no coordinates, so nothing changes on the map), and give the upcoming topology views a grouping color to work with.

To color many at once, tick them in the Sites, Regions or Locations list and choose Edit in the bar that appears: sites and locations take a marker color and icon, regions a color. Leave a field unticked to keep each one's own; tick it with nothing picked to clear it.

Close markers cluster

In View mode, markers that would collide collapse into a round chip with a count. Its border takes the dominant site color inside; a corner dot carries the worst monitoring status among the clustered objects, so a pile can never hide a problem. Click a chip to zoom into it - at maximum zoom, markers on the same coordinates fan out ("spiderfy") so each one is clickable. Picking a clustered object from the sidebar, search, or a ?focus= link zooms and fans automatically until that marker is visible.

Stacking is a preference: Display → Stack nearby markers (default on). Turned off, nothing collapses - crowded markers shrink instead, down to about half size, so every site stays individually visible and clickable. The choice applies to the mini maps too.

Edit and Cables modes never cluster - dragging, click-to-place and route drawing work on the flat markers exactly as before. The MiniMap (the dashboard widget, site/device locators, circuits strip) clusters too, with a smaller chip.

Name chips declutter with zoom as well: site names appear once you're reasonably close, device names closer still, and hovering or selecting a marker always shows its name at any zoom. Display → Labels → Names (remembered per browser) switches to hover/selection-only if you prefer a bare map.

What draws a line between two sites

Site-to-site links are derived, never modelled - there is no "connection" object to create. A line appears when one of these resolves to two different sites that are both placed on the map:

Line What has to be true
Circuit Both the A and Z termination land on a site (not a provider network), and the two sites differ. Cabling a side to a port is not required for the line - it ties the circuit to the port.
Tunnel Each tunnel termination resolves to a site: a device interface through its device, a VM interface through its VM (its own site, else its cluster's, else its host's). Two sites draw one line; a hub termination draws one line per spoke. A peer mesh of more than two sites is not drawn.
Cable Its two ends sit on devices at different sites. Cables between sites are aggregated per site pair, so a bundle is one line.

A site is placed once it has a latitude and longitude - an unplaced site drops every line that would touch it. If a link you expect is missing, check that end's site first.

A line shows how fast it is whenever Danbyte can work that out from what you have recorded: a circuit's commit rate or its terminations' port speeds, a tunnel's own Capacity (set on the tunnel), the speed of the interfaces at a cable's ends. Circuits → Link speed on the site map has the rules and which one wins. When nothing is known a line has no figure - never a guess.

Color by

Display → Color by picks what a line's color means:

Color by A line's color
Type (default) Its kind: circuits sky, tunnels violet, cables amber - unless the object brings its own color (a circuit type's, a cable's).
Status Its status's color, from your status catalog. A line with no status is grey.
Speed The speed tier of its figure, on the scale the topology and the port faceplates use. A line of unknown speed is grey.

The legend follows: the kinds under Type, the statuses on the map's lines as their pills under Status, the speed tiers on its lines under Speed. The choice is remembered per browser.

Changed in 0.17

A cable with no color of its own was drawn in the circuits' sky blue while the legend called cables amber. It is amber now, on this map and in the Map widget and the locators.

Speed labels

Display → Labels → Speed (on by default) writes each line's figure on the line: 10G, 100/20M (down/up), 2×10G for a bundle. To keep the map readable:

  • only lines in view are labelled, at most 300 at a time;
  • nothing is labelled from far out (the world, a continent);
  • a line gets its label once it is long enough on screen to carry one, so zooming in brings the shorter lines' labels in;
  • labels never overlap - the longer line keeps its label;
  • cables drawn on top of one another (between devices with no coordinates of their own, every cable of a site pair runs from one site's point to the other's) share one label, added up the way a bundle is;
  • while a trace lights some cables, only those keep their labels.

A line of unknown speed carries no label. The choice is remembered per browser.

A line's popover and its inspector show the same facts:

  • Speed - the figure and where it came from: 100G · commit rate, 500/100M · port speed, 10G · interfaces, 1G · set on tunnel, 10G · cable; Unknown when nothing is known.
  • Bundle - for a line of several links, how many there are and how many have no known speed: 4 links · 3 unknown.
  • Provider, Circuit ID (with a copy button) and Type for a circuit; Encapsulation and Group for a tunnel; Cables for a site pair's cables.
  • Ends - for a single link, the device and port at each end with the port's speed. A circuit side that is not cabled shows its termination's port speed.
  • Links - for a bundle, each link's speed and its two ends. The popover lists the first three and the inspector every link the map has (the first 50); both count the rest as +N more.

An end on a device you may not view reads Restricted and says nothing more. Clicking a cable opens its popover and the inspector too; a cable into patch panels shows its own ends above the ports its strands come out on.

Cabling on the map

Every cable whose two ends land on the map draws as a line - you don't need to draw a route first. A cable follows its route's geometry if it has one, otherwise it's a gentle dashed curve between the two devices (bundles fan out so you can tell them apart).

Click a device to open its inspector:

  • Cabling lists every end-to-end run through the device (panels and splitters crossed). The ⤳ trace button on a run lights that whole path on the map and fits the view; clicking any cable line toggles its highlight.
  • Ports lists the device's interfaces and front/rear ports, each showing a colored dot when cabled or a + Connect when empty. Connect opens the cable form seeded with that port as the A-side - the fastest way to wire fibre straight from the map; the new cable appears the instant you save.

The device popover shows a cable count and a Trace shortcut.

Cables mode - routes for the outside plant

The header's Cables tab (editors only) is the floor planner's tray editor, geographic. Draw a route by clicking waypoints along the duct / aerial / trench path (double-click or Enter to finish, Esc to cancel), name it, then assign the physical cables right in the naming dialog (pick a cable and the line you drew IS that cable's path - no duct required; the name and color prefill from it) or later from the route inspector. Reshape any time: drag a vertex, click a segment's + to add a bend, right-click a vertex to remove it.

Routes render in every mode as faint channels (toggle under Display → Cable routes); their assigned cables draw as thin colored lines inside the channel, routed through the route graph between their endpoint sites. A cable bundle whose members all follow real routes drops its abstract arc. Cable detail pages gain Show on site map (/site-map?trace=<cableId>) once the cable is routed. Routes are a registered RBAC type (cableroute) - users without the grant see no plant geography.

For splice closures and PON splitters, see fibre.

Placing a site from its address

Besides dragging a pin in Layout mode or typing coordinates, the site form can geocode the Address line. Type an address and leave the field: while the coordinate fields are empty, the best match fills them automatically (a toast names the place it chose). Find on OSM next to the field does the same on demand and lists the candidates, for when the automatic match picks the wrong one - and coordinates you typed yourself are never overwritten. Powered by OpenStreetMap's Nominatim, one lookup per action, © OpenStreetMap contributors.

Region boundaries

Regions that carry an OpenStreetMap boundary shade their outline under the markers, tinted by the region's map color (muted zinc when no color is set). The polygons are decoration, not controls - clicks pass straight through to pins and the map. Toggle them under Display → Region boundaries (remembered per browser, like the other layers). Boundary data © OpenStreetMap contributors, ODbL.

Satellite view

The header's Satellite button swaps the basemap to imagery - Esri World Imagery by default (their attribution shown as required). The choice is remembered per browser. A deployment can point the satellite basemap elsewhere in Settings → Site map → Map tiles (satellite URL + attribution), same rules as the street tiles: https-only, {z}/{x}/{y} placeholders, and the tile host must be allowed in the nginx CSP img-src (the shipped config already allows server.arcgisonline.com). If a basemap's tiles are CSP-blocked, the map shows a banner linking back to this page instead of failing silently.

Map tiles - read this before heavy use

The map background is raster tiles from a tile server. By default that is OpenStreetMap's standard tile service, which is donated, donation-funded infrastructure with a strict tile usage policy. Danbyte follows it:

  • the required attribution (© OpenStreetMap contributors) is always shown on the map and is never hidden - leave it alone; it's a condition of use;
  • a Report a map issue link is included, as the policy recommends;
  • tiles are browser-cached per their HTTP headers, never bulk-downloaded;
  • the browser sends a valid (origin-only) Referer with tile requests.

The default is fine for light internal use - a handful of operators looking at a map. If your deployment is large, busy, or public-facing, the policy expects you to use your own tile source: set Settings → Site map → Map tiles to any raster tile server (an https://…/{z}/{x}/{y}.png template) - a commercial provider, or self-hosted tiles. Set the matching attribution string; nearly every provider requires one.

Content-Security-Policy

The bundled nginx config allows images from tile.openstreetmap.org (street map) and server.arcgisonline.com (the default satellite imagery). If you configure a different tile server for either basemap, add its origin to the img-src directive in /etc/nginx/sites-available/danbyte.conf (see the CSP line) and reload nginx - otherwise the browser blocks the tiles and the map shows a warning banner over a plain gray background.

Upgrading an existing install: re-running the bundle's install.sh regenerates the nginx config with the current CSP automatically. The in-app updater can't edit nginx - after an in-app update, add whichever hosts are missing by hand (safe to re-run; it only adds what's absent):

CONF=/etc/nginx/sites-available/danbyte.conf
for host in https://tile.openstreetmap.org https://server.arcgisonline.com; do
  grep -q "$host" "$CONF" || \
    sudo sed -i "s|img-src 'self' data: blob:|img-src 'self' data: blob: $host|" "$CONF"
done
sudo nginx -t && sudo systemctl reload nginx

Airgapped servers

Tiles are fetched by the browser, never by the Danbyte server - so an airgapped server is a non-issue: operators whose workstations have internet access see the full map. Only when the workstations themselves can't reach a tile server (a fully isolated network) does the map fall back to a plain background - markers, placement, and popups still work. For real tiles there, self-host a tile server on the isolated network and point the Map tiles setting at it.

API

GET /api/site-map/ returns the effective tile config plus the RBAC-scoped sites (all of them - unplaced ones carry null coordinates so the edit panel can offer them) and every device with coordinates. Site coordinates are plain fields on the Site resource (latitude / longitude, decimal degrees), so they're scriptable like everything else.

GET /api/site-map/cables/ returns every cable with two placeable ends. An end carries the point it draws at, its device_id and its site_id - a device with no coordinates of its own is drawn at its site's point, and that device is not in the payload above, so the site is what identifies it.

GET /api/site-map/connections/ returns the lines between sites - circuits, tunnels and each site pair's cables, as What draws a line between two sites describes. Each kind needs its own view permission, and both sites must be ones you can view.

Both line endpoints take ?include=capacity, and each line then also carries:

Field What it holds
capacity The line's speed: kbps, up_kbps (only when the other direction differs), label (10G, 100/20M, 2×10G), source, and count / unknown - how many of its links have a known speed and how many do not. null when no speed is known: never a guess.
links The end-to-end links the figure is made of, the first 50: each with its a and z end, its own capacity and the cable_id that carries it (null for a circuit or tunnel).
link_count How many links there are in all.

Without it the payloads are as before. The map widget and the site and device locators share these endpoints and don't ask, so they pay nothing for it.

source names where the figure came from - the rules, and which one wins, are under Circuits → Link speed on the site map:

source Line The figure
commit circuit its commit rate
port circuit the slower termination's port speed, with the upstream speed where it differs
interface circuit the slower of the interfaces its sides are cabled to
override tunnel the tunnel's own capacity
cable cable per link, the lower of its two end interfaces' speeds; a line with several links adds them up

A cable into a patch panel is followed through the panels to where its strands come out. A trunk between two panels carries one link per strand patched at both ends - a duplex connector's two strands are one link - and a strand that stops dark inside a panel carries none. A site pair's line adds up every link its cables carry, each once; a cable that carries no link at all counts as one of unknown speed.

An end names its site_id, the device - or for a tunnel the virtual_machine - and the port it lands on, with the port's kind and, for an interface, its speed_kbps. A circuit's ends carry their termination too: its side, port speed and upstream speed. What you see follows your permissions:

  • a device or virtual machine is named only when you can view it; otherwise the end reads restricted: true and carries nothing else;
  • a circuit's ends are traced to what they are cabled to only when you can view cables;
  • a speed read off interfaces makes a link's figure only when you can view the devices at both of its ends - otherwise the link counts as unknown.

The figures cost the same number of queries however many links the map draws.