LINUX

Cómo configurar OwnCloud 9 con Nginx y OpenSSL en FreeBSD 11

OwnCloud es una plataforma de aplicación de intercambio de archivos de código abierto y gratuita basada en PHP y MySQL que nos permite crear nuestra propia plataforma de almacenamiento en la nube. El servidor OwnCloud, que es una edición gratuita, se publica bajo la licencia GNU AGPLv3, mientras que la edición Enterprise está bajo la licencia comercial OwnCloud. Es un software de arquitectura cliente-servidor en el que los archivos se almacenan en el servidor, mientras que los clientes se utilizan para acceder y compartir los archivos. El cliente de OwnCloud está disponible para todas las plataformas, lo que facilita la administración y el acceso a los archivos desde todos los dispositivos. FreeBSD es un sistema operativo gratuito y de código abierto similar a Unix basado en sistemas BSD. A diferencia de Linux, FreeBSD se desarrolla como un sistema operativo completo desde el kernel, los controladores de dispositivo hasta las utilidades del área de usuario, mientras que Linux es un kernel con controladores de dispositivo. Nginx es un servidor web gratuito y de código abierto que es popular por su velocidad y capacidad para equilibrar las cargas del servidor y el almacenamiento en caché. Es uno de los servidores web y servidores proxy más populares que se utilizan en una gran cantidad de servidores.

Actualmente, mientras escribo este artículo, la última versión de OwnCloud es 9.1.1, por lo que realizaremos su configuración en nuestro servidor FreeBSD 11 recién instalado.

Instalación de la pila FEMP

FEMP Stack es la combinación de un servidor web Nginx, un servidor de base de datos MySQL / MariaDB y módulos PHP que se ejecutan en el servidor FreeBSD. FEMP es una de las pilas más utilizadas para alojar sitios web y aplicaciones web en servidores. Aquí, instalaremos la pila FEMP para ejecutar nuestro servidor OwnCloud basado en PHP.

Instalación del servidor web Nginx

Para instalar Nginx, necesitaremos ejecutar el siguiente comando pkg ya que el administrador de paquetes predeterminado de FreeBSD 11 es pkg.

% sudo pkg install nginx

Instalación de MySQL DB

Luego, necesitaremos configurar el servidor de base de datos MySQL donde almacenaremos la base de datos para nuestra instancia de OwnCloud. Para instalar la versión 5.6 del servidor de base de datos MySQL, necesitaremos ejecutar el siguiente comando en una terminal o consola con acceso sudo o root.

% sudo pkg install mysql56-server

Instalación de módulos PHP 7.0

A continuación, instalaremos todos los módulos PHP 7.0 necesarios para que podamos ejecutar nuestro servidor OwnCloud de la aplicación basada en PHP en nuestra máquina FreeBSD 11. Para instalar los módulos PHP requeridos, necesitaremos ejecutar el siguiente comando.

% sudo pkg install php70 php70-mysqli php70-xml php70-gd php70-curl php70-zlib php70-zip php70-hash php70-tokenizer php70-extensions php70-pdo_mysql php70-openssl php70-gmp php70-ldap php70-exif php70-fileinfo php70-mbstring php70-bcmath php70-bz2 php70-mcrypt pecl-APCu pecl-intl

Tenga en cuenta que los módulos instalados anteriormente son los módulos php comunes, mientras que, según los requisitos, es posible que deba instalar módulos adicionales.

Una vez instalados los módulos, copiaremos la configuración php de muestra, es decir, /usr/local/etc/php.ini-production a /usr/local/etc/php.ini ejecutando el siguiente comando.

% sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Abriremos el archivo /usr/local/etc/php.ini usando un editor de texto como nano, vi, como sigue.

% sudo nano /usr/local/etc/php.ini

Luego, descomentaremos la línea cig.fix_pathinfo en php.ini y estableceremos el valor en 0 para evitar que los usuarios ejecuten códigos PHP arbitrarios.

