0% encontró este documento útil (0 votos)
57 vistas81 páginas

Implementación de Nextcloud en Servidor Nginx

Este documento describe la instalación y configuración de un servidor Nextcloud para proporcionar servicios de almacenamiento y sincronización de archivos, calendarios y contactos a través de una nube privada. El proyecto se implementa en un servidor Debian con Nginx que hospeda Nextcloud para que los usuarios puedan acceder a sus datos de forma centralizada y desde cualquier dispositivo a través del navegador.

Cargado por

clopez5556
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
57 vistas81 páginas

Implementación de Nextcloud en Servidor Nginx

Este documento describe la instalación y configuración de un servidor Nextcloud para proporcionar servicios de almacenamiento y sincronización de archivos, calendarios y contactos a través de una nube privada. El proyecto se implementa en un servidor Debian con Nginx que hospeda Nextcloud para que los usuarios puedan acceder a sus datos de forma centralizada y desde cualquier dispositivo a través del navegador.

Cargado por

clopez5556
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

2020

Administración de sistemas
informaticos en red

Carlos López López

[COMPUTACIÓN EN LA
NUBE CON NEXTCLOUD]
Confidencialidad y privacidad de la información en la nube gracias a la nube privada
Contenido

1 – Introducción.............................................................................................................5

1.1- Descripción del proyecto..........................................................................................5

1.2- Justificación/fundamentación...................................................................................5

1.3- Beneficiarios del proyecto........................................................................................5

1.4- Localización del proyecto: dónde se llevará a cabo.................................................5

2- Objetivos....................................................................................................................6

2.1- Objetivos generales:.................................................................................................6

2.2-Objetivos específicos:...............................................................................................6

3- Recursos....................................................................................................................7

4- Tareas y aproximación temporal.............................................................................8

5.- Desarrollo..................................................................................................................9

5.1.- Instalacion del Servidor...........................................................................................9

5.2.- Instalacion del servidor web Nginx........................................................................13

5.2.1- Instalando el servidor web Nginx:................................................................................13

5.2.2- Configuración de Nginx................................................................................................13

5.2.3- Servidores virtuales en Nginx.......................................................................................15

5.2.4- Archivos del sitio web..................................................................................................17

5.2.5- Activación del sitio web................................................................................................17

5.2.6- Configurar el servidor virtual con HTTPS......................................................................18

5.2.7- Instalar PHP en Nginx...................................................................................................20

5.3.- Instalación de Nextcloud.......................................................................................20

5.3.1- Instalación y configuración de Postgresql....................................................................20

5.3.2- Instalando módulos adicionales de PHP necesarios para el funcionamiento de


Nextcloud...............................................................................................................................21

5.3.3- Creando el sitio web para nuestro Nextcloud..............................................................22


5.3.4- Activar el sitio...............................................................................................................26

5.3.5- Ajustes previos a la instalació n de Nextcloud.........................................................26

5.3.6- Pantalla de instalación de Nextcloud...........................................................................27

5.4- Archivos y directorios de Nextcloud.......................................................................29

5.5.- Administracion de Nextcloud.................................................................................31

5.5.1- Usuarios y grupos en Nextcloud...................................................................................31

5.5.2.- Aplicaciones de usuario:..............................................................................................35

5.5.3- Administrar las aplicaciones de Nextcloud:..................................................................40

5.5.4- Opciones de configuración...........................................................................................41

5.6.- Sincronización de los servicios de Nextcloud.......................................................56

5.6.1- Sincronización de archivos:..........................................................................................56

5.6.2- Sincronización de libretas de direcciones:....................................................................61

5.6.3- Sincronizando nuestro calendario Nextcloud en Thunderbird.....................................67

5.8.- Onlyoffice document server...................................................................................72

5.8.1- Instalación de Onlyoffice document server..................................................................72

6- Resultados obtenidos.............................................................................................75

7- Conclusiones y propuestas...................................................................................76

8- Bibliografía y referencias.......................................................................................77

9- Anexos......................................................................................................................77

Anexo I- Instalación del servidor DNS...........................................................................77

Anexo II.- Instalacion de servidor de correo Postfix con Dovecot.................................81


1 – Introducción
1.1- Descripción del proyecto.
El proyecto se compone básicamente de un servidor que proporcinará servicios en la
nube a través del software web que compone el paquete Nextcloud que será instalado
en un servidor web Nginx sobre un sistema Debian Linux 10. Con este software se
podrán alojar archivos, editarlos, gestionar calendarios y listas de contactos para
tenerlos sincronizados en diferentes equipos o dispositivos como ordenadores,
teléfonos móviles, tablets etc.

1.2- Justificación/fundamentación.

Este proyecto tiene la intención de desplegar el software necesario para poder tener la
información centralizada y siempre disponible, desde cualquier lugar y cualquier
dispositivo a través del navegador o de aplicaciones específicas para tal efecto.

1.3- Beneficiarios del proyecto.

Con una solución de este tipo, autónomos principalmente, dispondrían de los


beneficios de una gestión centralizada de sus datos para facilitar la salvaguarda de la
información (copias de seguridad) y de un servicio de almacenamiento profesional
(tolerante a fallos).

Además de estos beneficios, se suman los ahorros de costes en licencias ya que el


software en el que se sustenta el proyecto es OpenSource.

1.4- Localización del proyecto: dónde se llevará a cabo

La localización del preoyecto puede ser en las instalaciones del cliente o en las de la
empresa tecnológica que se encargue de la gestión del mismo. En este caso el
proyecto lo he realizado en mi domicilio, tanto el montaje del servidor como la
instalación y la configuración de las diversas partes.
2- Objetivos
2.1- Objetivos generales:

- El cliente debe tener la posibilidad de tener acceso a su información con


independencia del nivel de movilidad necesario para el desarrollo de su actividad, por
eso el dispositivo utilizado para ello debe ser lo mas sencillo posible, con un
navegador debería ser suficiente.

- La nube privada asegura la privacidad y la confidencialidad de sus datos. Los


servicios de computación en nube suelen ofrecerlos empresas tecnológicas que
almacenarán la información en equipos de su compañía. Cada vez más empresas
optan por nubes privadas en sus redes corporativas o nubes híbridas, de tal forma que
las grandes compañías ayuden con sus equipos sólo cuando haya grandes cargas de
trabajo.

- Simplificar y facilitar las tareas de gestión de la información ya que el usuario domina


su actividad profesional pero no tiene porque tener conocimientos sobre informática. El
servidor debe ser mantenido por personal técnico y puede estar ubicado en las
instalaciones del cliente o en las de la empresa proveedora.

2.2-Objetivos específicos:

- Servicio de Almacenamiento Redundante tolerante a fallos para evitar perdida de la


información.
- Sincronización de archivos del servidor en el disco local del cliente
- Software ofimática en línea para la edición de documentos
- Gestión de Calendarios para la organización de tareas
- Gestión de contactos para tener libretas de direcciones accesibles desde
cualquier software de correo electrónico
3- Recursos
Medios de producción:

- Servidor sobre el que se desarrolla este proyecto, consta de los siguientes


componentes:
- Chasis reducido para placas mini-ITX Fractal node 304.
- Placa Mini-ITX ECS h61h2-I2/V2.0 más Intel G850 de doble núcleo a 2.9Ghz

- Memoria RAM: 6GB (4+2)


- Discos duros:
- 60 GB: Para albergar el Sistema operativo
- 3x160TB: Configurados en RAID1 para el almacenamiento de
archivos, dos de ellos para armar el RAID y otro en espera

- Router Wifi Comtrend para crear una red wifi a la que conectar los dispositivos
móviles para comprobar la sincronización de los servicios que proprciona Nextcloud.
Este router debe establecer por DHCP una dirección IP de la red interna en los
dispositivos móviles y establecerles como DNS la dirección IP del servidor, el cual
lleva configurado un Bin9 (Anexo I) para que puedan resolver el dominio del sitio web
donde está desplegado Nextcloud: [Link]

- Ordenador portátil con el que conectar al servidor para probar la sincronización de los
servicios desde el software de escritorio

Perfiles competenciales: El proyecto ha sido desarrollado por una sola persona con
capacidades técnicas a nivel de sistemas, programación, gestión de bases de datos y
conocimientos de hardware para la instalación y configuración de componentes.
4- Tareas y aproximación temporal
- Montaje del servidor e instalación del software base. 5h
Montaje del servidor, instalación del sistema, configuración de la red, montaje del
RAID1, instalación y configuración de las políticas de cuotas de disco.

- Instalación del servidor web Nginx. 4h


Instalación del servidor Nginx junto con el sitio web principal que va a contener la
aplicación Nextcloud. Conexiones seguras con certificados ssl auto-firmados.

- Instalacion de Nextcloud. 5h
Instalación de un servidor de bases de datos PostgreSql y de los módulos necesarios
para el funcionamiento de Nextcloud e instalación del propio Nextcloud.

- Administración de Nextcloud. 5h
Creación de los usuarios y grupos y configuración de los complementos para gestión
de archivos, calendarios, contactos y correo electrónico desde el navegador. Gestión
de las cuotas de disco.

- Sincronizando recursos. 4h
Sincronización de los recursos que nos proporciona nuestra nube privada en un
sistema de escritorio local: sincronización de archivos (software de Nextcloud),
importar calendarios y libretas de contactos (Mozilla Thunderbird).

- Servidor de documentos. 3h
Instalación de un servidor de documentos OnlyOffice y configurar su integración en
Nextcloud para editar archivos directamente desde el navegador.

- Instalación y configuración de un servidor DNS. 3h


Instalación y configuración de un servidor DNS Bind para la demostración.
Modificación de la configuración del router wifi para establecer los parámetros de red
correctos en los dispositivos móviles para la correcta conexión con el servidor.

- Instalación de un servidor de correo. 3h


