Nextcloud: operación, mantenimiento y diagnóstico
Nextcloud: operación, mantenimiento y diagnóstico
Esta guía reúne las tareas recurrentes de una instalación Nextcloud: revisar el estado, activar mantenimiento, reparar la base de datos, reindexar archivos y diagnosticar PHP. Las rutas, dominios, usuarios e identificadores son marcadores anónimos.
En los ejemplos:
1
2
3
<RUTA_NEXTCLOUD> = /var/www/nextcloud
<USUARIO_WEB> = www-data
<USUARIO_NC> = usuario_ejemplo
Comprobación inicial
1
2
3
4
cd <RUTA_NEXTCLOUD>
sudo -u <USUARIO_WEB> php occ status
sudo -u <USUARIO_WEB> php occ config:list system
sudo -u <USUARIO_WEB> php occ check
La salida de config:list system puede contener nombres de servidor, rutas o parámetros internos. Debe revisarse antes de copiarla a un ticket o publicarla.
Modo mantenimiento
Activar:
1
2
cd <RUTA_NEXTCLOUD>
sudo -u <USUARIO_WEB> php occ maintenance:mode --on
Desactivar al terminar:
1
sudo -u <USUARIO_WEB> php occ maintenance:mode --off
Si una actualización quedó interrumpida:
1
2
sudo -u <USUARIO_WEB> php occ maintenance:repair
sudo -u <USUARIO_WEB> php occ upgrade
Antes de reparar o actualizar se necesita una copia coherente de la configuración, la base de datos y el directorio de datos.
Base de datos
Las advertencias del panel administrativo suelen indicar los comandos necesarios:
1
2
3
4
sudo -u <USUARIO_WEB> php occ db:add-missing-indices
sudo -u <USUARIO_WEB> php occ db:add-missing-primary-keys
sudo -u <USUARIO_WEB> php occ db:add-missing-columns
sudo -u <USUARIO_WEB> php occ db:convert-filecache-bigint
No es necesario ejecutar todos por rutina. Se aplican cuando el panel, la actualización o la documentación de la versión lo indique, con copia previa de la base de datos.
Archivos que no aparecen
Para un usuario concreto:
1
sudo -u <USUARIO_WEB> php occ files:scan --path='<USUARIO_NC>/files'
Para toda la instancia:
1
sudo -u <USUARIO_WEB> php occ files:scan --all
Un escaneo global puede consumir bastante tiempo y E/S. Es mejor empezar por la cuenta o ruta afectada.
Otras comprobaciones útiles:
1
2
3
sudo -u <USUARIO_WEB> php occ files:cleanup
sudo -u <USUARIO_WEB> php occ integrity:check-core
sudo -u <USUARIO_WEB> php occ app:list
PHP: CLI, FPM y Apache
Nextcloud puede usar una versión de PHP en la web y otra en la consola. Primero hay que identificar ambas:
1
2
3
4
5
php -v
update-alternatives --display php
systemctl --type=service | grep -E 'php.*fpm'
apachectl -M | grep -i php
apachectl -tD DUMP_INCLUDES | grep -i php
Tras cambiar la versión de FPM, se debe habilitar la configuración correspondiente y validar Apache antes de recargar:
1
2
3
4
5
sudo a2disconf php<VERSION_ANTERIOR>-fpm
sudo a2enconf php<VERSION_NUEVA>-fpm
sudo systemctl enable --now php<VERSION_NUEVA>-fpm
sudo apachectl configtest
sudo systemctl reload apache2
Después:
1
2
sudo -u <USUARIO_WEB> php occ status
sudo -u <USUARIO_WEB> php occ check
Los módulos de PHP deben corresponder a la versión activa. La lista exacta depende de la edición de Nextcloud y de las aplicaciones instaladas.
Permisos
Evita aplicar permisos recursivos a ciegas. Primero revisa propietario, grupo y sistema de ficheros:
1
2
3
namei -l <RUTA_NEXTCLOUD>
findmnt -T <RUTA_NEXTCLOUD>
sudo -u <USUARIO_WEB> test -r <RUTA_NEXTCLOUD>/config/config.php
La configuración, el código y los datos tienen necesidades distintas. Los permisos deben ajustarse al método de instalación y al usuario real del servidor web.
Cambio del directorio de datos
Nextcloud recomienda mantener la misma ruta siempre que sea posible. Cambiar datadirectory después de instalar requiere actualizar referencias internas y puede romper relaciones en la base de datos.
Si no existe alternativa:
- Crear una copia restaurable de base de datos, configuración y datos.
- Activar mantenimiento y detener los servicios web y tareas programadas.
- Copiar los datos conservando propietarios, permisos y atributos.
- Actualizar
datadirectoryy las referencias internas siguiendo la documentación de la versión instalada. - Arrancar, validar con
occ statusy probar varios usuarios antes de retirar la ruta anterior.
No se deben publicar el config.php, volcados SQL ni salidas completas de diagnóstico sin anonimizar. Pueden contener dominios, IP, usuarios, rutas, credenciales y secretos de instancia.
Secuencia de diagnóstico
1
2
3
4
sudo -u <USUARIO_WEB> php <RUTA_NEXTCLOUD>/occ status
sudo -u <USUARIO_WEB> php <RUTA_NEXTCLOUD>/occ check
journalctl -u apache2 -u 'php*-fpm' --since today
tail -n 100 <RUTA_DATOS>/nextcloud.log
Antes de compartir la salida, sustituir cualquier dominio, dirección, nombre de usuario, ruta privada, identificador de instancia o token por un marcador semántico.