Nextcloud OnlyOffice y Collabora
Este post cubre instalaciones Nextcloud/OnlyOffice, ajustes de PHP, cambio de directorio de datos, modo mantenimiento y publicacion mediante proxy web.
Paquetes base
1
2
| apt update
apt install -y apache2 mariadb-server php php-fpm php-mysql php-gd php-curl php-xml php-zip php-mbstring unzip wget
|
Ajustes PHP habituales
1
2
3
4
5
| memory_limit = 1024M
upload_max_filesize = 1024M
post_max_size = 1024M
max_execution_time = 360
date.timezone = Europe/Madrid
|
Base de datos
1
2
3
4
| CREATE DATABASE <BBDD> CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER '<USUARIO>'@'localhost' IDENTIFIED BY '<PASSWORD>';
GRANT ALL PRIVILEGES ON <BBDD>.* TO '<USUARIO>'@'localhost';
FLUSH PRIVILEGES;
|
Apache virtualhost
1
2
3
4
5
6
7
8
9
10
11
12
13
| <VirtualHost *:80>
ServerName cloud.example.local
DocumentRoot /var/www/nextcloud
<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
ErrorLog /var/log/apache2/nextcloud_error.log
CustomLog /var/log/apache2/nextcloud_access.log combined
</VirtualHost>
|
Mover directorio de datos
1
2
3
4
| sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
mkdir -p /srv/nextcloud/data
rsync -a /var/www/nextcloud/data/ /srv/nextcloud/data/
chown -R www-data:www-data /srv/nextcloud/data
|
Actualizar config.php:
1
| 'datadirectory' => '/srv/nextcloud/data',
|
Actualizar tabla de storages si aplica:
1
2
| use <BBDD>;
update oc_storages set id='local::/srv/nextcloud/data/' where id='local::/var/www/nextcloud/data/';
|
1
| sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
|
Modo solo lectura de datos
1
2
3
| find /srv/nextcloud/data -type f -print0 | xargs -0 chmod 0440
find /srv/nextcloud/data -type d -print0 | xargs -0 chmod 0550
chmod 0640 /srv/nextcloud/data/.ocdata
|
OnlyOffice con Docker
1
2
3
4
5
6
7
8
| docker run -d \
--name onlyoffice \
--restart=always \
-p 443:443 \
-e JWT_SECRET=<SECRETO> \
-v /srv/onlyoffice/logs:/var/log/onlyoffice \
-v /srv/onlyoffice/data:/var/www/onlyoffice/Data \
onlyoffice/documentserver
|
Obtener secreto configurado
1
2
3
| docker exec <CONTAINER_ID> /var/www/onlyoffice/documentserver/npm/json \
-f /etc/onlyoffice/documentserver/local.json \
'services.CoAuthoring.secret.session.string'
|
Collabora reverse proxy
1
2
3
4
5
6
7
8
9
10
11
12
13
| AllowEncodedSlashes NoDecode
SSLProxyEngine On
ProxyPreserveHost On
ProxyPass /browser https://<IP_INTERNA>:9980/browser retry=0
ProxyPassReverse /browser https://<IP_INTERNA>:9980/browser
ProxyPass /hosting/discovery https://<IP_INTERNA>:9980/hosting/discovery retry=0
ProxyPassReverse /hosting/discovery https://<IP_INTERNA>:9980/hosting/discovery
ProxyPassMatch "/cool/(.*)/ws$" wss://<IP_INTERNA>:9980/cool/$1/ws nocanon
ProxyPass /cool https://<IP_INTERNA>:9980/cool
ProxyPassReverse /cool https://<IP_INTERNA>:9980/cool
|
Sincronizacion externa de ficheros
Si se sincronizan ficheros hacia un almacenamiento usado por Nextcloud, conviene evitar escrituras directas sin mantenimiento y reindexado.
1
2
3
4
5
| sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
rsync -avh /origen/ /srv/nextcloud/data/<USUARIO>/files/
chown -R www-data:www-data /srv/nextcloud/data
sudo -u www-data php /var/www/nextcloud/occ files:scan --all
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
|
Para pruebas, usar antes:
1
| rsync -avhn /origen/ /srv/nextcloud/data/<USUARIO>/files/
|
Script relacionado
sync_files_a_nextcloud.sh monta un origen remoto de Nextcloud, sincroniza rutas origen locales hacia el destino montado y lanza una correccion remota de permisos.