Kategorien
Messenger

Messenger – Schnell, Einfach, Sicher – IRC

In Zeiten von Facebook, WhatsApp, Telegram, Threema und vielen anderen Messaging Services stellt sich für Firmen und grössere Gruppen von Menschen die Frage, wie man denn nun am Besten ohne einen fremd verwalteten Server miteinander textbasiert kommunizieren kann.

Wie realisiert man textbasierte Kommunikation in einem Unternehmen, die auf allen Endgeräten funktioniert, wenig Ressourcen verbraucht und auch noch einigermassen „sicher“ ist? Die wohl älteste, aber nach wie vor funktionierende Variante ist der Interlay Relay Chat (IRC). Ursprünglich wurde der Relay Chat Anfang der achtziger Jahre im BITNET (Because It’s Time NETwork) genutzt. 1988 wurde das Prinzip durch den finnischen Studenten Jarkko Oikarinen auf das Internet übertragen.

Wenn Sie noch nie etwas von IRC gehört haben, schauen Sie sich New User Introduction auf irchelp.org an. Ein guter Anfang auf Deutsch ist Internet Relay Chat – Eine möglichst kurze Einführung von Kai ‚Oswald‘ Seidler.

Grundsätzlich benötigen Sie einen IRC-Client und einen IRC-Server. Der IRC-Client läuft auf Ihrem Endgerät, der IRC-Server ist entweder öffentlich zugänglich und wird von „jemandem“ betrieben.

Sie können sich aber auch Ihren eigenen IRC-Server auf Ihrem Root-Server installieren und darüber völlig autark passwortgeschützt und verschlüsselt kommunizieren. In diesem Artikel werden wir den UnrealIRC Server instalieren und über verschiedene Clients damit Kontakt aufnehmen.

IRC Server

Die Konfiguration von IRC Servern wie ratbox, die als Installationspaket für Ubuntu vorliegen ist ziemlich aufwändig, daher verwende ich in diesem Beispiel den Unreal IRC Server. Die Installation und Konfiguration ist recht überschaubar.

Installation

Ich lade die Dateien in das Verzeichnis /home/novatrend

Download des Quellcodes

wget https://www.unrealircd.org/downloads/Unreal3.2.10.4.tar.gz

Auspacken des Pakets

tar xfz Unreal3.2.10.4.tar.gz

Dann in das Verzeichnis wechseln und mit ./Config das Konfigurationsprogramm aufrufen.

novatrend@server1:~/Unreal3.2.10.4$ ./Config

Die meisten Fragen können mit der Entertaste und dem vorgeschlagenen Wert beantwortet werden

What directory are all the server configuration files in?
[/home/novatrend/Unreal3.2.10.4] ->

What is the path to the ircd binary including the name of the binary?
[/home/novatrend/Unreal3.2.10.4/src/ircd] ->

What should the default permissions for your configuration files be? (Set this to 0 to disable)
It is strongly recommended that you use 0600 to prevent unwanted reading of the file
[0600] ->

Wenn der Chat verschlüsselt sein soll müssen sie hier Yes eingeben

Do you want to support SSL (Secure Sockets Layer) connections?
[No] -> YES

Die nächste Frage können Sie mit Enter bestätigen. Die OpenSSL Library wird unter Ubuntu 14.04. automatisch gefunden

If you know the path to OpenSSL on your system, enter it here. If not
leave this blank (in most cases it will be detected automatically).
[] ->

Auch bei den weitere Fragen können Sie die Standardwerte übernehmen. Sie können im weiteren Verlauf der Installation auch ein Zertifikat erzeugen, falls Sie noch keins haben.

_______________________________________________________________________
|                                                                       |
|                    UnrealIRCd Compile-Time Config                     |
|_______________________________________________________________________|
|_______________________________________________________________________|
|                                                                       |
| Now all you have to do is type 'make' and let it compile. When that's |
| done, you will receive other instructions on what to do next.         |
|                                                                       |
|_______________________________________________________________________|
|_______________________________________________________________________|
|                        - The UnrealIRCd Team -                        |
|                                                                       |
| * Syzop     syzop@unrealircd.com                                      |
|_______________________________________________________________________|

Wenn diese Meldung erscheint ist die Konfiguration beendet und Sie müssen mit dem make Kommando die eigentliche Kompilierung starten

novatrend@server1:~/Unreal3.2.10.4$ make
...
__________________________________________________
| Compile is now complete.                         |
| You should now read the documentation and learn  |
| how to configure your IRCd.                      |
|                                                  |
| If you really like UnrealIRCd, and would like to |
| make a donation, please read the Donation file in|
| this archive. :)                                 |
|                                                  |
| Thanks for using Unreal IRCd! If you are in need |
| for any kind of help regarding the IRCd please   |
| read the Unreal.nfo file.                        |
|__________________________________________________|
novatrend@server1:~/Unreal3.2.10.4$

