Instalando Nextcloud 16.03 sobre Debian 10 (Buster) con PHP 7.3, Redis y MariaDB 10.4.6

Paquetes Debian 10 (Buster)

Usar los paquetes .deb para instalar los módulos necesarios y recomendados para una instalación típica de Nextcloud 16, utilizando Apache2, PHP 7.3 y MariaDB 10.4.6, emitiendo los siguientes comandos en una terminal:

sudo apt-get install apache2 libapache2-mod-php
sudo apt-get install php-gd php-json php-mysql php-curl php-mbstring
sudo apt-get install php-intl php-imagick php-xml php-zip

Esto instala los paquetes para el sistema Core de Nextcloud.
libapache2-mod-php proporciona las siguientes extensiones de PHP:

bcmath bz2 calendar Core ctype date dba dom ereg exif fileinfo filter ftp gettext
hash iconv libxml mhash openssl pcre Phar posix Reflection session shmop SimpleXML
soap sockets SPL standard sysvmsg sysvsem sysvshm tokenizer wddx xmlreader xmlwriter zlib

Si planea ejecutar aplicaciones adicionales, tenga en cuenta que pueden requerir paquetes adicionales. Consulte los Requisitos previos para la instalación manual para obtener más información.

DATABASE

En la instalación del servidor MySQL / MariaDB, se le pedirá que cree una contraseña de root. Asegúrese de recordar su contraseña, ya que la necesitará durante la configuración de la base de datos de Nextcloud.

Aquí están los comandos para ejecutar para agregar MariaDB a tu sistema:

sudo apt-get install software-properties-common dirmngr
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64] http://espejito.fder.edu.uy/mariadb/repo/10.4/debian buster main'

Una vez que se importa la clave y se agrega el repositorio, puede instalar MariaDB con:

sudo apt-get update && apt-get upgrade && apt-get full-upgrade && apt-get clean && apt-get autoclean && apt-get purge

sudo apt install mariadb-server

sudo mysql_secure_installation

responder “Yes” a todo

CREAR USUARIO Y BASE DE DATOS

sudo mysql -u root -p

create database MIBASEDEDATOS;
create user 'MIUSUARIO@localhost' identified by 'MICONTRASEÑA';
grant all privileges on nextcloud.* to MIUSUARIO@localhost identified by 'MICONTRASEÑA';
flush privileges;
exit;

sudo nano /etc/mysql/my.cnf

Agrega estas lineas:

log-bin = /var/log/mysql/mariadb-bin
log-bin-index = /var/log/mysql/mariadb-bin.index
binlog_format = mixed

sudo service mysql reload

Enlazar a todas las direcciones:

La forma más fácil es comentar la línea en su archivo /etc/mysql/mariadb.conf.d/50-server.cnf o /etc/mysql/mysql.conf.d/mysqld.cnf, dependiendo de qué sistema esté corriendo:

#bind-address = 127.0.0.1

Reinicie MariaDB

service mysql restart

Por defecto, solo se enlaza con localhost, pero si comenta la línea, se enlaza con todas las interfaces que encuentra. Comentar la línea es equivalente a bind-address = *.

Para comprobar el enlace de mysql service ejecute como root:

systemctl enable mariadb.service
systemctl start mariadb.service

Usando MariaDB / MySQL en lugar de SQLite

Si prefieren MySQL o MariaDB debido a las limitaciones de rendimiento de SQLite con aplicaciones altamente concurrentes, como Nextcloud.

Consulte la sección Configuración de la base de datos para ver cómo configurar Nextcloud para MySQL o MariaDB. Si su instalación ya se está ejecutando en SQLite, entonces es posible convertir a MySQL o MariaDB siguiendo los pasos que se proporcionan en Convertir el tipo de base de datos.

En instalaciones más pequeñas, es posible que no desee configurar una memoria caché separada. Sin embargo, todavía puede ajustar su base de datos. El siguiente ejemplo es adecuado para una base de datos de menos de 1 GB. MySQL consumirá hasta 1 GB de RAM para el almacenamiento en caché. Asegúrese de que su sistema tenga suficiente RAM libre después del cambio, para que no comience a usar su partición de intercambio cuando reciba una ráfaga de solicitudes. En el ejemplo dado, su /etc/mysql/conf.d/mysql.cnf puede contener las siguientes líneas. (tenga en cuenta que este es el bloque para mysqld no mysql)

