HitKeep - Open-Source Web Analytics zum selbst hosten

  • Hallo zusammen,

    ich möchte euch gerne mein Projekt HitKeep vorstellen:

    HitKeep ist ein Open-Source Web-Analytics-Tool für Websites mit einem "moderneren" Softwarestack und KI-Integrationen für aussagekräftige Statistiken haben möchten, ohne dafür einen größeren Analytics-Stack betreiben zu müssen und Wert auf digitale Sovereinität legen.

    Ursprünglich kam das von einem Kunden der die Vorgänger-Version On-Prem betrieben hat.

    Der Fokus liegt auf:

    - self-hosting mit einem einzelnen Go-Binary (und simpel über Docker, k8s etc)
    - eingebettetem DuckDB, ohne PostgreSQL/Redis/ClickHouse
    - cookielosem Tracking standardmäßig
    - Reports für Traffic, Events, Ziele, Funnels, UTM, E-Commerce und Search Console
    - optionalen Auswertungen für AI-Crawler und AI-vermittelten Traffic
    - read-only API/MCP-Zugriff für eigene Tools oder Assistenten
    - vollständiger Takeout aller Daten inkl. Filteransichten über Parquet, Excel, CSV, JSON(ND)

    Ich baue HitKeep als deutsches Open-Source-Projekt und würde mich besonders über Feedback von Leuten freuen, die eigene Websites, kleine Projekte, Shops oder Server betreiben.

    Website:
    https://hitkeep.com

    GitHub:
    https://github.com/PascaleBeier/hitkeep

    Demo:
    https://demo.hitkeep.com/share/7a55968bb42df256512fbe7ff73ab88f29dd45c236eddc818bd66420b4ffbaad

    Mich würde interessieren:
    - Ist der Self-hosting-Ansatz für euch interessant?
    - Fehlen euch bestimmte Reports oder Integrationen?
    - Ist die Installation/Positionierung verständlich genug?

    Feedback, Kritik und Verbesserungsvorschläge sind sehr willkommen. Gerade hier in Deutschland kommt das Tool bisher sehr gut an!

    P.S: Es gibt auch ein Helm-Chart, das ist im Repo auch verlinkt.

    Viele Grüße
    Pascale

  • Finde ich grundsätzlich interessant (ohne mich gerade eingehend über die "Tracker" Technologie informiert zu haben) und werde es mir mal anschauen. Ich arbeite aktuell noch mit dem Aufruf einer .php Datei die die Daten der Besucher vor der Verarbeitung anonymisiert und erst dann an Google Analytics schickt (rechtlich geprüft und als DSGVO Konform bestätigt).

    Denken ist wie googeln, nur viel krasser ....

    ——

    Alle Beiträge geben nur meine persönliche Meinung wieder und nicht mehr.

  • [...] keine genaueren Kohortendaten etc. mit wiederkehrenden Nutzern [...]

    Und genau das ist ja ohne aktive Zustimmung gerade nicht mehr zulässig (will ich auf meiner Homepage auch nicht haben) und daher geht es (ohne Zustimmung) nur, wenn es vor der Verarbeitung (gerade an Google Analytics) anonymisiert wird, d.h. insbesondere die IP Adresse.

    Wie ist Dein Projekt grundsätzlich gedacht, mit Zustimmungsbanner oder ohne? Das macht ja gerade den entscheidenden Unterschied. Ich nutze aktuell das hier: https://www.analytics-ohne-einwilligung.de

    Denken ist wie googeln, nur viel krasser ....

    ——

    Alle Beiträge geben nur meine persönliche Meinung wieder und nicht mehr.

    Edited once, last by debonner (June 29, 2026 at 6:26 PM).

  • Es ist grundsätzlich ohne Zustimmungsbanner angedacht. Das ist auch genau der Punkt, weshalb HitKeep nur Sitzungen versteht, aber kein Profiling macht :)


    Edit: IP-Adressen der Nutzer werden auch entsprechend der aktuellsten EU-Richtlinien überhaupt nicht gespeichert, sondern nur für Spam-Erkennung genutzt.

  • [...] IP-Adressen der Nutzer werden auch entsprechend der aktuellsten EU-Richtlinien überhaupt nicht gespeichert, sondern nur für Spam-Erkennung genutzt. [...]

    Und damit werden Sie ja verarbeitet (Klugscheißermodus aus) aber ja gerade auf dem eigenen Server und danach ja wahrscheinlich nicht mehr (wegen fehlender IP Speicherung) zurückverfolgbar (anonymisiert). Aber ich finde das Projekt auf den ersten Blick echt gut, Matomo ist mir zu überladen und daher habe ich bislang den oben erwähnten Ansatz über GA.

    Denken ist wie googeln, nur viel krasser ....

    ——

    Alle Beiträge geben nur meine persönliche Meinung wieder und nicht mehr.

  • Hallo! Bevor ich es in meinem Docker installiert hätte, wollte ich einfach mal die kostenlose gehostete Version ausprobieren.

    Gefällt mir sehr gut und ist auch schön übersichtlich.

    Jedoch ist mir eines aufgefallen (und darum habe ich es noch nicht selbst installiert):
    Man kann ein Team einrichten und jemanden eine Einladung schicken. Mail kommt dort auch an mit einem Link. Dieser Link führt jedoch zum Login-Fenster, wobei der Eingeladene ja noch keine Zugangsdaten hat. Er kann sich stattdessen nur einen eigenen EU oder US-Bereich einrichten.
    Vielleicht übersehe ich auch nur was dabei.


    Nächster Schritt ist dann selfhost..

  • Moin,

    danke, dir!

    Der Flow ist eigentlich auch so gewollt, sehe aber jetzt auch ein, dass es extrem irreführend ist. Die Formulierung in den E-Mails ist auch extra darauf ausgelegt, dass es den Fall geben kann, dass Nutzer bereits im System existieren oder sich noch registrieren müssen. Ich nehme das mal als UX Verbesserung mit auf, danke!

    Edit: Habs mir nochmal angeschaut, das ist auch einfach ein Fehler, den du da gefunden hast.

  • Da bei mir die Migration von Matomo auf einen neuen Server anstand, und ich 95% der Matomo-Features eh nie benutzt habe, habe ich stattdessen HitKeep eingerichtet und mit den Wordpress-Seiten verbunden (Parallelbetrieb).

    Funktioniert soweit ohne Probleme. Vielen Dank, Examo! :)

    RS 1000 SSDx4 G8 / VPS 2000 G8 Plus / RS 2000 G9 / VPS 1000 ARM G11 x2 / VPS 1000 G12 Pro x2 / VPS 2000 G12 Pro / RS 1000 G12 Ultra / ERROR SERVER HOARDING DETECTED

    Edited once, last by sdellenb (July 4, 2026 at 2:55 PM).

  • Version hochzählen und Ansible laufen lassen.

    Die neue Übersichtsseite ist sehr praktisch! :thumbup:

    RS 1000 SSDx4 G8 / VPS 2000 G8 Plus / RS 2000 G9 / VPS 1000 ARM G11 x2 / VPS 1000 G12 Pro x2 / VPS 2000 G12 Pro / RS 1000 G12 Ultra / ERROR SERVER HOARDING DETECTED

  • Ich nutze Hitkeep jetzt bereits seit ein paar Monaten privat und finde den Zufall, nun plötzlich hier im netcup Forum davon zu lesen umso cooler. Ich muss sagen, ich bin absolut begeistert. Zwar kann ich aufgrund der Entscheidung, server-seitiges Tracking (statt des JavaScript Snippets) zu verwenden, nicht alle Features vollumfänglich nutzen, bin aber trotzdem super happy – anders als bei einigen anderen Tools (*hust* Matomo *hust*) ist die UI total intuitiv und die Tatsache, dass sich Hitkeep sehr leichtgewichtig als einzelner Container oder einzelne Binary deployen lässt (und nicht noch ein ClickHouse, Redis und sonsige zusätzliche Services benötigt) gefällt mir. Danke für das Projekt :thumbup:

  • Mich stört bei allen big playern hauptsächlich, dass Sie entweder "nicht wirklich" open source sind - also sobald man SSO oder eigene Domains oder Multimandatenfähigkeit braucht, sind es Bezahlmodule, die man dann mittlerweile erst einkaufen, dann intern zertifizieren / auditieren muss, und die Oberflächen entweder altbacken sind oder, naja, so aussehen wie alle neuen Tools mittlerweile. Schwer zu beschreiben.

    Das sind so die Dinge die ich auch mit der Cloud komplett Open Source machen will und hoffe da auch mit den ganzen Datenexporten wenn nur einen kleinen Beitrag zu Digitaler Souveränität zu leisten. Es ist aber wirklich schwer in der Branche Fuß zu fassen.

    Danke für eure lieben Worte!

  • Vielen Dank für das Projekt würde es gerne auf privaten Webseiten einsetzen und habe heute dem VPS 200 G8 mal eine docker-compose.yml Datei spendiert und wollte einfaches Selbsthosting probieren. Bevor ich also das etwas komplexere Caddy On-Demand SSL und Reverse Proxy Setup starte die minimale aufgesetzt und folgende Einträge konfiguriert für die letzte HitKeep Version 2.10.0 direkt anhand der README auf der GitHub Seite: https://github.com/PascaleBeier/hitkeep

    docker-compose.yml

    Quote


    Und die .env Datei dann vor befüllt mit ein paar netcup relevanten Mail Einstellungen, da ich dachte den Fehler so bereinigen zu können:
    Denke ich in die falsche Richtung oder ist es nicht das E-Mail-Setup, dass hier den Fehler produziert? :?:

    .env

    Beim Erstellen des Admin Kontos dann folgende Fehlermeldung auf der Weboberfläche (nicht per http://localhost:8080 aufgerufen) und keine Fehler im Log des Docker Containers:

    Ein unerwarteter Fehler ist aufgetreten. Bitte versuche es erneut.

    WH1000 SE OST22 OST23 OST24 | WH1000 SE ADV25 | WH 🥚🧶🥛🐖 | 🦆 VPS 200 🇺🇦🕊️

    Edited 2 times, last by Copro: .env vergessen ;-o und vermutlich die public-url noch nicht richtig gesetzt. (July 8, 2026 at 12:11 AM).

  • Das mit dem command in deiner docker-compose.yml sieht etwas komisch aus. Warum nutzt du nicht einfach die entsprechende Umgebungsvariable?

    Code
    HITKEEP_PUBLIC_URL=http://localhost:8080

    Und laut der Binary Doku müsste das public-url Argument ein -- statt einem einfachen Bindestrich haben, falls du es doch so setzen willst, was ich nicht unbedingt empfehlen würde, wenn es man es auch über den env steuern kann.

  • TBT der : im Master-Compose File ist nur zur Doku gedacht, was der jeweilige Default aus der Runtime-Config ist, weil alle (!) Konfigurationsparameter auch als Laufzeit-Argument in der Binary verwendet werden können.

    Ja, ein falsches E-Mail-Setup kann dazu führen, aber das wäre dann in den Logs eigentlich ersichtlich. Du sieht direkt nach dem Start eine Zusammenfassung deiner Parameter, so siehst du schnell, ob deine Konfigs so greifen, wie sie sollen. Du kannst auch noch Debug-Logging aktivieren. Meld dich gerne wenn ich dir helfen kann.


    Edith: Ich hatte mir vor kurzem schon gedacht, dass ein Config File sinnvoll wäre, aber mittlerweile wäre sicherlich auch ein Interaktives Install-Script für Linux-Server gut, in dem man die Komponenten, die man braucht an- und abwählen kann und auch direkt die Mail-Parameter checkt. Also, wenn einer Lust hat ^^

  • Habe es gestern als Docker Container auf meinem ARM Server installiert, ging eigentlich recht fix, mit ein paar Problemen bei der Installation.

    Ich habe mich nach dieser Seite gehalten, musste jedoch etwas abwandeln
    https://hitkeep.com/guides/installation/docker-compose/

    compose.yml - hier habe ich nur die Hitkeep Public URL (Zeile14) auf meine tatsächliche Domain aus NGINX ausgebessert


    bei der .env Datei hatte ich einige Probleme
    Die sollte lt Seite so ausschauen

    Code
    {
      echo "HITKEEP_JWT_SECRET=$(openssl rand -hex 32)"
      echo "HITKEEP_PUBLIC_URL=http://localhost:8080"
      echo "HITKEEP_MAIL_HOST="
      echo "HITKEEP_MAIL_PORT=587"
      echo "HITKEEP_MAIL_USERNAME="
      echo "HITKEEP_MAIL_PASSWORD="
      echo "HITKEEP_MAIL_FROM_ADDRESS=hitkeep@localhost"
      echo "HITKEEP_MAIL_FROM_NAME=HitKeep"
    } > .env

    Debian meckerte aber, dass die .env keine geschwungene Klammern haben darf, dann bemeckerte er auch das "openssl rand -hex32" (habe ich dann direkt eingefügt) und ebenso die ganzen Echo Ausdrücke

    meine schaut jetzt so aus (natürlich zensiert)

    Code
    HITKEEP_JWT_SECRET="hierkommtirgendwasrein"
    HITKEEP_PUBLIC_URL="gleiche Domain wie in der compose.yml"
    HITKEEP_MAIL_HOST="smtp.xxxxx.com"
    HITKEEP_MAIL_PORT="587"
    HITKEEP_MAIL_USERNAME="benutzername"
    HITKEEP_MAIL_PASSWORD="passwort"
    HITKEEP_MAIL_FROM_ADDRESS="name@domain.com"
    HITKEEP_MAIL_FROM_NAME="Absendername"

    Dann konnte man den Docker Container ganz normal hochfahren und es läuft auch perfekt

    Code
    docker compose up -d
    docker compose logs -f hitkeep

    Hoffe das hilft dir

    Nachträglich hatte ich wahrscheinlich einiges falsch verstanden bei der .env
    OpenSSL hatte ich nicht installiert, darum wahrscheinlich ein Fehler und die Anleitung mit "create a .env file" war wahrscheinlich nicht gemeint, dass man die Datei selbst händisch erstellt und befüllt sondern den Befehl so wie auf der Seite direkt am Terminal absetzt mit den korrekten Daten. Darum die echo Befehle, die Frage ist nur, warum sollte man das tun ;)