{"id":2200,"date":"2020-11-11T12:52:46","date_gmt":"2020-11-11T10:52:46","guid":{"rendered":"http:\/\/www.sfsoft.it\/blog\/?p=2200"},"modified":"2020-11-18T18:25:53","modified_gmt":"2020-11-18T16:25:53","slug":"installare-nextcloud-su-debian-10-buster","status":"publish","type":"post","link":"https:\/\/www.sfsoft.it\/blog\/2020\/11\/11\/installare-nextcloud-su-debian-10-buster\/","title":{"rendered":"Installare Nextcloud su Debian 10 &#8220;Buster&#8221;"},"content":{"rendered":"<p>Per <a href=\"https:\/\/docs.nextcloud.com\/server\/20\/admin_manual\/installation\/index.html\" target=\"_blank\" rel=\"noopener\">installare<\/a> Nextcloud su una Debian 10 Buster serve avere preinstallato il <a href=\"http:\/\/www.sfsoft.it\/blog\/2020\/11\/11\/installare-un-sistema-lamp-su-debian-10-buster\/\">sistema LAMP<\/a> base.<\/p>\n<p>Aggiungere le dipendenze (al momento che scrivo la versione Nextcloud \u00e8 la 20.0.1):<\/p>\n<pre class=\"lang:default decode:true \">apt install libapache2-mod-php php-curl php-gd php-json php-mbstring php-xml php-zip php-mysql php-bz2 php-intl smbclient php-ldap php-imap php-bcmath php-gmp php-imagick libmagickcore-6.q16-3-extra<\/pre>\n<p>Abilitiamo il traffico dietro SSL: <a href=\"http:\/\/www.sfsoft.it\/blog\/2020\/11\/11\/creare-un-certificato-ssl-per-apache-su-ubuntu-debian-10-buster\/\">Creare un certificato SSL per Apache su Debian 10 \u201cBuster\u201d<\/a><\/p>\n<p>Abilitare i moduli:<\/p>\n<pre class=\"lang:default decode:true\">a2enmod rewrite\r\na2enmod headers\r\na2enmod env\r\na2enmod dir\r\na2enmod mime\r\nsystemctl restart apache2<\/pre>\n<p>Si scarica la versione dal <a href=\"https:\/\/nextcloud.com\/install\/\" target=\"_blank\" rel=\"noopener\">sito<\/a>\u00a0( oppure si utilizza il <a href=\"https:\/\/download.nextcloud.com\/server\/installer\/setup-nextcloud.php\">webinstaller<\/a> ) e si estrae dando i permessi all&#8217;utente <em>www-data<\/em>.<\/p>\n<p>Ora \u00e8 possibile collegarsi al sito e procedere con l&#8217;installazione guidata.<\/p>\n<p>In fase di prima installazione verranno richiesti di impostare l&#8217;utente admin, personalizzare eventualmente la cartella dove salvare i dati e la connessione al database ( MySQL o MariaDB ).<\/p>\n<p>Se si usa un path diverso per i dati impostare i permessi come www-data.www-data<\/p>\n<h3>Reinstallazione<\/h3>\n<p>Nel caso si volesse procedere ad una reinstallazione di un nextcloud esistente in maniera pulita \u00e8 sufficiente cancellare o spostare il file <em>config.php<\/em> e il contenuto della cartella <em>data<\/em> e svuotare o creare un nuovo database.<\/p>\n<p>Creare il file <em>CAN_INSTALL<\/em> nella cartella <em>config<\/em> e collegarsi alla home dell&#8217;installazione Nextcloud, ripartir\u00e0 a questo punto il wizard di prima installazione.<\/p>\n<h3>Aggiornamento<\/h3>\n<p>Nel caso avessimo gi\u00e0 una versione antecedente occorre innanzitutto spegnere apache2 e metterlo in modalit\u00e0 manutenzione per evitare che qualcuno si colleghi durante l&#8217;aggiornamento:<\/p>\n<pre class=\"lang:default decode:true \">sudo -u www-data php occ maintenance:mode --on<\/pre>\n<p>Rinominare quindi la cartella ( ad esempio in nextcloud-old ), scaricare dal sito l&#8217;ultima versione, estrarne il contenuto nel percorso ufficiale ( nextcloud ), copiare il file config\/config.php ed eventualmente la cartella data ( se si usa una cartella data esterna non serve ), riavviare apache2.<\/p>\n<p>Al primo login verr\u00e0 richiesto di eseguire l&#8217;aggiornamento.<\/p>\n<p>E&#8217; possibile che alcune App siano disattivate e vadano poi riattivate al termine.<\/p>\n<p>Togliere poi la modalit\u00e0 manutenzione nel caso fosse stata messa:<\/p>\n<pre class=\"lang:default decode:true\">sudo -u www-data php occ maintenance:mode --off<\/pre>\n<h3>Altro<\/h3>\n<p>Al termine conviene entrare nella gestione admin e controllare se ci sono degli avvisi di qualche tipo.<\/p>\n<ul>\n<li>Se sembra non processare i file <em>.htaccess<\/em> occorre verificare nelle impostazioni Apache ( o <em>apache2.conf<\/em> o i file di configurazione in site-available ) che non abbia <em>AllowOverride None<\/em> ed eventualmente portarlo in <em>AllowOverride All<\/em> ( nel mio caso era la direttiva su <em>\/var\/www<\/em> in <em>apache2.conf<\/em> )<\/li>\n<li><em><strong>&lt;Il limite di memoria di PHP \u00e8 inferiore al valore consigliato di 512MB.&gt;<\/strong><\/em>: editare <em>\/etc\/php\/7.3\/apache2\/php.ini<\/em> e impostare\n<ul>\n<li>\n<pre class=\"lang:default decode:true\">memory_limit = 512M<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li><em><strong>&lt;L&#8217;intestazione HTTP &#8220;X-Content-Type-Options&#8221; non \u00e8 configurata come &#8220;nosniff&#8221;&gt; e\/o &lt;L&#8217;intestazione HTTP &#8220;X-Frame-Options&#8221; non \u00e8 configurata come &#8220;SAMEORIGIN&#8221;&gt;<\/strong><\/em>: sembra sia un problema di doppia configurzione delle intestazioni, nel mio caso erano in <em>\/etc\/apache2\/conf-available\/ssl-params.conf<\/em><\/li>\n<li>&lt;<strong><em>PHP configuration option output_buffering must be disabled<\/em><\/strong>&gt;: editare\u00a0<em>\/etc\/php\/7.3\/apache2\/php.ini<\/em> e impostare\n<ul>\n<li>\n<pre class=\"lang:default decode:true\">output_buffering = off<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>&lt;<em>Il tuo server web non \u00e8 configurato correttamente per risolvere &#8220;\/.well-known\/caldav|carddav&#8221;<\/em>&gt;<\/strong>: editare\u00a0<em>\/etc\/apache2\/conf-available\/ssl-params.conf<\/em> e aggiungere al fondo tra &lt;\/VirtualHost&gt; e &lt;\/IfModule&gt; le righe (adattate al path del caso)\n<ul>\n<li>\n<pre class=\"lang:default decode:true\">Redirect 301 \/.well-known\/carddav \/nextcloud\/remote.php\/dav\r\nRedirect 301 \/.well-known\/caldav \/nextcloud\/remote.php\/dav<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li>&lt;<strong><em>Non \u00e8 stata configurata alcuna cache di memoria<\/em><\/strong>&gt;: installare php-apcu e aggiungere al file \/config\/config.php la direttiva\n<ul>\n<li>\n<pre class=\"lang:default decode:true\">'memcache.local' =&gt; '\\OC\\Memcache\\APCu',<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Impostazione CRON<\/h3>\n<p>Dopo aver cambiato la prefenza da AJAX a CRON dalla pagina, abilitare il cron di sistema come utente www-data<\/p>\n<pre class=\"lang:default decode:true\">crontab -u www-data -e<\/pre>\n<p>e aggiungere l&#8217;istruzione<\/p>\n<pre class=\"lang:default decode:true\">*\/5  *  *  *  * php -f \/var\/www\/nextcloud\/cron.php<\/pre>\n<h3>Installazione Collabora Online<\/h3>\n<p>Per implementare la suite Collabora Online conviene installare l&#8217;app tramite console altrimenti si rischia di far scadere il timeout di installazione dalla WebGUI<\/p>\n<pre class=\"lang:default decode:true \">sudo -u www-data php -d memory_limit=512M occ app:install richdocumentscode<\/pre>\n<p>Ci metter\u00e0 un po&#8217; a seconda della banda internet, verificare poi che sia tutto abilitato nella gestione delle App<\/p>\n<h3>Variazione o disattivazione file predefiniti<\/h3>\n<p>Ad ogni nuovo login Nextcloud genera una serie di file predefiniti (presenti nella cartella <em>core\/skeleton<\/em>), \u00e8 possibile variare questo elenco o disabilitarlo, occorre impostare in <em>config\/config.php<\/em><\/p>\n<pre class=\"lang:default decode:true\">'skeletondirectory' =&gt; '\/path\/to\/nextcloud\/core\/skeleton',<\/pre>\n<p>Importare a blank se non vogliamo venga copiato niente<\/p>\n<pre class=\"lang:default decode:true\">'skeletondirectory' =&gt; '',<\/pre>\n<h3>Cambio percorso data<\/h3>\n<p>Per spostare la cartella data che di solito \u00e8 nella root di nextcloud si deve:<\/p>\n<ul>\n<li>Back everything up first<\/li>\n<li>Disable access to Nextcloud. (maintenance mode)<\/li>\n<li>Move the data folder<\/li>\n<li>Edit the database table oc_storage. Change the local::\/path\/to\/data to local::\/new\/path\/to\/data<\/li>\n<li>Edit the config.php datadirectory line to reflect the new path<\/li>\n<li>Turn off maintenance mode<\/li>\n<\/ul>\n<h3>Utenti LDAP\/Active Directory<\/h3>\n<p>Nel caso si volesse utilizzare gli utenti di un <a href=\"https:\/\/docs.nextcloud.com\/server\/20\/admin_manual\/configuration_user\/user_auth_ldap.html\" target=\"_blank\" rel=\"noopener\">server LDAP o un Active Directory<\/a> occorre prima installare la dipendenza:<\/p>\n<pre class=\"lang:default decode:true\">apt install php-ldap<\/pre>\n<p>Riavviare Apache poi abilitare il modulo <em>LDAP user and group backend<\/em> nella gestione Apps e configurarlo in area Admin<\/p>\n<p>Sezione Server<\/p>\n<ul>\n<li>Host: &lt;host-o-ip-del-domain-controller\/ldap&gt; (fare poi rileva porta)<\/li>\n<li>User DN: utente con permessi adeguati per fare ricerche ( se AD: myuser@mydomain.loc )<\/li>\n<li>Password<\/li>\n<li>DB base: fare rileva o mettere dc=mydomain,dc=loc<\/li>\n<\/ul>\n<p>Sezione Utenti<\/p>\n<ul>\n<li>Indicare i filtri per rilevare gli utenti da visualizzare, poi fare verifica e conta in fondo<\/li>\n<\/ul>\n<p>Sezione Attributi di Accesso<\/p>\n<ul>\n<li>Impostare come Nextcloud trover\u00e0 l&#8217;utente (nome, email) e poi fare verifica impostazioni con un utente in fondo<\/li>\n<\/ul>\n<p>Sezione gruppi<\/p>\n<ul>\n<li>Indicare i filtri per rilevare i gruppi da visualizzare, poi fare verifica e conta in fondo<\/li>\n<\/ul>\n<p><strong>Nota:<\/strong> l&#8217;accesso tramite le credenziali di un Active Direcory funzionano solamente nel caso la propriet\u00e0 <em>Logon Workstation<\/em> dell&#8217;utente sia impostata come <em>All computers<\/em> e non sia limitata all&#8217;accesso solo a determinati PC (anche se viene messo host o IP di Nextcloud)<\/p>\n<p><strong>Nota 2<\/strong>: Al collegamento Nextcloud si scarica la lista utenti e gruppi dall&#8217; Active Directory, anche disattivando il plugin gli utenti rimangono nel campo &#8220;cerca&#8221;, Nextcloud in backroud esegue una pulitura a blocchi quindi pian piano dovrebbero sparire, comunque per maggiori informazioni leggere la guida <a href=\"https:\/\/docs.nextcloud.com\/server\/stable\/admin_manual\/configuration_user\/user_auth_ldap_cleanup.html\">LDAP user cleanup<\/a>, lasciare comunque una configurazione LDAP attiva e semmai filtrando i risultati, senza non riesce a verificare gli utenti ed eventualmente a cancellarli<\/p>\n<p>Nel caso gli utenti non venissero cancellati in automatico \u00e8 possibile forzarne l&#8217;eliminazione con questo script<\/p>\n<pre class=\"lang:default decode:true\">#!\/bin\/bash\r\ncd \/var\/www\/html\r\nfor i in $(sudo -u www-data php occ ldap:show-remnants | tail +4 | awk '{print $2}')\r\ndo\r\n  echo \"deleting $i ...\"\r\n  sudo -u www-data php occ user:delete $i\r\ndone\r\n<\/pre>\n<h3>Forzare la lingua\/regione<\/h3>\n<p>Per impostare e forzare le impostazioni di lingua e regione per tutti editare il file <em>config\/config.php<\/em> e aggiungere<\/p>\n<pre class=\"lang:default decode:true\">  'default_language' =&gt; 'it',\r\n  'force_language' =&gt; 'it',\r\n  'default_locale' =&gt; 'it_IT',\r\n  'force_locale' =&gt; 'it_IT',<\/pre>\n<h3>Impostare il tempo di sessione per gli utenti<\/h3>\n<p>La sessione degli utenti scade dopo 24h come impostazione predefinita, per impostarla editare il file <em>config\/config.php<\/em> e aggiungere (es. 15minuti)<\/p>\n<pre class=\"lang:default decode:true \"> 'session_lifetime' =&gt; 60 * 15,<\/pre>\n<h3>Abilitare il log<\/h3>\n<p>Per abilitare il classico <a href=\"https:\/\/docs.nextcloud.com\/server\/latest\/admin_manual\/configuration_server\/logging_configuration.html\">log su file<\/a> creare prima il file con i permessi <em>www-data<\/em><\/p>\n<pre class=\"lang:default decode:true \">touch \/var\/log\/nextcloud.log\r\nchown www-data.www-data \/var\/log\/nectcloud.log<\/pre>\n<p>editare il file <em>config\/config.php<\/em> e aggiungere ( <strong>0<\/strong>: DEBUG, <strong>1<\/strong>: INFO, <strong>2<\/strong>: WARN, <strong>3<\/strong>: ERROR, <strong>4<\/strong>: FATAL)<\/p>\n<pre class=\"lang:default decode:true\">  'log_type' =&gt; 'file',\r\n  'logfile' =&gt; '\/var\/log\/nextcloud.log',\r\n  'logfilemode' =&gt; 0640,\r\n  'loglevel' =&gt; '2',\r\n  'logdateformat' =&gt; 'F d, Y H:i:s',<\/pre>\n<p>Per abilitare il <em>logrotate<\/em> creare il file <em>\/etc\/logrotate.d\/nextcloud<\/em> con dentro<\/p>\n<pre class=\"lang:default decode:true \">\/var\/log\/nextcloud.log {\r\n  rotate 14\r\n  daily\r\n  compress\r\n  missingok\r\n  notifempty\r\n}<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Per installare Nextcloud su una Debian 10 Buster serve avere preinstallato il sistema LAMP base. Aggiungere le dipendenze (al momento che scrivo la versione Nextcloud \u00e8 la 20.0.1): apt install libapache2-mod-php php-curl php-gd php-json php-mbstring php-xml php-zip php-mysql php-bz2 php-intl smbclient php-ldap php-imap php-bcmath php-gmp php-imagick libmagickcore-6.q16-3-extra Abilitiamo il traffico dietro SSL: Creare un certificato [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[166,15,3,274],"tags":[282,167,16,8,276],"_links":{"self":[{"href":"https:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts\/2200"}],"collection":[{"href":"https:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/comments?post=2200"}],"version-history":[{"count":28,"href":"https:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts\/2200\/revisions"}],"predecessor-version":[{"id":2244,"href":"https:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts\/2200\/revisions\/2244"}],"wp:attachment":[{"href":"https:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/media?parent=2200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/categories?post=2200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/tags?post=2200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}