[mysqld]
innodb_buffer_pool_size=1G
innodb_io_capacity=4000

INSTALANDO NEXTCLOUD

Ahora descargue el archivo de la última versión de Nextcloud:

• Descargar servidor de Nextcloud: Archivo para propietarios de servidores y descargue el archivo tar.bz2

wget https://download.nextcloud.com/server/releases/nextcloud-16.0.3.tar.bz2

• Esto descarga un archivo llamado nextcloud-16.0.3.tar.bz2
• Descargue su archivo de suma de control correspondiente, por ejemplo, nextcloud-16.0.3.tar.bz2.md5, o nextcloud-16.0.3.tar.bz2.sha256.
• Verifique la suma MD5 o SHA256:

	md5sum -c nextcloud-16.0.3.tar.bz2.md5 < nextcloud-16.0.3.tar.bz2
	sha256sum -c nextcloud-16.0.3.tar.bz2.sha256 < nextcloud-16.0.3.tar.bz2

También puede verificar la firma PGP:

wget https://download.nextcloud.com/server/releases/nextcloud-16.0.3.tar.bz2.md5
wget https://download.nextcloud.com/server/releases/nextcloud-16.0.3.tar.bz2.sha256
wget https://download.nextcloud.com/server/releases/nextcloud-16.0.3.tar.bz2.asc
wget https://nextcloud.com/nextcloud.asc
gpg --import nextcloud.asc
gpg --verify nextcloud-16.0.3.tar.bz2.asc nextcloud-16.0.3.tar.bz2

Ahora puedes extraer los contenidos del archivo. Ejecute el comando de desempaquetado adecuado para su tipo de archivo:

tar -xjf nextcloud-16.0.3.tar.bz2

Esto se desempaqueta en un solo directorio nextcloud.

Copia el directorio de Nextcloud a su destino final. Cuando está ejecutando el servidor HTTP de Apache, instala Nextcloud de forma segura en la raíz de su documento de Apache:

cp -r nextcloud/var/www

O copie el contenido en el directorio raíz de su servidor web. En nuestro caso, estamos usando apache, por lo que será /var/www/:

cp -R nextcloud/var/www/nexcloud/

Durante el proceso de instalación, no se crea una carpeta de datos, por lo que crearemos una manualmente para ayudar con el asistente de instalación:

mkdir /var/www/nextcloud/data

Asegúrese de tener acceso de lectura y escritura a toda la carpeta nextcloud y reinicie apache:

service apache2 restart

Recomendación: En otros servidores HTTP, se recomienda instalar Nextcloud fuera de la raíz del documento.

Apache Web server configuration

En Debian, Apache se instala con una configuración útil, por lo que todo lo que tiene que hacer es crear un archivo /etc/apache2/sites-available/nextcloud.conf con estas líneas, reemplazando el Directorio y otros filepaths con tus propios filepaths

Alias /nextcloud “/var/www/nextcloud/”

<Directory /var/www/nextcloud/>
Require all granted
Options FollowSymlinks MultiViews
AllowOverride All

Dav off

SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud

Luego habilita el sitio creado recientemente:

a2ensite nextcloud.conf

Configuraciones adicionales de Apache

• Para que Nextcloud funcione correctamente, necesitamos el módulo mod_rewrite. Habilitarlo ejecutando:

a2enmod rewrite

• Los módulos adicionales recomendados son mod_headers, mod_env, mod_dir y mod_mime:

a2enmod headers
a2enmod env
a2enmod dir
a2enmod mime

• Si está ejecutando mod_fcgi en lugar del mod_php estándar, habilite también:

a2enmod setenvif

• Debe deshabilitar cualquier autenticación configurada por el servidor para Nextcloud, ya que utiliza la autenticación básica internamente para los servicios DAV. Si ha activado la autenticación en una carpeta principal (mediante, por ejemplo, una directiva AuthType Basic), puede desactivar la autenticación específicamente para la entrada Nextcloud. Siguiendo el ejemplo de archivo de configuración anterior, agregue la siguiente línea en la sección <Directory>:

Satisfy Any

• Al usar SSL, tome nota especial de la ServerName. Debe especificar uno en la configuración del servidor, así como en el campo CommonName del certificado. Si desea que se pueda acceder a su Nextcloud a través de Internet, configure ambos para el dominio que desea que llegue a su servidor de Nextcloud.
• Ahora reinicie Apache:

service apache2 restart

• Si está ejecutando Nextcloud en un subdirectorio y desea usar los clientes de CalDAV o CardDAV, asegúrese de haber configurado las URL de descubrimiento de servicio correctas.

Habilitando SSL

Nota

Puede usar Nextcloud a través de HTTP simple, pero le recomendamos encarecidamente que use SSL / TLS para cifrar todo el tráfico de su servidor y para proteger los inicios de sesión y los datos en tránsito del usuario.

Todo lo que tienes que hacer es habilitar el módulo ssl y el sitio predeterminado. Abre una terminal y ejecuta:

a2enmod ssl
a2ensite default-ssl
service apache2 reload

Nota

Los certificados autofirmados tienen sus inconvenientes, especialmente cuando planea hacer que su servidor Nextcloud sea de acceso público. Es posible que desee considerar obtener un certificado firmado por una autoridad de firma comercial. Consulte con su registrador de nombres de dominio o servicio de alojamiento para obtener buenas ofertas en certificados comerciales.

Asistente de instalación

Después de reiniciar Apache, debe completar su instalación ejecutando el Asistente de instalación gráfico o en la línea de comandos con el comando occ. Para habilitar esto, cambie la propiedad en sus directorios de Nextcloud a su usuario HTTP:

chown -R www-data:www-data /var/www/nextcloud/

ADVERTENCIAS DE SEGURIDAD Y CONFIGURACIONES ADICIONALES

  • Tu servidor web no está correctamente configurado para resolver “/.well-known/caldav”.
  • Tu servidor web no está correctamente configurado para resolver “/.well-known/carddav”.

Esto se puede corregir agregando las siguientes líneas al final del archivo Apache ubicado en: /etc/apache2/sites-available/nextcloud.conf

Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav

Luego reinicie apache y listo

systemctl restart apache2

  • The PHP memory limit is below the recommended value of 512MB.

Ésta configuración la modifiqué en /etc/php/7.3/cli/php.ini y en /etc/php/7.3/apache/php.ini

La línea en la que todavía mostraba el Tamaño máximo de carga en la configuración básica.
estaba relacionado con post_max_size = 8M, lo cambié a 512M y listo

Adicionalmente en las lineas OPcache descomenté lo siguiente:.

opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.save_comments=1
opcache.revalidate_freq=1

Y agregué al final la linea:

opcache.fast_shutdown=1

Luego reinicie apache y listo

systemctl restart apache2

  • The “Strict-Transport-Security” HTTP header is not set to at least “15552000” seconds. For enhanced security, it is recommended to enable HSTS as described in the security tips.

Endurecimiento y guiado de seguridad.

Nextcloud pretende ofrecer valores predeterminados seguros que no necesitan ser modificados por los administradores. Sin embargo, en algunos casos, se puede aplicar un refuerzo de seguridad adicional en los escenarios donde el administrador ha completado el control sobre la instancia de Nextcloud. Esta página asume que ejecuta Nextcloud Server en Apache2 en un entorno Linux.

Nota
Nextcloud le avisará en la interfaz de administración si faltan algunas opciones importantes relevantes para la seguridad. Sin embargo, aún depende del administrador del servidor revisar y mantener la seguridad del sistema.

Habilitar seguridad de transporte HTTP estricta

Si bien la redirección de todo el tráfico a HTTPS es buena, puede que no evite por completo los ataques de intermediarios. Por lo tanto, se recomienda a los administradores que establezcan el encabezado HTTP Strict Transport Security, que indica a los navegadores que no permitan ninguna conexión a la instancia de Nextcloud utilizando HTTP, e intenta evitar que los visitantes del sitio omitan las advertencias de certificados no válidos.

