{"id":758,"date":"2021-06-25T21:11:33","date_gmt":"2021-06-25T21:11:33","guid":{"rendered":"https:\/\/asgardius.company\/?p=758"},"modified":"2021-06-25T21:11:33","modified_gmt":"2021-06-25T21:11:33","slug":"ajustes-recomendados-para-nuestra-instalacion-de-nextcloud","status":"publish","type":"post","link":"https:\/\/asgardius.company\/?p=758","title":{"rendered":"Ajustes recomendados para nuestra instalaci\u00f3n de Nextcloud"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/asgardius.company\/wp-content\/uploads\/2021\/06\/sky-1441936_960_720.jpg\" alt=\"\" class=\"wp-image-560\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">En el pasado he publicado un par de tutoriales con las instrucciones para instalar Nextcloud en un servidor con Ubuntu 20.04 o Debian 10 (<a href=\"https:\/\/asgardius.company\/2021\/03\/10\/instalacion-de-nextcloud-con-autenticacion-ldap-en-ubuntu-20-04\/\">el primer tutorial utiliza Apache<\/a> y <a href=\"https:\/\/asgardius.company\/2021\/06\/25\/instalando-nextcloud-en-ubuntu-20-04-con-nginx\/\">el segundo utiliza NGINX<\/a>). Al entrar al panel de administraci\u00f3n de Nextcloud podemos encontrar unas advertencias indicando una serie de consejos para mejorar el rendimiento y seguridad de nuestra instancia de Nextcloud<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/asgardius.company\/wp-content\/uploads\/2021\/06\/Screenshot_20210625_125920-1024x549.png\" alt=\"\" class=\"wp-image-769\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Una de las recomendaciones es establecer el l\u00edmite de memoria de PHP por lo menos en 512 MB. Si utilizamos NGINX en Ubuntu 20.04 el archivo a configurar est\u00e1 en la siguiente ubicaci\u00f3n<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/php\/7.4\/fpm\/php.ini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En caso de usar Apache el archivo est\u00e1 en<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/php\/7.4\/apache2\/php.ini<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En caso de usar Debian 10 se cambiar\u00eda 7.4 por 7.3 en este tutorial<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Buscamos la siguiente l\u00ednea<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>memory_limit = 128M<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La dejamos as\u00ed<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>memory_limit = 512M<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Reiniciamos el motor PHP en caso de usar NGINX<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart php7.4-fpm<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En caso de usar Apache lo reiniciamos<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart apache2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para mejorar la seguridad de nuestra instalaci\u00f3n de Nextcloud se recomienda establecer el encabezado &#8220;Strict-Transport-Security&#8221;. En caso de usar Apache editamos el archivo correspondiente a nuestro host virtual y agregamos lo siguiente<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    &lt;IfModule mod_headers.c&gt;\n      Header always set Strict-Transport-Security \"max-age=15552000; includeSubDomains\"\n    &lt;\/IfModule&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nos quedar\u00eda parecido a esto<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;IfModule mod_ssl.c&gt;\n&lt;VirtualHost *:443&gt;\nDocumentRoot \/var\/www\/nextcloud\nServerName cloud.asgardius.company\n&lt;Directory \/var\/www\/nextcloud&gt;\nOptions -Indexes +FollowSymLinks\nAllowOverride All\n&lt;\/Directory&gt;\n\n    &lt;IfModule mod_headers.c&gt;\n      Header always set Strict-Transport-Security \"max-age=15552000; includeSubDomains\"\n    &lt;\/IfModule&gt;\n\nSSLCertificateFile \/etc\/letsencrypt\/live\/cloud.asgardius.company\/fullchain.pem\nSSLCertificateKeyFile \/etc\/letsencrypt\/live\/cloud.asgardius.company\/privkey.pem\nInclude \/etc\/letsencrypt\/options-ssl-apache.conf\n&lt;\/VirtualHost&gt;\n&lt;\/IfModule&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Habilitamos el m\u00f3dulo Headers y reiniciamos Apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo a2enmod headers\nsudo systemctl restart apache2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En caso de utilizar NGINX editamos el archivo correspondiente al host virtual y buscamos la siguiente secci\u00f3n<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>   # HSTS settings\n    # WARNING: Only add the preload option once you read about\n    # the consequences in https:\/\/hstspreload.org\/. This option\n    # will add the domain to a hardcoded list that is shipped\n    # in all major browsers and getting removed from this list\n    # could take several months.\n    #add_header Strict-Transport-Security \"max-age=15768000; includeSubDomains; preload;\" always;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Habilitamos la \u00faltima l\u00ednea y la dejamos as\u00ed<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>   # HSTS settings\n    # WARNING: Only add the preload option once you read about\n    # the consequences in https:\/\/hstspreload.org\/. This option\n    # will add the domain to a hardcoded list that is shipped\n    # in all major browsers and getting removed from this list\n    # could take several months.\n    add_header Strict-Transport-Security \"max-age=15768000; includeSubDomains; preload;\" always;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Reiniciamos NGINX<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart nginx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Se recomienda configurar un cache de memoria. Entre las opciones disponibles APCu es una de las m\u00e1s f\u00e1ciles de configurar. S\u00f3lo necesitamos instalar el m\u00f3dulo correspondiente para PHP (en ambos tutoriales de instalaci\u00f3n se incluye este m\u00f3dulo entre los recomendados). Para configurarlo editamos el archivo de configuraci\u00f3n<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/var\/www\/nextcloud\/config\/config.php<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Agregamos la siguiente l\u00ednea antes de &#8220;);&#8221;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  'memcache.local' =&gt; '\\OC\\Memcache\\APCu',<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Necesitamos establecer el pa\u00eds predeterminado para los n\u00fameros de tel\u00e9fono en el formato <a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2#Officially_assigned_code_elements\">ISO 3166-1<\/a>, lo cual haremos agregando la siguiente l\u00ednea al archivo de configuraci\u00f3n reemplazando MX por el pa\u00eds correspondiente (ES en el caso de Espa\u00f1a, US en Estados Unidos de Am\u00e9rica, etc)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  'default_phone_region' =&gt; 'MX',<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En caso de usar NGINX PHP no podr\u00e1 obtener las variables del entorno, lo cual podremos solucionar editando el archivo de configuraci\u00f3n de PHP-FPM<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/php\/7.4\/fpm\/php-fpm.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Agregamos las siguientes l\u00edneas al final del archivo<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>env&#91;HOSTNAME] = $HOSTNAME\nenv&#91;PATH] = \/usr\/local\/bin:\/usr\/bin:\/bin\nenv&#91;TMP] = \/tmp\nenv&#91;TMPDIR] = \/tmp\nenv&#91;TEMP] = \/tmp<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Reiniciamos el motor PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart php7.4-fpm<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por defecto Nextcloud realiza trabajos en segundo plano cada vez que carga una p\u00e1gina, lo cual tiene varios inconvenientes. La mejor alternativa consiste en configurar una tarea programada que realice esas actividades cada 5 minutos, lo cual en este caso haremos utilizando el temporizador de Systemd. Primero vamos a crear un servicio de Systemd<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/systemd\/system\/nextcloudcron.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lo dejamos parecido a esto<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=Nextcloud cron.php job\n\n&#91;Service]\nUser=www-data\nExecStart=\/usr\/bin\/php -f \/var\/www\/nextcloud\/cron.php\nKillMode=process<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Configuramos el temporizador<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/systemd\/system\/nextcloudcron.timer<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Agregamos el siguiente contenido<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=Run Nextcloud cron.php every 5 minutes\n\n&#91;Timer]\nOnBootSec=5min\nOnUnitActiveSec=5min\nUnit=nextcloudcron.service\n\n&#91;Install]\nWantedBy=timers.target<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Activamos la tarea programada<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl enable --now nextcloudcron.timer<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Referencias<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.nextcloud.com\/server\/latest\/admin_manual\/\">https:\/\/docs.nextcloud.com\/server\/latest\/admin_manual\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En el pasado he publicado un par de tutoriales con las instrucciones para instalar Nextcloud en un servidor con Ubuntu 20.04 o Debian 10 (el primer tutorial utiliza Apache y el segundo utiliza NGINX). Al entrar al panel de administraci\u00f3n de Nextcloud podemos encontrar unas advertencias indicando una serie de consejos para mejorar el rendimiento&hellip; <a class=\"more-link\" href=\"https:\/\/asgardius.company\/?p=758\">Seguir leyendo <span class=\"screen-reader-text\">Ajustes recomendados para nuestra instalaci\u00f3n de Nextcloud<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-758","post","type-post","status-publish","format-standard","hentry","category-uncategorized","entry"],"_links":{"self":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts\/758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=758"}],"version-history":[{"count":0,"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts\/758\/revisions"}],"wp:attachment":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}