cgi.fix_pathinfo=0

Una vez finalizada la edición, guardaremos el archivo y saldremos del editor de texto. A continuación, necesitaremos ejecutar el comando rehash para regenerar la información de la caché del sistema sobre nuestros archivos ejecutables instalados.

% rehash

Habilitación de servicios

Ahora ejecutaremos el siguiente comando sysrc para habilitar los servicios nginx, php-fpm y mysql. Al habilitar los servicios, los demonios respectivos se ejecutarán automáticamente en cada inicio del sistema.

% sudo sysrc nginx_enable=yes mysql_enable=yes php_fpm_enable=yes

Una vez hecho esto, iniciaremos los demonios ejecutando el siguiente comando.

% sudo service nginx start
% sudo service mysql-server start
% sudo service php-fpm start

Configuración de PHP-FPM

Ahora, necesitaremos configurar PHP-FPM para usar un socket Unix en lugar de un puerto de red para la comunicación, ya que es más seguro que el puerto de red. Para hacerlo, necesitaremos hacer algunos cambios en el archivo de configuración php-fpm /usr/local/etc/php-fpm.d/www.conf usando un editor de texto.

% sudo nano /usr/local/etc/php-fpm.d/www.conf

Luego, haremos un comentario a la línea. escuchar = 127.0.0.1:9000 agregando un punto y coma, es decir ; antes de la línea. Una vez hecho esto, agregaremos la siguiente línea justo debajo.

listen = /var/run/php-fpm.sock

A continuación, descomentaremos la siguiente línea eliminando el punto y coma como.

listen.owner = www
listen.group = www
listen.mode = 0660

Una vez hecho esto, guardaremos el archivo y saldremos del editor de texto, luego reiniciaremos PHP-FPM ejecutando el siguiente comando.

% sudo service php-fpm restart

Configurar MySQL

Como aún no hemos configurado ninguna contraseña para el usuario root de nuestro servidor MySQL, aquí configuraremos una contraseña de root para él. Para hacerlo, necesitaremos ejecutar el siguiente comando.

% sudo mysql_secure_installation

Nos pedirá que ingresemos la contraseña de root para nuestro servidor MySQL, pero como no hemos establecido ninguna contraseña antes, simplemente presionaremos el botón Enter desde el teclado. Luego, se nos pedirá que configuremos una contraseña para nuestro usuario root de MySQL, aquí presionaremos Y y la ingresaremos. Luego, simplemente presionaremos el botón Enter en el teclado para establecer los valores predeterminados para las configuraciones adicionales.

Creación de una base de datos para OwnCloud

Como nuestro servidor MySQL se ha configurado correctamente, ahora crearemos una nueva base de datos para nuestra instancia de OwnCloud. Para hacerlo, primero necesitaremos iniciar sesión con el usuario raíz del servidor mysql ejecutando el siguiente comando.

% sudo mysql -u root -p

Luego, se nos pedirá que ingresemos la contraseña que habíamos establecido justo arriba. Una vez que el inicio de sesión sea exitoso, seremos bienvenidos al entorno de la consola MySQL. Aquí, necesitaremos ejecutar los siguientes comandos para crear una base de datos y establecer un usuario y una contraseña para ella.

> CREATE DATABASE ownclouddb;
> CREATE USER ownclouduser@localhost IDENTIFIED BY 'Pa$$word123';
> GRANT ALL PRIVILEGES ON ownclouddb.* TO 'ownclouduser'@'localhost';
> FLUSH PRIVILEGES;
> EXIT;

Aquí, en este tutorial, estamos creando una nueva base de datos, usuario y contraseña como ownclouddb, ownclouduser y Pa $$ word123 respectivamente.

Generando certificado SSL

