Owncloud

Hier möchte ich kurz aufzeigen wie owncloud auf einem Raspberry nebst einem SSL-Zertifikat für den sicheren Zugriff installiert wird. In diesem Artikel gehe ich davon aus das ein betriebsbereiter Raspberry, mit einer SD-Karte, und installiertem Whezzy vorhanden ist. Weiterhin setze ich eine Verbindung zum Internet und einen SSH-Zugang auf den Pi voraus. Alternativ könnt ihr ihn selbstverständlich mit HDMI an einem Monitor oder TV betreiben. Ich setze hierfür das Model B ein, aber die grundlegenden Schritte bleiben zu dem Model A gleich. In Anbetracht meiner Anforderung und aus Gründen der Skalierbarkeit kommt bei mir sqlite und Apache2 zum Einsatz. Alternativ kann natürlich auch mit einer MySQL-Datenbank und/oder nginx gearbeitet werden. Befehle werden in ” ” gesetzt, diese sind nicht mit anzugeben.

Zuerst wollen wir die installierten Pakete aktualisieren. Die geschieht mit “sudo apt-get update“, ein folgendes “sudo apt-get upgrade” installiert die neuesten Pakete. Eventuelle Abhängigkeiten werden automatisch mit aufgelöst. Mit “sudo groupadd www-data” und “sudo usermod -a -G www-data www-data” wird eine Gruppe erstellt und der Benutzer der Gruppe hinzugefügt.
Mit “sudo apt-get install apache2 php5 php5-gd php5-sqlite php5-curl php5-json php5-common php5-intl php-pear php-apc php-xml-parser libapache2-mod-php5 curl libcurl3 libcurl3-dev sqlite
werden die benötigten Pakete (samt Abhängigkeiten) geholt und installiert. Dies dauert je nach Downloadgeschwindigkeit. Bei mir hat das einlesen der Pakete und aktualisieren der man-DB am längsten gedauert.
Nun können wir in der apache.conf noch den Host eintragen. “sudo nano /etc/apache2/apache2.conf” Am Ende der Datei wird ein “ServerName owncloud” geschrieben. Das gleiche machen wir noch in der hosts-Datei. “sudo nano /etc/hosts” Hier kommt am Ende noch “127.0.1.1       owncloud” hinzu.
Nun müssen Wir owncloud natürlich noch die benötigten Rechte gewähren:
sudo nano /etc/apache2/sites-enabled/000-default“.

In der www-Selektion “AllowOverride None” zu “AllowOverride All” ändern.
Das ganze sollte nun so aussehen:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

Nun können wir noch die php.ini anpassen damit auch größere Dateien hochgeladen werden können.
sudo nano /etc/php5/apache2/php.ini
Hier passen wir “upload_max_filesize” und “post_max_size” an, indem wir ein “2G” reinschreiben. Somit können später Dateien bis 2GB zu owncloud hochgeladen werden.
Kleiner Tipp: Da die php.ini sehr groß ist, könnt ihr euch eine Menge Arbeit sparen indem ihr die Textpassagen mit <Strg> + W sucht.

Falls Ihr vorhabt eine kleine Webseite auf dem Raspberry unter dem Apache zu hosten, braucht ihr folgende Schritte nicht zu machen. Alle anderen fahren mit “sudo rm /var/www/index.html” fort. Damit wird die index.html aus dem Apache-Directory gelöscht. Danach aktivieren wir noch die Apache Rewrite Engine mit folgenden Befehlen:
sudo a2enmod rewrite” und “sudo a2enmod headers
Nun starten wir Apache neu und können mit der Installation von Qwncloud fortfahren “sudo /etc/init.d/apache2 restart”
Egal ob eine Webseite gehostet werden soll oder nicht, die folgenden Schritte zählen wieder für beide Szenarien.

cd
Herunterladen von owncloud: “wget http://download.owncloud.org/community/owncloud-6.0.2.tar.bz2” (Als diese Anleitung erstellt wurde, war die 6.0.2 aktuell. Bitte unter owncloud.org nachsehen welche Version jetzt aktuell ist und den Befehl dementsprechend anpassen.) Mit “tar xvf owncloud-6.0.2.tar.bz2” wird das eben heruntergeladene Archiv entpackt.
Nun verschieben wir Owncloud von dem Download-Verzeichnis in das Webverzeichnis                “sudo mv owncloud/* /var/www
sudo mv owncloud/.htaccess /var/www
Als letztes löschen wir den Download und geben wir dem User “www-data” noch die benötigten Rechte:
rm -rf owncloud owncloud-6.0.2.tar.bz2
sudo chown -R www-data:www-data /var/www

Die eigentliche Installation ist damit abgeschlossen, und kann lokal unter <IP-Adresse>/owncloud aufgerufen werden. Falls Ihr die index.html gelöscht habt, ist nur die Angabe der IP-Adress des Raspberrys nötig.
Ich persönlich habe da aber lieber noch eine SSL-Verschlüsselung dahinter:

Zertifikate erstellen:

  • sudo mkdir -p /etc/apache2/ssl
  • sudo openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
  • sudo ln -sf /etc/apache2/ssl/apache.pem /etc/apache2/ssl/`/usr/bin/openssl x509 -noout -hash < /etc/apache2/ssl/apache.pem`”
  • sudo chmod 600 /etc/apache2/ssl/apache.pem

 

Die Zahl “365” weist die Gültigkeit für das Zertifikat an. Es kann z. B. auch “3650” eingetragen werden, dann habt ihr eben ein Zertifikat das 10 Jahre sein Gültigkeit behält. Ob dabei aber auch der Raspberry mitspielt wage ich zu bezweifeln. 🙂

  • sudo nano /etc/apache2/ports.conf

In diese Datei kopieren wir nun folgenden Angaben hinein:

Listen 192.168.x.y:80
<IfModule mod_ssl.c>
Listen 443
</IfModule>

Bei der Angabe <Listen 443> kann auch ein alternativer Port angegeben werden.
Apache neustarten: “sudo service apache2 reload

SSL einschalten und ein “force-reload”

  • sudo a2enmod ssl
  • sudo service apache2 force-reload

SSL auf die Webseite legen:

  •  “sudo nano /etc/apache2/sites-available/ssl”
    Folgende Angaben werden in diese Datei kopiert:

<virtualhost *:443>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
DocumentRoot /var/www/owncloud
</virtualhost>

Abschließend noch:

  • sudo a2ensite ssl
  • sudo service apache2 force-reload”

Jetzt kann zur Sicherheit der Rasperry mit “sudo reboot” neu gestartet werden. Im Broser nun https://<IP-Adresse des PI>:Port aufrufen und owncloud sollte euch über eine verschlüsselte Verbindung begrüßen.
Wollt Ihr jetzt die owncloud-Instanz auch von extern zugänglich machen, so sind noch die Portfreigaben im Router zu definieren.Portfreigabe_x SSLx                                                                           Ein Aufruf mit z. B. Thunderbird Firefox sollte euch nun unter dem kleinen Vorhängeschloß in der Adresszeile folgendes anzeigen: