Setting Up GeoIP Location on Piwik on ServerPilot

Using a combination of ServerPilot and a Vultr server instance is a great solution for a Piwik server for tracking analytics.

After setting up the initial Piwik install here is how you can set up the GeoIP location module set up to enable you to view visitor results from City and Country Location. Piwik can take advantage of Maxminds’ databases to track visitor IP address to City/Country location.

First you need to set up the PHP extension for GeoIP, download the Geo database and confirm it’s location and then auto update the database updates.

PHP Config

Installing GeoIP on PHP 7.1

If the PHO version you are using change the version number – such as 5.6 (if you are using PHP 5.6)

sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install libgeoip-dev
sudo pecl7.1-sp install geoip-beta

Followed by some PHP config

sudo bash -c "echo > /etc/php7.1-sp/conf.d/geoip.ini"
sudo service php7.1-fpm-sp restart

Point ServerPilots PHP Config to the Geo Database

Create a .user.ini file in your apps webroot and add in the path to the database

geoip.custom_directory = "/pathtopiwikinstall/misc"

Piwik Config

Set the Piwik GeoLocation Setting

In Piwik > Settings > System > GeoLocation – select the GeoIP (PECL) selection.



MaxMind GeoIP Databases

With the PHP & Piwik configuration complete now what is needed is to use the City databases which link IP addresses to City/Country, there are paid and free options available from Maxmind, download the GeoLite city database  in binary format, rename it GeoIPCity.dat and file in your /misc directory in the Piwik installation.


Confirm Piwik Can Access Database

This is done by seeing that the Piwik > Settings > System > GeoLocation  settings can see where you are from !


Set Up Piwik to AutoUpdate the Database

The GeoLite City database is changed each month, Piwik can automatically download and use the latest version also in the Piwik > Settings > System > GeoLocation settings. It’ll prompt you with the correct URL to use.