Der IRC Server ist nun auf Ihrem Root-Server installiert.

Konfiguration

Der IRC Server benötigt eine Konfigurationsdatei. Im /doc Vereichnis finden Sie Beispieldateien in mehreren Sprachen.

novatrend@server1:~/Unreal3.2.10.4/doc$ ls -l
total 1996
-rw-r--r-- 1 novatrend novatrend  20342 Jul 26 17:42 example.conf
-rw-r--r-- 1 novatrend novatrend  20414 Jul 26 17:42 example.de.conf
-rw-r--r-- 1 novatrend novatrend  22535 Jul 26 17:42 example.es.conf
-rw-r--r-- 1 novatrend novatrend  23120 Jul 26 17:42 example.fr.conf
-rw-r--r-- 1 novatrend novatrend  23117 Jul 26 17:42 example.hu.conf
-rw-r--r-- 1 novatrend novatrend  19916 Jul 26 17:42 example.nl.conf
-rw-r--r-- 1 novatrend novatrend  21650 Jul 26 17:42 example.ru.conf
-rw-r--r-- 1 novatrend novatrend  21524 Jul 26 17:42 example.tr.conf

Ich nehme die Datei example.de.conf und kopiere Sie in das /Unreal3.2.10.4 Verzeichnis. Der Name muss unrealircd.conf sein

nano unrealircd.conf

Ein Konfigurationsbeispiel finden Sie hier unter http://irc-guide.de/wiki/Main/UnrealIRCdBeispielkonfigurationsdatei.

Die Konfigurationsdatei ist sehr gut kommentiert (und sehr lang). Hier die Änderungen, die ich vergenommen habe:

Kommentieren Sie diese beiden Zeilen aus

/* FUER *NIX (Unix, Linux, Xenix etc.), sind diese 2 Zeilen auszukommentieren: */
loadmodule "src/modules/commands.so";
loadmodule "src/modules/cloak.so";

Geben Sie dem Server einen Namen

me
{
        name "irc.serverblogger.ch";
        info "Serverblogger Server";
        numeric 1;
};

Legen Sie den Admin fest

admin {
        "Hagen Graf";
        "hagen";
        "hagen@novatrend.ch";
};

Legen Sie ein Passwort fest

allow {
        ip             *@*;
        hostname       *@*;
        class           clients;
        password "geheimespasswort"
        maxperip 5;
};

Legen Sie Channel fest

allow   channel {
        channel "#serverblogger-chat";
        channel "#raum1";
        channel "#raum2";
        channel "#raum3";
};

Verhindern Sie, dass Channel angelegt werden

deny channel {
        channel "*";
        reason "Es gibt schon vier Raeume :) ";
};

Netzwerk Konfiguration

set {
    network-name            "IRC";
    default-server          "serverblogger.ch";
    services-server         "serverblogger.ch";
    stats-server            "serverblogger.ch";
    ...
    cloak-keys {
                "aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
                "Key eingeben";
                "Key eingeben";
     };

}

Lesen Sie die restlichen Einstellungen und speichern die Datei ab. Im gleichen Verzeichnis können Sie noch die Willkommensdateien motd.conf und rules.conf erstellen um eine Willkommensnachricht auf dem Client anzuzeigen.

Starten und stoppen können Sie den IRC Server nun mit den Befehlen

./unreal start

und

./unreal stop

IRC Clients

Es gibt ein grosses Angebot für IRC-Clients auf allen denkbaren Plattformen. Hier ein paar Beispiele mit dem gerade aufgesetzten irc.serverblogger.ch Server.

Lime (OSX)

http://limechat.net/mac/

Konfiguration Lime IRC Client
Konfiguration Lime IRC Client
Chat Fenster Lime IRC Client
Chat Fenster Lime IRC Client

AndroIRC (Android)

http://www.androirc.com/

AndroIRC Chatfenster
AndroIRC Chatfenster

Adium (OSX)

https://adium.im/

Adium Chat Client
Adium Chat Client

tl;dr: Der Internet Relay Chat ist eine schnelle, einfache und sichere Alternative zu proprietären Messenger Systemen.

Kategorien
Frameworks

Konzentrieren Sie sich auf das Wesentliche – Hoodie

Im Blogeintrag über das Ghost Projekt habe ich die Installation von Node.js bereits gezeigt. In diesem Blogeintrag möchte ich Ihnen zeigen, wie Sie Ihren Root-Server zu einen Backend Service machen, der es Ihnen ermöglicht, offline Anwendungen zu erstellen.

