Nextcloud amb Collabora Online

Cicle formatiu: CFGS Administració de Sistemes Informàtics en Xarxa (ASIX)

Mòdul: 0376 - Implantació d’aplicacions web

Sistema operatiu: Ubuntu Server 26.04 LTS

Aquest document explica com instal·lar un servidor Nextcloud —una plataforma de núvol privat per emmagatzemar i compartir fitxers— integrat amb Collabora Online (CODE), un servidor d’edició ofimàtica col·laborativa que permet obrir i editar documents de text, fulls de càlcul i presentacions directament des del navegador, sense necessitat d’instal·lar cap programa al client.

Nextcloud logo
Collabora Online logo

Es parteix d’una màquina amb Ubuntu Server ja instal·lat (es recomana una versió LTS recent: 24.04 o 26.04), amb accés a una consola amb privilegis root o sudo, i connexió a Internet. La instal·lació es farà mitjançant paquets apt, sense recórrer a Docker ni a contenidors.

1. Arquitectura del sistema

Abans d’entrar en matèria, és útil tenir clar com s’encaixen les peces que es muntaran:

Amb aquesta visió general, es pot seguir cada pas entenent on s’encaixa dins del conjunt.

2. Requisits previs

📌
Important

Substitueix el nom de domini, les contrasenyes i les dades de l’organització que apareixen en aquest document pels valors propis del teu entorn.

3. Afegir el dipòsit de paquets de Collabora Online

Collabora Online no es distribueix als dipòsits oficials d’Ubuntu, de manera que cal afegir manualment el dipòsit del projecte i la seva clau de signatura, seguint el mateix mecanisme que apt utilitza per a qualsevol dipòsit extern.

3.1. Carpeta de claus (keyrings)

Les versions modernes de apt recomanen desar les claus GPG de tercers a /etc/apt/keyrings/ en lloc d’afegir-les directament al clauer del sistema (el vell apt-key ja està en desús):

sudo mkdir -p /etc/apt/keyrings
cd /etc/apt/keyrings

3.2. Descàrrega de la clau pública

sudo wget -O collaboraonline-release-keyring.gpg https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg

Aquesta clau permetrà a apt verificar que els paquets descarregats del dipòsit de Collabora estan signats pel projecte original i no han estat manipulats.

3.3. Definició del dipòsit

sudo tee /etc/apt/sources.list.d/collaboraonline.sources > /dev/null << 'EOF'
Types: deb
URIs: https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-deb
Suites: ./
Signed-By: /etc/apt/keyrings/collaboraonline-release-keyring.gpg
EOF

Aquest fitxer utilitza el format .sources (DEB822), el format estructurat que ha anat substituint l’antic format d’una sola línia als fitxers .list. Cada camp té un significat concret:

4. Actualització del sistema

Amb el nou dipòsit afegit, cal actualitzar la llista de paquets disponibles (que ara inclou també els de Collabora) i aplicar les actualitzacions pendents del sistema:

sudo apt update
sudo apt upgrade

5. Instal·lació dels paquets necessaris

Tota la pila de programari es pot instal·lar amb una sola ordre:

sudo apt install apache2 libapache2-mod-php mariadb-server php php-apcu \
    php-bcmath php-bz2 php-curl php-gd php-gmp php-imagick php-intl \
    php-ldap php-mbstring php-mysql php-xml php-zip unzip coolwsd code-brand

Nota sobre versions de PHP: a Ubuntu, el paquet php instal·la automàticament la versió de PHP inclosa al dipòsit de la distribució. Si es necessita una versió concreta diferent de la que ve per defecte, es pot afegir el dipòsit PPA ondrej/php i especificar el número de versió a cada paquet (per exemple, php8.3-curl).

Val la pena entendre per a què serveix cada bloc:

Servidor web i PHP

Extensions de PHP requerides per Nextcloud

Nextcloud necessita diverses extensions de PHP per funcionar correctament; cadascuna habilita una funcionalitat concreta:

Base de dades

Collabora Online

Utilitats

6. Descàrrega i verificació de la integritat de Nextcloud

6.1. Descàrrega

cd /tmp
wget https://download.nextcloud.com/server/releases/latest.zip
wget https://download.nextcloud.com/server/releases/latest.zip.sha256

L’URL latest.zip sempre apunta a l’última versió estable publicada, de manera que aquest mateix procediment funcionarà igual d’aquí a un any, descarregant la versió vigent en aquell moment.

6.2. Per què verificar la suma de comprovació

Quan es descarrega programari per Internet, sempre hi ha el risc de descàrregues incompletes (per talls de connexió) o, en casos més greus, de manipulació malintencionada del fitxer. Verificar la suma SHA256 permet detectar-ho:

sha256sum latest.zip | sha256sum -c
ramon@server:/tmp$ sha256sum latest.zip | sha256sum -c
latest.zip: OK
ramon@server:/tmp$ 

Si la suma calculada coincideix amb la publicada per Nextcloud, l’ordre mostrarà latest.zip: OK. Si no coincideix, cal aturar-se aquí i tornar a descarregar el fitxer abans de continuar; no s’ha de desplegar un paquet que no hagi passat aquesta verificació.

7. Desplegament dels fitxers al directori web

sudo unzip latest.zip -d /var/www

Aquesta ordre descomprimeix el contingut a /var/www/nextcloud/, que serà l’arrel del codi de l’aplicació.

7.1. Permisos i propietat

sudo chown -R www-data:www-data /var/www/nextcloud
sudo chmod -R 755 /var/www/nextcloud/

L’usuari www-data és el compte amb el qual s’executa el procés d’Apache (i, per tant, els scripts PHP). Cal que aquest usuari sigui propietari dels fitxers de Nextcloud perquè pugui llegir-los i, sobretot, escriure’ls (Nextcloud actualitza fitxers de configuració i en crea de nous dinàmicament, com el directori data o config.php).

El permís 755 (lectura i execució per a tothom, escriptura només per al propietari) és un punt de partida raonable, encara que durant el funcionament normal Nextcloud pot necessitar ajustar permisos de subdirectoris concrets (típicament ho gestiona el mateix script occ de manteniment).

7.2. Carpeta de dades

sudo mkdir /var/dadesnuvol
sudo chown -R www-data:www-data /var/dadesnuvol

Es crea una carpeta fora de l’arrel del codi (/var/www/nextcloud) per emmagatzemar-hi els fitxers reals dels usuaris. Separar el codi de les dades és una bona pràctica per diversos motius: facilita les actualitzacions de Nextcloud sense afectar les dades, simplifica les còpies de seguretat, i evita que els fitxers d’usuari quedin accessibles directament des de l’arrel web si en algun moment es canvia la configuració d’Apache.

8. Ajust dels paràmetres de PHP

Els valors per defecte de PHP a Ubuntu són conservadors i insuficients per a un ús normal de Nextcloud (pujar fotos, vídeos o fer còpies de seguretat des del client d’escriptori, per exemple). Cal localitzar el fitxer php.ini que utilitza Apache (la ruta depèn de la versió de PHP instal·lada, per exemple /etc/php/8.3/apache2/php.ini) i editar-hi els paràmetres següents:

