Update 2019-09-17: update links of Matomo solution

This is an alternative to one of my previous posts about Setup Google Analytics to Modern SharePoint from any platform. Google Analytics means that your organization has to host data about software and users into a tierce solution. For some governance, privacy, and security reasons, some organizations can not use this kind of solution.β€Œβ€Œ So, what are the alternatives? Is there another free solution?

No Google Analytics

I have done some research for a while ... I found other interesting analytics tools that I tried on my own blog and SharePoint test environments. Two solutions caught my attention based on the following criteria:

  1. Free: totally free is a must but at least basic features for free
  2. Open-Source: I like open-source solutions so much! That gives the organization enough flexibilities to improve and customize the solution for their needs. And, incidentally, contribute to this project πŸ™‚
  3. Self-Hosted: of course, if you want to keep a hand on the data, the best solution is self-hosting. Thanks to this kind of solution, you can potentially have a compliant GDPR solution too πŸ˜‰
  4. Google Analytics alternative: is currently a reference in the world of web analytics services. Therefore, I took it as a reference to find solutions that provide sufficient similar features such as real-time, several graphs, create custom dashboards, maps, etc.
  5. Relatively easy to implement: if you are to present an awesome solution to your customer but he has to spend half of his time and budget to set up the solution itself... hmm, you know what I mean, isn't it? πŸ˜•

Open Web Analytics

Open Web Analytics logo

I tested OWA at first because of several features available for free such as heatmap, mouse click, etc.

After several weeks, I noted that the admin interface was really old, some features did not really work (for my part, I did not manage to make it work "heatmap" for example) and the real-time was missing. In addition, I am following the GitHub repository of the solution and I did not see any new fixing issue, enhancement, or whatever for a long time...

[note]Note

For my tests, I used the https://github.com/vladk1m0/docker-owa docker image.

So, I decided to pass to the next analytics tool...

Matomo (Piwik)

Matomo Analytics logo

Matomo is the solution that I am currently using for some weeks; this solution looks a lot like Google Analytics:

  • Dashboard configuration
  • Tracker code implementation
  • Features (available for free)

In addition to that, Matomo:

  • is GDPR compliance
  • is customizable (Open-Source)
  • has a Marketplace of features

Moreover, I did a suggestion for a new dashboard widget on the GitHub repository and a member of the team answered me the same day! Efficiency πŸ™‚

Now, I will show you how I have configured my environment...

Matomo for Modern SharePoint - for everybody

You can have Matomo Analytics in two ways:

  • Cloud Hosting (the providing is not free. A grid of pricing is available here)
  • Self-Hosted with installation (free - some technical knowledge are required)
[note]Note

See On-Premise/Cloud hosting comparison table for more information

Set up Docker Matomo server

Since I do not have several servers on hand, I am using Docker containers to have several services, including Matomo that provides a Docker Image that can be quickly configured and implemented into your environment.

Below, my local Docker composes file that I use for my tests:

version: '3.7'

services:
  mysql:
    image: mysql:5.7.25
    environment:
      - MYSQL_ROOT_PASSWORD=password01
    restart: always

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    depends_on:
      - mysql
    ports:
      - "9010:80"
      - "9011:443"
    environment:
      - PMA_HOST=mysql
    restart: always

  matomo:
    image: bitnami/matomo:latest
    depends_on:
      - mysql
    ports:
      - "9020:80"
      - "9021:443"
    environment:
      - MARIADB_HOST=mysql
      - MARIADB_ROOT_PASSWORD=password01
      - MYSQL_CLIENT_CREATE_DATABASE_NAME=matomo
      - MYSQL_CLIENT_CREATE_DATABASE_USER=matomo
      - MYSQL_CLIENT_CREATE_DATABASE_PASSWORD=password01
      - MATOMO_DATABASE_NAME=matomo
      - MATOMO_DATABASE_USER=matomo
      - MATOMO_DATABASE_PASSWORD=password01
      - MATOMO_USERNAME=matomo
      - MATOMO_HOST=matomo
      - MATOMO_PASSWORD=password01
      - [email protected]
    restart: always

networks:
  default:

Set up Matomo client (SharePoint Framework extension)

I wrote two scripts that will allow you to easily implement the solution πŸŽβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œ

Prerequisites

  1. Matomo Analytics Tracking Site ID
  2. Tenant App Catalog or Site Collection App Catalog:
  3. If you choose to use the PowerShell solution, you will need to install the PnP PowerShell module
  4. If you choose to use any platform solution, you will need Bash and Office365-CLI
[note]Note

The user account that will perform the following actions has to have sufficient permissions on the target sites collection and on the App Catalog.

PowerShell (Windows only)

  1. Download the PowerShell solution from the repository
PowerShell script release
  1. Unzip the package
  2. From your PowerShell terminal, connect to your target site collection with Connect-PnPOnline cmdlet
Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/target-site
  1. Launch the setup.ps1
.\setup.ps1 -siteUrl https://contoso.sharepoint.com/sites/target-site -trackingUrl https://matomo.my-domain.com -trackingSiteId '2'
[note]Note

If you cannot execute the PowerShell script, because of security reasons, before unzipping the package, execute the Unblock-File cmdlet.
[note]Note

In this example, the package is deployed to the Site Collection App Catalog. You have other options illustrated into the README.md, that allow you to manage the deployment.

Any platform (Linux, Mac OS, Windows)

  1. Download any platform solution from the repository
Bash script release
  1. Unzip the package
  2. Allow setup.sh script execution
chmod +x ./setup.sh
  1. From your Bash terminal, connect to your target site collection with spo login cmdlet
spo login https://contoso.sharepoint.com/sites/target-site
  1. Launch the setup.sh
./setup.sh --siteUrl https://contoso.sharepoint.com/sites/target-site --trackingUrl https://matomo.my-domain.com --trackingSiteId '2'
[note]Note

In this example, the package is deployed to the Site Collection App Catalog. You have other options illustrated into the README.md, that allow you to manage the deployment

Pretty simple, isn't it?

Samples of results

Enjoy πŸ’ͺ🏻



Hoping this post will help you πŸ˜‰

You may also be interested in