Difference between revisions of "OwnCloud"

From ArchWiki
Jump to: navigation, search
m
(Installation)
(6 intermediate revisions by 3 users not shown)
Line 8: Line 8:
  
 
{{AUR|owncloud}} is available in the [[AUR]].
 
{{AUR|owncloud}} is available in the [[AUR]].
# First of all set up the [[LAMP]] stack. You will probably need to install the MDB2 pear package as well: {{ic|# pear install mdb2}}
+
# First of all set up the [[LAMP]] stack. You will probably need to install the MDB2 pear package as well:
 +
{{ic|# pacman -S php-pear}}
 +
and
 +
{{ic|# pear install mdb2}}
 
# Install the {{AUR|owncloud}} package as described in [[AUR#Installing_packages|AUR wiki page]].
 
# Install the {{AUR|owncloud}} package as described in [[AUR#Installing_packages|AUR wiki page]].
 
# Copy {{ic|/usr/share/doc/owncloud/examples/apache.conf_example}} to {{ic|/etc/httpd/conf/extra/owncloud.conf}} (if using owncloud-git)
 
# Copy {{ic|/usr/share/doc/owncloud/examples/apache.conf_example}} to {{ic|/etc/httpd/conf/extra/owncloud.conf}} (if using owncloud-git)
Line 108: Line 111:
 
== Nginx + uwsgi_php alternative ==
 
== Nginx + uwsgi_php alternative ==
  
You can avoid the use of Apache, and run owncloud in it's own process by using the [https://aur.archlinux.org/packages.php?ID=63798 wsgi_php] application server. uWSGI itself has a wealth of features to limit the resource use, and to harden the security of the application, and by being a separate process it can run under its own user.
+
You can avoid the use of Apache, and run owncloud in it's own process by using the [https://www.archlinux.org/packages/uwsgi-plugin-php wsgi_php] application server. uWSGI itself has a wealth of features to limit the resource use, and to harden the security of the application, and by being a separate process it can run under its own user.
  
 
The nginx config is:
 
The nginx config is:
Line 129: Line 132:
 
     root /usr/share/webapps/owncloud;
 
     root /usr/share/webapps/owncloud;
 
     index index.php;
 
     index index.php;
 +
    rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
 +
    rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
 
}
 
}
 
</nowiki>}}
 
</nowiki>}}
Line 203: Line 208:
 
  Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.
 
  Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.
  
