# Nextcloud

Nextcloud est un logiciel libre de site d'hébergement de fichiers et une plateforme de collaboration.

# Installation et mise à jour de Collabora pour Nextcloud

### Installation de Collabora (version CODE) pour Nextcloud

---

##### Prérequis

Liste des prérequis pour installer Collabora Online Developement Edition et l'utiliser avec un serveur Nextcloud :

- Un serveur capable de faire tourner un conteneur Docker
- Un sous-domaine pour le serveur Collabora Online
- Un serveur Apache
- Un certificat SSL pour le sous-domaine Collabora Online
- Un certificat SSL pour le sous-domaine Nextcloud

##### Installer le serveur Collabora Online

Étapes pour télécharger et lancer le docker Collabora Online.

```
docker pull collabora/code
docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nextcloud\\.choukajohn\\.me' --dns=192.168.1.50 --restart always --cap-add MKNOD collabora/code
```

Avec domain=domaine serveur Nextcloud et --dns=adresse serveur dns (si serveur dns local ou modifié sur l'hôte Nextcloud).

##### Installer le reverse proxy Apache

Étapes pour installer Apache et activer les modules nécessaires.

```
sudo apt-get install apache2
a2enmod proxy
a2enmod proxy_wstunnel
a2enmod proxy_http
a2enmod ssl
```

Ensuite, configurer un Virtualhost pour rediriger le trafic.

```
sudo nano /etc/apache2/sites-available/office.conf
```

```
<VirtualHost *:443>
ServerName office.nextcloud.com:443

# SSL configuration, you may want to take the easy route instead and use Lets Encrypt!
SSLEngine on
SSLCertificateFile /path/to/signed_certificate
SSLCertificateChainFile /path/to/intermediate_certificate
SSLCertificateKeyFile /path/to/private/key
SSLProtocol             all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
SSLHonorCipherOrder     on

# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode

# Container uses a unique non-signed certificate
SSLProxyEngine On
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off

# keep the host
ProxyPreserveHost On

# static html, js, images, etc. served from loolwsd
# loleaflet is the client part of LibreOffice Online
ProxyPass           /loleaflet https://127.0.0.1:9980/loleaflet retry=0
ProxyPassReverse    /loleaflet https://127.0.0.1:9980/loleaflet

# WOPI discovery URL
ProxyPass           /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0
ProxyPassReverse    /hosting/discovery https://127.0.0.1:9980/hosting/discovery

# Main websocket
ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon

# Admin Console websocket
ProxyPass   /lool/adminws wss://127.0.0.1:9980/lool/adminws

# Download as, Fullscreen presentation and Image upload operations
ProxyPass           /lool https://127.0.0.1:9980/lool
ProxyPassReverse    /lool https://127.0.0.1:9980/lool
</VirtualHost>
```

Après avoir configuré le Virtualhost :

```
a2ensite office.conf
sudo service apache2 stop
sudo service apache2 start
```

##### Configurer l'application dans Nextcloud

- Dans la section "Application", "Bureautique &amp; texte", installer Collabora Online.
- Dans les paramètres, section "Collabora en ligne", configurer le sous-domaine du Virtualhost : https://office.choukajohn.me

#### Mise à jour de Collabora Online

---

Télécharger la dernière image Docker :

```
docker pull collabora/code
```

Lister les images en cours d'exécution :

```
docker ps
```

Stopper et supprimer l'image en cours d'exécution :

```
docker stop NAME
docker rm NAME
```

Lister espace disque utilisé et nettoyer Docker :

```
docker system df
docker system prune
```

Démarrer la nouvelle image

```
docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nextcloud\\.choukajohn\\.me' --dns=192.168.1.50 --restart always --cap-add MKNOD collabora/code
```

# Mise à jour manuelle serveur Nextcloud

### Procédure de mise à jour manuelle

---

Procédure issue de la documentation officielle de [Nextcloud](https://docs.nextcloud.com/).

Télécharger la dernière version de **Nextcloud** sur [https://nextcloud.com/install](https://nextcloud.com/install/#instructions-server)

```
cd /var/www
sudo su
wget https://download.nextcloud.com/server/releases/nextcloud-xx.x.x.zip
```

Arrêter le serveur web

```
service apache2 stop
```

Supprimer l'ancien dossier de sauvegarde et renommer le dossier actuel

```
rm -r nextcloud-old
mv nextcloud nextcloud-old
```

Extraire la dernière version de Nextcloud dans **/var/www/nextcloud**

```
unzip nextcloud-xx.x.x.zip
```

Copier le fichier **config.php** depuis le répertoire **-old** vers le nouveau

```
cp nextcloud-old/config/config.php nextcloud/config/
```

Copier les applications tierces depuis le répertoire **-old** vers le nouveau

```
cp -r nextcloud-old/apps/bruteforcesettings nextcloud/apps
cp -r nextcloud-old/apps/richdocuments nextcloud/apps
```

Ajuster le propriétaire et les permissions des fichiers

```
chown -R www-data:www-data nextcloud
find nextcloud/ -type d -exec chmod 750 {} \;
find nextcloud/ -type f -exec chmod 640 {} \;
```

Redémarrer le serveur web

```
service apache2 start
```

Lancer la mise à jour depuis la console avec **occ**

```
cd nextcloud
sudo -u www-data php occ upgrade
```

Attendre la fin de la mise à jour et se loguer pour vérifier la version.