martes, 22 de julio de 2014

OwnCloud en Raspberry Pi

Qué es esta aplicación y para que sirve?
OwnCloud es un programa que nos permite crear nuestra propia nube en donde podemos acceder a los ficheros de trabajo.


Es cierto que existen sistemas gratuitos mediante los cuales podemos almacenar nuestros ficheros en internet pero OwnCloud posee unas cuantas ventajas:
-Es totalmente gratuito y configurable
-Sin límite de espacio o transferencia
-Se pueden compartir ficheros fácilmente
-Total privacidad 
-Existe una aplicación para Android mediante la cual podemos acceder a nuestra nube con el teléfono móvil, incluso podemos hacer que se suban automaticamente nuestras fotos para tener una copia de seguridad de estas.

Aunque este programa puede ser instalado en cualquier ordenador nos hemos decantado por un Raspberry Pi modelo A ya que es muy silencioso y tiene un consumo en full de 3W (incluido el disco duro SSD)
Explicamos su instalación:

Pasos previos:
Elegimos una IP de red estática para el servidor:
sudo nano /etc/network/interfaces

Cambiamos:

iface eth0 inet dhcp
por:
iface eth0 inet static 
         address 192.168.1.100 
         netmask 255.255.255.0 
         network 192.168.1.0 
         gateway 192.168.1.1

Por lo que la dirección IP de red del servidor pasa a ser: 192.168.1.100

Vamos a la propia instalación en sí.
Actualizamos el sistema:
sudo apt-get update && sudo apt-get upgrade

Instalamos componentes:
sudo apt-get install apache2 php5 php5-json php5-gd php5-sqlite curl libcurl3 libcurl3-dev php5-curl php5-common php-xml-parser

Instalamos base de datos (más ligera que SQL)
sudo apt-get install sqlite

Descargamos la última versión en: (for servers owners, Unix)
https://owncloud.org/install/#instructions-server

Nos vamos al directorio de Descarga
cd "nombre del directorio"

Miramos cuál es el nombre del fichero descargado:
ls

Descomprimimos
tar -xjf "fichero descargado" 

Nos vamos a la carpeta owncloud
cd owncloud

Copiamos todos los archivos en /var/www
sudo cp -r * /var/www

Damos permiso de lectura y escritura a la carpeta de owncloud
chmod 777 -R /var/www

Abrimos nuestro navegador de internet y ponemos la dirección IP del equipo, en este caso sería: 192.168.1.100

Completamos la instalación eligiendo un nombre de usuario y contraseña para el administrador.

Nos saldrá un mensaje diciendo que existe un riesgo de seguridad: (no os pongáis nerviosos :) )
Su directorio de datos y archivos es probablemente accesible desde Internet pues el archivo .htaccess no está funcionando. Le sugerimos encarecidamente que configure su servidor web de modo que el directorio de datos no sea accesible o que mueva dicho directorio fuera de la raíz de documentos del servidor web

Para solucionar esto hacemos lo siguiente:
sudo nano /etc/apache2/sites-available
y en donde pone:

<Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all

ponemos:

<Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all


Reiniciamos el servidor web:

sudo service apache2 restart

Información complementaria-1:
Es muy probable que necesitemos un sistema de redireccionamiento ya que en la mayoría de los casos no disponemos de IP fija sino variable, para esto, utilizamos un redireccionamiento gratuito mediante no-ip.

Creamos una cuenta en no-ip.com (Sign up)
Una vez registrados nos vamos a la cuenta (Sign in)
Pinchamos en "Host/Redirect" y le damos a "Add Host" para crear nuestra dirección web.

Bajamos el programa de actualización de IP:
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

Descomprimimos:
tar -zxvf noip-duc-linux.tar.gz

Instalamos:
cd noip-2.1.9-1/
(es posible que el directorio se llame de manera diferente si no-ip tiene otra versión más moderna)


