UniFi-Poller

UniFi-Poller

Docker app from Selfhosters

Overview

Collect ALL UniFi Controller, Device and Client Data - Export to InfluxDB or Prometheus. Visualize with Grafana using included dashboards!
IMPORTAT! ACTION REQUIRED! As of UniFi Poller version 2 all of the environment variables and config file format changed. You must reconfigure this container after you upgrade!
READ THE INSTRUCTIONS! https://github.com/unifi-poller/unifi-poller/wiki/Configuration

discord grafana pulls stars

unifi

Collect your UniFi controller data and report it to an InfluxDB instance, or export it for Prometheus collection. Twelve Grafana Dashboards included; with screenshots. Six for InfluxDB and six for Prometheus.

Installation

See the Documentation! We're willing to help if you have troubles. Open an Issue and we'll figure out how to get things working for you. You can also get help in the #unpoller channel on the GoLift Discord server. There is also a forum post you may use to get additional help.

Description

Ubiquiti makes networking devices like switches, gateways (routers) and wireless access points. They have a line of equipment named UniFi that uses a controller to keep stats and simplify network device configuration. This controller can be installed on Windows, macOS, FreeBSD, Linux or Docker. Ubiquiti also provides a dedicated hardware device called a CloudKey that runs the controller software. More recently they've developed the Dream Machine, and UnPoller can collect its data!

UnPoller is a small Golang application that runs on Windows, macOS, FreeBSD, Linux or Docker. In Influx-mode it polls a UniFi controller every 30 seconds for measurements and exports the data to an Influx database. In Prometheus mode the poller opens a web port and accepts Prometheus polling. It converts the UniFi Controller API data into Prometheus exports on the fly.

This application requires your controller to be running all the time. If you run a UniFi controller, there's no excuse not to install Influx or Prometheus, Grafana and this app. You'll have a plethora of data at your fingertips and the ability to craft custom graphs to slice the data any way you choose. Good luck!

Supported as of Poller v2.0.2, are Loki and the collection of UniFi events, alarms, anomalies and IDS data. This data can be exported to Loki or InfluxDB, or both!

Operation

You can control this app with puppet, chef, saltstack, homebrew or a simple bash script if you needed to. Packages are available for macOS, Linux, FreeBSD and Docker. It works just fine on Windows too.

What does it look like?

There are 12 total dashboards available; the 6 InfluxDB dashboards are very similar to the 6 Prometheus dashboards. On the documentation website you'll find screenshots of some of the dashboards.

Integrations

The following fine folks are providing their services, completely free! These service integrations are used for things like storage, building, compiling, distribution and documentation support. This project succeeds because of them. Thank you!

Copyright & License

  • Copyright © 2018-2020 David Newhall II.
  • See LICENSE for license information.

Install UniFi-Poller on Unraid in a few clicks.

Find UniFi-Poller in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for UniFi-Poller Review the template variables and paths Click Install

Download Statistics

32,623,318
Total Downloads
11,532
This Month
19,701
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Details

Repository
golift/unifi-poller
Last Updated2026-06-17
First Seen2019-08-29

Runtime arguments

Network
bridge
Shell
sh
Privileged
false

Template configuration

Poller Debug ModeVariable

Container Variable: UP_POLLER_DEBUG - Setting true includes more log output.

Target
UP_POLLER_DEBUG
Default
false|true
Poller Quiet ModeVariable

Container Variable: UP_POLLER_QUIET - Setting true disables most log output.

Target
UP_POLLER_QUIET
Default
false|true
UniFi 1st Controller Host URLVariable

Container Variable: UP_UNIFI_CONTROLLER_0_URL - URL for UniFi controller.

Target
UP_UNIFI_CONTROLLER_0_URL
Default
https://unraid.ip:8443
UniFi 1st Controller UsernameVariable

Container Variable: UP_UNIFI_CONTROLLER_0_USER - Username for UniFi Controller.

