Installation av Piwik på egen server med HTTPS

Piwik via HTTPS med hjälp av Let's Encrypt

Posted by ASKS on Tuesday, February 2, 2016

Piwik är ett Google Analytics-substitut baserat på fri- och öppen källkod.

I denna bloggpost beskriver vi hur du installerar Piwik på en Apache webbserver och konfigurerar en säker, krypterad anslutning via HTTPS till Piwik med hjälp av ett certifikat från den nya gratistjänsten Let’s Encrypt.

Skapa SQL databas och ladda ner Piwik

Det är ganska enkelt att installera Piwik på din egen webbserver. Nedan beskriver vi steg-för-steg hur vi installerade Piwik på vår webbserver som kör Apache 2.2, PHP 5.4 och MySQL 5.5.

Första steget var att skapa en SQL databas, så vi loggade in mysql -u root -p och exekverade följande:

CREATE DATABASE piwik;
CREATE USER 'piwik'@'localhost' identified by '<lösenord>';
GRANT ALL PRIVILEGES ON piwik.* to 'piwik'@'localhost';

Därefter laddade vi ner den senaste stabila versionen av Piwik.

cd /var/www
wget http://builds.piwik.org/piwik.zip
unzip piwik.zip

Dubbelkolla därefter att rätt användare äger den nya mappen (/var/www/piwik) och korrigera om nödvändigt med chown -R www-data:www-data /var/www/piwik.

I det enklaste fallet vore vi nu redo att köra Piwiks webbaserade installation, men eftersom vår webbserver har flera virtualhosts definierade, och vi dessutom vill säkerställa att anslutningen till Piwik alltid sker över https, så ska vi först konfigurera en ny virtualhost med tvingande HTTPS-anslutning.

Konfiguration av Apache för krypterad anslutning till Piwik

Eftersom vi behöver ett icke själv-signerat certifikat (vi vill ju undvika att webbläsare varnar varje gång vi eller någon kund vill använda analysverktyget) så utnyttjar vi den utmärkta tjänsten från Let’s Encrypt för att skaffa ett domänvaliderat TLS-certifikat.

I det följande tänker vi oss att vi vill kunna komma åt vår Piwik-installation via https://piwik.asks.se (byt givetvis ut detta mot den adress du vill använda).

Inloggad som root på maskinen och i roots hemmapp klonade vi Let’s Encrypts repo:

root@localhost:~# git clone https://github.com/letsencrypt/letsencrypt

Därefter testade vi att köra ~/letsencrypt/letsencrypt-auto och stötte på det första felmeddelandet: SNIMissingWarning. Här kan det vara på sin plats att nämna att Let’s Encrypt repon är Python-kod vars ändamål är att automatisera nerladdning och installation av certifikatfilerna. Felmeddelandet tyder alltså på någon brist eller utdaterad kod i vår Python installation.

Felet ovan visade sig bero på att vi saknade Python-komponenten ndg-httpsclient (alternativt hade en utdaterad version). Det kan vi alltså rätta till genom att köra:

sudo pip install --upgrade ndg-httpsclient

Men när vi körde det kommandot fick vi ett annat felmeddelande från Python: ImportError: No module named setuptools. Detta fel var lite knepigare att förstå sig på, men det visade sig vara ett känt problem med pip. Körde det skript som tillhandahölls och sedan gick installationen av ndg-httpsclient felfritt.

wget https://bitbucket.org/pypa/setuptools/downloads/ez_setup.py
sudo python ez_setup.py
sudo pip install --upgrade ndg-httpsclient

Då kan vi slutligen ladda ner och installera själva certifikatet. Läs med fördel användarguiden hos Let’s Encrypt först.

Först stoppade vi Apache (eftersom skriptet nedan behöver egen tillgång till port 80 och 443 för att utföra domänvalideringen):

sudo service apache2 stop

Därefter körde vi skriptet (som root) med följande parametrar:

cd /root/letsencrypt
./letsencrypt-auto certonly --standalone --email webmaster@asks.se -d piwik.asks.se

Först får man godkänna Let’s Encrypts användarvillkor, och sedan sköter mjukvaran resten. Det nya certifikatet skapas i mappen /etc/letsencrypt/live/piwik.asks.se/. Notera att certifikatet gäller i 90 dagar.

Slutligen är det då dags att konfigurera vår virtualhost. Eftersom detta inte är vår enda HTTPS virtualhost på denna webbserver måste vi se till att /etc/apache/ports.conf innehåller raden NameVirtualHost *:443, samt att default-konfigurationen i /etc/apache2/sites-available/000-default-ssl använder <VirtualHost *:443> istället för <VirtualHost _default_:443>. Detta är alltså enbart nödvändigt om webbservern har fler än en HTTPS virtualhost.

Och så skapade vi /etc/apache2/sites-available/piwik.asks.se (symlänkat till /etc/apache2/sites-enabled/piwik.asks.se):

<VirtualHost *:80>
   ServerAdmin webmaster@asks.se
   DocumentRoot /var/www/piwik/
   ServerName piwik.asks.se
   Redirect permanent / https://piwik.asks.se/
</VirtualHost>

<VirtualHost *:443>
   ServerAdmin webmaster@asks.se
   DocumentRoot /var/www/piwik/
   ServerName piwik.asks.se

   SSLEngine On
   SSLCertificateKeyFile /etc/letsencrypt/live/piwik.asks.se/privkey.pem
   SSLCertificateFile /etc/letsencrypt/live/piwik.asks.se/cert.pem
   SSLCertificateChainFile /etc/letsencrypt/live/piwik.asks.se/chain.pem

   CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
</VirtualHost>

Och så glöm inte att starta om Apache! sudo service apache2 restart

Hur man kan göra för att automatiskt förnya certifikatet var 90:e dag spar vi till en möjlig framtida bloggpost.

Installera Piwik

Gå till Piwik webbaserade installation genom att öppna piwik.asks.se i din webbläsare. Om allt är korrekt konfigurerat så ska webbläsaren automatiskt skickas vidare till https://piwik.asks.se utan varningar eller felmeddelanden.

Själva installationen är mycket enkel och bara att klicka sig igenom, och här får du också fylla i uppgifterna till MySQL-databasen vi skapade i första steget.

Sedan lägger man till de webbsajter man vill analysera. Jag har använt Piwik i kombination med statiska sajter (klistra in Javascript på egen hand) såväl som Drupal- och Wordpress-sajter (officiella moduler/plugins finns).

Piwik bygger alltså på fri- och öppen mjukvara (GPL v3 licens, utvecklingen sker också öppet på github-repo) och kan förutom webbanalys (“web analytics”) även användas till “ecommerce analytics”, “server log analytics” och “intranet analytics”. Kort sagt, ett mycket intressant verktyg att ha tillgång till!

Relaterade länkar

Jag är långt ifrån den förste att upptäcka nyttan med Piwik. Nedan länkar vi till andra som beskrivit hur Piwik installeras, konfigureras eller används.

Toppfoto: Riverside Museum via photopin. CC BY 2.0 licens.