Instalación de Postfix y Dovecot con ssl más los usuarios pertinentes y configurar las
cuentas en el sistema de escritorio de cada usuario en Mozilla Thunderbird.

Total horas: 32 h
5.- Desarrollo
5.1.- Instalacion del Servidor

- El sistema operativo:

El sistema Operativo sobre el que se va a instalar el servidor será Debian Linux 10


Buster, con una instalación sin entorno gráfico y una configuración del disco en tres
particiones:

- Partición de 10 GB para el sistema de archivos raíz.

- Partición de 10 GB para el directorio /var.

- Partición para los datos de usuario construida a partir de un RAID1 y montada en


/home que se hará de forma posterior a la instalación.

- Configurar el nombre del servidor y el dominio de actuación:

El nombre del dominio será “cloud-server” y se configura en el archivo


/etc/hostname.
En el archivo /etc/hosts se configura el nombre completo (dominio incluido).

[Link] localhost

[Link] [Link] cloud-server

- Configuración de la red:

- Archivo /etc/network/interfaces: configuro la interfaz de red con la dirección


[Link]/24 y la puerta de enlace hacia el router wifi ([Link]).

- Archivo /etc/[Link]: configuro como servidor DNS el propio servidor (localhost),


ya que actuará como servidor DNS para que los dispositivos móviles puedan resolver
el dominio “[Link]”.

search [Link]
nameserver [Link]
nameserver [Link]

- Instalando OpenSSH:

Para interactuar en el servidor desde cualquier equipo de la red facilitando con ello la
administración.

aptitude install openssh-server

- Configuración del servidor ssh, archivo /etc/ssh/sshd_config:


Indicar la dirección de escucha del servicio, [Link], a través del puerto 22 y con
la versión 2 del protocolo ssh:

# Package generated configuration file


# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for


Port 22
# Use these options to restrict which interfaces/protocols sshd will
bind to
#ListenAddress ::
#ListenAddress [Link]
ListenAddress [Link]
Protocol 2

Por seguridad, se debe desactivar el login como root. De esta forma para ser root, se
debe acceder como usuario normal y, después cambiar a root.

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
Controlamos tambien que no se puede hacer login con contraseñas vacías:

# To enable empty passwords, change to yes (NOT RECOMMENDED)

PermitEmptyPasswords no

Reiniciar el servicio:

# /etc/init.d/ssh restart

- Instalacion del RAID1:

Para crear un RAID por software en Linux se utiliza mdadm, que en Debian hay que
instalarlo.

# apt install mdadm

Una vez instalado, hay que crear el RAID que en este caso va a ser un RAID1 formado
por dos discos de 160GB cada uno más otro en espera del mismo tamaño:

mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb


/dev/sdc --spare-devices=1 /dev/sdd

- Guardar la configuración del RAID:

Se puede guardar la configuración del RAID para disponer de ella posteriormente. En


el caso de que haya que desmontar el RAID para sustituir alguno de los discos, por
ejemplo, se podría montar de nuevo la configuración de los discos, tras la sustitución
de los discos que hagan falta, mediante la opcion -as o --assemble del comando
mdadm, la cual leerá configuración del archivo /etc/[Link]. Es conveniente crear
este archivo porque de lo contrario habría que ensamblarlo de forma manual y es
bastante complejo, de esta forma se simplifica bastante el proceso.

# echo “DEVICE partitions” > /etc/[Link]


# mdadm --detail --scan >> /etc/[Link]
# vi /etc/[Link]

DEVICE partitions
ARRAY /dev/md0 metadata=1.2 name=cloud-server:0
UUID=d01d5d77:5c6f02f1:371de49c:a03f1df3

Crear el sistema de ficheros

mkfs -t ext4 dev/md0

En este punto conviene reiniciar el sistema porque Debian renombra la partición a


/dev/md127. Si montasemos el volumen en fstab con /dev/md0 daria error al arrancar,
deberemos montarla con /dev/md127 o mediante el ID del volumen.

root@cloud-server:~# mdadm --detail /dev/md127