Bevor wir uns der Frage widmen, was ein Backend Service für offline Anwendungen überhaupt ist, schauen Sie bitte kurz auf die Website http://minutes.io und erstellen Sie dort ein Protokoll einer Besprechung.

minutes.io
minutes.io
Vermutlich sind Sie von der Einfachheit und Effektivität der Anwendung fasziniert.

Und vermutlich fallen Ihnen sofort weitere Aufgaben ein, die auch so einfach sein sollen.

Das Hoodie Team benutzt intern beispielsweise so eine Anwendung für die Erstellung Ihrer Roadmap (http://gr2m.github.io/milestones/)

Hoodie Milestones
Hoodie Milestones
Weitere Beispiele finden Sie hier.

No Backend & offline first

Wenn Sie Anwendungen wie die beiden Beispiele mit herkömmlichen Methoden und Tools erstellen wollen, so benötigen Sie dafür mindestens Kenntnisse von HTML, CSS, JavaScript, Skriptsprachen wie PHP, Datenbanken wie MySQL, Webserver wie Apache und natürlich ein Betriebssystem wie Linux. Wenn Sie diese Begriffe in Frontend (Browser) und Backend (Server) aufteilen, dann findet HTML, CSS und JavaScript im Frontend statt und der Rest im Backend. Dieser „Rest“ ist für „Nicht Programmierer“ und „Nicht Administratoren“ unfassbar kompliziert und die Lernkurve sehr hoch. Wer im Schulunterricht HTML lernt und eine Idee für eine Anwendung hat, scheitert bei seiner Arbeit oft am Backend.

Jede einigermassen nützliche Anwendung benötigt diese Features:

  • Benutzerregistrierung
  • Benutzerverwaltung durch einen Administrator
  • Speichern und Laden von Daten
  • Teilen der Data an berechtigte Personen oder mit der Oeffentlichkeit
  • Verschicken von E-Mails
  • Vielleicht etwas bezahlen

Das war vor zehn und mehr Jahren so. Heute kommt hinzu, dass die Anwendung bitte auf jedem Endgerät laufen soll und zwar auch offline. Die Daten werden dann bei erneutem online Zustand gesynct. Die Anwendung minutes.io kann das alles!

Was ist Hoodie?

Hoodie vereinfacht das Entwickeln solcher Anwendungen. Es nutzt Node.js, Git und CouchDB und stellt damit ein serverseitiges Backend (Hoodie) für offline Anwendungen zur Verfügung.

Die eigentliche Anwendungsentwicklung geschieht im Frontend mit HTML, CSS und JavaScript.

Hoodie kann über Plugins in seiner Funktionalität erweitert werden.

Eine sehr gute Einführung gibt Alex Feyerke in seinem Talk auf der JSConf 2013

I have a Dreamcode: Build Apps, not Backends

Installation von Hoodie unter Ubuntu 14.04

Da Sie nach dieser recht ausführlichen Einleitung, in der ich Sie zu minutes.io und YouTube geschickt habe den Weg wieder hierher gefunden habe, zeige ich Ihnen jetzt, wie Sie Hoodie auf einem Root-Server installieren.

Deutlicher Hinweis:

Momentan ist Hoodie bei der Versionsnummer 0.6.3 angekommen. Normalerweise wird lokal entwickelt und die Ergebnisse der Entwicklung werden dann auf einem produktiven Server deployed (Hoodie Deployment Guide). Nichtsdestotrotz glaube ich, dass es gut ist, Hoodie einfach mal auf einem Root-Server zu installieren und damit zu experimentieren. Die einzelne Anwendung läuft nur, wenn Hoodie gestartet ist und dann „nur“ auf einen anderen Port als 80. Das Risiko ist also überschaubar :). Der Vorführeffekt einer selbst erstellten Anwendung ist sehr eindrucksvoll, wenn Sie „online“ zur Verfügung steht und jeder die Applikation mal eben mit seinem Tablet oder Telefon ausprobieren kann.

Nun aber endlich los. Installieren Sie die folgenden Software.

Node.js

Ubuntu hat ein Installationspaket von Node.js. Damit alles so funktioniert, wie Hoodie das erwartet, muss zusätzlich Chris Lea’s Node.js PPA hinzugefügt werden. Eine PPA ist ein Personal Package Archive.

sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

CouchDB

sudo apt-get update
sudo apt-get install couchdb-bin git

Hoodie-CLI

npm install -g hoodie-cli

Das war bereits alles, Hoodie ist nun installiert.

Erste Schritte

Mit hoodie -h sehen Sie die möglichen Paramneter

Hoodie Help

Hoodie Help

