Update 2019-09-17: update links of Matomo solution
This is an alternative of 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 softwares and users into a tierce solution. For some governance, privacy and security reasons, some organization can not use this kind of solutions. So, what are the alternatives? Is there another free solution?
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:
- Free: totally free is a must but at least basic features for free
- Open-Source: I like the 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 🙂
- Self-Hosted: of course, if you want to keep a hand on the data, the best solution is the self-hosting. Thanks to this kind of solutions, you can potentially have a compliant GDPR solution too 😉
- Google Analytics alternative: is currently a reference in the world of web analytics service. Therefore, I took it as a reference to find solutions that provide sufficient similar features such as real time, several graph, create custom dashboards, maps, etc.
- 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
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...
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 is the solution that I am currently using since 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 knowledges are required)
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 compose 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 🎁
- Matomo Analytics Tracking Site ID
- Tenant App Catalog or Site Collection App Catalog:
- Configure your Tenant App Catalog: https://docs.microsoft.com/en-us/sharepoint/use-app-catalog
- Configure your Site Collection App Catalog (optional): https://docs.microsoft.com/en-us/sharepoint/dev/general-development/site-collection-app-catalog
- If you choose to use the PowerShell solution, you will need to install the PnP PowerShell module
- If you choose to use the any platform solution, you will need Bash and Office365-CLI
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)
- Download the PowerShell solution from the repository
- Unzip the package
- From your PowerShell terminal, connect to your target site collection with
Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/target-site
- Launch the
.\setup.ps1 -siteUrl https://contoso.sharepoint.com/sites/target-site -trackingUrl https://matomo.my-domain.com -trackingSiteId '2'
If you cannot execute the PowerShell script, because of security reasons, before unzipping the package, execute the
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, MacOS, Windows)
- Download the any platform solution from the repository
- Unzip the package
chmod +x ./setup.sh
- From your Bash terminal, connect to your target site collection with
spo login https://contoso.sharepoint.com/sites/target-site
- Launch the
./setup.sh --siteUrl https://contoso.sharepoint.com/sites/target-site --trackingUrl https://matomo.my-domain.com --trackingSiteId '2'
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
Hoping this post will help you 😉