/dev/md127:
Version : 1.2
Creation Time : Sun May 10 00:17:23 2020
Raid Level : raid1
Array Size : 156158784 (148.92 GiB 159.91 GB)
Used Dev Size : 156158784 (148.92 GiB 159.91 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent

Intent Bitmap : Internal

Update Time : Sun May 10 11:33:15 2020


State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1

Consistency Policy : bitmap

Name : cloud-server:0 (local to host cloud-server)


UUID : d01d5d77:5c6f02f1:371de49c:a03f1df3
Events : 4897

Number Major Minor RaidDevice State


0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc

2 8 48 - spare /dev/sdd

- Montar la unidad del sistema Raid en el directorio /home:


Montar la unidad del sistema Raid en el directorio /home que será el que contenga los
datos de los usuarios

Añadir esta linea a /etc/fstab para montar el volumen creado en /home, así se montará
automáticamente al iniciar el sistema

/dev/md127 /home ext4 defaults 0 2

Reiniciar y comprobar los volumenes con el comando df:

# df –h

- Creación de usuarios y cuotas de disco:

En un servidor que se encarga de alojar ficheros es indispensable asegurarnos de que


los usuarios no hacen un uso abusivo del disco aplicando cuotas de disco que
permiten poner un límite de uso del disco duro a cada usuario.

Creación de usuarios juan-sanchez y pedro-perez mediante el comando “assuser”


(script que crea usuarios de forma interactiva), que solicita la contraseña y otra
información adicional como el nombre completo, etc.

# adduser juan-sanchez
# adduser pedro-perez

Instalación de la herramienta quota para la gestión de las cuotas:


# apt install quota

Activar las cuotas del sistema de archivos en /etc/fstab, añadiendo las opciones
usrquota y grpquota al sistema de archivos:
/dev/md127 /home ext4 defaults,usrquota,grpquota 0 2

Reiniciar para que los cambios tengan efecto.


Creación de los archivos de cuotas:
# quotacheck -cug /home
# cd /home
# root@cloud-server:/home# ls
[Link] [Link] juan-sanchez lost+found pedro-perez

Asignación de las cuotas por usuario, comando “edquota usuario”:


# edquota pedro-perez

Disk quotas for user pedro (uid 1002):


Filesystem blocks soft hard
inodes soft hard
/dev/md127 16 8388608 8593408 4
0 0
De esta forma queda establecida la cuota de disco en 8,2GB avisando cuando se
rebasan los 8GB.

Para ver un informe en este momento del uso de las cuotas en el sistema de ficheros:
root@cloud-server:/home# repquota /home
*** Report for user quotas on device /dev/md127
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
juan-sanchez -- 16 8388608 8593408 4 0 0
pedro-perez -- 16 8388608 8593408 4 0 0

5.2.- Instalacion del servidor web Nginx

5.2.1- Instalando el servidor web Nginx:


root@cloud-server:~# apt install nginx

Comprobar el servicio:

root@cloud-server:~# systemctl status nginx

Comprobar que está escuchando en el puerto 80:

root@cloud-server:~# netstat -ltunp | grep nginx

En este momento, es posible acceder a la página web por defecto de Nginx poniendo
la dirección Ip del servidor o su nombre de dominio en caso de que se pueda resolver
con un servidor DNS (como en este caso) o a través de un fichero hosts.

5.2.2- Configuración de Nginx


Los archivos de configuración de Nginx se encuyentran en /etc/nginx.

El archivo de configuración principal es /etc/nginx/[Link] y contiene


configuraciones contenidas en otros archivos, como /etc/nginx/conf.d y directorios
como /etc/nginx/sites-enabled.

-Sitio web por defecto

Nginx Tiene activado un servidor virtual por defecto que es el que responde cuando no
hay un servidor virtual específico configurado para ese dominio, su fichero de
configuración esta en /etc/nginx/sites-available/default:
root@cloud-server:~# cat /etc/nginx/sites-available/default

# Default server configuration


#
server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: [Link]
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: [Link]
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/[Link];

root /var/www/html;

# Add [Link] to the list if you are using PHP


index [Link] [Link] [Link];

server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

# pass PHP scripts to FastCGI server


#
#location ~ \.php$ {
# include snippets/[Link];
#
# # With php-fpm (or other unix sockets):
# fastcgi_pass unix:/run/php/[Link];
# # With php-cgi (or other tcp sockets):
# fastcgi_pass [Link]:9000;
#}

# deny access to .htaccess files, if Apache's document root


# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

# Virtual Host configuration for [Link]


#
# You can move that to a different file under sites-available/ and
symlink that
# to sites-enabled/ to enable it.
#
#server {
# listen 80;
# listen [::]:80;
#
# server_name [Link];
#
# root /var/www/[Link];
# index [Link];
#
# location / {
# try_files $uri $uri/ =404;
# }
#}

5.2.3- Servidores virtuales en Nginx


Para crear un servidor virtual en Nginx hay que crear su archivo de configuración en
/etc/nginx/sites-available para despues activarlo. Nginx no tiene en cuenta las
configuraciones de los sitios del directorio sites-available, para que se añada la
configuracion de un sitio creado en sites-available al archivo de configuración principal
hay que crear un enlace simbolico que apunte a ese fichero de configuración
desde /etc/nginx/sites-enabled, de esa forma quedará activado o lo que es lo mismo,
Nginx añadirá su configuración al archivo de configuración principal en
/etc/nginx/[Link].

El sitio web por defecto de Nginx es un servidor virtual con su archivo de configuracion
en /etc/nginx/sites-available/default y su enlace en
/etc/nginx/sites-enabled/default

- Crear un servidor virtual

Servidor virtual “[Link]”: Creo el archivo de configuración


/etc/nginx/sitesavailable/[Link]:

server {
listen 80;
listen [::]:80;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: [Link]
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: [Link]
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/[Link];

root /var/www/starenterprise;

# Add [Link] to the list if you are using PHP


index [Link] [Link] [Link] [Link];

server_name [Link];

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

# pass PHP scripts to FastCGI server


#
#location ~ \.php$ {
# include snippets/[Link];
#
# # With php-fpm (or other unix sockets):
# fastcgi_pass unix:/run/php/[Link];
# # With php-cgi (or other tcp sockets):
# fastcgi_pass [Link]:9000;
#}

# deny access to .htaccess files, if Apache's document root


# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
access_log /var/log/nginx/[Link];
error_log /var/log/nginx/[Link];
}

- Configuración del servidor virtual:

La configuración del servidor virtual se compone de una serie de directivas dentro de


un bloque server:
- listen: indica los puertos de escucha tanto para IPv5 como para IPv6

- server-name: especifica el nombre de dominio al que se asocia el servidor virtual

- root: indica el directorio que contendrá los archivos que forman el sitio web; archivos
html, imágenes,etc.

- index: aquí se enumeran los archivos que se buscarán en primer lugar dentro del
directorio, es decir, los archivos índice.

- location: En este bloque se indican una serie de configuraciones concretas de esta


ruta o directorio del sitio web. La directiva try_files indica que el recurso solicitado
(URL) ha de resolverse como un archivo, en caso contrario como un directorio y como
ultima opción error 404.

5.2.4- Archivos del sitio web


Los archivos web del servidor por defecto se alojan en /var/www/html, para el sitio
[Link] vamos a crear el directorio /var/www/starenterprise y crearemos el
archivo [Link] que aparecerá como página de inicio del sitio.

root@cloud-server:~# mkdir /var/www/starenterprise


root@cloud-server:~# nano /var/www/starenterprise/[Link]
<html>
<head>
<title>
Sitio de Starenterprise
</title>
</head>
<body>
<h1>Bienvenidos a la web de Starenterprise</h1>
</body>
</html>

5.2.5- Activación del sitio web


Para activar el servidor virtual hay que crear el enlace simbólico en /etc/sites-
enebled/[Link] que apunte a
/etc/nginx/sites-available/[Link]

root@cloud-server:~# ln -s
/etc/nginx/sites-available/[Link] /etc/nginx/sites-
enabled/

En este punto, si accedemos al sitio mediante el nombre de dominio


[Link] accederemos a la página creada para este sitio virtual en lugar
de la página del sitio por defecto de Nginx.

Comprobamos que la configuración de Nginx esté correcta y la recargamos:


root@cloud-server:~# nginx -t
nginx: the configuration file /etc/nginx/[Link] syntax is ok
nginx: configuration file /etc/nginx/[Link] test is successful
root@cloud-server:~# systemctl reload [Link]

5.2.6- Configurar el servidor virtual con HTTPS


Crearemos los certificados autofirmados necesarios para el cifrado asimétrico
mediante OpenSSL. Primero crearemos una clave privada y en base a esa clave
crearemos la clave pública (certificado) mediante el estándar x509, de esta forma el
certificado dependerá de la clave privada para cualquier servicio que requiera una
conexión ssl.

Instalación de openssl:

root@cloud-server:~# apt install openssl

Creamos una clave privada

root@cloud-server:~# openssl genrsa -out [Link] 4096

Generar CSR (Certificate Singning Request): Normalmente este archivo csr es lo que
se manda a la autoridad certificadora que emite el certificado y lo firma digitalmente
para asegurar su autenticidad. En este caso el certificado lo generaré yo y será un
certificado autofirmado

root@cloud-server:~# openssl req -new -key [Link] -out [Link]

- req –new: se indica para crear el csr

- key [Link]: indica el fichero de clave privada que se incluye en la solicitud

- out [Link]: indica el archivo de salida que será el crs generado a partir de la clave
y los datos que se nos soliciten como el nombre del dominio, email, pais,
organización,etc.

root@cloud-server:~# openssl req -new -key [Link] -out [Link]


You are about to be asked to enter information that will be
incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or
a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Madrid
Locality Name (eg, city) []:Madrid
Organization Name (eg, company) [Internet Widgits Pty
Ltd]:Starenterprise
Organizational Unit Name (eg, section) []:TI
Common Name (e.g. server FQDN or YOUR name) []:[Link]
Email Address []:info@[Link]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

- Generar el certificado

Para generar el certificado se usarán la clave privada y el archivo csr creados


anteriormente.

root@cloud-server:~# openssl x509 -req -days 365 -in [Link] -


signkey [Link] -out [Link]
Signature ok
subject=C = ES, ST = Madrid, L = Madrid, O = Starenterprise, OU = TI,
CN = [Link], emailAddress = info@[Link]
Getting Private key
root@cloud-server:~# ls
[Link] [Link] [Link]

Tras ubicar el certificado en /etc/ssl/certs/[Link]/[Link] y la


clave privada en /etc/ssl/private/[Link]/[Link], lo
siguiente es configurar el archivo de configuracion del servidor virtual.

root@cloud-server:~# mkdir /etc/ssl/certs/[Link]


root@cloud-server:~#cp [Link]
/etc/ssl/certs/[Link]/[Link]
root@cloud-server:~# mkdir /etc/ssl/private/[Link]
root@cloud-server:~#cp [Link]
/etc/ssl/private/[Link]/[Link]

- Configurar el certificado en Nginx

Para configurar el certificado en nuestro servidor virtual, hay que añadir las lineas de
configuracion correspondientes a SSL en el archivo de configuración del sitio
/etc/nginx/sites-available/[Link].

listen 443 ssl;


listen [::]:443 ssl;
...
#include snippets/[Link];
ssl_certificate /etc/ssl/certs/[Link]/[Link];
ssl_certificate_key /etc/ssl/private/[Link]/cloud-
[Link];
...
Comprobamos que todo esté correcto y recargamos la configuración de Nginx:

root@cloud-server:~# nginx -t
nginx: the configuration file /etc/nginx/[Link] syntax is ok
nginx: configuration file /etc/nginx/[Link] test is successful
root@cloud-server:~# systemctl reload [Link]
root@cloud-server:~# systemctl status nginx
5.2.7- Instalar PHP en Nginx
Nginx no dispone de un módulo que le permita disponer de procesamiento nativo para
PHP, en su lugar debemos instalar php-fpm (FastCGI Process Manager) e indicar a
Nginx que le transmita las sulicitudes que reciba de PHP para que lo procese en el
archivo de configuración del sitio.

root@cloud-server:~# apt install php-fpm


root@cloud-server:~# vi
/etc/nginx/sites-available/[Link]

location ~ \.php$ {
include snippets/[Link];
fastcgi_pass unix:/var/run/php/[Link];
}

Este bloque de ubicación dirige la peticiones php al archivo [Link], que es el


socket asociado a php-fpm.

Tras guardar los cambios hay que comprobar que no haya errores de sintaxis y
recarcar la configuración de Nginx:

root@cloud-server:~# nginx -t
nginx: the configuration file /etc/nginx/[Link] syntax is ok
nginx: configuration file /etc/nginx/[Link] test is successful
root@cloud-server:~# systemctl reload nginx

Comprobar el funcionamiento de php:

Creamos el archivo [Link] en /var/www/starenterprise/[Link]

<?php
phpinfo();
?>

5.3.- Instalación de Nextcloud

5.3.1- Instalación y configuración de Postgresql


Para la instalación de Nextcloud se necesita un servidor de bases de datos que puede
ser MySql/MariaDB o Postgresql principalmente. Además, hay que crear una base de
datos y un usuario con permisos totales en ella para que Nextcloud cree la estructura y
maneje los datos que necesita para su funcionamiento.

apt install postgresql postgresql-contrib

Completado. Ahora puede iniciar el servidor de bases de datos usando:

pg_ctlcluster 11 main start


Ver Cluster Port Status Owner Data directory Log file
11 main 5432 down postgres /var/lib/postgresql/11/main
/var/log/postgresql/[Link]
- Autenticación en Postgres:

Postgresql utiliza un concepto llamado role para la autenticación que es mas flexible
que los usuarios y los grupos, de esa forma asocia los roles de Postgresql con
usuarios de UNIX/Linux para iniciar sesion en el propio servidor de bases de datos
(linea de comandos de Postgres), lo que se llama autenticación ident.

En la instalación, Postgresql creo una cuenta de usuario en el sistema llamada


postgres que se asocia con el rol predeterminado de Postgres permitiendo así iniciar
sesión desde esa cuenta. Podríamos crear otros usuarios con un rol asociado en
Postgres para acceder al servidor, pero no es la finalidad de este proyecto.

root@cloud-server:~# su – postgres

Para acceder a la consola de Postgres:

postgres@cloud-server:~$ psql
psql (11.7 (Debian 11.7-0+deb10u1))
Digite «help» para obtener ayuda.

Salir de Postgres:
postgres=# \q

- Creando el usuario y la base de datos:

Entramos en Postgres de la forma anterior y ejecutamos las siguientes instrucciones:

postgres=# CREATE ROLE usr_nextcloud_db PASSWORD


'nextcloud_db_administrador';
CREATE ROLE
postgres=# CREATE DATABASE nextcloud WITH OWNER usr_nextcloud_db;
CREATE DATABASE
postgres=# ALTER ROLE usr_nextcloud_db WITH LOGIN;
ALTER ROLE
postgres=# \q

5.3.2- Instalando módulos adicionales de PHP necesarios para el


funcionamiento de Nextcloud
Una vez instalado el servidor web y el servidor de base de datos, ahora hay que
instalar algunos módulos PHP adicionales, necesarios para el funcionamiento de
NextCloud: php, php-pgsql, php-curl, php-gd, php-json, php-xml, php-intl,
php-zip, php-imagic, php-mbstring, php-memcached.
root@cloud-server:~# apt install php php-pgsql php-curl php-gd php-
json php-xml php-intl php-zip php-imagic php-mbstring php-memcached
5.3.3- Creando el sitio web para nuestro Nextcloud:

Para la instalación de la nube privada con Nextcloud hay que crear un servidor virtual,
que será [Link], esta dirección será resuelta mediante el servidor DNS instalado
en el Anexo I. Los archivos del sitio estarán alojados en /var/www/nextcloud.
La versión de Nextcloud que voy a instalar es la 18.0.2, por lo que procedo a su
descarga mediante:
root@cloud-server:~# wget
[Link]

Descomprimo el archivo y obtengo la carpeta nextcloud.


root@cloud-server:~# apt install unzip

root@cloud-server:~# unzip -q [Link]

Por último copio la carpeta nextcloud al directorio del sitio web,


/var/www/nextcloud, y le otorgo la propiedad al usuario www-data

root@cloud-server:~# cp -r nextcloud /var/www/nextcloud


root@cloud-server:~# ls /var/www/nextcloud/
3rdparty [Link] [Link] ocm-provider [Link] themes
apps COPYING [Link] ocs resources updater
AUTHORS core lib ocs-provider [Link] [Link]
config [Link] occ [Link] [Link]
chown -R www-data:www-data /var/www/nextcloud

En este punto hay que crear el directorio de datos en /home/nextcloud/data:


root@cloud-server:/var/www/starenterprise# cd /home
root@cloud-server:/home# ls
[Link] [Link] carlos juan lost+found pedro root
root@cloud-server:/home# mkdir nextcloud
root@cloud-server:/home# cd nextcloud/
root@cloud-server:/home/nextcloud# mkdir data

Otorgamos la propiedad al usuario web y damos permisos al directorio de datos


root@cloud-server:/home/nextcloud# chown -R www-data:www-data
/home/nextcloud
root@cloud-server:/home/nextcloud# chmod -R 750 /home/nextcloud/data

Crear nuesto sitio web:

Para crear el servidor virtual [Link]: Creo el archivo de configuracion


/etc/nginx/sites-available/[Link] y le añado esta configuración:

# Default server configuration


#

upstream php-handler {
server [Link]:9000;
server unix:/var/run/php/[Link];
}
server {
listen 80;
listen [::]:80;
server_name [Link];
# enforce https
return 301 [Link]
}
server {
#listen 80;
#listen [::]:80;

# SSL configuration
#
listen 443 ssl;
listen [::]:443 ssl;
# include snippets/[Link];
ssl_certificate /etc/ssl/certs/[Link]/[Link];
ssl_certificate_key /etc/ssl/private/[Link]/cloud-
[Link];

add_header X-Content-Type-Options nosniff;


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;
add_header Referrer-Policy no-referrer;

# Remove X-Powered-By, which is an information leak


fastcgi_hide_header X-Powered-By;

root /var/www/nextcloud;

location = /[Link] {
allow all;
log_not_found off;
access_log off;
}

# 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 /[Link]?service=host-meta last;
#rewrite ^/.well-known/[Link] /[Link]?service=host-meta-
json last;

# The following rule is only needed for the Social app.


# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/webfinger /[Link]?service=webfinger last;

location = /.well-known/carddav {
return 301 $scheme://$host:$server_port/[Link]/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host:$server_port/[Link]/dav;
}

# Add [Link] to the list if you are using PHP


index [Link] [Link] [Link] [Link];

server_name [Link];

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;

#esta directiva rewrite permte que se pueda listar el directorio de


aplicaciones
rewrite ^ /[Link];
}
#location ~ \.php$ {
# include snippets/[Link];
# fastcgi_pass unix:/var/run/php/[Link];
# fastcgi_read_timeout 300;
#}

# set max upload size


client_max_body_size 512M;
fastcgi_buffers 64 4K;

# Enable gzip but do not remove ETag headers


gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified
no_etag auth;
gzip_types application/atom+xml application/javascript
application/json application/ld+json application/manifest+json
application/rss+xml application/[Link]+json application/[Link]-
fontobject application/x-font-ttf application/x-web-app-manifest+json
application/xhtml+xml application/xml font/opentype image/bmp
image/svg+xml image/x-icon text/cache-manifest text/css text/plain
text/vcard text/[Link] text/vtt text/x-component
text/x-cross-domain-policy;

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

location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|
ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
set $path_info $fastcgi_path_info;
#try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param HTTPS on;
# Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
# Enable pretty urls
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
fastcgi_read_timeout 300;
include snippets/[Link];

#fastcgi_pass unix:/var/run/php/[Link];
}

