sábado, 17 de diciembre de 2016

ownCloud en Ubuntu Server 16.04. Fácil.


Hace días que no he podido escribir nada. El ajetreo cotidiano no me dio respiro alguno para ofrecerles una entrada nueva. Creo que pueden entender que el albedrío de mi vida no gira precisamente en torno a este blog, aunque procuro alimentarlo cuando puedo.  En fin, espero que me disculpen, y ya, sin pérdida de tiempo alguno, entramos en materia.
Antes de instalar ownCloud debemos de tener instalado Ubuntu Server 16.04. Sobre la instalación de Ubuntu Server hay un millón de blogs que ofrecen este tema, y aunque yo aquí les recomiende uno, lo hago a título de ejemplo, pero pueden echar mano de cualquier otro que les parezca mejor. En todo caso, les hago las siguientes consideraciones sobre la instalación que hice yo de Ubuntu Server 16.04:

En la "Selección de programas" para instalar elegiremos los siguientes:
  • LAMP Server
  • Standard System Utilities
  • OpenSSH Server


También, durante la instalación de Ubuntu Server 16.04 establecemos como “Nombre usuario para la cuenta:” usuario, y el “Password para el nuevo usuario:” cualquiera. También lo usará el usuario con permisos administrativos (root). Tomar buena nota de esta contraseña, así ahorraremos muchos problemas durante la instalación de ownCloud, y los usuarios nuevos en ownCloud los crearemos dentro de la misma aplicación.

Yo además instalé el entorno gráfico Unity propio del escritorio de Ubuntu. Para ello usé los siguientes comandos (deben de tener configurada la red):

sudo apt-get install update
sudo apt-get install upgrade
sudo apt-get install ubuntu-desktop

Reiniciamos al finalizar la instalación.

Al disponer del entorno gráfico, para cambiar el idioma sólo precisamos ir a la Configuración del sistema y ejecutar el Soporte de idiomas, seleccionando el que nos interese.



Bajamos ownCloud y descomprimimos luego el archivo
owncloud-9.1.3.tar.bz2



Usando Nautilus como usuario con permisos administrativos en el terminal (sudo nautilus), copiar la carpeta descomprimida owncloud y pegarla en la carpeta /var/www/
 (/var/www/owncloud)


Hacemos que Apache se haga propietario de este directorio:


sudo chown -R www-data:www-data /var/www/owncloud


Cambiamos nuestro Apache virtual host para que apunte al directorio de ownCloud editando el archivo 000-default.conf 


sudo gedit /etc/apache2/sites-available/000-default.conf

Modificamos en este archivo la línea siguiente:
DocumentRoot /var/www/owncloud
Guardamos el archivo y reiniciamos

Llamamos al instalador de ownCloud en nuestro navegador Firefox escribiendo en la barra de direcciones localhost/


Observamos que aparecen bastantes errores, pero fáciles de abordar.

Error 1: El módulo PHP no está instalado. Abrimos el terminal y tecleamos (nos pedirá la contraseña de usuario con permisos administrativos):


sudo apt-get install php7.0-zip 
sudo apt-get install php7.0-gd

    Podemos ver las librerías disponibles tecleando lo siguiente:


 sudo apt-cache search php7.0-*

Error 2: El módulo PHP DOM no está instalado. Abrimos el terminal y tecleamos (nos pedirá la contraseña de usuario con permisos administrativos):


sudo apt-get install php-xml

Error 3: El módulo PHP CURL no está instalado. Abrimos el terminal y tecleamos (nos pedirá la contraseña de usuario con permisos administrativos):

sudo apt-get install php-curl

Error 4: El móduleo PHP MB Multibyte no está instalado. Abrimos el terminal y tecleamos (nos pedirá la contraseña de usuario con permisos administrativos):

sudo apt-get install php-mbstring

Reiniciamos (reboot).

Llamamos luego a ownCloud desde la barra de direcciones del navegador con localhost/


Completamos los campos del siguiente modo:
  • Username: root
  • Password: (la contraseña usada en Ubuntu Server)
  • Database user: root
  • Password: (la contraseña usada en Ubuntu Server)
  • DatabaseName: owncloudDB (yo le puse este nombre, pero pueden ponerle cualquier otro, y creará así la base de datos de mySQL/MariaDB). El resto de los campos, como Data folder, dejarlos tal como están por defecto. Finalmente se abre la aplicación.


Para poder usar desde cualquier otro ordenador (cliente) ownCloud, tenemos que declarar nuestro dominio (dirección local del servidor) como dominio de confianza en el archivo config.php. Después de hacer esto los usuarios podrán inciar la sesión sin que les aparezca la coletilla "Está accediendo al servidor desde un dominio inseguro"