Target
UP_UNIFI_CONTROLLER_0_USER
Default
unifipoller
Value
unifipoller
UniFi 1st Controller PasswordVariable

Container Variable: UP_UNIFI_CONTROLLER_0_PASS - Password for UniFi Controller.

Target
UP_UNIFI_CONTROLLER_0_PASS
UniFi 1st Controller Save DPIVariable

Container Variable: UP_UNIFI_CONTROLLER_0_SAVE_DPI - Poll and save deep packet inspection data. This is a lot of data, and it must be enabled on the controller.

Target
UP_UNIFI_CONTROLLER_0_SAVE_DPI
Default
false|true
UniFi 1st Controller Save IDSVariable

Container Variable: UP_UNIFI_CONTROLLER_0_SAVE_IDS - Save intrusion detection data (InfluxDB only). This data does not contain graphable metrics.

Target
UP_UNIFI_CONTROLLER_0_SAVE_IDS
Default
false|true
UniFi 1st Controller Save SitesVariable

Container Value: UP_UNIFI_CONTROLLER_0_SAVE_SITES - Set this to 'false' to save space and resources in InfluxDB. This data powers the Network Sites dashboard.

Target
UP_UNIFI_CONTROLLER_0_SAVE_SITES
Default
true|false
UniFi 1st Controller Poll SitesVariable

Container Variable: UP_UNIFI_CONTROLLER_0_SITES_0 - List of sites to poll on controller, comma separated. Use cryptic ID values here; set to 'all' for all sites.

Target
UP_UNIFI_CONTROLLER_0_SITES_0
Default
all
Value
all
UniFi 1st Controller Verify SSLVariable

Container Variable: UP_UNIFI_CONTROLLER_0_VERIFY_SSL - Enable this if you have a valid SSL cert on your controller.

Target
UP_UNIFI_CONTROLLER_0_VERIFY_SSL
Default
false|true
InfluxDB Host URLVariable

Container Variable: UP_INFLUXDB_URL - URL for InfluxDB. Not important if using Prometheus only.

Target
UP_INFLUXDB_URL
Default
http://unraid.ip:8086
InfluxDB UsernameVariable

Container Variable: UP_INFLUXDB_USER - Username for InfluxDB. Usually unimportant because InfluxDB has no auth by default.

Target
UP_INFLUXDB_USER
Default
unifipoller
Value
unifipoller
InfluxDB PasswordVariable

Container Variable: UP_INFLUXDB_PASS - Password for InfluxDB (if required)

Target
UP_INFLUXDB_PASS
InfluxDB DatabaseVariable

Container Variable: UP_INFLUXDB_DB - InfluxDB database name. Create this first with: CREATE DATABASE unifi

Target
UP_INFLUXDB_DB
Default
unifi
InfluxDB IntervalVariable

Container Variable: UP_INFLUXDB_INTERVAL - Polling interval for saving metrics into InfluxDB. 30s-90s recommend.

Target
UP_INFLUXDB_INTERVAL
Default
15s|30s|45s|1m|90s|2m|3m|4m|5m
Value
30s
InfluxDB DisabledVariable

Container Variable: UP_INFLUXDB_DISABLE - Disable InfluxDB polling. Set this true if you only use Prometheus.

Target
UP_INFLUXDB_DISABLE
Default
false|true
Prometheus ListenerVariable

Container Value: UP_PROMETHEUS_HTTP_LISTEN - IP and port poller listens on for HTTP Prometheus scrapes. Must be in 0.0.0.0:port format.

Target
UP_PROMETHEUS_HTTP_LISTEN
Default
0.0.0.0:9031
Value
0.0.0.0:9031
Prometheus DisabledVariable

Container Variable: UP_PROMETHEUS_DISABLE - Disable Prometheus listener. Set true if you only use InfluxDB.

Target
UP_PROMETHEUS_DISABLE
Default
false|true