location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
try_files $uri/ =404;
index [Link];
}

# Adding the cache control header for js, css and map files
# Make sure it is BELOW the PHP block
location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
try_files $uri /[Link]$request_uri;
add_header Cache-Control "public, max-age=15778463";
# 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=15768000;
includeSubDomains; preload;";
#
# WARNING: Only add the preload option once you read about
# the consequences in [Link] This option
# will add the domain to a hardcoded list that is shipped
# in all major browsers and getting removed from this list
# could take several months.
add_header X-Content-Type-Options nosniff;
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;
add_header Referrer-Policy no-referrer;

# Optional: Don't log access to assets


access_log off;
}

location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
try_files $uri /[Link]$request_uri;
# Optional: Don't log access to other assets
access_log off;
}

access_log /var/log/nginx/[Link];
error_log /var/log/nginx/[Link];
}

5.3.4- Activar el sitio:

Para activar el servidor virtual hay que crear el enlace simbólico en /etc/sites-
enebled/[Link] que apunte a
/etc/nginx/sites-available/[Link].

root@cloud-server:~# ln -s
/etc/nginx/sites-available/[Link] /etc/nginx/sites-enabled/

En este punto, comprobamos que la sintaxis sea correcta y recargamos la


configuración de Nginx. Si accedemos al sitio mediante el nombre de dominio
[Link] accederemos a la página de instalación de Nextcloud.

5.3.5- Ajustes previos a la instalación de Nextcloud.


El error “504 Gateway Timeout ”es un problema muy común cuando se usa Nginx
con PHP-FPM. Por lo general, eso significa que PHP-FPM tardó más tiempo en
generar la respuesta de lo que Nginx estaba dispuesto a esperar. Si no se soluciona
este problema se puede interrumpir la instalación de Nextcloud por tiempo de espera
ya que se llevan a cabo multiples tareas durante dicha instalación. También pueden
interrumpirse sincronizaciones que impliquen archivos relativamente grandes.

La solución a este problema se soluciona mediante los siguientes ajustes:

- La configuración de tiempo de espera de Nginx utiliza valores muy pequeños. Hay


que aumentar el tiempo de espera de lectura de Nginx FastCGI en
/etc/nginx/[Link] a traves del bloque location de php en el archivo de
configuración del sitio: fastcgi_read_timeout 300

- El servidor web está sobrecargado y tarda más de lo debido en procesar las


solicitudes.
Hay que aumentar el tiempo de espera de finalización de la solicitud PHP-FPM en
/etc/php/7.3/fpm/pool.d/[Link]): request_terminate_timeout = 300

- La aplicación PHP es lenta, quizás debido a que la base de datos es lenta. Se debe
aumentar el tiempo de ejecución máximo de PHP en /etc/php/7.3/fpm/[Link]:
max_execution_time = 300
5.3.6- Pantalla de instalación de Nextcloud.
Para acceder a la página de instalación de Nextcloud introducimos en el navegador la
URL del sitio virtual donde hemos desplegado los archivos “[Link]”

Aparece un formulario que nos pide los datos del usuario administrador que se va a
crear para que empecemos a administrar nuestra nube, el directorio que contendrá los
datos de los usuarios, /home/nextcloud/data, y por último el usuario y la
contraseña necesarios para que Nextcloud acceda a la base de datos creada en
Postgres anteriormente para su funcionamiento.
Dejamos marcado el checkbox que indica que se instalen las aplicaciones
recomendadas como son: Calendario, contactos, correo, OnlyOffice, etc.
Despues de instalarse Nextcloud y las aplicaciones recomendadas (tomará unos
minutos), entramos a la pagina principal de Nextcloud del Usuario administrador que
acabamos de crear.

5.4- Archivos y directorios de Nextcloud


Archivos y directorios del sitio se distribuyen entre el directorio principal del sitio virtual
y el directorio de datos que indicamos en la página de instalación de Nextcloud.

En el directorio del sitio, /var/www/nextcloud/ están las páginas mediante las que
accedemos al sitio junto con los archivos de las aplicaciones y archivos de
configuración.

root@cloud-server:~# cd /var/www/nextcloud/

root@cloud-server:/var/www/nextcloud# ls
3rdparty [Link] data occ [Link] [Link]
apps COPYING [Link] ocm-provider [Link] themes
AUTHORS core [Link] ocs resources updater
config [Link] lib ocs-provider [Link]
[Link]

En el directorio /var/www/nextcloud/apps están los archivos de las


aplicaciones

root@cloud-server:/var/www/nextcloud/apps# ls
accessibility files_sharing recommendations
activity files_trashbin serverinfo
admin_audit files_versions settings
bruteforcesettings files_videoplayer sharebymail
calendar firstrunwizard spreed
cloud_federation_api logreader support
comments lookup_server_connector survey_client
contacts mail systemtags
dav nextcloud_announcements text
encryption notifications theming
federatedfilesharing oauth2 twofactor_backupcodes
federation onlyoffice updatenotification
files password_policy user_ldap
files_external photos viewer
files_pdfviewer privacy workflowengine
files_rightclick provisioning_api

En el directorio /var/www/nextcloud/config hay archivos de configuración, el


principal es [Link].

root@cloud-server:/var/www/nextcloud# cd config/
root@cloud-server:/var/www/nextcloud/config# ls
[Link] [Link]

root@cloud-server:/var/www/nextcloud/config# vi [Link]

