ownCloud mit Nginx und Ubuntu 13.10

Oft sinnierte ich darüber, wie sehr es allerhöchste Eisenbahn ist, seine privaten Daten von den ‘externen Festplatten’ der NSA abzuziehen. X dienliche Projekte gibt es für den kleinen Admin von der Straße und der aktuellen Misere wegen entstehen gegenwärtig y weitere Projekte. Alles, damit wir hoffentlich bald mehr selbstverwaltete und leicht zu verstehende Serverlösungen haben.

Eine hoffnungsvolle Geschichte da draußen scheint ownCloud zu sein, welches vom KDE-Entwickler Frank Karlitschek im Jahre 2010 veröffentlicht wurde. Mittlerweile ist das Projekt ganz ambitioniert in der Mache, so mit CEO, President und Co. Ganz treffend redet die ownCloud Inc. von der ‘Dropbox-Falle‘.

Leider nicht in C implementiert

Man kann ja schließlich nicht alles haben… Da die kostenlose und unter der AGPLv3 (und GPL) Lizenz vertriebene ownCloud Community Edition ein PHP-Dingens ist, kann man es ganz simpel auf den Webserver werfen, was vorzugsweise natürlich Nginx wäre. Standardmäßig werden die Daten von ownCloud per SQLite eingepflegt, alternativ kann man die eigene Wolke mit einer PostgreSQL oder einer MySQL Datenbank verknüpfen.

Interessant wird ownCloud dadurch, dass es den Anwendungsmix der meisten Nutzer abdecken dürfte. Für jeden lokalen Account speichert ownClooud Dokumente, das Adressbuch, den Kalender, den Aufgabenplaner, die Lesezeichen und vieles mehr. Direkt auf dem ownCloud Server eingeloggt, steht ganz zeitgemäß ein Application Store zur Verfügung, über den sich geschwind und simpel Erweiterungen laden und aktivieren lassen. Löbliche Technologien wie WebDAV, CalDAV und CardDAV machen den Datenbestand von außen in standardisierter Form zugänglich. Sogar an eine Dateiverschlüsselung wurde gedacht.

Doch es muss nicht gleich gebastelt werden: ownCloud stellt fertige Desktop Applikationen für Mac, Linux und W****** zum Download bereit.

Smartphone Apps für den mobilen Abgleich

Für kleines Geld bietet die ownCloud Inc. auch gleich eine eigene App (iOS und Android) für den Zugriff auf die persönliche ownCloud und den entsprechenden Abgleich mit dem Smartphone. Unter Android lässt sich alternativ auch gut DAVdroid als Client hernehmen.

ownCloud Server unter Ubuntu 13.10 & Nginx installieren

Nachfolgend zeigen wir kurz auf, wie sich ownCloud schnell auf einem Ubuntu Server, lauschend auf die fiktive Domain wolkenbeispiel.com, in Gang bringen lässt. Erfreulicherweise gibt ein entsprechendes Debian Paket. Warum das so erfreulich ist (?) und warum man nicht alles von Hand machen sollte?
Na, weil apt-get des Glückes Wegbereiter ist.

Wir arbeiten als root. Zunächst pflegen wir die Paketquelle in die sources.list ein:

echo 'deb http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_13.10/ /' >> /etc/apt/sources.list.d/owncloud.list

Wir holen den passenden Signatur-Schlüssel und pflegen diesen ein:

wget http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_13.10/Release.key
apt-key add - < Release.key

Her mit dem ownCloud Server. Im Einzelfall sind auf dem jeweiligen System individuelle Abhängigkeiten aufzulösen. Das ganze liegt danach unter /var/www/owncloud:

apt-get update && apt-get install owncloud php5-json

Da der Zugang stets über SSL laufen soll, erzeugen wir in /etc/ssl/nginx ein selbstsigniertes Zertifikat:

openssl genrsa -out wolkenbeispiel.key 2048
openssl req -new -key wolkenbeispiel.key -out wolkenbeispiel.csr
openssl genrsa -out wolkenbeispiel.key 2048
openssl x509 -req -days 365 -in wolkenbeispiel.csr -signkey wolkenbeispiel.key -out wolkenbeispiel.crt

Jetzt erzeugen wir die Nginx Konfigurationsdatei wolkenbeispiel.com, welche unseren ownCloud Server allein über SSL erreichbar macht und speichern diese unter /etc/nginx/sites-enabled:

server {
listen 80;
server_name wolkenbeispiel.com;
return 301 https://$server_name$request_uri;
}

server {

listen wolkenbeispiel.com:443;
server_name wolkenbeispiel.com;
ssl on;

ssl_certificate /etc/ssl/nginx/wolkenbeispiel.crt;
ssl_certificate_key /etc/ssl/nginx/wolkenbeispiel.key;

root /var/www/owncloud/;

client_max_body_size 10G; # set max upload size
fastcgi_buffers 64 4K;

rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

index index.php;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

location ~ ^/(
data|config|\.ht|db_structure\.xml|README) {
deny all;
}

location / {
# The following 2 rules are only needed with webfinger
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

try_files $uri $uri/ index.php;
}

location ~ ^(.+?\.php)(/.*)?$ {
try_files $1 = 404;

include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$1;
fastcgi_param PATH_INFO $2;
fastcgi_param HTTPS on;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}

# Optional: set long EXPIRES header on static assets
location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires 30d;
# Optional: Don't log access to assets
access_log off;
}
}

Jetzt ein kleiner Neustart von Nginx:

/etc/init.d/nginx restart

Nun geschwind im Browser https://wolkenbeispiel.com/ aufrufen und den Rest supi-komfortabel erledigen.

Viel Spaß beim Probieren mit ownCloud!

Previous Article

Der Snowden-Effekt: Die Welt sehen, wie sie ist

Next Article

Das ASRock B75 Pro3-M als Basis für Um- und Aufrüster mit kleinem Budget