ownCloud 4.5 in FreeNAS 8 Plugins-Jail oder FreeBSD installieren

Es existiert eine vereinfachte und aktualisierte Version dieses Artikels: ownCloud 5 in FreeNAS 9.1 Jail oder FreeBSD installieren

Der FreeNAS Wiki-Artikelabschnitt Installing the Plugins Jail erläutert die Installation der Plugins-Jail.

Verbindet man sich danach via SSH zur FreeNAS-Box, kann man mittels Befehl “jexec 1 tcsh” in die entsprechende Jail wechseln und die notwendige Installation vornehmen.
Achtung: Die Ziffer variiert. Die korrekte kann man mit dem Befehl “jls” herausfinden.

Der anschließende Installationsverlauf funktioniert gleich wie außerhalb einer FreeBSD-Jail und ist im Folgenden erläutert. Die Anleitung ist mit FreeNAS 8.2 getestet.

Warnung vor möglichem Datenverlust

Ein späteres Update der Plugins-Jail führt zum Verlust der hier beschriebenen Einrichtung und der darin befindlichen persönlichen ownCloud-Daten.

Um das zu verhindern, könnte eine gesonderte Jail exklusiv für ownCloud eingerichtet werden.

Die bessere Integration in die FreeNAS-Weboberfläche spricht allerdings für die Nutzung der Plugins-Jail. Regelmäßige Datensicherungen in Kombination mit dieser Anleitung erleichtern das erneute Einrichten nach einem Update.

Diese Anmerkung bezieht sich ausschließlich auf Updates in der Plugins-Jail. Updates des FreeNAS-Hauptsystems können wie gewohnt durchgeführt werden, da diese die Jails grundsätzlich unberührt lassen.

Ports-Tree aktualisieren und Konflikt-Pakete entfernen

portsnap fetch extract
pkg_delete -f perl-5.12.4_3 pkg-config-0.25_1 pcre-8.21

portsnap(8), pkg_delete(1)

ownCloud aus den Ports installieren

Beim Verfassen dieses Artikels ist 4.0.7 die aktuelle ownCloud-Version in den Ports.

Obwohl letztendlich ownCloud 4.5.0 installiert werden soll, bringt die Installation aus den Ports zwei Vorteile: Einerseits werden dabei annähernd alle Paketabhängigkeiten konfiguriert und installiert. Zieht die Version aus den FreeBSD-Ports einst nach, erhält man zudem passende portaudit Berichte.

Beim Konfigurieren des PHP-Ports in folgendem Schritt muss Build FPM version ausgewählt sein. CLI und CGI können abgewählt werden.

cd /usr/ports/www/owncloud
make config-recursive
make install clean

Zusätzliche Abhängigkeiten installieren

Sowohl zlib als auch iconv werden von ownCloud benötigt.

cd /usr/ports/archivers/php5-zlib && make install clean
cd /usr/ports/converters/php5-iconv && make install clean

ownCloud 4.5.0 installieren

cd /usr/local/www/
fetch http://download.owncloud.org/releases/owncloud-4.5.0.tar.bz2
tar xjf owncloud-4.5.0.tar.bz2 -C /root/
mv /root/owncloud /usr/local/www/owncloud-4.5
chown -R www:www /usr/local/www/owncloud-4.5

fetch(1), tar(1)

PHP-FPM auf Socket umstellen und Transfer-Limits erhöhen

# PHP-FPM auf Socket umstellen
sed -i '' -e 's/^listen =.*/listen = \/var\/run\/php-fpm.sock/g' /usr/local/etc/php-fpm.conf

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

# Größere Uploads ermöglichen
sed -i '' -e 's/^post_max_size =.*/post_max_size = 300M/g' /usr/local/etc/php.ini
sed -i '' -e 's/^upload_max_filesize =.*/upload_max_filesize = 200M/g' /usr/local/etc/php.ini

# Größere Downloads für Client-Apps ermöglichen (siehe untenstehende Anmerkung)
sed -i '' -e 's/^memory_limit =.*/memory_limit = 512M/g' /usr/local/etc/php.ini