<?php
$CONFIG = array (
'instanceid' => 'ocp46opgbhhb',
'passwordsalt' => '/KOXRmZd6LQ5C88c8KAihVt2BOlDIL',
'secret' => 'SfuHy0KtYlJwzkA56yaJiPmi7/Cy7XhqJ9tegnvnckQq1U1V',
'trusted_domains' =>
array (
0 => '[Link]',
),
'datadirectory' => '/home/nextcloud/data',
'dbtype' => 'pgsql',
'version' => '[Link]',
'[Link]' => '[Link]
'dbname' => 'nextcloud',
'dbhost' => 'localhost',
'dbport' => '',
'dbtableprefix' => 'oc_',
'dbuser' => 'usr_nextcloud_db',
'dbpassword' => 'nextcloud_db_administrador',
'installed' => true,
'[Link]-tls-peer' => false,
'[Link]' => 120,
'[Link]' => 20,
'[Link]' => 'php-mail',
'onlyoffice' =>
array (
'verify_peer_off' => true,
'disable_ssl_verification' => true,
),
'maintenance' => false,
);

El directorio de datos es /home/nextcloud/data y contiene los datos de los usuarios


principalmente más el archivo de registro de nuestro Nextcloud, [Link].

root@cloud-server:/home/nextcloud/data# ls
appdata_ocp46opgbhhb [Link] nextadmin pedro-perez
files_external juan-sanchez [Link]

root@cloud-server:/home/nextcloud/data# cd juan-sanchez/
root@cloud-server:/home/nextcloud/data/juan-sanchez# ls
cache files

Dentro del directorio de cada usuario podemos ver como se almacenan sus archivos
en la carpeta files.

root@cloud-server:/home/nextcloud/data/juan-sanchez# cd files
root@cloud-server:/home/nextcloud/data/juan-sanchez/files# ls
Documents 'Nextcloud [Link]' Photos
'Nextcloud intro.mp4' [Link]

5.5.- Administracion de Nextcloud

5.5.1- Usuarios y grupos en Nextcloud:

Entrando en Nextcloud con el usuario administrador que creamos durante la


instalación (nextadmin) podemos acceder al menú ubicado en la parte superior
derecha, desde el que podemos cambiar la configuración de nuestro usuario en
Configuración, como cualquier otro usuario, o gestionar los usuarios (añadir, eliminar,
modificar…) en Usuarios, esto ya por ser administrador.
- Creación de usuarios

Desde las opciones de la izquierda del gestor de usuarios podemos añadir usuarios
(con los atributos correspondientes: Nombre, correo electrónico, grupo...) y grupos.
Inicialmente solo existe el grupo de Administradores, al que pertenecen los usuarios
con privilegios de administración.

- Creación de grupos

Desde la opción “Añadir grupo“ podemos crear más grupos para facilitar tareas como
la de compartir archivos e ir añadiendo usuarios a dichos grupos que es lo
recomendado.
Grupos como “usuarios”, para todos los usuarios, y luego otros más específicos
coincidiendo con los departamentos de la organización: administración, técnicos,
márquetin, etc. Cada usuario puede pertenecer a varios grupos.

- Opciones de los usuarios y grupos:

Desde el menú de la derecha de cada usuario, encontramos diversas opciones;


eliminar usuario, inhabilitarlo, etc.
A la derecha de cada grupo hay un icono de papelera que nos permite borrarlo.

- Cuotas de disco:

Al crear un usuario o editar su configuración podemos asignar la cuota de disco para


ese usuario concreto en el campo “Espacio asignado”.

En la página general de configuración de los usuarios, en la parte inferior del menú de


la izquierda, podemos desplegar “Ajustes” y configurar el espacio por defecto que se
asignará a todos los usuarios, de tal forma que será la cuota de disco que tenga el
usuario si no se le ha asignado una cuota desde el campo “Espacio asignado”.

5.5.2.- Aplicaciones de usuario:


En la parte superior izquierda, los usuarios pueden encontrar los iconos que les dan
acceso a los distintas aplicaciones de su nube personal:

- Gestor de archivos:
Desde el gestor de archivos se pueden añadir, copiar o descargar archivos. También
se pueden crear carpetas para tener esos archivos organizados.

Además, podemos interactuar con los archivos para visualizarlos o modificar algunas
de sus opciones como compartir con otro usuario o añadir comentarios.

- Gestor de imágenes (photos):

Desde el gestor de imágenes podemos subir descargar o modificar nuestras fotos y


organizarlas por álbumes.
También tenemos la posibilidad de compartir fotos o álbumes y comentarlos.

- Registro de actividad:
El registro de actividad es simplemente un histórico de lo que va sucediendo en
nuestro perfil de Nextcloud, es decir, los cambios realizados en cada uno de sus
elementos.

- Correo electrónico:

Mediante una aplicación web para correo electrónico, totalmente integrada con las
aplicaciones de contactos y calendario, podremos enviar y recibir correos de una
forma sencilla. No es el gestor de correo con más opciones del mercado pero cumple
bien su función. Para que se pudiera conectar con las cuentas de correo de los
usuarios del ejemplo, fueron necesarias las siguientes lineas adicionales en el archivo
[Link] de Nextcloud en el array de configuración y recargar la configuración de
Nginx:

'[Link]' => 120,


'[Link]' => 20,
'[Link]' => 'php-mail',
Después, en la página de los datos para configurar la cuenta rellenamos los campos
correspondientes y ya tendremos acceso a nuestra cuenta de correo.
- Contactos:

Desde este apartado podemos añadir contactos a nuestra cuenta de Nextcloud y


tenerlos a nuestra disposición para mandarlos mensajes de correo electronico o
simplemente tener acceso a algunos de sus datos como teléfono, dirección…

- Calendario:

Desde aquí podemos gestionar nuestros eventos en una práctica aplicación de tipo
calendario.

5.5.3- Administrar las aplicaciones de Nextcloud:


Desde este apartado podemos ver las aplicaciones que tenemos instaladas, podemos
instalar otras nuevas o desactivar las que ya no necesitemos.
5.5.4- Opciones de configuración:

- Opciones de configuración de los usuarios:

Una vez creado un usuario, éste puede acceder ya a su espacio en Nextcloud y a su


zona de configuración desde la opción Configuración del menú.

A la izquierda de esta página cada usuario tiene acceso a los diferentes apartados de
la configuración de su cuenta:

Información personal: puede añadir su nombre completo, dirección, número de


teléfono, etc. Además de sus datos personales, en la página de configuración el
usuario puede encontrar información sobre el espacio en disco utilizado y los grupos a
los que pertenece.
Seguridad:

En este apartado se puede cambiar la contraseña, configurar un sistema de


verificación en dos pasos para la autenticación o verificar los dispositivos conectados a
la cuenta en ese momento.
Actividad:

Aquí se pueden seleccionar una serie de eventos que quedarán registrados en el


registro de actividad en el momento en que se produzcan.

Móvil y escritorio:

En este apartado hay información para obtener y configurar las aplicaciones para
sincronizar los recursos de nuestra cuenta desde un sistema de escritorio o desde un
dispositivo móvil.
Accesibilidad:

Aquí se pueden seleccionar diversas opciones de accesibilidad para usuarios con


necesidades específicas.
Compartir:

Desde esta pantalla se puede configurar nuestra cuenta de Nextcloud para compartir
archivos con otros servicios como twitter, facebook,etc.

Privacidad:

Aquí estaría disponible el manifiesto de los datos de usuario con la ubicación de sus
datos o la localización del servidor que los contiene, con el fin de preservar los
derechos en torno a su información.
- Opciones de configuración de los administradores:

Vista general:
En esta pantalla aparecen una serie de mensajes sobre la configuración de nuestro
Nextcloud y unas sugerencias que harán que nuestro servidor funcione mejor y más
seguro.
- Variables de entorno en PHP: El primer aviso informa de que PHP no tiene la
información de las variables de entorno del sistema. Es posible corregir este problema
editendo el archivo /etc/php/7.3/fpm/pool.d/[Link] y descomentando la
siguiente linea:

clear_env = no

- El límite de memoria de PHP está por debajo del mínimo recomendado: Este
problema se subsana editando de nuevo /etc/php/7.3/fpm/pool.d/[Link] y
descomentando esta linea:
php_admin_value[memory_limit] = 32M

Cambiamos 32 por 512, quedando de la siguiente manera:

php_admin_value[memory_limit] = 512M

Despues de las dos correcciones anteriores reiniciamos el servicio de php y


recargamos la página de Vista general:
systemctl restart [Link]

- Cabeceras que faltan en la configuración de nuestro sitio virtual de Nginx: Añadimos


estas dos cabeceras en la configuracion general del servidor:

add_header Strict-Transport-Security "max-age=15768000;


includeSubDomains; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies none;
add_header Referrer-Policy no-referrer;

Recargamos la configuración del servidor Nginx y recargamos la página de Vista


general:
Systemctl reload [Link]

Ya han desaparecido los mensajes en color naranja, el resto de ajustes son de menor
importancia y no están contemplados en este trabajo.

Ajustes básicos:
Desde aquí puede configurarse la tecnología para ejecutar procesos en segundo plano
o el servidor de correo para el envío de notificaciones.
Soporte:

Este apartado enlaza con diferentes fuentes para obtener soporte para Nextcloud:
foros, canales de chat IRC e incluso introducir una clave de suscripción empresarial
obtenida previamente.
Compartir:

Desde esta pantalla se puede configurar una serie de opciones que definen la forma
en que pueden compartir los usuarios.

Tema:

Personalización de nuestro Nextcloud para acercarlo más a nuestra imagen


corporativa
Groupware:

Desde aquí pueden establecerse configuraciones de calendario y de la aplicación de


correo electrónico

OnlyOffice:

Configuración de la aplicación que hace de conector entre nuestro Nextcloud y el


