Social Icons

Showing posts with label OpenSSL. Show all posts
Showing posts with label OpenSSL. Show all posts

How to setup ownCloud 7 on Raspberry Pi





This is the second installment of the guide to install ownCloud on Raspberry Pi. Our earlier guide was for ownCloud 5.0.20 (Enterprise Edition) and can be found here.

There has been certain changes with the latest version of ownCloud 7, and this guide should be able to help you to sail through smooth. Without much ado about what is ownCloud (which you already know) let's dive deep into tech details.

Following software / packages we will be using for this setup, ideal for a personal cloud on Raspberry Pi:
  • ownCloud 7
  • Nginx
  • OpenSSL
  • php 5
  • Raspbian Wheezy
1. Tuning up the Raspberry Pi
Following changes needs to be made under Raspberry Pi configuration
sudo raspi-config

a. Expand the root filesystem to have enough space for the cloud
    Select "Expand Filesystem"

b. Change locale to en_US.UTF8
    Select "Internationalisation  Options"

c. Memory split, allocate 16M to video graphics (if you are not using X-server)
    Select "Advanced Options" --> "Memory Split"

d. Overclock to Modest or Medium (Optional Step)
    Select "Overclock" (You might have to reboot if asked)

2. Updating the package lists on Raspberry Pi
  sudo apt-get update
    sudo apt-get upgrade

3. Creating users (Raspbian might already have is user & group)
    sudo groupadd www-data
    sudo usermod -a -G www-data www-data

4. Installing the packages
    sudo apt-get install nginx openssl ssl-cert php5-cli php5-sqlite php5-gd php5-common php5-cgi 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


5. Make sure php5-curl is not installed
    sudo apt-get --purge remove php5-curl

6. Creating your SSL certificates for 2 years
    sudo openssl req $@ -new -x509 -days 730 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key

   
sudo chmod 600 /etc/nginx/cert.pem
   
sudo chmod 600 /etc/nginx/cert.key

7. Configuring Ngnix web server
    sudo nano /etc/nginx/sites-available/default

    Copy and replace the entire content below:
    Note: You'll have to replace technet.example.com with the local IP of your Raspberry Pi or the domain name (make sure it matches with the details you have provided to create the certificate, else ownCloud won't work). If you have planned instead to use any Dynamic DNS domain, then use your  domain name instead of the local IP address. You can follow our guide for setting up a Dynamic DNS domain.

8. Configuring max upload limit in php
    sudo nano /etc/php5/fpm/php.ini

    Tip: Use ctrl+w to search below lines and update:
    upload_max_filesize = 1000M
    post_max_size = 1000M

9. Configuring PHP 
    sudo nano /etc/php5/fpm/pool.d/www.conf
    Change the following line from:
    listen = /var/run/php5-fpm.sock
    to 
    listen = 127.0.0.1:9000

    sudo nano /etc/dphys-swapfile
    Change the following line from:
    CONF_SWAPSIZE=100
    to 
    CONF_SWAPSIZE=512

10. Restart web server and Php
    sudo /etc/init.d/php5-fpm restart
    sudo /etc/init.d/nginx restart

11. Install ownCloud (version 7.0.1 used here)
    sudo mkdir -p /var/www/owncloud
    sudo wget https://download.owncloud.org/community/owncloud-7.0.1.tar.bz2
    sudo tar xvf owncloud-7.0.1.tar.bz2
    sudo mv owncloud/ /var/www/
    sudo chown -R www-data:www-data /var/www
    rm -rf owncloud owncloud-7.0.1.tar.bz2

12. Setup admin account
     While setting up the admin account you should provide the path to your data folder. You can ideally set this to your NAS drive or external drive which you may have mounted. Owncloud will complain and not proceed with admin account if the data directory path is not readable & writable by the user www-data. Also it should not be readable by "others". You can refer to our guide here for setting up appropriate permission before proceeding to create the admin account.
     Now in the browser, login to the ip address of Raspberry Pi or if you have configured your domain name then use that and set up the admin account.
    https://yourdomain.com    or    https://192.168.XXX.XX


That's all... Celebrate the fun... Fly high on clouds... and if you liked this guide, got benefited or feel worth reading kindly do share with your network, and share your comments.

How to setup your own cloud on Raspberry Pi


With growing concerns of data privacy across the world, one thing is established for sure, if you want to protect your sensitive data then do it yourself, keep it with you, safe and secure. While there is practically nothing invincible, we must try to safeguard our personal data to the extent possible, atleast to make eavesdropper's life tougher in breaking it. This can help you to get rid of using services like Dropbox, Box, Google Drive. I would like to clarify that I do not intend (or mean to intend) that commercial or non-commercial services named above does give away your data, but following this guide can help you to stay away from them at your own risk, the data will be with you at your disposal with the benefits of cloud computing.

