Installare Nextcloud su Debian 10 “Buster”
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 è la 20.0.1):
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 SSL per Apache su Debian 10 “Buster”
Abilitare i moduli:
1 2 3 4 5 6 |
a2enmod rewrite a2enmod headers a2enmod env a2enmod dir a2enmod mime systemctl restart apache2 |
Si scarica la versione dal sito ( oppure si utilizza il webinstaller ) e si estrae dando i permessi all’utente www-data.
Ora è possibile collegarsi al sito e procedere con l’installazione guidata.
In fase di prima installazione verranno richiesti di impostare l’utente admin, personalizzare eventualmente la cartella dove salvare i dati e la connessione al database ( MySQL o MariaDB ).
Se si usa un path diverso per i dati impostare i permessi come www-data.www-data
Reinstallazione
Nel caso si volesse procedere ad una reinstallazione di un nextcloud esistente in maniera pulita è sufficiente cancellare o spostare il file config.php e il contenuto della cartella data e svuotare o creare un nuovo database.
Creare il file CAN_INSTALL nella cartella config e collegarsi alla home dell’installazione Nextcloud, ripartirà a questo punto il wizard di prima installazione.
Aggiornamento
Nel caso avessimo già una versione antecedente occorre innanzitutto spegnere apache2 e metterlo in modalità manutenzione per evitare che qualcuno si colleghi durante l’aggiornamento:
1 |
sudo -u www-data php occ maintenance:mode --on |
Rinominare quindi la cartella ( ad esempio in nextcloud-old ), scaricare dal sito l’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.
Al primo login verrà richiesto di eseguire l’aggiornamento.
E’ possibile che alcune App siano disattivate e vadano poi riattivate al termine.
Togliere poi la modalità manutenzione nel caso fosse stata messa:
1 |
sudo -u www-data php occ maintenance:mode --off |
Altro
Al termine conviene entrare nella gestione admin e controllare se ci sono degli avvisi di qualche tipo.
- Se sembra non processare i file .htaccess occorre verificare nelle impostazioni Apache ( o apache2.conf o i file di configurazione in site-available ) che non abbia AllowOverride None ed eventualmente portarlo in AllowOverride All ( nel mio caso era la direttiva su /var/www in apache2.conf )
- <Il limite di memoria di PHP è inferiore al valore consigliato di 512MB.>: editare /etc/php/7.3/apache2/php.ini e impostare
-
1memory_limit = 512M
-
- <L’intestazione HTTP “X-Content-Type-Options” non è configurata come “nosniff”> e/o <L’intestazione HTTP “X-Frame-Options” non è configurata come “SAMEORIGIN”>: sembra sia un problema di doppia configurzione delle intestazioni, nel mio caso erano in /etc/apache2/conf-available/ssl-params.conf
- <PHP configuration option output_buffering must be disabled>: editare /etc/php/7.3/apache2/php.ini e impostare
-
1output_buffering = off
-
- <Il tuo server web non è configurato correttamente per risolvere “/.well-known/caldav|carddav”>: editare /etc/apache2/conf-available/ssl-params.conf e aggiungere al fondo tra </VirtualHost> e </IfModule> le righe (adattate al path del caso)
-
12Redirect 301 /.well-known/carddav /nextcloud/remote.php/davRedirect 301 /.well-known/caldav /nextcloud/remote.php/dav
-
- <Non è stata configurata alcuna cache di memoria>: installare php-apcu e aggiungere al file /config/config.php la direttiva
-
1'memcache.local' => '\OC\Memcache\APCu',
-
Impostazione CRON
Dopo aver cambiato la prefenza da AJAX a CRON dalla pagina, abilitare il cron di sistema come utente www-data
1 |
crontab -u www-data -e |
e aggiungere l’istruzione
1 |
*/5 * * * * php -f /var/www/nextcloud/cron.php |
Installazione Collabora Online
Per implementare la suite Collabora Online conviene installare l’app tramite console altrimenti si rischia di far scadere il timeout di installazione dalla WebGUI
1 |
sudo -u www-data php -d memory_limit=512M occ app:install richdocumentscode |
Ci metterà un po’ a seconda della banda internet, verificare poi che sia tutto abilitato nella gestione delle App
Variazione o disattivazione file predefiniti
Ad ogni nuovo login Nextcloud genera una serie di file predefiniti (presenti nella cartella core/skeleton), è possibile variare questo elenco o disabilitarlo, occorre impostare in config/config.php
1 |
'skeletondirectory' => '/path/to/nextcloud/core/skeleton', |
Importare a blank se non vogliamo venga copiato niente
1 |
'skeletondirectory' => '', |
Cambio percorso data
Per spostare la cartella data che di solito è nella root di nextcloud si deve:
- Back everything up first
- Disable access to Nextcloud. (maintenance mode)
- Move the data folder
- Edit the database table oc_storage. Change the local::/path/to/data to local::/new/path/to/data
- Edit the config.php datadirectory line to reflect the new path
- Turn off maintenance mode
Utenti LDAP/Active Directory
Nel caso si volesse utilizzare gli utenti di un server LDAP o un Active Directory occorre prima installare la dipendenza:
1 |
apt install php-ldap |
Riavviare Apache poi abilitare il modulo LDAP user and group backend nella gestione Apps e configurarlo in area Admin
Sezione Server
- Host: <host-o-ip-del-domain-controller/ldap> (fare poi rileva porta)
- User DN: utente con permessi adeguati per fare ricerche ( se AD: myuser@mydomain.loc )
- Password
- DB base: fare rileva o mettere dc=mydomain,dc=loc
Sezione Utenti
- Indicare i filtri per rilevare gli utenti da visualizzare, poi fare verifica e conta in fondo
Sezione Attributi di Accesso
- Impostare come Nextcloud troverà l’utente (nome, email) e poi fare verifica impostazioni con un utente in fondo
Sezione gruppi
- Indicare i filtri per rilevare i gruppi da visualizzare, poi fare verifica e conta in fondo
Nota: l’accesso tramite le credenziali di un Active Direcory funzionano solamente nel caso la proprietà Logon Workstation dell’utente sia impostata come All computers e non sia limitata all’accesso solo a determinati PC (anche se viene messo host o IP di Nextcloud)
Nota 2: Al collegamento Nextcloud si scarica la lista utenti e gruppi dall’ Active Directory, anche disattivando il plugin gli utenti rimangono nel campo “cerca”, Nextcloud in backroud esegue una pulitura a blocchi quindi pian piano dovrebbero sparire, comunque per maggiori informazioni leggere la guida LDAP user cleanup, lasciare comunque una configurazione LDAP attiva e semmai filtrando i risultati, senza non riesce a verificare gli utenti ed eventualmente a cancellarli
Nel caso gli utenti non venissero cancellati in automatico è possibile forzarne l’eliminazione con questo script
1 2 3 4 5 6 7 |
#!/bin/bash cd /var/www/html for i in $(sudo -u www-data php occ ldap:show-remnants | tail +4 | awk '{print $2}') do echo "deleting $i ..." sudo -u www-data php occ user:delete $i done |
Forzare la lingua/regione
Per impostare e forzare le impostazioni di lingua e regione per tutti editare il file config/config.php e aggiungere
1 2 3 4 |
'default_language' => 'it', 'force_language' => 'it', 'default_locale' => 'it_IT', 'force_locale' => 'it_IT', |
Impostare il tempo di sessione per gli utenti
La sessione degli utenti scade dopo 24h come impostazione predefinita, per impostarla editare il file config/config.php e aggiungere (es. 15minuti)
1 |
'session_lifetime' => 60 * 15, |
Abilitare il log
Per abilitare il classico log su file creare prima il file con i permessi www-data
1 2 |
touch /var/log/nextcloud.log chown www-data.www-data /var/log/nectcloud.log |
editare il file config/config.php e aggiungere ( 0: DEBUG, 1: INFO, 2: WARN, 3: ERROR, 4: FATAL)
1 2 3 4 5 |
'log_type' => 'file', 'logfile' => '/var/log/nextcloud.log', 'logfilemode' => 0640, 'loglevel' => '2', 'logdateformat' => 'F d, Y H:i:s', |
Per abilitare il logrotate creare il file /etc/logrotate.d/nextcloud con dentro
1 2 3 4 5 6 7 |
/var/log/nextcloud.log { rotate 14 daily compress missingok notifempty } |