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.