Nextcloud

URL: https://nextcloud.com

Previ

Nextcloud necessita una base de dades. Farem servir MySQL perquè això va a korax i allà ja la tindrem instal.lalda.

Hi ha una sèrie de dependències de sistema i de PHP que no indico perquè ja són a les instruccions d'instal.lació de l'Armbian.

Instal.lació

És una aplicació web, així que la farem al directori soft del host virtual que calgui:

cd <vh/soft>
mkdir nextcloud
cd nextcloud
tar -xjf (...)/nextcloud-<versio>.tar.bz2
chown -R www:users nextcloud
find nextcloud -type d -exec chmod 750 {} \;
find nextcloud -type f -exec chmod 640 {} \;
mv nextcloud <versio>
ln -sf <versio> activa

Com que s'hi accedirà a través de l'Apache, cal reconfigurar-lo. Per començar necessitem aquests mòduls:

  • mod_dir
  • mod_env
  • mod_headers
  • mod_mime
  • mod_rewrite

De tots ells, només mod_rewrite és obligatori. La resta són opcionals però recomanables. Segurament ja els tindràs tots excepte mod_headers. Com segur que ja recordes, els mòduls s'activen amb a2enmod:

a2enmod <nom>  # sense el prefix mod_

Afegeix això al host virtual que contingui el Nextcloud:

Alias /nextcloud "/data/httpd/www.corpetit/soft/nextcloud/activa/"
<Directory /data/httpd/www.corpetit/soft/nextcloud/activa/>
   Options +FollowSymlinks
   AllowOverride All
   <IfModule mod_dav.c>
      Dav off
   </IfModule>
   SetEnv HOME /data/httpd/www.corpetit/soft/nextcloud/activa
   SetEnv HTTP_HOME /data/httpd/www.corpetit/soft/nextcloud/activa
</Directory>

a on el host virtual serà www.corpetit, i el directori a on trobarem Nextcloud al navegador serà /nextcloud.

Reinicia l'Apache:

service apache2 restart

La configuració de Nextcloud es pot fer via línia de comandes amb occ, o via navegador si ja has reiniciat Apache. Amb navegador només cal seguir les indicacions. Des de línia de comandes cal indicar les dades com a paràmetres. És una opció suportada, pensada per a servidors headless i totalment operativa. És la manera com ho farem. Fes això com a usuari web:

cd /data/httpd/www.corpetit/soft/nextcloud/activa
php occ maintenance:install \
   --database="mysql" \
   --database-name="nextcloud"  \
   --database-user="root" \
   --database-table-prefix="" \
   --admin-user="admin" \
   --data-dir="/data/nextcloud"

Si l'usuari web no pot escriure al directori indicat amb --data-dir, crea'l com a root i canvia propietari i permisos abans d'executar occ:

chgrp users /data/nextcloud
chmod g+w,o-rwx /data/nextcloud

Si l'usuari web no té shell, prova a executar la comanda php anterior amb su. No està clar que funcioni i potser has de canviar la shell temporalment.

su www -s /bin/bash -c php occ ...

Nota que indiques root com a usuari de la base de dades. En realitat no serà així. S'hi accedirà ara com a root per crear un usuari oc_admin (perquè has escollit admin a --admin-user) i un cop se li han donat permisos, se li treuran a root. L'instal.lador escollirà una contrasenya aleatòria per a aquest usuari. No és necessari saber-la, però la podràs trobar als fitxers de configuració si mai la necessites.

Si vols veure quines altres opcions hi ha disponibles per a la instal.lació, o en general per a qualsevol acció indicant-la a la línia de comandes, executa això:

cd /data/httpd/www.corpetit/soft/nextcloud/activa
php occ help maintenance:install

En un primer moment només es pot accedir a 127.0.0.1 o localhost. Per accedir-hi des de fora, afegeix el nom o la IP del servidor a la clau trusted_domains de conf/config.php. Això hauria de ser korax en producció i cuc en proves. Afegeix www.corpetit.com un cop hi vulguis accedir també des de fora.

Actualització

