Cómo instalar ownCloud con Nginx en Ubuntu 20.04

Cómo instalar ownCloud con Nginx en Ubuntu 20.04

Desde hace varios años, el almacenamiento en nuestras computadoras personales pasó a segundo plano ante las posibilidades que la nube puso a nuestro alcance. Entre otras cosas, el poder guardar archivos y acceder a ellos desde cualquier ubicación y tipo de dispositivo ha simplificado nuestras vidas y trabajo. A pesar de la existencia de servicios como Google Drive o Dropbox, muchas personas o empresas prefieren tener más control sobre la privacidad de su contenido y eligen otras alternativas. En esta guía aprenderás cómo instalar ownCloud con Nginx en Ubuntu 20.04 para administrar tu propia solución de almacenamiento en la nube.

Al instalar ownCloud en un servidor propio, podrás realizar todas las tareas que seguramente ya te resultan familiares (y otras más):

  • Crear, editar, subir y borrar archivos y carpetas
  • Compartir contenido con otros usuarios de la plataforma y también con terceros
  • Modificar la apariencia de la interfaz para adaptarla a tus necesidades o gustos

Requisitos previos

Paso 1: Descarga e instalación de ownCloud

Para comenzar, visita el sitio de descargas de ownCloud para acceder al archivo más reciente:

como instalar owncloud con nginx en ubuntu 20.04 descarga
Cómo instalar ownCloud con Nginx en Ubuntu 20.04

Copia el link de owncloud-complete-latest.tar.bz2 para descargarlo con wget.
Antes de continuar, asegúrate que el directorio donde se alojará la aplicación esté creado. Si no lo está puedes crearlo con el siguiente comando:

sudo mkdir /var/www/cloudme.fun

Recuerda que nosotros utilizaremos el directorio «cloudme.fun» para alojar la aplicación ownCLoud pero tu puedes colocarle el nombre que quieras. Una buena práctica es utilizar el nombre de dominio que apuntarás a la aplicación.

Ahora es el turno de descargar el archivo de ownCloud, descomprimirlo en /var/www/cloudme.fun/ y asignar al usuario www-data como propietario del directorio:

wget https://download.owncloud.org/download/community/owncloud-complete-latest.tar.bz2
sudo tar xjf owncloud-complete-latest.tar.bz2 -C /var/www/cloudme.fun/
sudo chown -R www-data:www-data /var/www/cloudme.fun/

Quizás reparaste en el hecho de que el primer comando de la lista generó un directorio llamado owncloud dentro de /var/www/cloudme.fun. En el próximo paso lo utilizaremos como la raíz de nuestro subdominio.

Paso 2: Configuración de Nginx

En este ejemplo, vamos a crear un bloque de servidor para el subdominio own.cloudme.fun. Para ello vamos a crear y editar el archivo /etc/nginx/conf.d/own.cloudme.fun.conf.

sudo touch /etc/nginx/conf.d/own.cloudme.fun.conf
sudo nano /etc/nginx/conf.d/own.cloudme.fun.conf

Luego copia las siguientes líneas en el archivo y guárdalo.


server {
    listen 80;
    listen [::]:80;
    root /var/www/cloudme.fun/owncloud;
    index  index.php index.html index.htm;
    server_name  own.cloudme.fun;

    location / {
        rewrite ^ /index.php$uri;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        return 404;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        return 404;
    }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         include fastcgi_params;
         fastcgi_intercept_errors on;
         fastcgi_request_buffering off;
    }

    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
        try_files $uri $uri/ =404;
        index index.php;
    }

    location ~* \.(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        access_log off;
    }

    location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        access_log off;
    }

}

Después de guardar el archivo, asegúrate de que la configuración sea correcta:

sudo nginx -t && sudo nginx -s reload

Si el comando anterior indica que la prueba fue exitosa, continúa con el siguiente paso. De otra forma, utiliza cualquier mensaje de error para identificar el problema y corregirlo antes de proseguir.

Paso 3: Creación de una base de datos para ownCloud

Mediante los siguientes comandos crearemos una base de datos para ownCloud y un usuario con las credenciales de la cuenta que utilizará la herramienta internamente:

sudo mysql 

En el comando para crear el usuario de la base de datos reemplaza 0wncloudAdmin por tu propia contraseña.