Esto se puede lograr configurando las siguientes configuraciones dentro del archivo Apache ubicado en: /etc/apache2/sites-available/nextcloud.conf

Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"

Luego reinicie apache y listo

systemctl restart apache2

Advertencia

Recomendamos el ajuste adicional; precarga que se añadirá a ese encabezado. Luego, el dominio se agregará a una lista codificada que se envía con todos los principales navegadores y aplicará HTTPS en esos dominios. Consulte el sitio web de precarga de HSTS para obtener más información. Debido a la política de esta lista, debe agregarla al ejemplo anterior una vez que esté seguro de que esto es lo que desea. Eliminar el dominio de esta lista podría llevar algunos meses hasta que llegue a todos los navegadores instalados.

  • Esta configuración de ejemplo hará que todos los subdominios solo sean accesibles a través de HTTPS. Si tiene subdominios no accesibles a través de HTTPS, elimine includeSubdomains ;.

Esto requiere la extensión mod_headers en Apache.

No se ha configurado el caché de memoria. Para mejorar el desempeño, por favor configura un memcahce, si está disponible. Puedes encontrar más información en la documentación.

Instalé y configuré Redis:

sudo apt-get install redis-server php-redis

Debido a que usamos Redis como memcache, necesitará agregar lo siguiente en /var/www/nextcloud/config/config.php

‘memcache.locking’ => ‘\OC\Memcache\Redis’,
‘memcache.distributed’ => ‘\OC\Memcache\Redis’,
‘memcache.local’ => ‘\OC\Memcache\Redis’,
‘redis’ => [
‘host’ => ‘localhost’,
‘port’ => 6379,
‘timeout’ => 3,
],

Luego reinicie apache y listo

systemctl restart apache2

Recuerde, este tutorial es solo para una configuración básica de Nextcloud en, con PHP 7.3. Si va a utilizar más funciones como LDAP o Single Sign On, necesitará módulos PHP adicionales, así como configuraciones adicionales. Por lo tanto, visite el resto del Manual de administración, Introducción, para obtener descripciones detalladas sobre cómo hacer esto.

  • La última ejecución del trabajo corrió Hace 1 hora. Algo parece estar mal.

Systemd

Si systemd está instalado en el sistema, un temporizador de systemd podría ser una alternativa a un cronjob.

Este enfoque requiere dos archivos: nextcloudcron.service y nextcloudcron.timer.
Cree estos dos archivos en /etc/systemd/system/.

nextcloudcron.service debería verse así:

[Unidad]
Descripción = Nextcloud cron.php job

[Servicio]
Usuario = www-data
ExecStart = / usr / bin / php -f /var/www/nextcloud/cron.php

[Instalar]
WantedBy = basic.target

Reemplace el usuario www-data con el usuario de su servidor http y /var/www/nextcloud/cron.php con la ubicación de cron.php en su directorio nextcloud.

nextcloudcron.timer debería verse así:

[Unidad]
Descripción = Ejecutar Nextcloud cron.php cada 5 minutos

[Minutero]
OnBootSec = 5min
OnUnitActiveSec = 5min
Unidad = nextcloudcron.service

[Instalar]
WantedBy = timers.target

Las partes importantes en la unidad del temporizador son OnBootSec y OnUnitActiveSec. OnBootSec iniciará el temporizador 5 minutos después del inicio, de lo contrario tendría que iniciarlo manualmente después de cada inicio. OnUnitActiveSec establecerá un temporizador de 5 minutos después de la última activación de la unidad de servicio.

Ahora todo lo que queda es iniciar y habilitar el temporizador ejecutando este comando:

systemctl enable --now nextcloudcron.timer

Cuando la opción --now se usa con enable, la resp. La unidad también se iniciará.

Nota
La selección de la opción Cron en el menú de administración para trabajos en segundo plano no es obligatoria, ya que una vez que se ejecute cron.php desde la línea de comandos o el servicio cron, se establecerá automáticamente en Cron.