Ahora generaremos un certificado SSL para que nuestro tráfico de OwnCloud se encripte con un certificado SSL. Incluso podemos generar y obtener un certificado SSL CA para una mejor autorización y seguridad, pero aquí, en este tutorial, usaremos un certificado SSL autofirmado que debería funcionar bien. Para hacerlo, ejecutaremos las siguientes líneas de comando que generarán y almacenarán las claves y el certificado en el directorio / usr / local / etc / nginx / cert /.

% sudo mkdir -p /usr/local/etc/nginx/cert/
% cd /usr/local/etc/nginx/cert/
% sudo openssl req -new -x509 -days 365 -nodes -out /usr/local/etc/nginx/cert/owncloud.crt -keyout /usr/local/etc/nginx/cert/owncloud.key

Una vez que ingrese el último comando anterior, se nos pedirá la información necesaria para generar el certificado SSL. Necesitaremos ingresar esa información para seguir adelante. Una vez hecho esto, el certificado con el archivo de claves se genera en el directorio requerido. Luego, tendremos que asegurarnos de que el certificado y las claves no sean accesibles excepto por el propietario del archivo.

% sudo chmod 600 *

Descarga y extracción de OwnCloud

Ahora, descargaremos la última versión del servidor OwnCloud en nuestra máquina. Podemos obtener la última versión del Página de descarga oficial de OwnCloud. Mientras escribía este artículo, la última versión de OwnCloud fue la versión 9.1.1, por lo que obtendremos el enlace del archivo zip del sitio web y luego usaremos wget para descargarlo en nuestro servidor FreeBSD 11. Aquí, descargaremos el archivo zip comprimido al directorio / tmp / de la siguiente manera.

% cd /tmp/
% wget https://download.owncloud.org/community/owncloud-9.1.1.zip

Una vez que se complete la descarga, extraeremos el archivo zip comprimido usando el comando descomprimir.

% unzip owncloud-9.1.1.zip

A continuación, trasladaremos el directorio a la raíz web de nginx, es decir, / usr / local / www / de forma predeterminada.

% sudo mv owncloud/  /usr/local/www/

Después de eso, necesitaremos cambiar la propiedad de los archivos y directorios de owncloud a www para que Nginx tenga acceso completo a los archivos y directorios de OwnCloud. Para hacerlo, necesitaremos ejecutar el siguiente comando.

% sudo chown -R www:www /usr/local/www/owncloud/

Configuración de Nginx con PHP-FPM

Ahora configuraremos nuestro servidor web Nginx con PHP-FPM para que podamos ejecutar nuestro OwnCloud en nuestro navegador web. Para hacerlo, necesitaremos configurar la configuración de Nginx ubicada en /usr/local/etc/nginx/nginx.conf usando un editor de texto.

% sudo nano /usr/local/etc/nginx/nginx.conf

Una vez que se abre el editor de texto, necesitaremos establecer el valor de usuario como www y trabajadores_procesos como el número de CPU o núcleos con los que está configurada nuestra máquina. Esto se puede comprobar ejecutando sysctl hw.ncpu en la consola. Luego, necesitaremos configurar nuestro bloque de servidor {} como se muestra en la siguiente configuración de nginx.

    user  www;
worker_processes  1; #No. of processors
error_log /var/log/nginx/error.log info;

events {
worker_connections  1024;
}