servidor de documentos de OnlyOffice, el cual hay que instalar aparte en este servidor
o en uno externo.
Actividad:

Aquí se configuran los eventos que aparecerán luego en el registro de actividad


cuando vayan sucediendo
Encuesta de uso:

Informe con informacion del sistema que se envía a los desarrolladores con fines
colaborativos. Se puede enviar o no.

Registros:

Las últimas entradas del registro de nuestro Nextcloud, puede verse tambien
ejecutando el siguiente comando en el servidor:
“tail /home/nextcloud/data/[Link]”
Sistema:

Muestra información a tiempo real del sistema como la carga de la CPU y el uso de la
memoria, las interfaces de red o los discos.
5.6.- Sincronización de los servicios de Nextcloud

5.6.1- Sincronización de archivos:


Los valores default de PHP no nos servirán, por lo que los modificaremos.

vi /etc/[Link]

Maximum size of POST data that PHP will accept.


; Its value may be 0 to disable the limit. It is ignored if POST data
reading
; is disabled through enable_post_data_reading.
; [Link]
post_max_size = 512M

Maximum allowed size for uploaded files.


; [Link]
upload_max_filesize = 512M

Maximum amount of memory a script may consume (128MB)


; [Link]
memory_limit = 512M

/etc/init.d/php7.3-fpm restart

- Instalación del software cliente de Nextcloud:

Iniciamos la descarga para nuestra plataforma desde [Link] e


instalamos el programa (ejemplo desde Windows10)
Siguiendo el asistente de instalación llegamos hasta el asistente de conexión en el que
seleccionamos entrar para añadir la dirección de nuestro sitio de Nextcloud
([Link] La otra opción es para crear una cuenta en algun proveedor
externo que tenga un servidor Nextcloud.
Tras introducir la dirección de nuestro servidor el programa realiza la conexión y
detecta que el certificado para la conexión segura no puede ser verificado. Debemos
seleccionar la opción de confiar en este certificado de todas maneras.
Tras aceptar que se confía en el certificado del servidor, pasamos a la pagina que nos
permitirá iniciar sesión introduciendo el usuario y la contraseña

Despues de logearnos nos pregunta que queremos sincronizar del servidor,


seleccionamos todo y dejamos la carpeta local por defecto.

Una vez finalizado el asistente, se realiza la sincronizacion de archivos y se nos


muestra el registro de actividad en la pantalla correspondiente.
5.6.2- Sincronización de libretas de direcciones:
Antes de importar una libreta de contactos desde Nextcloud a Thunderbird, debemos
instalar un complemento que permitirá manejar libretas de direcciones en red a través
del protocolo carddav. Este complemento se llama Cardbook.

Desde Thunderbird, pulsamos el menú de opciones y seleccionamos la opción


Complementos. Desde la pantalla de complementos buscamos el complemento que
necesitamos y lo instalamos.
Vemos que ahora aparece en el menú superior la opción del nuevo complemento
CardBook instalado para comenzar a usarlo.

Desde la ventana de nuestro gestor de contactos CardBook, seleccionamos crear un


nuevo Directorio en al zona superior izquierda de la ventana. Nuestro gestor de
contactos detecta que es la primera vez que se inicia y nos ofrece importar las libretas
de direcciones que por defecto trae thunderbird.
Las importamos, para tener una gestion de todas las libretas de direcciones desde
este gestor.

Si ahora volvemos a añadir un nuevo directorio a traves del menú superior-izquierda


del gestor Carbook, nos permite seleccionar el tipo. Elegimos Remoto y en la
siguiente pantalla el tipo Carddav (protocolo webdav para sincronizar libretas de
direcciones).
Ademas del tipo Carddav, en esta pantalla nos solicitan la URL para acceder al
servidor Nextcloud y el usuario y contraseña correspondiente a la libreta de contactos
que estamos importando.

Llegados a este punto, sólo queda poner un nombre a nuestra libreta de contactos y
configurar las opciones que nos proporciona el gestor CardBook como configurar un
color para sistinguir los contactos de esta libreta esntre el resto de contactos o poder
trabajar con ella cuando estemos sin conexión, etc.
Finalmente, se sincronizan los contactos de nuestra libreta remota
- Añadir un contacto en nuestra libreta de contactos en thunderbird:

Con la libreta de contactos que acabamos de crear seleccionada, creamos un nuevo


contacto desde el menú superior izquierda en contacto-nuevo.

Añadimos los campos que creamos necesarios como el nombre, dirección de correo
electrónico y número de teléfono y pulsamos guardar.

Como vemos, el nuevo contacto a sido añadido al final de la lista.

Ahora, comprobamos desde el gestor


de contactos de nuestro sitio web
Nextcloud que el contacto anadido
(Jerónimo Gutiérrez) aparece en la lista
5.6.3- Sincronizando nuestro calendario Nextcloud en Thunderbird:
El complemento que se encarga de la gestión de los calendarios en thunderbird es
Mozilla Lightning, que viene incorporado por defecto en Thunderbird desde hace
bastantes versiones por lo que no hay que instalarlo.

Desde el menú de opciones de Thunderbird, en la parte superior derecha,


seleccionamos Nuevo – Calendario y le indicamos que de la red.
En la siguiente pantalla introducimos el nombre del usuario del calendario y la
direccion exacta del calendario para el usuario indicado, en este caso
[Link] y le
indicamos que sea un calendario compatible con el modo sin conexión para poder
trabajar con él cuando estemos sin conexión.
Después de dar un nombre al calendario, asociarlo a una cuenta de correo de
Thunderbird y habiendo establecido las opciones de personalización del color y de
mostrar avisos, ya está añadido nuestro calendario remoto.

Hasta que no intentemos acceder a él, aparece un triángulo que desaparecerá en el


momento que pinchemos en él e introduzcamos el usuario y la contraseña. Ahora
queda sincronizado el calendario y mostrará los eventos que tuviera en ese momento.

- Añadir un evento a nuestro calendario desde Thunderbird:

Seleccionamos el día en el que queramos introducir un nuevo evento y se abrirá una


ventana para introducir los datos necesarios: Título del evento, lugar del evento,
categoría, las horas de inicio y fin, etc.
En el ejemplo añadimos un evento de llamar al seguro a causa de un siniestro, el
Domingo 24 de Mayo.

Vemos como aparece el evento creado en el día correspondiente y comprobamos


también en el gestor de calendario de nuestro sitio web que aparezca el nuevo evento
creado desde Thunderbird.
5.8.- Onlyoffice document server

5.8.1- Instalación de Onlyoffice document server:


La instalación recomendada para un servidor Linux Ubuntu/debian es a través del
repositorio oficial [Link]

Como dependencias principales onlyoffice document server tiene a Nginx y Postgres,


las cuales están instaladas ya en el servidor por lo que sólo tendremos que crear el
usuario y la base de datos necesarias para el funcionamiento del servidor de
documentos.

Crear el usuario y la base de datos en Postgres:

Entramos como usuario del sistema postgres y accedemos a la linea de comandos del
servidor postgres con el comando psql, para despues introducir la siguientes
instrucciones:

CREATE DATABASE onlyoffice;


CREATE USER onlyoffice WITH password 'onlyoffice';
GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;

Preparamos el sistema antes de realizar la instalación del servidor de


documentos:

Cambiamos el puerto de escucha del servidor de documentos para que no haya


conflictos con nuestos sitios virtuales que eschuchen en el puerto 80, en este caso
usaré el 81

echo onlyoffice-documentserver onlyoffice/ds-port select 81 | debconf-


set-selections
Instalamos redis-server y rabbitmq-server:

sudo apt-get install redis-server


sudo apt-get install rabbitmq-server

Antes de añadir el repositorio de Onlyoffice, hay que importar la clave para poder
usarlo, debemos tener instalado gnupg para poder hacerlo:

apt install gnupg


apt-key adv --keyserver hkp://[Link] --recv-keys
CB2DE8E5

En este punto ya podemos añadir el repositorio de Onlyoffice:

echo "deb [Link] squeeze main" |


tee /etc/apt/[Link].d/[Link]

Ahora debemos actualizar la lista de repositorios para poder empezar a utilizar el que
hemos añadido:

sudo apt update

Instalamos el servidor de documentos:

apt install onlyoffice-documentserver

Configurar el sitio virtual del servidor de documentos con SSL:

Una vez instalado el servidor de documentos podemos probar si funciona en el


navegador introduciendo la URL del servidor y el puerto configurado, en este caso:
[Link]

Al configurar la aplicación de Onlyoffice de Nextcloud, que es la que hace de conector


entre Nextcloud y el servidor de documentos, nos dirá que sólo está permitido https
para conectar con el servidor de documentos por lo que es obligarorio cofigurar el sitio
virtual del servidor de documentos en Nginx con SSL.

Par ello, según la documentación oficial en “[Link]” hay que copiar


el archivo [Link] al archivo [Link], haciendo una copia del anterior por
seguridad :

cp /etc/onlyoffice/documentserver/nginx/[Link]
/etc/onlyoffice/documentserver/nginx/[Link]
cp -f /etc/onlyoffice/documentserver/nginx/[Link]
/etc/onlyoffice/documentserver/nginx/[Link]

Editamos el archivo /etc/onlyoffice/documentserver/nginx/[Link] y


modificamos el puerto de escucha ssl y los parámetros SSL_CERTIFICATE_PATH y
SSL_KEY_PATH con el certificado y la clave privada del servidor:

listen [Link]:1443 ssl;


listen [::]:1443 ssl default_server;

ssl_certificate /etc/ssl/certs/[Link]/[Link];
ssl_certificate_key /etc/ssl/private/[Link]/cloud-
[Link];

Recargamos la configuración de Nginx y comprobamos si el servidor de documentos


funciona en la dirección y puertos configurados.

[Link]

Al volver a configurar la aplicación Onlyoffice de Nextcloud, dará error por usar un


certificado autofirmado para la conexión SSL. Para corregir esto hay que añadir este
parámetro en el [Link] de Nextcloud (/var/www/nextcloud/config/[Link]).

'onlyoffice' => array ( 'verify_peer_off' => TRUE, ),

En el campo clave debemos introducir la clave indicada en el apartado secret en el


archivo /etc/onlyoffice/documentserver/[Link], que por defecto es “secret”.

Con el anterior problema resuelto, ahora da error el descargar el archivo desde


nextcloud para poder editarlo desde Onlyoffice.

Desde el log /var/log/onlyoffice/documentserver/converter/[Link] vemos el


error que se esta produciendo:

[2020-05-24T19:38:25.230] [ERROR] nodeJS - error


downloadFile:url=[Link]
doc=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY3Rpb24iOiJlbXB0eSJ9.HO8y
VThljmrKFAiXsGoWMtnWnjfNFj-
idymye3GiplM;attempt=3;code:DEPTH_ZERO_SELF_SIGNED_CERT;connect:null;
(id=conv_check_940204272_docx)

Error: self signed certificate


at [Link] (_tls_wrap.js:1058:34)
at [Link] ([Link]:13)
at TLSSocket._finishInit (_tls_wrap.js:636:8)

Al parecer no hay forma de que funcione con certificados autofirmados.


6- Resultados obtenidos
(Explicación de los resultados con ventajas y desventajas obtenidas)

Nginx:

Al principio realicé la instalación de Nextcloud sobre el servidor Apache y en cuestión


de un par de horas lo tenía funcionando sin ningún problema incluso en un
subdirectorio del sitio principal de la empresa, todo con la configuración por defecto.

Nginx por el contrario necesita una configuración diferente si ubicamos los archivos de
Nextcloud en el directorio raiz de un sitio virtual o si lo ubicamos en un subdirectorio,
en este trabajo Nextcloud esta desplegado en el directorio raid del sitio [Link].
Apache es mucho mas flexible a la hora de la configuración de los directorios y
subdirectorios al heredar las configuraciones unos de otros y permitiendo
configuraciones específicas de manera más sencilla.

En cuanto a la configuración de los tiempos de espera Nginx no pudo terminar la


instalación de Nextcloud con la configuración por defecto, tanto los tiempos de espera
del servidor web como los de espera y ejecucion del fastcgi están muy ajustados, cosa
que en Apache no sucede ni con el servidor web ni con su módulo de PHP.

Nginx es un servidor de alto rendimiento que optimiza mucho el uso de los recursos
del sistema consiguiendo mantener un rendimiento estable en escenarios de altas
cargas de trabajo.

Apache cuando aumentan las cargas de trabajo a esos niveles sufre pérdidas de
rendimiento pero lo compensa con su flexibilidad de configuración y con algo que
Nginx no tiene, los archivo de configuración htaccess que hacen que sean los usuarios
quien apliquen sus propias configuraciones sin tocar la configuracion de Apache. Ésto
lo hace ideal para los proveedores de servicios de internet que utilizan servidores
compartidos para sus clientes.

Nextcloud:

En cuanto a Nextcloud, he conseguido hacer la instalación del software al completo en


Nginx y el resultado ha sido bastante satisfactorio, consiguiendo que funcionen desde
el sitio web las aplicaciones de archivos, contactos, calendario y webmail.

El servidor de documentos hace el intento de descargarse durante la instalación de las


aplicaciones en la instalación de Nextcloud pero falla la descarga. He seguido los
pasos de instalación aparte indicados por el desarrollador de OnlyOffice y la
integración por parte de Nextcloud a través de su plugin de integración y no he podido
integrarlos, el servidor de documentos responde pero el conector de Nextcloud da un
problema con los certificados como indico en la documentación.

El pasado 3 de Junio ha salido la versión 19 de Nextcloud con el servidor de


documentos integrado con unos pocos click como una de sus principales novedades
debido a este tipo de problemas. Será cuestión de actualizar y ver en lo que a
mejorado dicha integración.

[Link]
hub/

“However, feedback from home users and the community showed an increasing need for a
much easier way to setup LibreOffice online. Users found configuring separate certificates,
ports, docker images, and so on too complex”.

Desde el sitio de OnlyOffice, que ha sido el servidor de documentos elegido, prometen


una integración similara la que está ofreciendo Collabora.

7- Conclusiones y propuestas
(Constatación de que se han conseguido (o no) los objetivos propuestos y las
conclusiones obtenidas. Incluir propuestas de estudios más avanzados que mejoren
los resultados)

Mi conclusión es que cada servidor, con sus pros y sus contras tiene su propio nicho
de mercado.

Yo haría una instalación de Nextcloud en Nginx para una empresa privada o un


particular pero en un entorno compartido Utilizaría Apache.

En cualquier caso, los defectos de cada uno pueden paliarse con el uso de otras
tecnologías como es el caso de añadir nodos a un custer de servidores Apache en
balanceo de carga para soportar altas cargas de trabajo (aunque supondría un
aumento de coste), o usar imagenes Docker para facilitar la instalación y configuracion
de Nginx en entornos compartidos.

Nextcloud:

En cuanto a Nextcloud, lo encuentro tremendamente útil y productivo ya que un


servicio en la nube de tipo SaaS como éste es muy beneficioso para cualquier
empresa. Éste software al estar instalado en los equipos de la propia compañía añade
características tan importantes como son la privacidad y la confidencialidad, y aunque
las grandes empresas que ofrecen estos servicios dicen respetar ésto
escrupulosamente, en la actualidad muchas empresas apuestan cada vez más por la
nube privada.
8- Bibliografía y referencias
- Preparación para la certificación LPIC-1 y LPIC2 LINUX, editorial ENI
- [Link]
- [Link]
- [Link]

9- Anexos
Anexo I- Instalación del servidor DNS
- Instalación de Bind9:

root@cloud-server:/# apt install bind9

Comprobar que el proceso esta iniciado

root@cloud-server:/# ps -ef |grep named


bind 975 1 0 16:52 ? 00:00:00 /usr/sbin/named -u
bind
root 1333 705 0 16:53 pts/0 00:00:00 grep named

Comprobar que el servidor esta escuchando en los puertos 53 TCP y UDP

root@cloud-server:/# netstat -ltunp | grep named


tcp 0 0 [Link]:53 [Link]:*
LISTEN 975/named
tcp 0 0 [Link]:53 [Link]:*
LISTEN 975/named
tcp 0 0 [Link]:953 [Link]:*
LISTEN 975/named

tcp6 0 0 :::53 :::*


LISTEN 975/named

tcp6 0 0 ::1:953 :::*


LISTEN 975/named

udp 0 0 [Link]:53 [Link]:*


975/named

udp 0 0 [Link]:53 [Link]:*


975/named

udp6 0 0 :::53 :::*


975/named

Añadir un reenviador para las resoluciones de dominios externos en el archivo


/etc/bind/[Link]

root@cloud-server:/# vi /etc/bind/[Link]

forwarders {
[Link];

};

Añadir la definición de la zona de resolución directa, que será la que contenga el


dominio del sitio principal y del servidor de correo, en /etc/bind/[Link]

zone "[Link]"{

type master;

file "/etc/bind/[Link]";

};

Configuración de la zona de resolución directa añadiendo los registros de recursos


correspondientes en /etc/bind/[Link]

;BIND reverse data file for broadcast zone


;
$TTL 604800
@ IN SOA [Link]
[Link] (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;Servidor DNS del dominio
IN NS [Link].
[Link]. IN MX 10 cloud-
[Link].

;Hosts
[Link]. IN A [Link] ;Ha de hacerse
asi, con un alias no funciona
cloud-server IN A [Link]

;Alias
;[Link]. IN CNAME cloud-server
www IN CNAME cloud-server
smtp IN CNAME cloud-server
imap IN CNAME cloud-server

Comprobar si la configuración es correcta

root@cloud-server:/etc/bind# named-checkconf

Comprobar la configuración de la zona

root@cloud-server:/etc/bind# named-checkzone [Link]


/etc/bind/[Link]
zone [Link]/IN: loaded serial 1
OK
Añadir la definición de la zona inversa en /etc/bind/[Link]

zone "[Link]"{
type master;
file "/etc/bind/db.192.168.10";
};

Configuración de la zona de resolución inversa añadiendo los registros de recursos


correspondientes en /etc/bind/db.192.168.10

;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA [Link].
[Link]. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS [Link].
[Link].[Link]. IN PTR cloud-
[Link].

Comprobar si la configuración es correcta

root@cloud-server:/etc/bind# named-checkconf

Comprobar la configuración de la zona

root@cloud-server:/etc/bind# named-checkzone [Link]-


[Link] /etc/bind/db.192.168.10
zone [Link]/IN: loaded serial 1
OK

Añadir la definición de una nueva zona de resolución directa que será la del dominio
que contendrá nuestra aplicación Nextcloud en /etc/bind/[Link]

zone "[Link]"{
type master;
file "/etc/bind/[Link]";
};

Configuración de la zona de resolucion directa añadiendo los registros de recursos


correspondientes en /etc/bind/[Link]

;BIND reverse data file for broadcast zone


;
$TTL 604800
@ IN [Link] [Link] (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;Servidor DNS del dominio
IN NS [Link].

;Hosts
[Link]. IN A [Link] ;Ha de hacerse asi,
con un alias no funciona
cloud-server IN A [Link]

;Alias
;[Link]. IN CNAME cloud-server
www IN CNAME cloud-server

Comprobar si la configuración es correcta

root@cloud-server:/etc/bind# named-checkconf

Comprobar la configuración de la zona

root@cloud-server:/etc/bind# named-checkzone [Link]


/etc/bind/[Link]
zone [Link]/IN: loaded serial 1
OK

Por último hay que configurar que el DNS del servidor sea el mismo servidor para que
pueda resolver las zonas de las que es autoridad en /etc/[Link]:

root@cloud-server:/etc/bind# vi /etc/[Link]
search [Link]
nameserver [Link]

Para terminar, reiniciar el servicio:

root@cloud-server:/etc/bind# systemctl restart bind9


Anexo II.- Instalacion de servidor de correo Postfix con
Dovecot
Instalando Postfix:

root@cloud-server:~# apt install postfix

Se despliega el asistente de configuración donde configuramos el servidor como sitio


de internet e indicamos el dominio para este servidor de correo “[Link]”.

Después de indicar estos datos, se crean los archivos de configuración del servidor de
correo junto con el usuario y el grupo “postfix”.

Las cuentas de correo serán usuarios locales del sistema, ya que para este proyecto
no configuraré el servidor como multidominio en cuyo caso tendríamos que crear
usuarios virtuales y vincularlos a una cuenta del sistema.

Como el servidor gestionará el correo de un solo dominio crearemos los usurarios de


las cuentas de correo como usuarios del sistema mediante el comando “adduser”:

root@cloud-server:~# adduser juan-sanchez


root@cloud-server:~# adduser pedro-perez

Establecemos las contraseñas y ya estarán los usuarios listos.

Comprobamos que el servidor esté escuchando en el puerto 25:

root@cloud-server:~# netstat -ltnp | grep 25

tcp 0 0 [Link]:25 [Link]:*


LISTEN 1442/master
tcp6 0 0 :::25 :::*
LISTEN 1442/master

Configuración del servidor postfix en /etc/postfix/[Link]:

mynetworks = [Link]/24 [Link]/8 [:: ffff : [Link]]/104


[::1]/128
mailbox_size_limit = 1073741824
message_size_limit = 10485760
home_mailbox = Maildir/

De esta forma se permite el reenvío de correo solamente desde la red local


[Link]/24, el tamaño de los buzones quedan configurados en 1GB, el de los
mensajes en 10MB y el tipo de buzon de los usuarios pasa de ser de Mailbox a
Maildir.

Por defecto viene activado SMTPS a traves de TLS usando STARTTLS mediante un
certificado autofirmado, configurado tambien en /etc/postfix/[Link]:

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/[Link]
smtpd_tls_key_file=/etc/ssl/private/[Link]
smtpd_use_tls=yes
smtpd_tls_session_cache_database =
btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Reiniciamos postfix para que los cambios surtan efecto:

root@cloud-server:~# systemctl reload postfix

Comprobamos que el servicio esté funcionando correctamente

root@cloud-server:~# systemctl status postfix


[Link] - Postfix Mail Transport Agent
Loaded: loaded (/lib/systemd/system/[Link]; enabled;
vendor preset:
Active: active (exited) since Mon 2020-05-11 15:35:23 CEST; 23min
ago
Process: 1907 ExecReload=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 1445 (code=exited, status=0/SUCCESS)

may 11 15:35:23 cloud-server systemd[1]: Starting Postfix Mail


Transport Agent..
may 11 15:35:23 cloud-server systemd[1]: Started Postfix Mail
Transport Agent.
may 11 15:59:09 cloud-server systemd[1]: Reloading Postfix Mail
Transport Agent.
may 11 15:59:09 cloud-server systemd[1]: Reloaded Postfix Mail
Transport Agent.

Instalación de Dovecot para POP e IMAP:

root@cloud-server:~# apt install dovecot-imapd dovecot-pop3d

Comprobamos que el servidor este escuchando en los puertos POP (110) IMAP (143)
POPS (995) IMAPS (995) mediante la orden “netstat -ltnp”

tcp 0 0 [Link]:993 [Link]:*


LISTEN 5457/dovecot
tcp6 0 0 :::995 :::*
LISTEN 5457/dovecot
tcp6 0 0 :::110 :::*
LISTEN 5457/dovecot
tcp6 0 0 :::143 :::*
LISTEN

Configuracion de POPS e IMAPS:

Establecer la ubicación de las bandejas de los usuarios y en formato Maildir en


/etc/dovecot/conf.d/[Link]:

mail_location = maildir :~/Maildir


Habilitar SSL en /etc/dovecot/conf.d/[Link] descomentando la lineas
siguientes:

ssl = yes
ssl_cert= </etc/dovecot/private/[Link]
ssl_key= </etc/dovecot/private/[Link]

Habilitar la autenticación con texto plano en /etc/dovecot/conf.d/[Link]:

disable_plaintext_auth = no

Reiniciar dovecot para que los cambios surtan efecto:

root@cloud-server:~# systemctl restart dovecot

Comprobar el estado del servicio:

root@cloud-server:~# systemctl status dovecot


[Link] - Dovecot IMAP/POP3 email server
Loaded: loaded (/lib/systemd/system/[Link]; enabled;
vendor preset:
Active: active (running) since Mon 2020-05-11 16:10:55 CEST; 10s
ago
Docs: man:dovecot(1)
[Link]
Main PID: 5566 (dovecot)
Tasks: 4 (limit: 4915)
Memory: 3.3M
CGroup: /[Link]/[Link]
├─5566 /usr/sbin/dovecot -F
├─5568 dovecot/anvil
├─5569 dovecot/log
└─5570 dovecot/config

may 11 16:10:55 cloud-server systemd[1]: Started Dovecot IMAP/POP3


email server.
may 11 16:10:56 cloud-server dovecot[5566]: master: Dovecot v2.3.4.1
(f79e8e7e4)
lines 1-16/16 (END)

Instalación de las cuentas de correo en Thunderbird:

Thunderbird es mundialmente conocido así que no detallaré su instalación,


simplemente indicar la configuración de la cuenta de un usuario para gestionar el
correo de nuestro servidor.

Al iniciar Thunderbird, se abre una ventana para crear una nueva cuenta de correo
añadiendo la dirección de la cuenta, los servidores SMTP e IMAP y la configuración de
serguridad, en este caso SSL para IMAP y STARTTLS para SMTP para los dos
protocolos.
Al lanzar la primera conexión al servidor IMAP para obtener los mensajes de la
bandeja de entrada lanza un mensaje de confirmación de excepción del certificado
autofirmado que usa Dovecot para realizar una conexión segura.

Common questions

Con tecnología de IA

Al instalar PHP en Nginx para soportar Nextcloud, se debe usar php-fpm (FastCGI Process Manager) debido a que Nginx no dispone de procesamiento nativo para PHP. Hay que configurar Nginx para que dirija las solicitudes PHP al socket asociado de php-fpm, asegurando que la configuración en 'sites-available' esté correcta para dirigir las solicitudes PHP adecuadamente .

La integración de OnlyOffice con Nextcloud proporciona una solución para editar documentos directamente dentro de la nube privada, mejorando así la colaboración en documentos en tiempo real. Este uso conjunto facilita el trabajo colaborativo sin la necesidad de aplicaciones externas, ya que se pueden gestionar y editar documentos dentro del entorno seguro de Nextcloud .

Para verificar si el servidor Nginx está configurado correctamente tras una configuración de servidor virtual, se utiliza el comando 'nginx -t' que comprueba la sintaxis del archivo de configuración. Si la salida indica que la sintaxis es correcta, entonces se recarga el servicio con 'systemctl reload nginx' para aplicar los cambios .

La solución de nube privada con Nextcloud ofrece a los autónomos gestión centralizada de datos que facilita la salvaguarda mediante copias de seguridad, almacenamiento profesional con tolerancia a fallos, y ahorro de costes en licencias por ser un software OpenSource. Estos beneficios contribuyen a una gestión más eficaz y económica de sus recursos .

El control de roles en PostgreSQL para Nextcloud es crítico ya que permite definir permisos específicos para usuarios, garantizando un acceso seguro a la base de datos. Durante la instalación, PostgreSQL asocia roles con usuarios del sistema UNIX/Linux, proporcionando una capa adicional de seguridad mediante la autenticación ident .

Los desafíos principales al activar certificados SSL en Nginx incluyen asegurar que los archivos de certificado y clave se ubiquen correctamente en sus directorios, modificar adecuadamente el archivo de configuración para el uso de SSL, y verificar que el servidor acepte conexiones seguras. Se supera comprobando la sintaxis del archivo de configuración con 'nginx -t' y recargando los cambios con 'systemctl reload nginx' .

Para instalar y activar un servidor virtual en Nginx, primero se crea su archivo de configuración en '/etc/nginx/sites-available/'. Luego, hay que crear un enlace simbólico en '/etc/nginx/sites-enabled/' que apunte a este archivo. Esto se realiza para que Nginx incluya la configuración del servidor virtual al recargar su configuración principal .

La justificación principal es desplegar el software necesario para centralizar la información, permitiendo que esté siempre disponible desde cualquier lugar y dispositivo a través del navegador o aplicaciones específicas. Esto facilita la salvaguarda de la información mediante copias de seguridad y ofrece un servicio de almacenamiento profesional tolerante a fallos, con el beneficio añadido de reducir costes en licencias al usar software OpenSource .

Nextcloud implementa varias medidas de seguridad como la verificación en dos pasos para autenticación, la gestión de dispositivos conectados, y la disponibilidad de cabeceras de seguridad en la configuración de Nginx, que incluyen 'Strict-Transport-Security', 'X-Content-Type-Options', y 'X-XSS-Protection', entre otras, para proteger la información del usuario .

Para asegurar la sincronización de archivos en Nextcloud, es crucial configurar adecuadamente las variables en PHP, como aumentando 'post_max_size' y 'upload_max_filesize' a 512M. Además, es necesario instalar el software cliente de Nextcloud y configurar correctamente la conexión segura, quitando las posibles advertencias de certificado mediante confianza manual .

También podría gustarte