Igual que per a la instal.lació, descomprimeix el paquet, canvia el nom, i canvia el propietari i els permisos. No creïs el link encara.

cd <vh/soft>/nextcloud
tar -xjf (...)/nextcloud-<versio>.tar.bz2
chown -R www:users nextcloud
find nextcloud -type d -exec chmod 750 {} \;
find nextcloud -type f -exec chmod 640 {} \;
mv nextcloud <versio>

Copia config.php de la instal.lació anterior. Com que tenim les dades a /data/nextcloud i no al directori d'instal.lació, no cal que ens en preocupem. Si no, caldria copiar-lo també.

Copia a la nova versió les aplicacions que vas instal.lar a la vella. Aquest pas és bastant manual. Senzillament mira el subdirectori apps i copia els directoris que la nova versió no tingui. La secció "Aplicacions" més avall hauria de contenir la llista.

Ara hauries d'aturar el servidor web si vols assegurar-te que no hi ha accesos, fer el link a la versió activa, i tornar a arrencar el servidor si l'has aturat:

service apache2 stop
rm activa
ln -sf <versio> activa
service apache2 start

Finalment, com a usuari web:

cd activa
php occ upgrade

Si l'usuari web no té shell, prova a fer su com a la instal.lació, però no tinc clar que funcioni. Potser has de canviar la shell temporalment.

su www -s /bin/bash -c php occ upgrade

Nota que aquest pas del procés pot ser MOLT lent, des de minuts si tens poques dades fins a hores si en tens moltes. Deixa'l fer. El servei hauria d'estar en manteniment de manera automàtica, així que no cal que aturis el servidor web.

Quan acabi, connecta't i revisa si les aplicacions que has copiat a mà estan activades. Activa-les si no.

Configuració

Transferència "manual" de fitxers

Si puges fitxes al repositori des de línia de comandes, no apareixeran a Nextcloud perquè no són a la seva base de dades. Només els hi afegeix quan es pugen des de la interfície web. Pots afegir-los manualment executant això com a usuari web (amb su si cal):

php console.php files:scan --all

URL curtes

Per eliminar "index.php" de les URL a fitxers compartits, edita config.php i modifica o afegeix aquestes dues claus:

'overwrite.cli.url' => 'http://www.corpetit.com/nextcloud',
'htaccess.RewriteBase' => '/nextcloud',

Indico www.corpetit.com perquè això només té sentit des de fora. "/nextcloud" a les dues entrades és el directori a on veiem Nextcloud.

Un cop fet el canvi, cal executar occ com a usuari web per actualitzar els fitxers corresponents:

cd /data/httpd/www.corpetit/soft/nextcloud/activa
php occ maintenance:update:htaccess

Fitxers d'exemple a comptes nous

Si vols canviar els fitxers i directoris creats per omisió en tot nou compte, només has de modificar $PREFIX/core/skeleton.

Si vols tenir això fora de $PREFIX, perquè sobrevisquin a noves versions, has de canviar skeletondirectory a config.php. Si deixes aquesta variable en blanc, no es copiarà cap fitxer als comptes nous.

Aplicacions

Indico les aplicacions que afegeixo, per tenir-les en compte en futures versions:

  • notes
  • tasks
  • twofactor_totp

Sistema

Fail2ban

Crea un filtre anomenat nextcloud.conf amb aquest contingut:

[Definition]
failregex = "message":"Login failed: '.*' \(Remote IP: '<HOST>'\)"
            "remoteAddr":"<HOST>".*Trusted domain error
ignoreregex =

i afegeix aixo a local.jail:

[nextcloud]
enabled  = true
port     = http,https
filter   = nextcloud
logpath  = /data/nextcloud/nextcloud.log
bantime  = 1800
maxretry = 3
findtime = 3600
action   = iptables-allports

Reinicia fail2ban perquè els canvis siguin efectius.

Assegura't que el config.php de Nextcloud indica el //timezone//, ja que per omisió empra UTC i totes les hores seran incorrectes. El principal problema d'això és que si cauen fora del "findtime" de fail2ban, les considerarà com a antigues i no bloquejarà res.

Volver al inicio