Creando nuestra propia Nube con OwnCloud - Instalación y Configuración

¿Que es Owncloud?
OwnCloud es un programa multiplataforma,muy similar al popular DropBox, el cual al instalarlo sincroniza los archivos que queramos con la nube, a los cuales también podremos acceder desde un dispositivo móvil o cualquier ordenador conectado a internet, donde podremos compartir nuestros archivos públicamente con o sin contraseñas, pero existe una gran diferencia frente a DropBox, OwnCloud se aloja en nuestro propio servidor, con lo que la seguridad y privacidad esta asegurada.
¿Que funciones trae Owncloud?
- -Sincronización de archivos entre diversos dispositivos
-Almacenamiento seguro (cifrado de archivos)
- Compartimiento de archivos entre usuarios o de una manera pública
- Lector de música en línea
-Servidor de archivos WebDAV
- Calendario (permite la sincronización CalDAV)
- Administración de contactos (CardDAV)
- Editor de texto en línea (propone la coloración sintactica)
- Visor de documentos en línea (pdf, open document)
- Galería de imágenes, que permite la visualización y la clasificación en álbumes
- Administración de favoritos
Para configurar OwnCloud, podemos usarlo con las bases de datos:
- SQLite
-Mysql
- MariaDB
-PostgreSQL
En este caso usaremos el método más sencillo y eficaz, MYSQL + APACHE2 + PHP5.6
Quien prefiera PHP7.0 , que lo pida en este mismo Topic y escribire un mini-tutorial
Vamos a ello!! Primero de todo vamos a descargar e instalar la última version de Owncloud, para ello iremos a la página oficial, donde nos saldrá todas las instrucciones que debemos seguir dependiendo de nuestra Distro¿Porque Apache?
-Cuando instalemos OwnCloud, instala Apache automáticamente con todos sus componentes.
-Nginx seria muchisimo mas complicado de configurar y desgraciadamente,el módulo PHP-FPM no rinde adecuadamente en OwnCloud.
En nuestro caso lo instalaremos en Debian 8 Jessie
Instalaremos solamente el repositorio OwnCloud , el OwnCloud-Files se instalará automáticamente
Como de costumbre entramos al terminal SSH (hemos utilizado Putty para teclear los comandos correspondientes que salen en la página oficial, en nuestro caso de utilizar Debian 8 Jessie)
Adjuntamos Key del Repositorio hacia APT con:
Código: Seleccionar todo
wget -nv https://download.owncloud.org/download/repositories/stable/Debian_8.0/Release.key -O Release.key
apt-key add - < Release.key
Código: Seleccionar todo
sh -c "echo 'deb http://download.owncloud.org/download/repositories/stable/Debian_8.0/ /' >> /etc/apt/sources.list.d/owncloud.list"
apt-get update
apt-get install owncloud
/var/www/
NOTA:
Si queremos cambiar de ruta la carpeta, el método mas eficaz es crear un enlace simbólico.
Por ejemplo si queremos cambiarlo a /media/miservidor/
Código: Seleccionar todo
sudo ln -s /var/www/owncloud /media/miservidor
CONFIGURAR APACHE:
Editando el siguiente archivo,cambiaremos la ruta hacia la carpeta OWNCLOUD:
Código: Seleccionar todo
sudo nano /etc/apache2/sites-available/000-default.conf
Y cambiamos a la carpeta de OwnCloudDocumentRoot /var/www/html
Por último y menos importante, buscaremos:DocumentRoot /var/www/owncloud
Desmarcamos y ponemos la ruta por donde nos conectaremos a nuestro OwnCloud, ejemplo:#ServerName http://www.example.com
Una vez añadido,guardaremos los cambios del archivo pulsando estas teclas, en este caso (putty ssh)ServerName miowncloud.ddns.net
Control + X
tecleamos Y
ENTER
CONFIGURANDO PHP5.6 PARA OWNCLOUD:
Editaremos los parámetros , para que funcione todo correctamente. Editaremos el archivo .htaccess con el comando
Código: Seleccionar todo
sudo nano /var/www/owncloud/.htaccess
( DENTRO DE LA FRANJA <IfModule mod_php5.c> )
Por defecto:
Aqui ponemos el tamaño máximo del archivo en "MB" , que podremos subir a nuestro servidor OwnCloud, ejemplophp_value upload_max_filesize 513M
Serian 20000MB=20GBphp_value upload_max_filesize = 20000M
Por defecto:
Aqui por igual, ponemos el tamaño máximo del archivo en "MB" , que podremos subir a nuestro servidor OwnCloudphp_value post_max_size 513M
Serian 20000MB=20GBphp_value post_max_size 20000M
Nuestra configuración quedaria asi: Una vez añadido,guardaremos los cambios del archivo pulsando estas teclas, en este caso (putty ssh)
Control + X
tecleamos Y
ENTER
Y reiniciaremos para aplicar la configuración al servidor Apache con:
Código: Seleccionar todo
sudo service apache2 restart
Ejemplo:
¿Ya esta? Que facil!! Todavia no... :enblanco , ahora debemos tener instalado MYSQL , y crear una base de datos para funcionar.