In order to circumvent this problem a few solutions are available. One is to turn off the {{Ic|VERYFIPEER}}-parameter in cURL which is strongly discouraged as it will effectively render any encryption useless (see: https://github.com/owncloud/core/issues/1909#issuecomment-14107259).
+
Assuming that you followed the [[LAMP]]-tutorial, execute the following steps:
 
+
A better way is to trust your own certificate. Assuming that you followed the [[LAMP]]-tutorial, execute the following steps:
+
  
 
Create local directory for non-distribution certificates and copy [[LAMP]]s certificate there. This will prevent {{Ic|ca-certificates}}-updates to overwrite it.
 
Create local directory for non-distribution certificates and copy [[LAMP]]s certificate there. This will prevent {{Ic|ca-certificates}}-updates to overwrite it.

Revision as of 08:59, 27 October 2013

From Wikipedia:

ownCloud is a software suite that provides a location-independent storage area for data (cloud storage).

Installation

owncloudAUR is available in the AUR.

  1. First of all set up the LAMP stack. You will probably need to install the MDB2 pear package as well:

# pacman -S php-pear and # pear install mdb2

  1. Install the owncloudAUR package as described in AUR wiki page.
  2. Copy /usr/share/doc/owncloud/examples/apache.conf_example to /etc/httpd/conf/extra/owncloud.conf (if using owncloud-git)
  3. Add the following lines into /etc/httpd/conf/httpd.conf (php5 should have been configured during the LAMP stack setup):
 Include /etc/httpd/conf/extra/owncloud.conf
 LoadModule php5_module modules/libphp5.so
 Include conf/extra/php5_module.conf

Uncomment extensions in /etc/php/php.ini:

 gd.so
 intl.so
 openssl.so
 xmlrpc.so
 zip.so
 iconv.so

Depending on which database backend you are going to use uncomment either one of the following extensions in /etc/php/php.ini:

 sqlite.so
 sqlite3.so
 pdo_sqlite.so

or:

 mysql.so
 mysqli.so
 pdo_mysql.so

Now restart httpd (Apache) and open http://localhost in your browser. You should now be able to create a user account and follow the installation wizard.

Custom configurations

Filesize limitations

With the default configuration ownCloud only allows the upload of filesizes less than 2MB. This can be changed by changing the following line in /etc/php/php.ini to your liking.

As of version 4.0 this is no longer necessary! The maximum upload size is now set via the ownCloud gui

 upload_max_filesize = 2M

As of version 4.5, upload limits are set in /usr/share/webapps/owncloud/.htaccess. This won't work if PHP is set up to run as CGI, so you need to change the limits in /etc/php/php.ini. You also need to change open_basedir.

upload_max_filesize = 512M
post_max_size = 512M
memory_limit = 512M
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/

Running ownCloud in a subdirectory

By including the default owncloud.conf in httpd.conf, owncloud will take control of port 80 and your localhost domain. If you would like to have owncloud run in a subdirectory, then skip the 'Include /etc/httpd/conf/extra/owncloud.conf' line altogether and just use a symbolic link like so:

# ln -s /usr/share/webapps/owncloud/ /srv/http/

In that case, you'll also have to ensure /usr/share/webapps is in the open_basedir line of php.ini, and that per-directory .htaccess files are read by apache.

Alternatively, you could follow the standard procedure, but comment out the VirtualHost part of the include file, and skip the symlink/basedir/htaccess part.

Filling ownCloud with data

Small files

WebDav

Always use WebDAV or the web interface to add new files to your ownCloud. Otherwise they will not show up correctly, as they do not get indexed right. No further configuration is necessary to enable WebDAV uploads in ownCloud.

Consider installing and enabling php-apc to speed up WebDAV.

SABnzbd

When using SABnzbd, you might want to set

folder_rename 0

in your sabnzbd.ini file, because ownCloud will scan the files as soon as they get uploaded, preventing SABnzbd from removing UNPACKING prefixes etc.

Big files

WebDAV isn't suitable for big files, because it fills up all the RAM and CPU.

With the current version, it looks like, there is no good way of copying huge amounts of data to your ownCloud.

Here's a Workaround:

Copy the files directly to your ownCloud and do a full re-scan of your database (you could use the Re-scan filesystem add-on for example).

But beware that this will not work as easily in the future, when end-to-end encryption gets added to ownCloud (this is a planned feature).

Important notes

  • When using a subdomain (like cloud.example.net), make sure it is covered by your certificate. Otherwise, connection via the owncloud client or webdav might fail.
  • If you are planning on using OwnCloud's sync-clients, make sure to have NTP installed and running on your OwnCloud server, otherwise the sync-clients will fail.

(If adding SSL encryption as above, be sure to edit /etc/httpd/conf/extra/httpd-ssl.conf and change DocumentRoot "/srv/http" to DocumentRoot "/usr/share/webapps/owncloud" )

  • More Apps for ownCloud can be found here
  • To install an new application, download the zip from the apps store, extract it into /srv/http/owncloud/apps/.

Afterwards restart httpd:

systemctl restart httpd

log into your server go to the app sections you should see the new apps in there,

Nginx + uwsgi_php alternative

You can avoid the use of Apache, and run owncloud in it's own process by using the wsgi_php application server. uWSGI itself has a wealth of features to limit the resource use, and to harden the security of the application, and by being a separate process it can run under its own user.

The nginx config is:

#this is to avoid Request Entity Too Large error
client_max_body_size 1000M;
# deny access to some special files
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
    deny all;
}
# pass all .php or .php/path urls to uWSGI
location ~ ^(.+\.php)(.*)$ {
    include uwsgi_params;
    uwsgi_modifier1 14;
    uwsgi_pass 127.0.0.1:3001;
}
# everything else goes to the filesystem,
# but / will be mapped to index.php and run through uwsgi
location / {
    root /usr/share/webapps/owncloud;
    index index.php;
    rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
    rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
}

The uWSGI /etc/uwsgi/owncloud.ini config file (run it with uwsgi_php --ini /etc/uwsgi/owncloud.ini):

[uwsgi]
socket = 127.0.0.1:3001
master = true
chdir = /srv/http/owncloud
php-docroot = /usr/share/webapps/owncloud
php-index = index.php

# only allow these php files, I don't want to inadvertently run something else
php-allowed-ext = /index.php
php-allowed-ext = /public.php
php-allowed-ext = /remote.php
php-allowed-ext = /cron.php
php-allowed-ext = /status.php
php-allowed-ext = /settings/apps.php
php-allowed-ext = /core/ajax/update.php
php-allowed-ext = /core/ajax/share.php
php-allowed-ext = /core/ajax/requesttoken.php
php-allowed-ext = /core/ajax/translations.php
php-allowed-ext = /search/ajax/search.php
php-allowed-ext = /search/templates/part.results.php
php-allowed-ext = /settings/admin.php
php-allowed-ext = /settings/users.php
php-allowed-ext = /settings/personal.php
php-allowed-ext = /settings/help.php
php-allowed-ext = /settings/ajax/getlog.php
php-allowed-ext = /settings/ajax/setlanguage.php
php-allowed-ext = /settings/ajax/setquota.php
php-allowed-ext = /settings/ajax/userlist.php
php-allowed-ext = /settings/ajax/createuser.php
php-allowed-ext = /settings/ajax/removeuser.php
php-allowed-ext = /settings/ajax/enableapp.php
php-allowed-ext = /core/ajax/appconfig.php

php-set = date.timezone=Europe/Skopje
php-set = open_basedir=/srv/http/owncloud:/tmp/:/usr/share/pear/:/usr/share/webapps/owncloud

processes = 10
cheaper = 2
cron = -1 -1 -1 -1 -1 /usr/bin/curl -H https://localhost/cron.php

Finally, a simple systemd unit file to start the uwsgi instance can be (this is without using the emperor):

[Unit]
Description=OwnCloud service via uWSGI-PHP

[Service]
User=http
ExecStart=/usr/bin/uwsgi_php --ini /etc/uwsgi/owncloud.ini
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=SIGQUIT
Restart=always

[Install]
WantedBy=multi-user.target

Sync Clients

The offical clients can be found in this page : Sync Clients Also take notice that while the offical owncloud android app is a payed app on the play store, it is not a payed app on F-Droid.

Troubleshooting

Self-signed certificate not accepted

OwnCloud uses Wikipedia:cURL and Wikipedia:SabreDAV to check if WebDAV is enabled. If you use a SSL/TLS with a self-signed certificate, e.g. as shown in LAMP and access ownClouds admin panel, you will see the following error message:

Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.

Assuming that you followed the LAMP-tutorial, execute the following steps:

Create local directory for non-distribution certificates and copy LAMPs certificate there. This will prevent ca-certificates-updates to overwrite it.

$ mkdir -p /usr/local/share/ca-certificates
$ cp /etc/httpd/conf/server.crt /usr/local/share/ca-certificates/WWW.EXAMPLE.COM.crt

Add WWW.EXAMPLE.COM.crt to /etc/ca-certificates.conf:

WWW.EXAMPLE.COM.crt

Now, regenerate your certificate store:

$ update-ca-certificates

Restart the httpd service to activate your certificate.

Can't create data directory (/path/to/dir)

Check your httpd conf file (like owncloud.conf). Add your data dir to

php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"

Restart the httpd service to activate the change.

CSync faild to find a specific file.

Most probably a certificate issue, recreate it, and don't leave the common name empty or you will see the error again.

openssl genrsa -out server.key 2048
openssl req -new -key server.key -x509 -days 365 -out server.crt

Seeing white page after login

The cause is probably a new app that you installed, to fix that you can either use phpMyAdmin by editing the oc_appconfig table(in the case you got lucky and the table has edit option) or do it by hand with mysql:

mysql -u root -p owncloud
MariaDB [owncloud]> delete from oc_appconfig where appid='<nameOfExtension>' and configkey='enabled' and configvalue='yes'
MariaDB [owncloud]> insert into oc_appconfig (appid,configkey,configvalue) values ('<nameOfExtension>','enabled','no');

This should delete the relevant configuration from the table and add it again.