Um das Gerüst für eine erste Anwendung zu erstellen, geben Sie den Befehl

hoodie new testapp

ein. Hoodie erstellt nun im Verzeichnis testapp alle Dateien, die Sie benötigen um loszulegen. Die testapp ist eine ToDo Liste mit Benutzerverwaltung. Der Name ist frei wählbar.

Erstellung der Hoodie testapp
Erstellung der Hoodie testapp
Wechseln Sie nun in den testapp Ordner und starten Sie Hoodie. Sie müssen ein Passwort für den Administrationsbereich vergeben.

cd testapp
hoodie start
Hoodie testapp starten
Hoodie testapp starten
Nun können Sie die testapp im Browser aufrufen. In meinem Fall ist das http://serverblogger.ch:6001 für die testapp und http://serverblogger.ch:6002 für den Adminbereich.
testapp im Browser
testapp im Browser
Administrationsbereich
Administrationsbereich
Auf der Website können Sie sich ein Benutzerkonto anlegen und Ihre ToDo’s verwalten.

In der Datei /home/novatrend/testapp/www/index.html befindet sich der Quellcode Ihrer Anwendung. Für erste Schritte können Sie diese Datei im Editor bearbeiten. Komfortabler geht es natürlich in einer lokalen Entwicklungsumgebung.

Hoodie selbst können Sie mit ctrl-c wieder beenden. Die App ist dann nicht mehr über den Browser aufrufbar. Das Passwort können Sie mit dem Befehl hoodie reset password zurücksetzen.

Eine Anwendung direkt aus GitHub installieren

Eine Demo Anwendung ist der Hoodie MapChat. Stellen Sie sich vor, Sie wollen Informationen sammeln, die mit einem bestimmten Ort zusammenhängen (Der Weinbauer geht über seine Felder und notiert sich etwas, mal mit, mal ohne Internetverbindung. Die Daten sind nur für ihn sichtbar 😉 ). Auch wenn die Anwendung auf den ersten Blick ein wenig hergeholt erscheint, so funktionieren doch die meisten ortsbezogenen Dienste nach exakt diesem Prinzip.

Verlassen Sie das Verzeichnis testapp wieder und geben Sie die folgenden Befehle ein.

hoodie new vineyard -t hoodiehq/hoodie-app-mapchat
cd vineyard
hoodie start

Wenn Sie die Anwendung nun im Browser aufrufen, können Sie sich registrieren und dann mit Ihrem Telefon über Ihre Liegenschaften laufen und Notizen verfassen. Auch offline!

Hoodie MapChat
Hoodie MapChat

Links


tl:dr; Mit Hoodie lassen sich Web-Applikationen schnell und einfach entwickeln.

Kategorien
Content Management Systeme

Ein Intranet mit Open Atrium

Heute schauen wir uns unsere neue Intranet Lösung an!

Haben Sie diesen Satz schon einmal in einem Meeting gehört?

Als ich diesen Satz das erste Mal hörte, war mir noch nicht so recht klar, was ein Intranet für ein Unternehmen, auch und gerade ein kleines Unternehmen, bedeutet. Die meisten Intranet Lösungen, die ich zu Gesicht bekam, waren ähnlich selbsterklärend wie Steuer- oder Buchhaltungsprogramme, nämlich gar nicht. Bei den Mitarbeitern machte sich meist in kürzester Zeit Angst und Misstrauen breit, weil es in bestehenden Unternehmen oft ausgetretene Pfade gibt, die nicht gern verlassen werden. Mittlerweile kann ich diese Reaktion gut verstehen, denn ich war oft in Meetings, in denen die neue, alle Probleme lösende Software, vorgestellt wurde!

Seit dem Auftauchen von BaseCamp (Projektmanagement) im Jahre 2004 verbesserte sich die Lage ein wenig, aber nicht wirklich. BaseCamp war gut, aber eben „nur“ eine Website. Viele Unternehmen wollten ihre Daten aus Sicherheitsgründen lieber selbst hosten.

Oft arbeiten Gruppen mit einer Mischung aus E-Mail, Microsoft Word, Outlook und Skype zusammen. Ich habe auch schon oft Kommunikation über Facebook, WhatsApp, Google Docs, Wikis, Telefon und Jabber gesehen. Das Problem ist verzwickt. Je nach Unternehmen, Herkunft, Kultur, Arbeitsverhältnissen und anderen Parametern wird mal lose oder eben nicht so lose zusammengearbeitet. Innerhalb von Unternehmen gibt es oft den „offiziellen“ und den „anderen“ Weg. Auf beiden Wegen sollte sich ein Mitarbeiter zurechtfinden. Ein Intranet muss daher einfach benutzbar aber hochflexibel sein.

„Eine“ Software hat es da naturgemass schwer, alle Bedürfnisse abzudecken. Die meisten Mitarbeiter sind allerdings auch überfordert, unterschiedliche Tools einigermassen produktiv zu kombineren.

Als ich anfing mit Drupal zu experimentieren, habe ich oft Intranets damit „zusammengeklickt“. Das ging mit Drupal erstaunlich gut, weil man mit Inhaltstypen, Feldern und Benutzerrollen schon eine ganze Menge ohne Programmierung erledigen kann. Scheinbar haben mehrere Anwender so gedacht, denn Ende 2009 erschien die erste Version von Open Atrium, einer Drupal Distribution, die dem BaseCamp Prinzip sehr ähnelte und aus Drupal Modulen zusammengesetzt war. Der grosse Vorteil war für mich, dass man dieses System sehr einfach mit anderen bestehenden Drupal Modulen erweitern konnte und so auf eine elegante Art zum Ziel kam. Wir (cocoate.com) haben Open Atrium erfolgreich für die Verwaltung von internationalen Kunden- und EU-Projekten genutzt und konnten wirklich jede Herausforderung (Workflow, Tasks) damit meistern.

Die treffendste Beschreibung des Projektes ist vermutlich

Open Atrium is an intranet in a box that has group spaces to allow different teams to have their own conversations and collaboration.

Mittlerweile ist Open Atrium von der Firma Phase2 gekauft worden. Die Software an sich steht weiterhin unter einer freien Lizenz zur Verfügung. Aktuell ist die Version Open Atrium 2. Sie basiert auf Drupal 7. Auf openatrium.com finden Sie mehr Informationen über die Geschichte und die Features des Projektes. Die echten Nutzungszahlen lassen sich auf der drupal.org/project/usage/openatrium nachvollziehen.

Installation von Open Atrium 2

Das gesamte Installationspaket können Sie auf der Projekt Seite herunterladen.

Vorbereitungen

Um die Software installieren zu können, benötigen Sie auf Ihrem Root-Server einen LAMP Stack (LAMP einrichten), einen VHOST (Viele virtuelle Server auf einem Root-Server) und eine Datenbank nebst Datenbank-User (Installation der 5 verbreiteten Content Management Systeme).

Empfehlenswerte Einstellungen sind in der

php.ini:

memory_limit=256M

In meinem Fall ist der Aufruf von

sudo nano /etc/php5/apache2/php.ini

und ein anschliessender Neustart des Webservers noetig

sudo service apache2 reload

MySQL my.cnf:

max_allowed_packet = 32M

Ich rufe

sudo nano /etc/mysql/my.cnf

auf und starte den Datenbankserver anschliessend neu:

sudo service mysql reload

Installation

Laden Sie das Dateipaket von drupal.org/project/openatrium

wget http://ftp.drupal.org/files/projects/openatrium-7.x-2.26-core.tar.gz

Extrahieren Sie es in ein Verzeichnis Ihrer Wahl und rufen Sie es im Browser auf. Die gesamte Open Atrium Distribution ist momentan nur auf Englisch verfügbar. Nach der Installation kann die Anwendung jedoch lokalisiert werden.

Web-Installer
Web-Installer
Das ist die erste Seite des Webinstallers.

Drupal Distributionen nutzen den Standard Drupal Webinstaller und erweitern ihn um die entsprechenden Funktionen.

Datenbankkonfiguration
Datenbankkonfiguration
Profilauswahl
Profilauswahl
Hier wird die Installationsmethode ausgewählt. Ich habe habe die Quick Installation gewählt.
Installation der Module
Installation der Module
338 Drupal Module werden nun installiert.

Danach werden der Adminname, das Passwort und die E-Mail Adresse abgefragt.

Erfolgreiche Installation
Erfolgreiche Installation
Die Installation war erfolgreich, Open Atrium ist nun bereit zur Konfiguration.
Startseite
Startseite
Der grüne „Create Content“ Button führt nun in die Welt der Intranets. So grundsätzlich gibt es Spaces, Sections, Groups, Members und Teams in denen unterschiedliche Arten von Inhalten gespeichert werden werden können.

Wenn Sie nun neugierig sind, sollten Sie sich eine Stunde Zeit nehmen und eine Einführung in Open Atrium ansehen (Englisch). Das erste Drittel besteht aus Slides mit den theoretischen Zusammenhängen und der Rest aus der Konfiguration von Open Atrium.

