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 鈥淵es鈥 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 鈥淪trict-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

鈥榤emcache.locking鈥 => 鈥榎OC\Memcache\Redis鈥,
鈥榤emcache.distributed鈥 => 鈥榎OC\Memcache\Redis鈥,
鈥榤emcache.local鈥 => 鈥榎OC\Memcache\Redis鈥,
鈥榬edis鈥 => [
鈥榟ost鈥 => 鈥榣ocalhost鈥,
鈥榩ort鈥 => 6379,
鈥榯imeout鈥 => 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.

1 Like

Muy buena gu铆a.
Gracias! :+1: :+1: