Kategorien
Messenger Server Soziale Netze

pump.io – die Basis für dezentrale soziale Netzwerke?

Nach meinen bisherigen Erlebnissen mit den alternativen sozialen Netzwerken Friendica und GNU social zeigte sich schnell die Hauptproblematik. Es fehlt bis heute ein gemeinsamer Standard für die Speicherung und Verwaltung der eigenen Daten und Beziehungen zu anderen Benutzern. Alle proprietären sozialen Netzwerke wie Facebook, Twitter, und Google+ lösen das auf die klassische Art. Sie nutzen Ihren eigenen Standard und versuchen, Ihre Nutzerzahlen, auch durch Zukäufe von anderen Netzwerken, zu erhöhen. Das hilft diesen Unternehmen, nicht aber den beteiligten Menschen, wie Ihnen und mir, die die Hoheit über Ihre Daten und Berechtigungen haben wollen.

Pump.io geht genau dieses Problem an

I post something and my followers see it. That’s the rough idea behind the pump.

Pump.io besitzt eine API, nutzt activitystrea.ms und JSON ist das Hauptdaten- und Kommandoformat. Man kann also beispielsweise kurzen und langen Text, Lesezeichen, Bilder, Video, Audio, Events und ortsbasierte Checkins posten. Man kann anderen Nutzern folgen und Listen von Nutzern anlegen und darüber wieder deren Inhalt, abhängig von deren Berechtigungen sehen und/oder downloaden. Pump.io wird unter der Apache-2.0-Lizenz veröffentlicht, die jedem die Nutzung des Quellcodes erlaubt, aber fordert, dass Änderungen an der Software weitergegeben werden müssen. Anders als bei der GPL fordert die AGPL dies auch dann, wenn man die Software selbst nur nutzt und nicht weiterverbreitet. Code unter der Apache-2.0-Lizenz kann auch in proprietären Projekten verwendet werden.

Durch die offene Struktur kann man selbst einen pump.io Server betreiben oder sich auf einem vertrauenswürdigem externen Server registrieren. Um diese Struktur herum können dann Anwendungen entstehen, die auf Telefonen, im Web oder von Maschine zu Maschine laufen.

Ein Projekt, daß momentan pump.io einbaut ist MediaGoblin. MediaGoblin ist ein dezentrales Netzwerk für Medien, also die dezentrale Alternative zu Flickr, YouTube und SoundCloud.

Eine stabile Version, die Sie auch nutzen können, finden Sie beispielsweise hier (https://goblinrefuge.com/).

Die proprietären sozialen Netzwerke könnten also einfach pump.io als Basis nehmen, sich gegenüber Ihren Nutzer vertauenswürdig verhalten und die Welt wäre ok? Im Prinzip ja. Das ebenfalls proprietäre Netzwerk Identi.ca, ist genau diesen Weg gegangen (Umbau bei Identi.ca – Golem 4.5.2013). Dazu muß man allerdings auch wissen, daß der Gründer von Identi.ca und pump.io derselbe ist, nämlich Evan Prodromou. Evan ist seit 2013 in der W3C Federated Social Web Incubator Group engagiert und steckt auch im GNU social Projekt, das ebenfalls pump.io als Standard nutzt.

Hier eine Präsentation von ihm, die einen detaillierteren Überblick über pump.io gibt.

Um der Sache etwas mehr auf den Grund zu gehen, wollte ich pump.io einfach mal installieren und schauen was man damit tun kann. Nach der Installation war ich überrascht, einen vollständigen Twitterersatz gefunden haben.

Installation

Zur Installation habe ich die folgenden Anleitungen genutzt.

http://pump.io/
https://github.com/e14n/pump.io/wiki/Ubuntu-Installation#install-basic-build-essential-packages

pump.io ist momentan in der Version 0.3 verfügbar. Es arbeitet nicht wirklich gut mit dem Apache Proxy Modul zusammen und es wird empfohlen einen Root-Server exclusiv für pump.io zu nutzen. Mit dem Nginx Proxy harmoniert pump.io besser (http://sjoberg.fi/blog/pumpio.html). Da ich es für diesen Artikel nur ausprobieren wollte, gibt es dieses mal nur eine kurze Installationbeschreibung aber – eine Testversion auf http://pump.serverblogger.ch:31337.

Aber zurück zum Installieren.

Installationsvoraussetzung sind node.js 0.8.0 oder größer, npm 1.1.0 oder größer, eine Datenbank und das graphicsmagick Paket.

Ich habe ein Installationsscript genutzt, das wirklich gut funktioniert.

wget https://gist.githubusercontent.com/debanjum/3c3e92de34d290a8bc68/raw/f2d86de263980e744a7ac1079c2863f49fe1c9d6/Pump.sh
chmod +x Pump.sh        # Make script exectuable
sudo ./Pump.sh "local"  # For local testing
# OR #
sudo ./Pump.sh "server" # For server testing, with external ip and hostname

Danach habe ich in der /etc/pump.io.json Konfigurationsdatei noch die Werte für site, hostname, owner, ownerURL, address und serverUser angepasst.

{
    "driver":  "redis",
    "params":  {"host":"localhost","port":6379},
    "secret":  "my dog has fleas",
    "noweb":  false,
    "site":  "Serverblogger",
    "owner":  "NOVATREND Serverblogger",
    "ownerURL":  "http://blog.novatrend.ch/",
    "port":  31337,
    "hostname":  "pump.serverblogger.ch",
    "address":  "pump.serverblogger.ch",
    "nologger":  false,
    "serverUser":  "novatrend",
    "uploaddir": "/srv/pump.io/uploads",
    "debugClient": false,
    "firehose": "ofirehose.example"
}

In Screen läst es sich so starten

screen -S pumpserver -L -dm bash -c "cd /srv/pump.io; npm start"

Danach lief der Server … schauen Sie mal vorbei http://pump.serverblogger.ch:31337. Sie und ich können sich User anlegen, Bilder hochladen, Nutzern folgen und den Account auf anderen pump.io Plattformen nutzen. Denken Sie aber daran, dass es nur eine Testinstallation ist und wieder von unserem Server verschwinden wird.



Links


tl;dr: Pump.io stellt eine API aller notwendigen Funktionen für soziale Software unter einer auf kommerziell nutzbaren Lizenz zur Verfügung.

Kategorien
Soziale Netze

GNU social – ein dezentrales soziales Netzwerk

Ihr werdet niemals Facebook schlagen, warum also?
Vielleicht wird es nicht jeder in der Welt nutzen, aber Facebook nutzt auch nicht jeder. Datenschutz ist wichtig, und viele Leute schätzen ihre Privatsphäre und die Freiheit so sehr, dass Sie Software verwenden, die keine Dinge tut, die sie nicht wollen.
Aus FAQ GNU social.

In der kleinen Reihe über alternative Social Networks stelle ich nach Friendica heute GNU social vor. GNU social hat eine recht bewegte Geschichte und ist aus der StatusNet Software hervorgegangen, die wiederum aus Laconica hervorgegangen ist. Technisch gesehen ist es ein Mikroblogging Dienst, geschrieben in PHP. Es nutzt den OStatus Standard für das Zusammenspiel zwischen den einzelnen GNU social Installationen und anderen Anwendungen. Friendica nutzt ebenfalls OStatus und so lassen sich die beiden auch verbinden. Während Friendica eher in die Richtung von Facebook geht, ähnelt GNU social eher Twitter. Es ist einfach zu installieren und bietet ohne zusätzliche Plugins bereits Followerfunktionen, Statusmeldungen, Events, Umfragen, Lesezeichen und eine Fragefunktion. Es kann so konfiguriert werden, dass Konten nur auf Einladung erstellt werden können und die Postings nur von den Followern oder optional auch öffentlich eingesehen werden können. Für mich sieht es ziemlich brauchbar aus für die interne Unternehmenskommunikation.

Man kann es auch eine Art Homepage-Ersatz oder -Erweiterung nutzen (Beispiel). Ich mag die Idee, weil man dann tatsächlich die volle Kontrolle über seine Daten behält, trotzdem aber Follower aus anderen Plattformen wie z.B. Friendica und anderen GNU social Installationen hat und auch selber anderen Usern auf anderen Plattformen folgen kann. Man kann auch Erweiterungen und Themes installieren, aber in diesem ersten Artikel wollen wir es zunächst mal installieren 🙂

Installation

Ich benutze Ubuntu 14.04, MySQL und PHP bei meinen Beispielen hier im Blog. Wenn Sie GNU social frisch via Git installieren, so benötigen Sie die folgenden Pakete. Es kann sein, das viele Installationpakete schon auf Ihrem Root-Server installiert sind, wenn Sie die vergangenen Beispiele hier im Blog ausprobiert haben. Das ist aber kein Problem, denn falls ein bereits installiertes Paket gefunden wird, wird es eben nicht installiert.

sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales
sudo apt-get update -q
sudo apt-get dist-upgrade -y
sudo apt-get install -y pound varnish php5 rsync htop emacs23-nox apache2 php5-mysql dtrx mysql-server exim4
sudo apt-get install php5-curl git

Sie müssen nun einen Platz festlegen, in dem Sie GNU social installieren wollen. Ich bleibe hier bei meinem Verzeichnissystem (/var/www/[domainname]/public_html). Erstellen Sie ein Verzeichnis und geben Sie dem Webserver Zugriffsrechte.

mkdir /var/www/gnusocial.serverblogger.ch/public_html -p
chown www-data:www-data /var/www/gnusocial.serverblogger.ch/public_html
cd /var/www/gnusocial.serverblogger.ch/public_html

Im nächsten Schritt laden Sie die Dateien.

git clone git://gitorious.org/social/mainline.git

oder

wget https://gitorious.org/social/mainline/archive/master.zip

und anschliessend entpacken

Datenbank

Ich beschreibe hier die Variante für MySQL. Loggen Sie sich ein

mysql -u root -p

und erstellen Sie eine neue Datenbank (gnusocial) und ein neues Benutzerkonto (gnusocial). Anstelle der Sternchen legen Sie ein Passwort fest.

create database gnusocial;
grant all privileges on gnusocial.* TO "gnusocial"@"localhost" identified by "********";
flush privileges;
exit;

Virtueller Host

Je nachdem, wie und wo Sie GNU social installieren, legen Sie vermutlich einen neuen virtuellen Host an. Erstellen Sie eine Konfigurationsdatei

nano /etc/apache2/sites-available/gnusocial.serverblogger.ch.conf

und kopieren die folgenden Befehle hinein.

Hinweis: Hier im Beispiel erstelle ich keinen SSL/TLS gesicherten virtuellen Host, da mein serverblogger.ch Zertifikat nur für diese Domain gilt und nicht für Subdomains. Im Artikel Virtuelle Apache Hosts mit TLS/SSL Zertifikaten von StartSSL absichern können lesen, welche Schritte sie unternehmen müssen um die Kommunikation über das HTTPS Protokoll abzusichern.

<VirtualHost gnusocial.serverblogger.ch:80>
  ServerName gnusocial.serverblogger.ch
  DocumentRoot /var/www/gnusocial.serverblogger.ch/public_html
  DirectoryIndex index.php
  <Directory /var/www/gnusocial.serverblogger.ch/public_html>
    AllowOverride All
    Order Deny,Allow
    Allow from all
  </Directory>
</VirtualHost>

Aktivieren Sie die die vhost Konfiguration und starten Sie den Apache neu

sudo a2ensite gnusocial.serverblogger.ch.conf
sudo service apache2 reload

Damit die Installation reibungslos läuft müssen, Sie für die folgenden drei Verzeichnisse noch Zugriffsberechtigungen setzen:

chmod a+w /var/www/gnusocial.serverblogger.ch/public_html/avatar/
chmod a+w /var/www/gnusocial.serverblogger.ch/public_html/background/
chmod a+w /var/www/gnusocial.serverblogger.ch/public_html/file/

Falls es nicht bereits auf Ihrem Server eingeschaltet ist, müssen Sie noch das Apache rewrite Modul aktivieren und die htaccess.sample Datei umbenennen. Sie erhalten dadurch die Möglichkeit .htaccess Dateien zu nutzen und können lesbare URLs (Clean URLs) anbieten.

mv htaccess.sample .htaccess
sudo a2enmod rewrite
sudo service apache2 restart

Webinstaller

Sie können nun Ihre Domain im Browser aufrufen und die Konfigurationseinstellungen festlegen

http://gnusocial.serverblogger.ch/install.php

Nach dem Aufruf startet der Webinstaller mit den wichtigsten Einstellungen.

GNU social Installation
GNU social Installation
Nach einem Klick installiert sich GNU social und ist zur Nutzung bereit!
GNU social Installation erfolgreich
GNU social Installation erfolgreich
Die Installation erinnert ein wenig an WordPress. Es ist wirklich einfach.

Erste Schritte

Melden Sie sich an und füllen Sie ihr Profil aus. Sie können gern auf dem Beispielserver testen (http://gnusocial.serverblogger.ch). Die Einstellungen sind momentan so, daß Sie sich registrieren müssen, um auf die folgenden Beispiele antworten zu können.

So sieht sah die Timeline dann kurz nach dem Installieren aus.

Timeline GNU social
Timeline GNU social

Kontakt mit Anderen

Wenn ich aus unserer Friendica Installation auf dem Beispielserver, die übrigens bereits mit einem TLS Zertifikat versehen ist, einen GNU social Benutzerkonto hinzufügen will, so muss ich mich dort anmelden und in meinen Kontakten einfach [name]@[server] also hagengraf@gnusocial.serverblogger.ch hinzufügen.

Einen Benutzer aus GNU social hinzufügen
Einen Benutzer aus GNU social hinzufügen

Links


tl;dr: GNU social ist eine dezentrale Alternative zu Netzwerken wie Twitter und Facebook.