Weitere Videos und Tutorials finden Sie auf auf der Projektseite (https://www.drupal.org/project/openatrium).


tl;dr: Ein für Ihre Bedürfnisse massgeschneidertes Intranet mit Open Source Software ist möglich.

Kategorien
Analytics Server Shared Hosting

PIWIK Analytics

Das Open-Source-Programm PIWIK ist eine Alternative zu Google Analytics. Es erschien in der ersten Version bereits im März 2009.

Piwik ist mittlerweiler sehr gut benutzbar und verlässlich und es hat den grossen Vorteil, dass die Daten der analysierten Websites auf dem eigenen Root-Server gespeichert werden!

Ausser der Statistik über Seitenabrufe gibt es natürlich Besucheranalysen (Länder, Browser, Betriebssysteme, Gerätemarken und -modelle), sowie Referreranalysen und Kartendarstellungen. Es existieren auch weitergehende Funktionen wie Kampagnen- und Zieltracking. Die IP-Adressen können aus datenschutzrechtlichen Gründen anonymisiert werden und es gibt native Clients für Android und iOS.

Piwik ist das Nachfolgeprojekt des inzwischen eingestellten Projekts phpMyVisites. Es nutzt PHP und MySQL. Die Besucherzählung erfolgt mit JavaScript, Zählpixel, über eine API oder eine Logdateianalyse.

In diesem Artikel wollen wir Piwik installieren und dessen Einbindung in WordPress zeigen. Für die meisten Open Source Content Management Systeme stehen entsprechende Erweiterungen zur Verfügung. Falls nicht, müssen Sie den Piwik JavaScript Tracking Code manuell einfügen. Eine Analyse ist immer möglich!

Installation

Als Installationsspezialist der letzten Wochen kennen Sie ja schon den Weg.

  • Virtuellen Server einrichten
  • MySQL User und Datenbank erstellen
  • Quellcode downloaden und auspacken
  • Programm installieren und konfigurieren

Im Falle von Piwik muss nun noch in den zu analysierenden Seiten eine Verbindung zu Piwik geschaffen werden.

Virtueller Server

Abhängig von Ihren Bedürfnissen, können Sie Piwik innerhalb einem eigenen Virtuellen Server betreiben, beispielsweise als Subdomain (http://piwik.servervlogger.ch) oder auch einfach in einem Unterverzeichnis eines bereits existierenden Virtuellen Server (http://servervlogger.ch/piwik).

Hier die Variante mit virtuellem Server:

Legen Sie eine neue Datei an. Der String „piwik.serverblogger.ch“ ist meine Beispieldomain. Fügen Sie hier Ihren Domainnamen ein.

nano /etc/apache2/sites-available/piwik.serverblogger.ch

<VirtualHost *:80>
  ServerAdmin piwik@piwik.serverblogger.ch
  ServerName piwik.serverblogger.ch
  DocumentRoot /var/www/serverblogger.ch/public_html/
  ErrorLog /var/www/serverblogger.ch/logs/error.log
  CustomLog /var/www/serverblogger.ch/logs/access.log combined
</VirtualHost>

Document Root Verzeichnis anlegen

mkdir -p /var/www/piwik.serverblogger.ch/public_html
mkdir -p /var/www/piwik.serverblogger.ch/logs

Aktivieren Sie den neuen virtuellen Server

a2ensite piwik.serverblogger.ch.conf

Piwik Quellcode

Laden Sie den Quellcode von der piwik.org Website.

wget http://builds.piwik.org/piwik.zip

und entpacken es in das Verzeichnis /srv/www/[Domainname]/public_html/.

Dem Archiv liegt eine Datei How to install Piwik.html bei. Sie enthält eine Weiterleitung auf die Online-Dokumentation http://piwik.org/docs/installation/.

Installation

Der Webinstaller führt in acht Schritten durch die Installation. Oben rechts kann die Sprache auf Deutsch umgestellt werden.

Willkommen bei der Piwik Installation
Willkommen bei der Piwik Installation

Die Systemüberprüfung checkt alle notwendigen Elemente – „je grüner, desto gut ;)“

Systemprüfung
Systemprüfung
Datenbank einrichten
Datenbank einrichten
Administrator Account erstellen
Administrator Account erstellen

Das Installationsprogram schlägt vor, gleich eine Website, die über Piwik analysiert werden soll, hinzuzufügen. Ich nehme das WordPress aus unserer Beispiel Installation.

Erste Website hinzufügen - Unsere Beispielistallation WordPress
Erste Website hinzufügen – Unsere Beispielinstallation WordPress

Der Installer zeigt mir den Tracking-Code für die WordPress Site an, ich werde jedoch im Anschluss ein Plugin installieren, dass dann Kontakt mit Piwik aufnimmt.

Tracking Code für die erste Site
Tracking Code für die erste Site

Piwik ist nun installiert und kreuzt standardmässig zwei wichtige Dinge an:

  • Do-not-Track Unterstützung

Do Not Track (DNT; engl. für „nicht verfolgen“) ist ein so genanntes HTTP-Header-Feld und signalisiert einer Webseite oder Webanwendung den Wunsch, dass diese über die Aktivitäten des Besuchers kein Nutzungsprofil erstellt. […] Zurzeit wird es durch die W3C standardisiert. […] Firefox war der erste Browser der dieses Feld unterstützte, später folgten Internet Explorer (ab Version 9), Safari, Opera und Chrome. Wikipedia

  • Anonymisierung der letzten Bytes der IP-Adresse
Glückwunsch - Piwik ist installiert
Glückwunsch – Piwik ist installiert

Der Screen in der Installation gefiel mir besonders. Er enthält einen Spendenaufruf – „Wieviel ist Ihnen Piwik wert?“

Spendenaufruf
Spendenaufruf
Piwik Dashboard
Piwik Dashboard

Piwik in WordPress

In WordPress können zusätzliche Plugins über die Administrationsoberfläche hinzugefügt werden. Einfach nach Piwik suchen und auf installieren klicken.

Plugin WP-Piwik installieren

Plugin WP-Piwik installieren

Nach der Installation landen Sie im Bereich der Plugins. Klicken Sie auf Einstellungen.

Neues Plugin WP-Piwik
Neues Plugin WP-Piwik

Öffnen Sie in einem separaten Browser-Tab das Piwik Dashboard und kopieren sich das API-Token in die Zwischenablage

API Token
API Token

Tragen Sie in den WordPress WP-Piwik Settings die Piwik URL und das Token ein

WP-Piwik Einstellungen
WP-Piwik Einstellungen

Anschliessen müssen Sie noch das Einfügen des Tracking Codes aktivieren.

Tracking Code
Tracking Code

Ab jetzt analysiert Piwik Ihre Website. Hier sehen Sie den ersten Zugriff auf unser Test-WordPress nach der Installation

Zugriff
Zugriff

Piwik Mobile App

Die Piwik Mobile Apps existieren für iOS und Android. Die Dokumentation empfiehlt einen separaten Benutzer Account mit View Rechten in der anzulegen.

Benutzer und Rechte
Benutzer und Rechte

In der App können beliebig viele Piwik Installationen abgefragt werde. Hier ein Screenshot mit der Menü-Übersicht

Piwik Android App
Piwik Android App

Weitere CMS-Plugins


tl:dr Piwik ist eine echte Alternative zu Google Analytics!

Kategorien
Content Management Systeme

Ein Blog mit Ghost und Node.js

Ghost ist eine minimalistisch aufgebautete Blogging-Plattform. Gestartet wurde das Projekt auf Kickstarter von John O’Nolan, der einfach nur eine wirklich einfache Blogging-Plattform haben wollte.

Das besondere an Ghost ist, das es in JavaScript mit Hilfe des Frameworks Node.js geschrieben wurde. Mit Hilfe von Node.js lassen sich hochperformante, skalierbare und echtzeitfähige Webanwendungen entwickeln. Node.js funktioniert dabei auch als Webserver. Da wir bereits einen Webserver auf Port 80 laufen haben (Apache2), müssen wir einen Weg finden, Apache2 und die Node.js Plattform parallel auf unserem Root-Server zu betreiben.

Wenn Sie noch unsicher sind, ob Sie Ghost wirklich benötigen, dann schauen Sie sich einfach zu Motivationszwecken einfach mal den Kickstarter Film aus 2013 an. Und denken Sie daran, dass es den klassischen LAMP Stack nun auch schon fast 20 Jahre gibt 🙂

Wenn Sie jetzt überzeugt sind :), dann lassen Sie uns starten. Zuerst müssen wir die Node.js Plattform installieren, dann das Ghost Blog, dann die Weiterleitung durch den Apache 2 und zu guter Letzt die permante.

Node.js auf Ubuntu 14.04. installieren

Da Node.js ein recht junges Projekt ist (Start in 2009), gibt es natürlich viele Änderungen und Anpassungen. In den Ubuntu 14.04 repositories ist die Version 0.10.25 enthalten. Diese Version ist zwar nicht die Neueste, aber recht stabil und vor allem ausreichend, um die Ghost Blogging Plattform zu installieren.

sudo apt-get update
sudo apt-get install nodejs

Das Paket nodejs stellt nur die absolute Basis Funktionalität bereit. Daher benötigt man noch den separaten Erweiterungsmanager Node.js package manager (npm).

sudo apt-get install npm

Normalerweise heisst Node.js auf der Kommandoebene node. In Ubuntu 14.04. heisst es nodejs. Die beiden folgenden Befehlen zeigen die Versionsnummern an und sollten nach der Installation ausgeführt werden um sicher zu gehen, dass alles geklappt hat.

novatrend@server1:~$ nodejs -v
v0.10.25
novatrend@server1:~$ npm -v
1.3.10

Die Sache mit dem Namen!

In der Ubuntu Version 14.04. heisst das Paket für Node.js nodejs. Das klingt zunächst mal logisch. Innerhaln des npm wird allerdings immer der Befehl node benutzt, so dass es hin und wieder Problem gibt. Dieser wunderbare Befehl (den ich ziemlich lange gesucht habe), löst das Problem.

sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

Ghost installieren

Als erstes muss das Installationverzeichnis angelegt werden. Ich installiere in /var/www/ghost.serverblogger.ch/.

sudo mkdir -p /var/www/ghost.serverblogger.ch/

Dann ins Installationsverzeichnis wechseln

cd /var/www/ghost.serverblogger.ch

und den Quellcode herunterladen

sudo curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip

Auspacken

unzip -uo ghost.zip -d ghost

und ins das gerade erzeugte Verzeichnis ghost wechseln

cd ghost

Zur eigentlichen Installation wird der Packet Manager genutzt

sudo npm install --production

Nach der Installation können Sie den Server mit

sudo npm start

starten. Ghost läuft nun auf Port 2368 auf Ihrem Root-Server

Apache und Ghost

Um das Blog auch sehen zu können und alles über Port 80 zu routen, müssen Sie den Default vhost des Apache2 Webservers umkonfigurieren und ein Proxymodul installieren.

Öffnen Sie die Ghost Konfigurationsdatei

sudo nano /var/www/ghost.serverblogger.ch/ghost/config.js

Ändern Sie alle 127.0.01 Einträge in die echte IP Adresse und die URL. In meinem Fall ist das 46.232.178.78 und ghost.serverblogger.ch

Öffnen Sie die Apache2 Standard Vitualhost Konfigurationsdatei

sudo nano /etc/apache2/sites-available/000-default.conf

fügen diese drei Zeilen hinzu und kommentieren das DocumentRoot aus

#DocumentRoot /var/www/html
ServerName ghost.serverblogger.ch
ProxyPreserveHost On
ProxyPass / http://46.232.178.78:2368/

Laden Sie das Apache Proy Modul

sudo a2enmod proxy_http
sudo a2enmod proxy

und starten den Apache2 Server neu

sudo service apache2 restart

Wechseln Sie nun in das Ghost Installationverzeichnis

cd /var/ghost.serverblogger.ch/html/ghost

und starten npm neu

sudo npm start

Ihr Blog ist nun unter http://ghost.serverblogger.ch erreichbar. IhrBenutzerkonto können Sie unter http://ghost.serverblogger.ch/ghost einrichten

Ghost User anlegen
Ghost User anlegen
Administrationsbereich
Administrationsbereich
Die Benutzeroberfläche ist wirklich schick!
Mein Blog
Mein Blog
Zu guter letzt müssen Sie noch dafür sorgen, das Ghost permanent auf Ihrem Root-Server läuft. Schliessen Sie die Anwendung mit Ctrl-C und führen Sie die folgenden Befehle aus:

sudo npm install forever -g
cd /var/www/ghost.serverblogger.ch/ghost
sudo forever start index.js

Das Beenden des Blog ist emotional etwas kritisch 😉 Sie müssen Ihr Blog töten, da es ja „forever“ läuft. Mit dem Befehl

ps axl | grep node

finden Sie es den entsprechenden Prozess … und mit der User root darf es töten!

novatrend@server1:/var/www/ghost.serverblogger.ch/ghost$ ps axl | grep node
0     0  8162     1  20   0 671656 23016 ep_pol Ssl  ?          0:00 /usr/bin/nodejs /usr/local/lib/node_modules/forever/bin/monitor index.js
0     0  8164  8162  20   0 1005368 87748 ep_pol Sl  ?          0:01 /usr/bin/nodejs /var/www/ghost.serverblogger.ch/ghost/index.js
0  1000  8176  7574  20   0  11732   688 pipe_w S+   pts/0      0:00 grep --color=auto node
novatrend@server1:/var/www/ghost.serverblogger.ch/ghost$ kill -9 8162
-bash: kill: (8162) - Operation not permitted
novatrend@server1:/var/www/ghost.serverblogger.ch/ghost$ sudo kill -9 8162

Hinweis: Stellen Sie sich darauf ein, dass wirklich jeder, dem Sie ihr Ghost-Blog zeigen, ebenfalls eins haben möchte!


tl:dr Es gibt schönere Blogging-Plattformen als WordPress. Sie werden Ghost haben wollen 😉