sed(1)

Anmerkung zu memory_limit

Vor dem Herunterladen mittles ownCloud Client-App (beispielsweise auf Android), wird die betreffende Datei zuerst gänzlich in den Hauptspeicher geladen. Ist die Datei größer als das konfigurierte memory_limit, schlägt der Download mit folgender Meldung fehl:

PHP message: PHP Fatal error: Allowed memory size of ${memory_limit} bytes exhausted

An Stelle von ${memory_limit} wird dabei der enstprechend konfigurierte Wert ausgegeben.
Dieses Verhalten wurde zuletzt in ownCloud Version 4.5.1 verifiziert.

nginx installieren

Beim Konfigurieren des nginx-Ports in folgendem Schritt muss Enable http_ssl module ausgewählt sein.

cd /usr/ports/www/nginx && make install clean

SSL Zertifikat für nginx erzeugen

Eine rasche Methode hierfür ist im Beitrag SSL Zertifikat erzeugen und direkt in die nginx.conf übernehmen erklärt.

nginx konfigurieren

Um sämtliche Funktionen von ownCloud nutzen zu können, müssen im server-Abschnitt (HTTPS) der /usr/local/etc/nginx/nginx.conf die kommentierten Bereiche freigestellt und folgende Einträge an Stelle der vorhandenen location-Direktiven eingefügt werden.

        root /usr/local/www/owncloud-4.5;
        client_max_body_size 200m;

        location / {
                index  index.html index.htm index.php;
                # http://forum.owncloud.org/viewtopic.php?f=3&t=2952&p=7158#p7157
                rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
                rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
                rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
                rewrite ^/apps/calendar/caldav.php /remote.php/caldav/ last;
                rewrite ^/apps/contacts/carddav.php /remote.php/carddav/ last;
                rewrite ^/apps/([^/]*)/(.*\.(css|php))$ /index.php?app=$1&getfile=$2 last;
                rewrite ^/remote/(.*) /remote.php/$1 last;

                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param   SCRIPT_NAME     $fastcgi_script_name;
                fastcgi_param   PATH_INFO       $fastcgi_path_info;

                try_files $uri $uri/ @webdav;
        }

        location ~ \.php$ {
                # http://bugs.owncloud.org/thebuggenie/owncloud/issues/oc-902#comment_1_904_8388
                #fastcgi_split_path_info ^(.+\.php)(/.*)$;
                include         fastcgi_params;
                fastcgi_pass    unix:/var/run/php-fpm.sock;
                fastcgi_index   index.php;

                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param   SCRIPT_NAME     $fastcgi_script_name;
                fastcgi_param   PATH_INFO       $fastcgi_path_info;

                try_files $uri =404;
        }

        # owncloud WebDAV
        location @webdav {
                fastcgi_split_path_info ^(.+\.php)(/.*)$;
                fastcgi_pass    unix:/var/run/php-fpm.sock;

                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param   SCRIPT_NAME     $fastcgi_script_name;
                fastcgi_param   PATH_INFO       $fastcgi_path_info;

                fastcgi_param   HTTPS on;
                include         fastcgi_params;
        }

nginx und PHP-FPM dauerhaft aktivieren und starten

echo 'nginx_enable="YES"' >> /etc/rc.conf
echo 'php_fpm_enable="YES"' >> /etc/rc.conf

/usr/local/etc/rc.d/php-fpm start
/usr/local/etc/rc.d/nginx start

echo(1), rc.conf(5)

Zur ownCloud-Weboberfläche verbinden

Nun kann man sich via Browser zur ownCloud-Installation verbinden und die Software in vollem Umfang nutzen.

Die entsprechende IP-Adresse der Plugins-Jails kann man in der FreeNAS-Weboberfläche unter Services > Plugins > Management > Settings einsehen.

Tipp: Ein weiterer Artikel beschreibt, wie man die Dateien aus FreeNAS direkt in ownCloud verfügbar machen kann.