This plugin for enables Traefik Reverse Proxy to feed Umami Analytics with tracking events.
It was created as an alternative to traefik-umami-plugin and inspired by idea of Plausible Feeder Traefik Plugin.
To add this plugin to traefik reference this repository as a plugin in the static config. The version references a git tag.
experimental:plugins:umami-feeder:moduleName: github.com/astappiev/traefik-umami-feederversion: v1.0.0 # replace with latest version available
[experimental.plugins.umami-feeder]moduleName = "github.com/astappiev/traefik-umami-feeder"version = "v1.0.0" # replace with latest version available
With the plugin installed, you can configure a middleware in a dynamic configuration such as a config.yml
or docker
labels.
http:middlewares:my-umami-middleware:plugin:umami-feeder:umamiHost: "http://umami:3000"websites:"example.com": "d4617504-241c-4797-8eab-5939b367b3ad"
[http.middlewares][http.middlewares.my-umami-middleware.plugin.umami-feeder]umamiHost = "umami:3000"[http.middlewares.my-umami-middleware.plugin.umami-feeder.websites]"example.com" = "d4617504-241c-4797-8eab-5939b367b3ad"
You have an option to give a list of domains to track (and their website IDs on Umami).
Or, you can give a token and the list will be fetched from Umami. For this, you need
either retrieve the token yourself, or use
username/password instead.
After that, you need to add the middleware to a router. Remember to reference the correct provider namespace.
E.g. as Docker labels:
- "traefik.http.routers.whoami.middlewares=my-umami-middleware@file"
Or, for all routers in a static configuration:
entryPoints:web:http:middlewares:- my-umami-middleware@file
key | default | type | description |
---|---|---|---|
disabled | false | bool | Set to true to disable the plugin |
debug | false | bool | Something doesn't work? Set to true to see more logs (plugins doesn't have access to Traefik's log level) |
queueSize | 1000 | int | The maximum number of events that can be queued before they are sent to the Umami server |
umamiHost | - | string | Umami server url, reachable from within traefik (container), e.g. http://umami:3000 |
umamiToken | - | string | An API Token, used to automatize work with websites, not needed if you provide websites |
umamiUsername | - | string | An alternative to umamiToken , you can provide an username and password |
umamiPassword | - | string | Only in combination with umamiUsername |
umamiTeamId | - | string | In order to organize websites, you can use Umami Teams |
websites | - | map | A map of hostnames and their associated Umami IDs. Can also be used to override or extend fetched websites |
createNewWebsites | false | bool | If set to true , will try to create a new website on Umami, if domain not found there |
trackErrors | false | bool | If set to true , will track errors (status codes >= 400) |
trackAllResources | false | bool | Defines whether all requests for any resource should be tracked. By default, only requests that are believed to contain content are tracked |
trackExtensions | string[] | Defines an alternative list of file extensions that should be tracked | |
ignoreUserAgents | string[] | A list of user agents that should be ignored from tracking, e.g. ["Googlebot", "Uptime-Kuma"] (matched with strings.Contains ) | |
ignoreURLs | string[] | A list of URLs that should be ignored from tracking, e.g. ["/health", "https?://[^/]+/health$"] (matched with regexp.Compile.MatchString ) | |
ignoreIPs | string[] | A list of IPs that should be ignored from tracking, e.g. ["127.0.0.1", "10.0.0.1/16"] (matched with netip.ParsePrefix.Contains ) | |
headerIp | X-Real-Ip | string | The header to use to get the real IP address of the client, in case it's forwarded by a proxy |