CREATE DATABASE owncloud;
CREATE USER 'owncloudadmin'@'localhost' IDENTIFIED BY '0wncloudAdmin!';

También necesitarás otorgar los accesos correctos al usuario:

GRANT ALL ON owncloud.* TO 'owncloudadmin'@'localhost';

Para regresar a la línea de comandos de Linux, escribe \q o exit y presiona Enter.

Paso 4: Asegurar el subdominio con Let’s Encrypt

Tener un certificado SSL/TLS aumentará la confianza de los usuarios de tu solución de almacenamiento en caso de que lo utilices en tu empresa. Además, hará posible que el tráfico de datos desde y hacia el servidor esté encriptado. Let’s Encrypt provee una herramienta llamada certbot que permite gestionar certificados de una forma sencilla.

Para instalar certbot ejecuta el siguiente comando:

sudo apt install certbot python3-certbot-nginx -y

A continuación, genera el certificado:

sudo certbot --nginx -d own.cloudme.fun

El comando anterior modificará el archivo de configuración /etc/nginx/conf.d/own.cloudme.fun.conf con los datos del certificado. Para completar este paso, reinicia Nginx.

sudo systemctl restart nginx

Paso 5: Instalación de los módulos de PHP

Para que ownCloud funcione correctamente, es necesario instalar una serie de módulos de PHP:

sudo apt install php-imagick php7.4-common php7.4-curl php7.4-gd php7.4-imap php7.4-intl php7.4-json php7.4-ldap php7.4-mbstring php7.4-mysql php7.4-xml php7.4-zip

En este punto deberías verificar que el subdominio se encuentra funcionando:

Owncloud finalmente instalado en Ubuntu
Cómo instalar ownCloud con Nginx en Ubuntu 20.04

En esta misma pantalla ingresarás los datos de tu instalación de ownCloud en el próximo paso.

Paso 6: Ingreso de datos de configuración

Una vez que la solución está instalada, ingresa los datos de configuración:

  • Creación de una cuenta de administrador. Elige un usuario y una contraseña con un alto nivel de seguridad:
Creación de una cuenta Admin en Owncloud
Cómo instalar ownCloud con Nginx en Ubuntu 20.04
  • Elección de un directorio para almacenar archivos. Si deseas, puedes cambiar la ubicación por defecto (/var/www/cloudme.fun/owncloud/data) o dejarla:
como instalar owncloud con nginx en ubuntu 20.04 datos
Cómo instalar ownCloud con Nginx en Ubuntu 20.04
  • Conexión a la base de datos usando las credenciales que generaste en el paso 3. En el caso del puerto, ingresa 3306 por MySQL:
Conectando Owncloud con una Base de Datos MySQL
Cómo instalar ownCloud con Nginx en Ubuntu 20.04

Haz clic en Finish setup para finalizar. A continuación, verás el formulario de inicio de sesión con la cuenta de administrador:

como instalar owncloud con nginx en ubuntu 20.04 login
Cómo instalar ownCloud con Nginx en Ubuntu 20.04

¡Felicitaciones! Ya tienes tu nube privada funcionando con ownCloud:

Instalación finalizada de Owncloud en uBUNTU 20.04
Cómo instalar ownCloud con Nginx en Ubuntu 20.04

Conclusión

En esta guía aprendiste a instalar ownCloud con Nginx en Ubuntu 20.04. Ahora puedes utilizar esta herramienta para almacenar tus archivos de forma segura y totalmente bajo tu control. Si en algún momento olvidas la contraseña de administrador, puedes resetearla desde la línea de comandos de Linux siguiendo las instrucciones de la documentación oficial.

Gabriel Cánepa
Gabriel Cánepa

Gabriel trabaja actualmente como desarrollador full-stack en Scalar, una firma que se dedica a hacer valuaciones de empresas. Es Administrador de Sistemas certificado por la Fundación Linux y previamente ha escrito un gran número de artículos y contenidos técnicos sobre el tema para: DigitalOcean, Linode, Carrera Linux Argentina y Tecmint.

Tiene una certificación en programación de la Universidad de Brigham Young-Idaho, y está completando las carreras de programador y analista de sistemas en la Universidad Nacional de Villa Mercedes (UNViMe).

En su tiempo libre, Gabriel disfruta leyendo libros de Stephen R. Covey, tocando piano y guitarra, y enseñando conocimientos de programación a su dos hijas.