Running ownCloud3 On Nginx (LEMP) On Debian Squeeze/Ubuntu 11.10

Version 1.0
Author: Falko Timme
Follow me on Twitter

This tutorial shows how you can install and run ownCloud3 on a Debian Squeeze or Ubuntu 11.10 system that has nginx installed instead of Apache (LEMP = Linux + nginx (pronounced "engine x") + MySQL + PHP). ownCloud enables universal access to files through the widely implemented WebDAV standard, providing a platform to easily view and sync contacts, calendars and bookmarks across devices while supporting sharing, viewing and editing via the web interface. It offers the ease-of-use of Dropbox and without vendor lock in. ownCloud users can run its file sync and share services on their own hardware. nginx is a HTTP server that uses much less resources than Apache and delivers pages a lot of faster, especially static files.



1 Preliminary Note

I want to install ownCloud3 in a vhost called here with the document root /var/www/


A note for Ubuntu users:


sudo su


2 Configuring PHP


APC can be installed as follows:

apt-get install php-apc

We also need to install the following prerequisites for ownCloud3 to work:

apt-get install php5-sqlite php5-common mp3info curl libcurl3 libcurl4-openssl-dev php5-curl zip

Now we must configure PHP to allow big uploads - the default value is 2MB which is not much for your own cloud. I want to raise this limit to 512MB. Open your php.ini - if you use PHP-FPM, it is /etc/php5/fpm/php.ini...

vi /etc/php5/fpm/php.ini

... and if you use spawn-fcgi, it is /etc/php5/cli/php.ini:

vi /etc/php5/cli/php.ini
memory_limit = 512M
post_max_size = 512M
upload_max_filesize = 512M


/etc/init.d/php5-fpm restart


netstat -tap


[email protected]:~# netstat -tap
Active Internet connections (servers and established)
tcp        0      0 localhost.localdom:smtp *:*                     LISTEN      1507/exim4
tcp        0      0 localhost.localdo:mysql *:*                     LISTEN      1168/mysqld
tcp        0     52      ESTABLISHED 1557/0
[email protected]:~#


kill -9 1542

Afterwards we create a new spawn-fcgi process:



3 Installing ownCloud3


mkdir -p /var/www/

Next we download ownCloud3 as a .tar.bz2 file from and place it in our document root:

cd /tmp
wget -O owncloud-3.0.0.tar.bz2
tar xvfj owncloud-3.0.0.tar.bz2
cd owncloud/
mv * /var/www/
mv .htaccess /var/www/

It is recommended to make the document root and the ownCloud3 files in it writable by the nginx daemon which is running as user www-data and group www-data:



vi /etc/nginx/sites-available/
server {
       listen 80;
       root /var/www/;
       if ($http_host != "") {
                 rewrite ^$request_uri permanent;
       # This is to avoid a "Request Entity Too Large" error
       client_max_body_size 1000M;
       index index.php index.html index.htm;
       dav_methods PUT DELETE MKCOL COPY MOVE;
       create_full_put_path on;
       dav_access user:rw group:rw all:r;
       location = /favicon.ico {
                log_not_found off;
                access_log off;
                expires max;
       location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
       # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
       location ~ /\. {
                deny all;
                access_log off;
                log_not_found off;
       location / {
                index index.php;
                try_files $uri $uri/ @webdav;
       location @webdav {
                fastcgi_split_path_info ^(.+.php)(/.+)$;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include /etc/nginx/fastcgi_params;
                #fastcgi_param HTTPS on;
       location ~ \.php$ {
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_index index.php;

To enable the vhost, we create a symlink to it from the /etc/nginx/sites-enabled/ directory:

cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/

Reload nginx for the changes to take effect:

/etc/init.d/nginx reload

Now we can launch the web-based ownCloud3 installer by going to - all you have to do is provide a username (e.g. admin) and password for the ownCloud admin account:

That's it already - ownCloud3 is installed, and you can start uploading files, creating contacts, etc.

Under Personal ( you can find URLs for using ownCloud with WebDAV, CalDAV, and CardDAV:

One note for WebDAV users under Windows: on Windows XP SP3 I had the following problem: when I used the WebDAV URL, I couldn't log into WebDAV although my username and password were correct. By using instead I could log in, but got an infinite folder recursion problem. I could solve both problems by using - see (including the second comment).



About The Author


Share this page:

Suggested articles

3 Comment(s)

Add comment


By: cr0nicz

vi /etc/php5/cli/php.ini 


 vi /etc/php5/cgi/php.ini


By: Anonymous

nginx: [emerg] unknown directive "dav_methods" in /etc/nginx/nginx.conf:45

By: matthias

in the new version of owncloud makes the rewrite rules problems. It redirects everytime to the "create Admin" site. If you have this problem, just delete this rule