Si no conocemos de antemano la ip de nuestro servidor, antes de editar el archivo config.php, abrimos el terminal y tecleamos ifconfig; así podremos saber nuestro dominio de red (ip del servidor). En mi caso xx.xx.xx.131. Para editar el archivo config.php abrimos en el terminal Nautilus con permisos administrativos:

sudo nautilus

Navegamos por nuestras carpetas y nos dirigimos a /var/www/owncloud/config/config.php

Con el menú contextual (tecla derecha del ratón) abrimos con Mousepad o Gedit el archivo config.php, y editamos  las siguientes líneas de 'Trusted_domains', dejándolo como sigue:

'trusted_domains' =>
array (
    0 => 'localhost'
    1 => 'xxx.xxx.xx.131' (la dirección ip del servidor)
),

Guardamos los cambios, reinciamos, y ya podemos disfrutar de nuestra nube ownCloud en una red local.

El idioma lo podemos cambiar en Personal -> Información personal; Idioma.


A partir de ahora, en la red local que dispongamos, ya podemos disponer de ownCloud. Podríamos usarlo en una escuela como repositorio de contenidos educativos: música, vídeos y objetos didácticos, por ejemplo. Tecleando la dirección de nuestro servidor desde cualquier cliente, aparecerá la pantalla de owncloud para autenticarnos y así establecer la forma en que deseamos compartir nuestros archivos en nuestra red local.

De todos modos, para disponer de un tráfico a través de nuestra red entre el servidor y los clientes de forma segura, sería preciso envolver el tráfico normal en un protocolo web que lo protegiera y encriptara. A esto le llamamos capa de puertos seguros o protocolo SSL (Secure Sockets Layer). Yo dispuse de él de la siguiente forma:

Primero creamos la carpeta donde alojamos los certificados:

sudo mkdir /etc/apache2/ssl

Luego generamos los certificados por 3 años (1095 días), por ejemplo, y con la encriptación estándar RSA-2048 bits de longitud de clave: 

sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -out /etc/apache2/ssl/server.crt -keyout /etc/apache2/ssl/server.key

Para crear la clave privada de 2048 bits RSA, nos hace una serie de preguntas que incorpora en el certificado, siendo importante que en la cuestión “Common name (e.g. server FQDN or YOUR name) []:” le añadamos la ip de nuestro servidor. Yo puse lo siguiente, y en el mismo orden que las cuestiones (como ejemplo): ES, Galicia, Ourense, Escuela, Education, XX.XX.XX.131, mi@correo.es 

Activamos el modo SSL por defecto para Apache editando el siguiente archivo:

sudo gedit /etc/apache2/ports.conf

Cambiamos la línea Listen 80 por Listen 443 (Puerto por defecto del protocolo SSL). Guardar cambios. 


Luego habilitamos el protocolo SSL:

sudo a2enmod ssl

Hacemos disponible default-ssl.conf creando un enlace simbólico en sites-enabled

sudo ln -s /etc/apache2/sites-available-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf 

(para versión Apache2 después de Octubre de 2014)

Editamos 000-default-ssl.conf, y modificamos o añadimos lo siguiente: 

    sudo gedit /etc/apache2/sites-enabled/000-default-ssl.conf
        
        Server Name XX.XX.XX.131:443

        DocumentRoot /var/www/owncloud

        SSLEngine on

        SSLCertificateFile /etc/apache2/ssl/server.crt

        SSLCerticateKeyFile /etc/apache2/ssl/server.key

       
Guardar archivo.


Reiniciamos Apache:

 sudo /etc/init.d/apache2 restart

Al abrir a partir de ahora por primera vez un cliente nos encontraríamos con lo siguiente:


Como no tenemos validado por terceros la autenticidad de nuestro servidor, host, nos aparece esta advertencia, que trataremos como hacemos de forma habitual con todos aquellos certificados no validados por las autoridades de certificación de confianza de nuestro navegador. Lo que nos interesa a nosotros es solamente el cifrado de nuestro certificado.

Finalmente, nuestro servidor ya está listo para trabajar con el protocolo de seguridad SSL.


No ha sido fácil redactar esta entrada, y a pesar de que he puesto todo mi empeño en intentar ordenar todo este trabajo para que todo les resulte fácil, lo cierto es que tiene un abundante recorrido susceptible de arrastrar algún gazapo, que espero no sea lo suficientemente grave como para impedir que les resulte provechosa esta entrada. Cualquier comentario siempre será bien recibido. Gracias.

4 comentarios:

  1. Respuestas
    1. Gracias a ti por tu comentario y por el interés mostrado por este blog. Saludos.

      Eliminar
    2. Hola Nacho, tu manual ha sido de gran utilidad y de manera muy comprensible para quienes iniciamos en el mundo linux. Muchas gracias.

      Eliminar
    3. Muchas gracias Fernando por el comentario y el interés mostrado por este blog. Saludos

      Eliminar