sudo sed -i 's/memory_limit = .*/memory_limit = 512M/' /etc/php/*/apache2/php.ini
sudo sed -i 's/upload_max_filesize = .*/upload_max_filesize = 200M/' /etc/php/*/apache2/php.ini
sudo sed -i 's/post_max_size = .*/post_max_size = 200M/' /etc/php/*/apache2/php.ini
sudo sed -i 's/max_file_uploads = .*/max_file_uploads = 200/' /etc/php/*/apache2/php.ini
sudo sed -i "s/;date.timezone =/date.timezone = Europe\/Madrid/" /etc/php/*/apache2/php.ini

Cada paràmetre té un propòsit concret:

Atenció amb sed i les barres (/): quan el valor que es vol inserir conté una barra (com Europe/Madrid), cal escapar-la (Europe\/Madrid) perquè sed no la confongui amb el delimitador de fi de l’expressió.

9. Creació de la base de dades

Nextcloud necessita una base de dades pròpia (en aquest cas, MariaDB) i un usuari amb permisos exclusius sobre ella, seguint el principi de mínim privilegi (l’usuari de Nextcloud no hauria de tenir accés a altres bases de dades del servidor).

sudo mysql -u root << 'EOF'
CREATE DATABASE nextcloud;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'usuari'@'localhost' IDENTIFIED BY 'contrasenya';
FLUSH PRIVILEGES;
EOF

Les tres instruccions SQL fan, respectivament:

  1. CREATE DATABASE nextcloud: crea una base de dades buida anomenada nextcloud.
  2. GRANT ALL PRIVILEGES ... IDENTIFIED BY 'contrasenya': crea l’usuari usuari (si no existeix) amb la contrasenya indicada, i li atorga tots els privilegis, però només sobre la base de dades nextcloud (no sobre cap altra) i només des de connexions locals (@'localhost').
  3. FLUSH PRIVILEGES: força MariaDB a recarregar la taula de privilegis immediatament.
📌
Important

La contrasenya 'contrasenya' és només un exemple. Cal substituir-la per una contrasenya forta abans d’executar l’ordre, ja que aquestes credencials s’introduiran posteriorment a l’assistent d’instal·lació web de Nextcloud i donen accés complet a totes les dades de l’aplicació.

10. Generació de certificats SSL autosignats

HTTPS és imprescindible en qualsevol desplegament de Nextcloud, ja que les credencials d’accés i els fitxers viatgen per la xarxa. Quan no es disposa (encara) d’un certificat emès per una autoritat de certificació reconeguda, es pot generar un certificat autosignat: xifra igualment la connexió, però el navegador no pot verificar automàticament la identitat del servidor i mostrarà un avís de seguretat que l’usuari haurà d’acceptar manualment.

10.1. Certificat per a Nextcloud (Apache)

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout /etc/ssl/private/nextcloud-certificat-autosignat.key \
    -out /etc/ssl/certs/nextcloud-certificat-autosignat.crt \
    -subj "/C=ES/ST=Barcelona/L=Mataró/O=IES Thos i Codina/OU=IT/CN=nextcloud.thos.local/emailAddress=admin@thos.local"

Desglossant les opcions:

10.2. Certificat per a Collabora Online

Collabora utilitza el seu propi parell de certificats, independent del d’Apache:

sudo openssl genrsa -out /etc/coolwsd/privatekey.pem 4096
sudo openssl req -batch -new -x509 -sha512 -days 3650 \
    -key /etc/coolwsd/privatekey.pem -out /etc/coolwsd/fullchain.pem

Aquí es genera primer una clau RSA de 4096 bits i després el certificat autosignat associat, amb una validesa de 10 anys (-days 3650) i l’opció -batch, que evita preguntes interactives utilitzant valors per defecte.

I es configura coolwsd perquè utilitzi aquests fitxers mitjançant la seva eina de configuració:

sudo coolconfig set ssl.cert_file_path /etc/coolwsd/fullchain.pem
sudo coolconfig set ssl.key_file_path /etc/coolwsd/privatekey.pem
sudo coolconfig set ssl.ca_file_path ''

coolconfig és una utilitat que modifica el fitxer de configuració XML de coolwsd (/etc/coolwsd/coolwsd.xml) sense necessitat d’editar-lo manualment. El tercer paràmetre (ca_file_path buit) indica que no s’utilitza una cadena de certificació d’una CA externa, coherent amb l’ús d’un certificat autosignat.

11. Configuració dels vHosts d’Apache

11.1. Punt de partida: el vHost SSL predeterminat

Ubuntu inclou, per defecte, una plantilla de configuració per a llocs amb SSL activat. En lloc de partir de zero, és més senzill copiar-la i adaptar-la:

sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/nextcloud-ssl.conf

11.2. Adaptació del vHost a Nextcloud

Cal editar el fitxer nextcloud-ssl.conf (per exemple, amb nano) per fer-hi els canvis següents:

  1. Afegir, just després de l’etiqueta <VirtualHost _default_:443>, la línia:

    ServerName nextcloud.thos.local
  2. Canviar la ruta DocumentRoot /var/www/html per:

    DocumentRoot /var/www/nextcloud
  3. Substituir les rutes dels certificats per defecte:

    SSLCertificateFile /etc/ssl/certs/nextcloud-certificat-autosignat.crt
    SSLCertificateKeyFile /etc/ssl/private/nextcloud-certificat-autosignat.key

També es pot fer de forma automatitzada amb sed, per exemple:

sudo sed -i '/VirtualHost _default_:443/a\\tServerName nextcloud.thos.local' /etc/apache2/sites-available/nextcloud-ssl.conf
sudo sed -i 's#/var/www/html#/var/www/nextcloud#' /etc/apache2/sites-available/nextcloud-ssl.conf
sudo sed -i 's#ssl-cert-snakeoil.pem#nextcloud-certificat-autosignat.crt#' /etc/apache2/sites-available/nextcloud-ssl.conf
sudo sed -i 's#ssl-cert-snakeoil.key#nextcloud-certificat-autosignat.key#' /etc/apache2/sites-available/nextcloud-ssl.conf

Què fa cada canvi:

  1. Indica a Apache amb quin nom de domini ha de respondre aquest vHost concret (rellevant si el servidor allotja més d’un lloc web).
  2. Substitueix la ruta per defecte /var/www/html per /var/www/nextcloud, fent que Apache serveixi els fitxers de Nextcloud en lloc de la pàgina de benvinguda per defecte.
  3. Substitueix les referències als certificats snakeoil (els certificats autosignats genèrics que Ubuntu genera automàticament en instal·lar Apache, pensats només per a proves immediates) pels certificats propis generats al punt 10.1.

11.3. Redirecció automàtica de HTTP a HTTPS

Per evitar que algú accedeixi accidentalment (o intencionadament) per HTTP sense xifrar, es defineix un segon vHost al port 80 que redirigeix totes les peticions cap a la versió HTTPS:

sudo tee /etc/apache2/sites-available/nextcloud.conf > /dev/null << 'EOF'
<VirtualHost *:80>
    ServerName nextcloud.thos.local
    Redirect permanent / https://nextcloud.thos.local/
</VirtualHost>
EOF

La directiva Redirect permanent envia un codi d’estat HTTP 301 (redirecció permanent), de manera que els navegadors recordin la redirecció.

11.4. Habilitació de mòduls d’Apache

sudo a2enmod rewrite headers env dir mime ssl

Aquests mòduls són necessaris perquè Nextcloud funcioni correctament:

11.5. Activació dels llocs

sudo a2ensite nextcloud.conf nextcloud-ssl.conf

a2ensite crea els enllaços simbòlics necessaris a /etc/apache2/sites-enabled/ perquè Apache carregui aquestes configuracions en arrencar (de manera anàloga a com a2enmod activa els mòduls).

12. Reinici de serveis i ajustos finals de permisos

12.1. MariaDB

sudo systemctl restart mariadb.service

12.2. Permisos de Collabora

sudo chown -R cool:cool /etc/coolwsd/

El paquet coolwsd crea un usuari de sistema dedicat (cool) per executar el dimoni amb privilegis reduïts, seguint el principi de mínim privilegi: si el procés de Collabora és comprès per algun atac, l’atacant no obté privilegis d’administrador del sistema. Cal que aquest usuari sigui propietari dels seus propis fitxers de configuració (inclosos els certificats generats al punt 10.2) per poder-los llegir en arrencar.

12.3. Contrasenya d’administració de Collabora

sudo coolconfig set-admin-password

Aquesta ordre és interactiva: demanarà un nom d’usuari i una contrasenya, que s’utilitzaran per accedir al panell d’administració web de Collabora Online (independent del panell d’administració de Nextcloud).

Enter admin username [admin]:
Enter admin password: 
Confirm admin password: 
Saving configuration to : /etc/coolwsd/coolwsd.xml ...
Saved

12.4. Reinici dels dimonis principals

sudo systemctl restart coolwsd.service
sudo systemctl restart apache2.service

Cal reiniciar tots dos serveis perquè recullin tots els canvis de configuració fets fins ara (certificats, vHosts, paràmetres de PHP, etc.).

13. Neteja de fitxers temporals

rm /tmp/latest.zip /tmp/latest.zip.sha256

Un cop instal·lat tot correctament, els fitxers descarregats ja no fan falta i es poden eliminar per mantenir net el directori de treball.

14. Resolució de noms al client (/etc/hosts)

Perquè el navegador del client pugui localitzar el servidor pel nom nextcloud.thos.local (en lloc de fer-ho per IP), cal que aquest nom es resolgui a alguna adreça. En un entorn de producció això es faria amb un servidor DNS (intern o públic), però per a proves locals n’hi ha prou amb afegir una entrada al fitxer /etc/hosts, que el sistema consulta abans de fer cap consulta DNS:

echo "192.168.1.10 nextcloud.thos.local" | sudo tee -a /etc/hosts
💡
Nota

La IP 192.168.1.10 correspon a la IP del servidor Nextcloud en aquest exemple de configuració. Substitueix-la per la IP del teu servidor.

15. Finalització de la instal·lació des del navegador

Amb tota la part de servidor preparada, cal completar la configuració des de la interfície web:

  1. Accedir a Nextcloud: obrir https://nextcloud.thos.local en un navegador. Com que el certificat és autosignat, el navegador mostrarà un avís de seguretat (normalment cal clicar “Avançat” i després “Accepto el risc i vull continuar” o similar, segons el navegador).

  2. Assistent d’instal·lació de Nextcloud: en accedir per primera vegada, Nextcloud mostra un formulari per crear el primer compte d’administrador i configurar la connexió a la base de dades:

  3. Configurar Collabora Online dins de Nextcloud:

16. Configurar Collabora Online dins de Nextcloud

Un cop dins de Nextcloud com a administrador, cal vincular l’aplicació amb el servidor de Collabora que s’ha instal·lat. Aquest pas és el que permet que, en obrir un document de text, full de càlcul o presentació, Nextcloud sàpiga a qui ha de demanar que el renderitzi.

16.1. Instal·lar l’app “Oficina Nextcloud”

Per defecte, Nextcloud no porta integrada cap eina d’edició ofimàtica; cal instal·lar-la des de la botiga d’aplicacions:

  1. Iniciar sessió com a administrador.
  2. Clicar a la icona del compte d’usuari (cantonada superior dreta) i seleccionar Aplicacions.
  3. A la barra lateral esquerra, anar a la categoria Oficina i textos (o cercar directament “Oficina Nextcloud” / “Nextcloud Office” al cercador d’aplicacions).
  4. Clicar a Baixa i habilita sobre l’app Oficina Nextcloud. Aquesta app és el connector que permet a Nextcloud parlar amb un servidor Collabora extern (com el que s’ha instal·lat als punts anteriors), a diferència d’altres opcions que inclouen un Collabora “incrustat” només per a ús personal.

16.2. Configurar l’adreça del servidor

Un cop habilitada l’app:

  1. Anar a la icona d’engranatge (cantonada superior dreta) i seleccionar Configuració.

  2. Al menú lateral, dins del bloc Administració, clicar a Oficina Nextcloud.

  3. Es mostrarà un formulari amb diverses opcions; la rellevant en aquest cas és Utilitza el teu propi servidor (en contraposició a “Utilitza un servidor CODE-online demo” o a l’opció de servidor incrustat). Cal seleccionar-la i, al camp d’adreça, introduir l’URL del servidor Collabora instal·lat:

    https://nextcloud.thos.local:9980

    o bé, si Collabora s’executa en una altra màquina diferent de Nextcloud:

    https://<IP_o_nom_del_servidor_collabora>:9980
  4. Clicar a Desa. Nextcloud farà una comprovació de connexió contra aquesta adreça; si tot és correcte, apareixerà un missatge de confirmació indicant que el servidor respon correctament.

16.3. Paràmetres avançats

Just sota la configuració del servidor, el mateix panell Oficina Nextcloud mostra un bloc de Paràmetres avançats amb diverses opcions addicionals. No són obligatòries per fer funcionar la integració bàsica, però val la pena conèixer-les:

Per defecte sol aparèixer el valor 0.0.0.0/0, que vol dir “qualsevol adreça IPv4” (és a dir, sense restricció). Aquest valor és còmode per fer proves ràpides, però en un entorn real convé restringir-lo a la IP (o xarxa) concreta del servidor on s’executa coolwsd, per exemple 192.168.1.0/24 si Collabora corre en una màquina amb aquesta xarxa, o 127.0.0.1/32 si Collabora i Nextcloud comparteixen el mateix servidor i només s’hi accedeix en local. Es poden indicar diversos valors separats per comes. Restringir aquesta llista evita que un tercer pugui suplantar el servidor de Collabora i fer-se passar per ell per llegir o manipular documents dels usuaris.

Un cop modificat el valor, cal clicar el botó Desa que apareix al costat mateix del camp (és un botó independent de la resta del formulari).

16.4. Resolució de problemes habituals

Com que tant Nextcloud com Collabora utilitzen certificats autosignats (generats al punt 10), és freqüent topar amb errors de verificació de certificat en aquest punt. Algunes situacions habituals:

16.5. Verificar la integració

Per comprovar que tot funciona, des de la mateixa Nextcloud:

  1. Anar a Fitxers.
  2. Clicar al botó + (afegir) i seleccionar, per exemple, Document de text.
  3. Si la integració és correcta, el document s’obrirà directament al navegador amb l’editor de Collabora (interfície similar a LibreOffice Writer), sense necessitat de descarregar cap fitxer ni instal·lar cap programa addicional.

17. Consola d’administració de Collabora Online

A banda del panell de Nextcloud, Collabora Online disposa d’una consola d’administració pròpia per supervisar documents oberts i sessions actives:

https://<IP_SERVER>:9980/browser/dist/admin/admin.html

S’hi accedeix amb les credencials definides al punt 12.3 (coolconfig set-admin-password).

18. Verificació del funcionament

Un cop completats tots els passos, es pot comprovar que tot funciona correctament:

Consideracions de seguretat i bones pràctiques

Versions d’aquest document

Domini Públic (CC0)