Enough talking... Let go ahead and see how we can setup a personal cloud on a small and tiny Raspberry Pi. We would be using the following softwares broadly to setup our own cloud:
  • ownCloud (open-source enterprise grade cloud software)
  • Nginx (open-source, high-performance HTTP server)
  • OpenSSL (open-source tool kit for SSL/TLS)
  • php5 (free of charge, server side scripting language)
  • Raspbian Wheezy from rapberrypi.org (not ownCloud's version)

Important note: This guide was prepared for OwnCloud 5.0.20
The latest version OwnCloud 7 doesn't work well with this guide. 
If you are going to install OwnCloud 7 on Raspbian Wheezy follow here

1. Tuning up the Raspberry Pi
Following changes needs to be made under Raspberry Pi configuration
sudo raspi-config

a. Expand the root filesystem to have enough space for the cloud
    Select "Expand Filesystem"

b. Change locale to en_US.UTF8
    Select "Internationalisation  Options"

c. Memory split, allocate 16M to video graphics (if you are not using X-server)
    Select "Advanced Options" --> "Memory Split"

d. Overclock to Modest or Medium
    Select "Overclock" (You might have to reboot if asked)

2. Updating the package lists on Raspberry Pi
    sudo apt-get update
    sudo apt-get upgrade

3. Creating users
    sudo groupadd www-data
    sudo usermod -a -G www-data www-data

4. Installing the packages
    sudo apt-get install nginx openssl ssl-cert php5-cli php5-sqlite php5-gd php5-curl php5-common php5-cgi 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

5. Creating your SSL certificates for 2 years
    sudo openssl req $@ -new -x509 -days 730 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key

   
sudo chmod 600 /etc/nginx/cert.pem
   
sudo chmod 600 /etc/nginx/cert.key

6. Configuring Ngnix web server
    sudo nano /etc/nginx/sites-available/default

    Copy and replace the entire content below:
    Note: You'll have to replace 192.168.XXX.XXX with the local IP of your Raspberry Pi. If you have planned instead to use any Dynamic DNS domain, then use your  domain name instead of the local IP address. You can follow our guide for setting up a Dynamic DNS domain.
   

7. Configuring max upload limit in php
    sudo nano /etc/php5/fpm/php.ini

    Tip: Use ctrl+w to search below lines and update:
    upload_max_filesize = 1000M
    post_max_size = 1000M

    At the end of the file, we'll add also the following:
    upload_tmp_dir = /srv/http/owncloud/data 
    extension = apc.so
    apc.enabled = 1
    apc.include_once_override = 0
    apc.shm_size = 256

    Next, we create the folder with the associated rights
    sudo mkdir -p /srv/http/owncloud/data
    sudo chown www-data:www-data /srv/http/owncloud/data

8. Configuring PHP 
    sudo nano /etc/php5/fpm/pool.d/www.conf
    Change the following line from:
    listen = /var/run/php5-fpm.sock
    to 
    listen = 127.0.0.1:9000

    sudo nano /etc/dphys-swapfile
    Change the following line from:
    CONF_SWAPSIZE=100
    to 
    CONF_SWAPSIZE=512

9. Restart web server and Php
    sudo /etc/init.d/php5-fpm restart
    sudo /etc/init.d/nginx restart

10. Install ownCloud (version 5.0.11 used here)
    sudo mkdir -p /var/www/owncloud
    sudo wget http://download.owncloud.com/download/5.0.11/owncloud_enterprise-5.0.11.tar.bz2
    sudo tar xvf owncloud_enterprise-5.0.11.tar.bz2
    sudo mv owncloud/ /var/www/
    sudo chown -R www-data:www-data /var/www
    rm -rf owncloud owncloud-5.0.7.tar.bz2

11. Setup admin account
    Now in the browser, login to the ip address of Raspberry Pi or if you have configured your domain name then use that and set up the admin account.

12. Linking your external USB hdd as the storage instead of tiny SD card (Optional)
    Ideally one should opt for using an external storage device since the SD card from which Raspberry Pi runs is barely sufficient to handle your cloud storage. You can follow our guide on How to auto-mount USB HDD. Next you need to follow the below steps to create a directory in USB hdd to hold the ownCloud data folder. Note: The mounted path to USB hdd is taken as /media/USBHDD here, change it accordingly.
    sudo service nginx stop
    sudo mkdir /media/USBHDD/OwnCloud5
    sudo chown www-data:www-data /media/USBHDD/OwnCloud5
    sudo mv /var/www/owncloud/data/ /media/USBHDD/OwnCloud5/


    Configure USB directory path in Nginx config.php
    sudo nano /var/www/owncloud/config/config.php

   Change the below line
   'datadirectory' => '/var/www/owncloud/data'
    to
   'datadirectory' => '/media/USBHDD/OwnCloud5/data'

    sudo service nginx start

13. For USB hdd with NTFS filesystem [This step was required for OwnCloud version 5.0.20, later versions probably fixed this and this step won't be required then]
    You might get the following warning on the login page of ownCloud.

Data directory  /media/USBHDD/OwnCloud5/data') is readable for other users. Please change the permissions to 0770 so that the directory cannot be listed by other users.

    To fix this, comment out the section in /var/www/owncloud/lib/util.php which checks for directory permissions.
    sudo nano /var/www/owncloud/lib/util.php

public static function checkDataDirectoryPermissions($dataDirectory) {
...
...
/*
                else {
                        $permissionsModHint = 'Please change the permissions to 0770 so that
the director$
                                .' cannot be listed by other users.';
                        $prems = substr(decoct(@fileperms($dataDirectory)), -3);
                        if (substr($prems, -1) != '0') {
                                OC_Helper::chmodr($dataDirectory, 0770);
                                clearstatcache();
                                $prems = substr(decoct(@fileperms($dataDirectory)), -3);
                                if (substr($prems, 2, 1) != '0') {
                                        $errors[] = array('error' => 'Data directory
('.$dataDirectory.')$
                                                'hint' => $permissionsModHint);
                                }
                        }
                }
*/
                return $errors;
        }

That's all... Celebrate the fun... Fly high on clouds... and if you liked this guide, got benefited or feel worth reading kindly do share with your network.