Skip to content

FoxxMD/traefik-rybbit-feeder

Repository files navigation

Traefik Rybbit Feeder Plugin

A Traefik middleware plugin that sends visits to your Rybbit instance.

This is a fork of traefik-umami-feeder modified to work with Rybbit.

Introduction

This plugin integrates your Traefik-proxied services with Rybbit, a simple, fast, privacy-focused analytics solution. It captures basic request information (path, user-agent, referrer, IP) and forwards it to your Rybbit instance, enabling server-side analytics.

Key features:

  • Stupidly simple to setup, one middleware for all websites possible
  • Server-Side Tracking, no JS or Cookies bullshit
  • Fast and private

Configuration

Step 1. Add the plugin to Traefik

Declare the plugin in your Traefik static configuration.

experimental:
  plugins:
    rybbit-feeder:
      moduleName: github.com/foxxmd/traefik-rybbit-feeder
      version: v0.13.0 # Replace with the latest version

Step 2. Configure the middleware

Once the plugin is declared, configure it as a middleware in your Traefik dynamic configuration.

You will need to specify at least three pieces of data:

  • host - Your Rybbit instance base URL. This is URL without /api/track.
  • apiKey - The Api Key generated for the website you wish to track.
  • websites - A map of domain - site-id properties to tell the feeder what traffic should go to your Rybbit Site

There are additional, optional Middleware Options to configure more behavior below.

http:
  middlewares:
    my-rybbit-middleware:
      plugin:
        rybbit-feeder:
          host: "http://rybbit.mysite.com" # URL of your Rybbit instance

          apiKey: rb_a0938250c2c2efd061c8250c2c3707a

          websites:
            # domain to capture traffic for and the site-id from Rybbit
            "example.com": "1"

Step 3. Attach the middleware to your routers

Apply the configured middleware to the Traefik routers you want to track with Rybbit. This is also done in your dynamic configuration.

Remember to use the correct provider namespace (e.g., @file if your middleware is defined in a file, @docker if defined via Docker labels).

Example using Docker labels:

- "traefik.http.routers.whoami.middlewares=my-rybbit-middleware@file"

Example using a dynamic configuration file (e.g., dynamic_conf.yml):

http:
  routers:
    whoami:
      rule: "Host(`example.com`)"
      middlewares:
        - my-rybbit-middleware@file

Example using static configuration (e.g., traefik.yml), by attaching the middleware to an entryPoint to apply it globally:

entryPoints:
  web:
    http:
      middlewares:
        - my-rybbit-middleware@file

Middleware Options

key default type description
disabled false bool Set to true to disable the plugin.
debug false bool Set to true for verbose logging. Useful for troubleshooting as plugins don't inherit Traefik's global log level.
host required string URL of your Rybbit instance, reachable from Traefik (e.g., https://rybbit.mydomain.com).
apiKey required string Rybbit API Key for authenticating with your Rybbit instance.
websites required map A map of hostname: site-id
trackErrors false bool If true, tracks errors (status codes >= 400).
trackAllResources false bool If true, tracks requests for all resources. By default, only requests likely to be page views (e.g., HTML, or no specific extension) are tracked.
trackExtensions [see sources] string[] A list of specific file extensions to track (e.g., [".html", ".php"]).
ignoreUserAgents [] string[] A list of user-agent substrings. Requests with matching user-agents will be ignored (e.g., ["Googlebot", "Uptime-Kuma"]). Matched with strings.Contains.
ignoreURLs [] string[] A list of regular expressions. Requests with URLs matching any of these patterns will be ignored (e.g., ["/health", "https?://[^/]+/health$"]). Matched with regexp.Compile.MatchString.
ignoreIPs [] string[] A list of IP addresses or CIDR ranges to ignore (e.g., ["127.0.0.1", "10.0.0.1/16"]). Matched with netip.ParsePrefix.Contains.
headerIp X-Real-Ip string The HTTP header to inspect for the client's real IP address, typically used when Traefik is behind another proxy.

Contributing

Contributions are welcome! Please feel free to submit a pull request or open an issue.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •