Bananapi - owncloud install

Guide

  • apt-get -y update
  • apt-get -y upgrade
  • apt-get install mysql-server -y
  • mysql -u root -p
CREATE DATABASE owncloud;
CREATE USER owncloud@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON owncloud.* TO owncloud@localhost;
FLUSH PRIVILEGES;
exit
  • sudo apt-get install php5-mysql openssl ssl-cert php5-cli php5-common php5-cgi php-pear php-apc curl libapr1 libtool php5-curl libcurl4-openssl-dev php-xml-parser php5-dev php5-gd memcached php5-memcached -y
  • apt-get install php5-fpm nginx -y
  • mkdir -p /var/www/owncloud
  • cd /var/www/
  • wget https://download.owncloud.org/community/owncloud-8.2.2.tar.bz2
  • apt-get install bzip2
  • tar -xf owncloud-8.2.2.tar.bz2
  • chown -R www-data:www-data /var/www
  • rm -f owncloud-8.2.2.tar.bz2
  • mkdir -p /etc/nginx/ssl
  • openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /etc/nginx/ssl/owncloud.key -out /etc/nginx/ssl/owncloud.crt
  • vi /etc/nginx/sites-available/owncloud
upstream php-handler {
  #server 127.0.0.1:9000;
  server unix:/var/run/php5-fpm.sock;
}

server {
  listen 80;
  server_name bananapi.owncloud.al, 192.168.256.314;
  # enforce https
  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl;
  server_name bananapi.owncloud.al, 192.168.256.314;

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

  # Add headers to serve security related headers
  add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
  add_header X-Content-Type-Options nosniff;
  add_header X-Frame-Options "SAMEORIGIN";
  add_header X-XSS-Protection "1; mode=block";
  add_header X-Robots-Tag none;

  # Path to the root of your installation
  root /var/www/owncloud/;
  # set max upload size
  client_max_body_size 10G;
  fastcgi_buffers 64 4K;

  # Disable gzip to avoid the removal of the ETag header
  gzip off;

  # Uncomment if your server is build with the ngx_pagespeed module
  # This module is currently not supported.
  #pagespeed off;

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

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

  # The following 2 rules are only needed for the user_webfinger app.
  # Uncomment it if you're planning to use this app.
  #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
  #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

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

  location ~ ^/(build|tests|config|lib|3rdparty|templates|data)/ {
    deny all;
  }

  location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
    deny all;
  }

  location / {
    rewrite ^/remote/(.*) /remote.php last;
    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_param modHeadersAvailable true; #Avoid sending the security headers twice
    fastcgi_pass php-handler;
    fastcgi_intercept_errors on;
  }

  # Adding the cache control header for js and css files
  # Make sure it is BELOW the location ~ \.php(?:$|/) { block
  location ~* \.(?:css|js)$ {
    add_header Cache-Control "public, max-age=7200";
    # Add headers to serve security related headers
    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    # Optional: Don't log access to assets
    access_log off;
  }

  # Optional: Don't log access to other assets
  location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
    access_log off;
  }
}
  • :wq!
  • ln -s /etc/nginx/sites-available/owncloud /etc/nginx/sites-enabled/owncloud
  • unlink /etc/nginx/sites-enabled/default
  • sed -ie 's/^[; ]*default_charset = ".*$/default_charset = "UTF-8"/' /etc/php5/fpm/php.ini
  • sed -ie 's/^upload_max_filesize = .*$/upload_max_filesize = 10G/' /etc/php5/fpm/php.ini
  • sed -ie 's/^[; ]*post_max_size = .*$/post_max_size = 10G/' /etc/php5/fpm/php.ini
  • sed -ie 's/^[; ]*upload_tmp_dir =.*$/upload_tmp_dir = \/tmp\/owncloud/' /etc/php5/fpm/php.ini
  • mkdir -p /tmp/owncloud
  • chown -R www-data:www-data /tmp/owncloud
  • chmod 0755 /tmp/owncloud
  • sed -ie 's/^[; ]*max_input_time =.*$/max_input_time = 360000/' /etc/php5/fpm/php.ini
  • sed -ie 's/^[; ]*max_execution_time =.*$/max_execution_time = 360000/' /etc/php5/fpm/php.ini
  • sed -ie 's/^[; ]*memory_limit =.*$/memory_limit = 512M/' /etc/php5/fpm/php.ini
  • echo "extension=memcached.so" » /etc/php5/fpm/php.ini
  • echo "extension=memcache.so" » /etc/php5/fpm/php.ini
  • sed -ie 's/^[; ]*env\[/env\[/' /etc/php5/fpm/pool.d/www.conf
  • vi /var/www/owncloud/config/config.php
  • Add the code belov at the end of the file ( before the closing bracket of course as that is an array definition and it has to be syntactically correct)
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => array(
     array('localhost', 11211),
     array('server1.example.com', 11211),
     array('server2.example.com', 11211),
     ),
  • service nginx restart
  • service php5-fpm restart

Links

Install ownCloud 8.x Raspberry Pi for Personal Dropbox
Latest owncloud

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.