warum owncloud?

es gibt doch genügend (kostenlose) clouds...

mal ganz ehrlich: dr*pbox & co sind doch eigentlich ne tolle sache, oder ? wenn da nicht mindestens folgenden dinge wären:

  1. es ist nicht (wirklich) kostenlos - irgendeinen preis zahlt man immer
  2. der feind kann zu einfach mithören - auch wenn das oft bestritten wird
wäre es da nicht schön, seine eigene cloud aufzubauen? und dank derinzwischen recht leistungsfähigen mini computer a la raspberry pi geht das auch

owncloud bietet aus meiner sicht den vorteil, dass es sehr viele plugins (erweiterungen) gibt. damit kann man sich seine cloud nach den eigenen wünschen bauen.
neben der eigentlichen cloud nutzen wir auch folgende dinge in der familie:

  • gemeinsame kalender
  • gemeinsame kontakte

installation owncloud 9

was wird benötigt und wie installiere ich owncloud

basis:

  • einen raspberry pi (typ 2 b sollte es schon sein - besser ist der 3er)
  • das aktuelle raspbian image draufpacken
  • image aktualisieren
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get dist-upgrade
    sudo rpi-update
  • webserver und andere benötigten basiskomponenten installieren:
    sudo -s
    apt-get install nginx openssl ssl-cert php5-cli php5-sqlite php5-gd php5-common php5-cgi php5-curl sqlite3 php-pear php-apc curl libapr1 libtool curl libcurl4-openssl-dev php-xml-parser php5 php5-dev php5-gd php5-fpm memcached php5-memcache varnish
    
  • und eine swap datei erstellen bzw vergrößern:
    der SWAP ist ein zwischenspeicher und wird ähnlich wie der rbeitsspeicher behandelt. die SWAP-datei wird dabei auf der SD-karte des pi's abgelegt. als saustregel wird gerne RAM * 2 = SWAP genommen. für die meisten anwendungen auf dem pi genügt der arbeitsspeicher plus 1024 MB an SWAP.
    sudo su -c 'echo "CONF_SWAPSIZE=1024" > /etc/dphys-swapfile'
    sudo dphys-swapfile setup
    #Nachdem die SWAP-File erzeugt wurde, ist diese einmalig zu aktivieren.
    sudo dphys-swapfile swapon

ssl zertifikat erstellen

wir wollen ja verschlüsselt kommunizieren

zunächst erstellen wir ein elbsignierten zertifikat:

openssl req $@ -new -x509 -days 3650 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key

und dann müssen noch die rechte angepasst werden:

chmod 600 /etc/nginx/cert.pem
chmod 600 /etc/nginx/cert.key
das wars schon

nginx konfigurieren

den webserver das zertifikat beibringen

zur sicherheit die original konfiguration wegsichern:

sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default-original

und jetzt neu erstellen und an zwei stellen den namen des pis oder die ip eintragen:

nano /etc/nginx/sites-available/default
					   
upstream php-handler {
 server 127.0.0.1:9000;
 #server unix:/var/run/php5-fpm.sock;
 }

server {
 listen 80;
 server_name [IP-Adresse-Raspberry-Pi-eintragen];
 return 301 https://$server_name$request_uri; # enforce https
 }

server {
 listen 443 ssl;
 server_name [IP-Adresse-Raspberry-Pi-eintragen];

ssl_certificate /etc/nginx/cert.pem;
 ssl_certificate_key /etc/nginx/cert.key;

# Path to the root of your installation
 root /var/www/owncloud;

client_max_body_size 1000M; # 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 ~ ^/(?:\.htaccess|data|config|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(?:$|/) {
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_param HTTPS on;
 fastcgi_pass php-handler;
 }

# 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;
 }

}

php ini anpassen

in der php.ini ist u.a. definiert, wie groß die upload dateien sein dürfen.

für eine cloud lösung sind die standardwarte aber viel zu klein. daher sollten diese nach belieben angepasst werden:

nano /etc/php5/fpm/php.ini
upload_max_filesize = 1000M
post_max_size = 1000M

www.conf anpassen

der listen port in der www.conf muss jetzt ggf noch angepasst werden:

nano /etc/php5/fpm/pool.d/www.conf
listen = 127.0.0.1:9000

damit ist die basiskonfiguration agbeschlossen. jetzt sollten php und webserver durchgestartet werden. so sieht man sofort, wenn ein syntaxfehler o.ä. vorhanden ist.

/etc/init.d/php5-fpm restart
/etc/init.d/nginx restart

owncloud selber installieren

installationsverzeichnis anlegen:

mkdir -p /var/www/owncloud

mittels wget die gewünschte version herunterladen:

wget https://download.owncloud.org/community/owncloud-9.1.0.tar.bz2

und dann entpacken:

tar xvf ./owncloud-9.1.0.tar.bz2

jetzt noch ins www verzeichnis schieben und die rechte anpassen:

mv owncloud/ /var/www/
chown -R www-data:www-data /var/www

einrichtung von owncloud selber

die installation ist fertig. jetzt kann owncloud konfiguriert werden

im browser die adresse oder den namen des pi's eingeben. der browser wird dann mechern, dass keine sichere verbindung vorhanden ist. dieses liegt am selbstsignierten zertifikat. einfach auf erweitert klicken und das zertifikat akzeptieren.

dann muss noch ein administrator user und passwort angegeben werden und fertig sind wir.

zugriff auf kalender und kontakte via iPhone

owncloud kann über caldav und carddav kalender und kontakte synchronisieren

iOS unterstützt caldav und carddav nativ. unter einstellungen -> mail, kontakte, kalender jeweils einen neuen account für kalender und kontakte anlegen.
für iOS 7 als server-URL nur den host angeben. die komplette URL wird dann in den details angegeben.
als account-URL für kalender ist

<Domainname>/remote.php/caldav/principals/<username>/
anzugeben, es werden dann alle kalender synchronisiert.
für kontakte gilt:
<domainname>/remote.php/carddav/principals/<username>/

top