Creando Base de Datos SQL para OwnCloud:
Si no lo has hecho anteriormente, hay que seguir este tutorial:
>>Instalando y Configurando Bases de Datos MYSQL<<
Una vez tenemos MYSQL instalado, entraremos al panel MYSQL para crear una Base de Datos y un usuario y contraseña con
Código: Seleccionar todo
mysql -u root -p
Nombre Base de datos: miowncloud
Usuario afiliado a la base de datos: kike
Contraseña del usuario: micontraseña1234
Creando Base de Datos:
Código: Seleccionar todo
create database miowncloud;
Código: Seleccionar todo
create user kike@localhost identified by 'micontraseña1234';
Código: Seleccionar todo
grant all privileges on miowncloud.* to kike@localhost identified by 'micontraseña1234';
Código: Seleccionar todo
\q
Ejemplo:
Aqui ponemos nuestro Usuario y Contraseña que utilizaremos para entrar en nuestro OwnCloud
Y a continuación damos click en "ALMACENAMIENTO Y BASES DE DATOS" tal y como marco en la imagen.
Nos saldra lo siguiente
Debajo de "Configurar Base de Datos" seleccionamos MySQL / MariaDB
En Directorio de datos, seleccionamos la carpeta donde queremos guardar todos nuestros archivos ,por defecto
Código: Seleccionar todo
/var/www/owncloud/data
Ahora añadir los datos a medida de lo que hayais creado con el MYSQLSi queremos guardar los datos en un disco duro, dirigimos la ruta hacia la carpeta automontada del disco, ejemplo /media/disco1
Usuario Base de datos:
Contraseña de la Base de Datos:kike
micontraseña1234
Nombre de la Base de Datos:
Host de la Base de Datos (dejar LOCALHOST por defecto):miowncloud
Apretamos en "Completar la instalación" , esperamos unos minutos que se creen las tablas y accederemos automaticamente a nuestro Owncloud!!localhost
Optimizando parámetros OwnCloud:
-Desactivar mensaje : Algunos archivos no han superado la comprobación de integridad
Este molesto mensaje nos aparecerá en la parte superior, simplemente nos avisa que algunos archivos estan mal "configurados". Para desactivar la integridad simplemente debemos ir al terminal SSL y escribir:
**Modificar dependiendo de la ruta que tengamos nuestro OwnCloudsudo nano /var/www/owncloud/config/config.php
Y añadiremos la siguiente linea despues del parametro <?php $CONFIG = array (
Una vez añadido,guardaremos los cambios del archivo pulsando estas teclas, en este caso (putty ssh)'integrity.check.disabled' => true,
Control + X
tecleamos Y
ENTER
Y ya abra desparecido el molesto e inutil mensaje

Activar Cache PHP (APCu) para optimizar rendimiento y desactivar el mensaje de Alerta
Utilizaremos el modulo APCu para cachear todo el contenido de OwnCloud, con esto reduciremos el consumo de memoria de nuestra Pi, y ganaremos mucha optimización.
Primero de todo instalaremos el modulo APCU para PHP5.6
Código: Seleccionar todo
sudo apt-get install php5-apcu
Código: Seleccionar todo
sudo service apache2 restart
**Modificar dependiendo de la ruta que tengamos nuestro OwnCloudsudo nano /var/www/owncloud/config/config.php
Y añadiremos la siguiente linea despues del parametro <?php $CONFIG = array (
Una vez añadido,guardaremos los cambios del archivo pulsando estas teclas, en este caso (putty ssh)'memcache.local' => '\OC\Memcache\APCu',
Control + X
tecleamos Y
ENTER
Y ya tenemos nuestro servidor OwnCloud funcionando por Cache

-Cuando subo un archivo, sale el error : Fallo al escribir al disco
Ocurre por una mala configuración de la carpeta "temporal" donde se alojan los archivos antes de la subida.
Para ello vamos a configurarla directamente desde la configuración PHP, editando este archivo desde el Terminal SSH.
Código: Seleccionar todo
sudo nano /etc/php5/apache2/php.ini
Desmarcamos , y seleccionamos una carpeta válida donde se subiran los archivos temporales, por ejemplo;upload_tmp_dir =
Una vez añadido,guardaremos los cambios del archivo pulsando estas teclas, en este caso (putty ssh)upload_tmp_dir = /tmp/
Control + X
tecleamos Y
ENTER
Y reiniciamos Apache para guardar los datos configurados en PHP.
Código: Seleccionar todo
sudo service apache2 restart

Activar navegacion cifrada SSL (HTTPS) Utilizando OPENSSL
NOTA: ESTE CERTIFICADO IRA AUTOFIRMADO POR NOSOTROS, ASI QUE EL NAVEGADOR DETECTARA QUE "NO ES DE CONFIANZA" , PARA CREAR UN CERTIFICADO DE UNA IDENTIDAD VERIFICADA, USA ESTE TUTORIAL LET'S ENCRYPT PARA APACHE .
Voy a explicarlo muy resumidamente, para que no se haga tan pesado y no quede tanto bulto :claroclaro
INSTALANDO OPENSSL
Instalamos OpenSSL entrando en el terminal SSL y poniendo el siguiente comando:
Código: Seleccionar todo
apt-get install openssl
Código: Seleccionar todo
a2enmod ssl
Con este proceso , alargamos la fecha de caducidad de los certificados, para ello debemos de modificar el archivo con este comando:
Código: Seleccionar todo
nano /etc/ssl/openssl.cnf
Y las modificaremos asi:dir = ./demoCA
default_days = 365
La dirección /root/SSLCertAuth será la ruta donde guardaremos los certificados que vayamos creandodir = /root/SSLCertAuth
default_days = 3650
El numero 3650 serán los dias para la caducidad del certificado ( 3650 = 10 años)
Una vez añadido,guardaremos los cambios del archivo pulsando estas teclas, en este caso (putty ssh)
Control + X
tecleamos Y
ENTER
CREANDO CARPETAS Y ARCHIVOS PARA GENERAR CERTIFICADOS
Ahora vamos a crear el directorio donde se guardarán primeramente nuestros certificados, para ello ponemos el comando:
Código: Seleccionar todo
mkdir /root/SSLCertAut
Código: Seleccionar todo
chmod 700 /root/SSLCertAuth
Código: Seleccionar todo
cd /root/SSLCertAuth
Código: Seleccionar todo
mkdir certs private newcerts
Código: Seleccionar todo
echo 1000 > serial
touch index.txt
Para poder generar un certificado, es necesario crear una autoridad de certificación.
Con ello vamos a poner el siguiente comando en el Terminal SSH sin salir de la ruta /root/SSLCertAuth:
Código: Seleccionar todo
openssl req -new -x509 -days 3650 -extensions v3_ca \-keyout private/cakey.pem -out cacert.pem \-config /etc/ssl/openssl.cnf
Enter PEM pass phrase:
Clave personal que tendremos que guardarla y recordarla, porque será necesaria cada vez que tengamos que firmar nuestros certificados!
Verfying Enter PEM pass phrase:
Repetimos nuestra clave personal
Country Name (2 Letter Code):
Ponemos las dos iniciales de nuestro pais, ejemplo España = ES
State or Province Name (full name):
Estado o Provincia de nuestro Pais ( cualquiera, no es importante ) ejemplo : Madrid
Ponemos nuestra localidad / ciudad / pueblo ( cualquiera , no es importante) ejenplo: TeruelLocality:
Nombre de nuestra Web ( cualquiera, no es importante ), ejemplo ForoRaspberryOrganization Name:
Organizational util name
Repetiremos el nombre de nuestra Web
Common Name:
Super Importante!! poner la dirección web por donde nos vamos a conectar a nuestro OwnCloud
Ejemplos:
por dirección : owncloud.ddns.net
por ip en red : 192.168.1.30
Obviamente Nuestro emailEmail:
CREANDO CLAVE PRIVADA Y SOLICITUD DE FIRMA
Introducimos el siguiente comando en el terminal SSH:
Código: Seleccionar todo
openssl req -new -nodes \-out apache-req.pem \-keyout private/apache-key.pem \-config /etc/ssl/openssl.cnf
Common Name:
Super Importante!! poner la dirección web por donde nos vamos a conectar a nuestro OwnCloud
Una vez hayas terminado, en la carpeta /root/SSLCertAuth tendremos estos dos archivos:Ejemplos:
por dirección : owncloud.ddns.net
por ip en red : 192.168.1.30
apache-key.pem: Es la clave privada que hemos generado. Está clave privada se usa para el proceso de autentificación SSL de los usuarios que se conectan al servidor de owncloud.
apache-req.pem: Es el archivo que contiene la solicitud de firma del certificado.
CREANDO Y FIRMANDO NUESTRO CERTIFICADO SSL
Ahora con el siguiente comando generaremos nuestro certificado autofirmado, pondremos lo siguiente en el Terminal SSH:
Código: Seleccionar todo
openssl ca \-config /etc/ssl/openssl.cnf \-out apache-cert.pem \-infiles apache-req.pem
¿Recuerdas? ¿Enter PEM pass phrase? :claroclaro
Por último nos pedira si queremos firmar el certificado, marcamos Y
Sign the certificate? (y/n) : y
Ahora copiaremos los certificados que acabamos de crear , a las carpetas válidas para que Apache pueda leer los certificados. Primero creamos estas dos carpetas con los comandos:
Código: Seleccionar todo
mkdir /etc/ssl/key
mkdir /etc/ssl/crt
Código: Seleccionar todo
cp /root/SSLCertAuth/apache-cert.pem /etc/ssl/crt
cp /root/SSLCertAuth/private/apache-key.pem /etc/ssl/key
Ahora pondremos a punto Apache, para que nos conecte por conexión cifrada HTTPS, para ello vamos a editar el siguiente archivo ,escribiendo este comando sobre el terminal SSH:
Código: Seleccionar todo
nano /etc/apache2/sites-available/default-ssl.conf
Dirección web por donde nos conectaremos a nuestro OwnCloud (poner la misma que cuando creamos el certificado!)ServerName miowncloud.ddns.net
Directorio donde esta la carpeta OwnCloud en nuestra PiDocumentRoot /var/www/owncloud
Añadiremos estas lineas, y modificaremos si fuera necesario la ruta del directorio OwnCloud en nuestra Pi.<Directory /var/www/owncloud>
AllowOverride All
</Directory>
<Directory /var/www/owncloud/data>
AllowOverride All
</Directory>
Añadiremos estas lineas, y ponemos la ruta donde guarda nuestros datos OwnCloud(directorio de datos), por defecto /var/www/owncloud/data
Activamos modulo SSLSSLEngine on
Ruta a nuestra clave privada y los certificados SSLSSLCertificateFile /etc/ssl/crt/apache-cert.pem
SSLCertificateKeyFile /etc/ssl/key/apache-key.pem
Una vez configurado, el archivo deberia quedar parecido a este:
Guardaremos los cambios del archivo pulsando estas teclas, en este caso (putty ssh)
Control + X
tecleamos Y
ENTER
Ahora por ultimo vamos a la configuración de nuestro sitio en Apache, editando el archivo ( por defecto ):
Código: Seleccionar todo
sudo nano /etc/apache2/sites-available/000-default.conf
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
Guardaremos los cambios del archivo pulsando estas teclas, en este caso (putty ssh)
Control + X
tecleamos Y
ENTER
Y para finalizar, activamos la configuración SSL con:
Código: Seleccionar todo
a2ensite default-ssl
Código: Seleccionar todo
sudo service apache2 restart
(Dependiendo de nuestra IP , o dirección que hayamos configurado)https://192.168.1.38
Nos saldrá un mensaje , que la conexion no es segura , para ello tendremos que añadir una excepción al navegador ( Cada navegador tendrá un método diferente ) ¿Porque pasa esto? La simple razón es porque nosotros mismos hemos firmado el certificado, y necesitas que te lo haga una entidad verificadora de confianza, para ello USA ESTE TUTORIAL LET'S ENCRYPT PARA APACHE .
Una vez confirmados, ya estaremos dentro, ahora tenemos que entrar en la configuración de nuestro OwnCloud, instalar unas "APLICACIONES" y activar el cifrado.
Voy a marcar los pasos por las imágenes:
Damos click en "Archivos" , ubicado en la parte superior izquierda del panel, y pulsamos "Aplicaciones" en el desplegable Nos vamos a la columna de la izquierda, damos en "No activado" y buscamos la aplicacion "Default encryption module" y pulsamos "Activar" abajo de la misma. Una vez activado, vamos a la parte superior derecha, damos click en el nombre de nuestro usuario, y en el desplegable damos en "Administracion" Marcamos en la columna de la izquierda "Cifrado en el Servidor" y comprobamos que la opción "Default encryption module" esta activada. YA TENEMOS NUESTRO SERVIDOR OWNCLOUD CIFRADO POR HTTPS! :geek:
----------------------------------
A medida que vayan saliendo problemas, ire poniendo las soluciones en este mismo tutorial :silbido