make
sudo make install
Nos pedirá el correo electronico y la contraseña que antes pusimos a la hora de registrarnos en no-ip y el intervalo de tiempo entre actualizaciones (suele estar en 20 minutos).
También nos preguntará si quiere que ejecute algún programa cada vez que se actualice la ip a lo que diremos que no.

Una vez configurado no-ip sólo nos queda automatizar su arranque al iniciar el sistema.
sudo nano /etc/rc.local     

Añadimos antes de fin de instrucciones ( por encima de exit 0 )
/usr/local/bin/noip2

Validamos la dirección de acceso:
sudo nano /var/www/config/config.php

Modificamos  esto:
'trusted_domains' =>
  array ('midirección de noip.com','192.168.1.100',),


IMPORTANTE:
Para que funcione no-ip debemos de abrir en el router el puerto: 8245 TCP


Información complementaria-2:
Si hemos seguido los pasos anteriores tendremos nuestra nube funcionando correctamente y con posibilidad de acceder a ella mediante una dirección exterior pero el espacio de almacenamiento estaría limitado al de la tarjeta SD del raspberry. Vamos a explicar como añadirle un disco duro externo, en mi caso, un SSD:

Conectamos el disco duro externo

Comprobamos su asignación:
sudo blkid
(En mi caso es: /dev/sda1)

Creamos un directorio en la carpeta media:
sudo mkdir /media/SSD

Damos permiso de lectura y escritura
sudo chmod 777 -R /media/SSD

Para que esto ocurra siempre que encendamos el sistema hacemos lo siguiente:
sudo nano /etc/fstab

Añadimos:
/dev/sda1       /media/SSD      ext3    defaults          0       0
Donde ext3 es el tipo de ficheros que vamos a utilizar.

Aplicamos los cambios de fstab:

sudo mount -a

Reiniciamos el sistema:
sudo reboot -n

Ya sólo nos queda configurar Owncloud para que pueda almacenar datos en el disco duro externo ( es muy aconsejable porque aparte de añadimos capacidad al sistema, estamos evitando que se produzcan muchas escrituras de ficheros en la SD principal de raspberry ya que dichas memorias tienen ciclos de escritura limitados)

Accedemos a Owncloud por medio de la red de casa introduciendo la IP de raspberry ( en mi caso: 192.168.1.100)

Buscamos: + aplicaciones
y elegimos: External Storage Support
y la activamos
Pinchamos en la esquina superior derecha en el nombre de usuario
y en "administración"
Sólo nos falta ponerle un nombre al disco duro externo y en el apartado de configuración decirle cuál es la ruta para llegar a él, en mi caso:
/media/SSD

Ya tendremos nuestro servicio de almacenamiento en nube 100% configurado!!


Consejo 1:
Ya que Raspberry Pi no tiene mucha potencia de cálulo, lo ideal para que funcionase de manera óptima sería desabilitar todos los servicios de Owncloud que no vayamos a utilizar.

En el caso de que no consigamos que funcione de manera fluída, podemos hacer un pequeño overclocking para darle un poco de mas chicha. Para hacer el overclocking debemos de tener una fuente de alimentación de al menos 2W y es muy aconsejable tener disipadores encima de los elementos principales del sistema.

Overcloking:
Tecleamos:
sudo raspi-config

Elegimos:
Overclock

Y elegimos uno de los grados que hay de Overcloking

Este Overclock es seguro ya que sólo va a acelerarse el sistema cuando le haga falta volviendo inmediatamente a su modo normal cuando baje la tarea, además, en el caso de que no tenga energía suficiente (de ahí lo de la fuente de alimentación de 2W) o que detecte una sobretemperatura en el procesador volverá a modo normal  manteniendo el sistema a salvo.



Consejo 2:
Podemos modificar la caché de apache para que nuestro servidor arranque más rápido, para ello, debemos de hacer lo siguiente:
sudo apt-get install php-apc
sudo nano /etc/php5/conf.d/20-apc.ini

e insertamos:
extension=apc.so
apc.enabled=1
apc.shm_size=50M


Una vez hemos seguido todos estos pasos nuestro Owncloud debería de funcionar de manera eficiente