http {
include       mime.types;
default_type  application/octet-stream;

access_log /var/log/nginx/access.log;

sendfile        on;
keepalive_timeout  65;

server {
server_name cloud.linoxide.com www.cloud.linoxide.com;
listen 80;
return 301 https://$server_name$request_uri;
}

server {
listen  443 ssl;
server_name cloud.linoxide.com www.cloud.linoxide.com;
root /usr/local/www/owncloud/;
index index.php index.html index.htm;

# Adding our self-signed SSL Certificate.
ssl_certificate /usr/local/etc/nginx/cert/owncloud.crt;
ssl_certificate_key /usr/local/etc/nginx/cert/owncloud.key;

# Add headers to serve security related headers
add_header Strict-Transport-Security "max-age=15768000;includeSubDomains; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;

# The following 2 rules are only needed for the user_webfinger app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
#rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

location = /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}

location /.well-known/acme-challenge { }

# set max upload size
client_max_body_size 512M;
fastcgi_buffers 64 4K;

# Disable gzip to avoid the removal of the ETag header
gzip off;

# Uncomment if your server is build with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;

error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;

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(?:$|/)
{
fastcgi_split_path_info ^(.+.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
fastcgi_param front_controller_active true;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}

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

# Adding the cache control header for js and css files
# Make sure it is BELOW the PHP block
location ~* .(?:css|js)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=7200";
# Add headers to serve security related headers (It is intended to have those duplicated to the ones above)
# Before enabling Strict-Transport-Security headers please read into this topic first.
#add_header Strict-Transport-Security "max-age=15552000;includeSubDomains";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
# Optional: Don't log access to assets
access_log off;
}

location ~* .(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
try_files $uri /index.php$uri$is_args$args;
# Optional: Don't log access to other assets
access_log off;
}
}
}

Una vez configurada y guardada la configuración, debemos asegurarnos de que nuestro archivo de configuración no tenga ningún error de sintaxis. Podemos saber eso ejecutando el siguiente comando.

% sudo nginx -t

Si nuestra configuración está bien, reiniciaremos nuestro servidor nginx. Podemos reiniciar nuestro servidor nginx ejecutando el siguiente comando.

% sudo service nginx restart

Instalación de OwnCloud

Si todo lo anterior está configurado como se esperaba, ahora deberíamos poder acceder a la interfaz web de OwnCloud Installer. Para acceder, necesitaremos abrir nuestro navegador web favorito y apuntar la dirección a https: // dirección-ip / o https://cloud.linoxide.com/. Si usamos un certificado SSL autofirmado, veremos una advertencia en el navegador web como se muestra a continuación. Mientras ejecutamos Firefox, tendremos que hacer clic en Avanzado entonces Añadir excepción y confirmar el certificado.

Confirmación de certificado autofirmado SSL

Luego, seremos bienvenidos al instalador web OwnCloud en el que necesitaremos configurar los detalles de inicio de sesión para nuestro usuario administrador de OwnCloud. A continuación, necesitaremos hacer clic en Almacenamiento y base de datos en el que seleccionaremos MySQL / MariaDB ya que hemos configurado MySQL anteriormente.

Instalación web OwnCloud

Luego, necesitaremos ingresar la información de inicio de sesión de la base de datos que habíamos configurado anteriormente al crear nuestra nueva base de datos. Una vez hecho esto, seremos dirigidos al panel de almacenamiento de archivos de OwnCloud.

Panel de OwnCloud 9

Conclusión

Aquí hemos instalado la última versión de OwnCloud 9.1.1 en nuestra máquina FreeBSD 11 con Nginx como servidor web, MySQL DB como servidor de base de datos y módulos PHP con PHP-FPM con certificado SSL. Aquí, en este artículo, el certificado SSL es autofirmado, pero incluso podemos configurar LetsEncrypt y generar un certificado CA SSL gratuito con él o podemos comprar un certificado CA comercial de diferentes proveedores. Una vez que se haya completado su instalación, ahora podemos agregar más usuarios, configurar configuraciones de correo electrónico, cargar y compartir nuestros archivos y carpetas requeridos. La mayor ventaja de OwnCloud es que podemos instalar muchas aplicaciones basadas en la nube que podemos utilizar para realizar muchas actividades en nuestro servidor OwnCloud. Podemos conectarnos a la plataforma owncloud utilizando sus clientes que se pueden ejecutar desde casi cualquier plataforma. Por lo tanto, si tiene alguna pregunta, sugerencia o comentario, escríbalos en el cuadro de comentarios a continuación. Gracias ! Disfrutar 🙂

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar