Création d’un certificat auto-signé et compilation de l’image Nextcloud :
Pour commencer, vous devez créer un certificat SSL auto-signé. Ensuite, compiler une nouvelle image de Nextcloud sur Docker en intégrant ce certificat dans la configuration d’apache en mode SSL. Cela vous permettra d’avoir un accès en local ainsi qu’à distance derrière une reverse proxy.
Premièrement, connectez-vous en SSH sur votre serveur puis rendez-vous dans le dossier SSL de Debian (ou de votre distribution). Ensuite, passer les commandes ci-dessous et répondez aux questions posées pour la création du certificat. Pour « Common Name », il faut mettre l’adresse IP de votre serveur.
cd /etc/ssl
mkdir nextcloud
cd nextcloud
openssl req -x509 -nodes -days 10000 -newkey rsa:2048 -keyout nextcloud.key -out nextcloud.pem
Ça y est, votre certificat est généré dans le dossier « etc/ssl/nextcloud ». Maintenant, pour continuer l’installation de Nextcloud sur Docker vous devez créer un premier fichier « dockerfile », puis un second nommé « setssl.sh » dans un répertoire que je vais nommer « build » dans le dossier « opt/docker » (vous pouvez créer vos fichiers dans n’importe quel répertoire, cela n’a pas d’importance).
cd / && cd opt/docker
mkdir build
cd build
nano dockerfile
Copier le code.
FROM nextcloud:apache
COPY setssl.sh /usr/local/bin/
RUN /usr/local/bin/setssl.sh votre-adresse-mail ip-de-votre-serveur #doivent correspondre aux informations de votre certificat
Ensuite, le fichier « setssl.sh »
nano setssl.sh
Copier
# setssl.sh
# USAGE: setssl.sh <email> <domain>
echo 'SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
SSLCompression off
SSLSessionTickets Off' > /etc/apache2/conf-available/ssl-params.conf
echo "<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin $2
ServerName $1
" > /etc/apache2/sites-available/default-ssl.conf
echo '
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/nextcloud/nextcloud.pem
SSLCertificateKeyFile /etc/ssl/nextcloud/nextcloud.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>' >> /etc/apache2/sites-available/default-ssl.conf
a2enmod ssl >/dev/null
a2ensite default-ssl >/dev/null
a2enconf ssl-params >/dev/null
Pour terminer, il vous faut rendre le script exécutable et construire l’image d’installation de Nextcloud sur docker.
chmod +x setssl.sh && docker build --tag nextcloud_ssl .
Créer un dossier nextcloud_ssl dans /opt/docker.
mkdir /opt/docker/nextcloud_ssl
Créer un fichier docker-compose.yml
nano docker-compose.yml
Coller le texte suivant.
services:
nextcloud:
image: nextcloud_ssl:latest
container_name: nextcloud
restart: unless-stopped
networks:
- cloud
depends_on:
- nextclouddb
- redis
ports:
- 4443:443
volumes:
- /opt/docker/nextcloud_ssl/html:/var/www/html
- /opt/docker/nextcloud_ssl/custom_apps:/var/www/html/custom_apps
- /opt/docker/nextcloud_ssl/config:/var/www/html/config
- /opt/docker/nextcloud_ssl/data:/var/www/html/data
- /etc/ssl/nextcloud:/etc/ssl/nextcloud
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=dbpassword #Le mot de passe de votre base de données
- MYSQL_HOST=nextclouddb
- REDIS_HOST=redis
nextclouddb:
image: mariadb:11.4
container_name: nextcloud-db
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
networks:
- cloud
volumes:
- /opt/docker/nextcloud_ssl/nextclouddb:/var/lib/mysql
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
- MYSQL_RANDOM_ROOT_PASSWORD=true
- MYSQL_PASSWORD=dbpassword #Doit correspondre au mot de passe du conteneur Nextcloud
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
collabora:
image: collabora/code
container_name: collabora
restart: unless-stopped
networks:
- cloud
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
- password=password
- username=nextcloud
- domain=ip-de-votre-serveur-docker:4443
- extra_params=--o:ssl.enable=true
ports:
- 9980:9980
redis:
image: redis:latest
container_name: redis
restart: unless-stopped
volumes:
- /opt/docker/nextcloud_ssl/redis:/data
networks:
- cloud
networks:
cloud:
name: cloud
driver: bridge
lancer le container avec la commande.
docker compose up -d
Explication du code pour installer Nextcloud et Collabora sur docker :
Comme vous pouvez le voir, nous allons déployer quatre conteneurs :
- Premièrement, un conteneur « Nextcloud ».
- Deuxièmement, un conteneur « Mariadb » pour la base de données.
- Ensuite, « Collabora Online » vous permettant la création et la modification de fichiers Excel, Word…
Pour finir, un conteneur « redis » :
Redis est un système de stockage en mémoire clé-valeur haute performance. Il est souvent utilisé comme base de données, cache ou courtier de messages. Lorsqu’il est intégré à Nextcloud sur Docker, Redis permet d’améliorer considérablement les performances globales de la plateforme en accélérant la gestion des fichiers temporaires, en optimisant les sessions utilisateur et en réduisant les accès aux bases de données.
Maintenant, rendez-vous à l’adresse « https://ip-de-votre-serveur:4443 » et entrer vos informations pour la création de votre compte administrateur.

Ensuite, pour continuer l’installation de Nextcloud sur Docker, passez les deux pages suivantes. Arrivé sur la page d’accueil, cliquer sur l’icône en haut à droite et sélectionner « Paramètres d’administration ». Comme vous pouvez le voir, il y a quelques alertes à corriger. Selon votre version de Nextcloud, différentes erreurs peuvent apparaitre, utiliser l’aide elle est très bien faite.
Journalisation :
Commençons par les logs, pour cela aller dans « Paramètres d’administration » puis « Journalisation ». Pour ma part j’affiche uniquement les erreurs fatales. Ensuite, vous pouvez, si vous le souhaiter, supprimer le fichier « nextcloud.log » dans le dossier « opt/docker/nextcloud_ssl/data » avec la commande « rm nextcloud.log ». Le fichier sera de nouveau créé au redémarrage de Nextcloud.
Indices de base de données :
Pour continuer l’installation et le paramétrage de Nextcloud et Collabora Online sur Docker, vous devez mettre à jour les indices de la base de données avec le code suivant :
docker exec -ti --user www-data nextcloud /var/www/html/occ db:add-missing-indices
docker exec -ti --user www-data nextcloud php occ maintenance:repair --include-expensive
Fichier config.php :
Ensuite, vous devez éditer le fichier « config.php », ajouter les paramètres suivants à la fin et redémarrer votre instance de Nextcloud sur Docker :
cd / && cd opt/docker/nextcloud_ssl/config && nano config.php
'maintenance_window_start' => 1,
'default_phone_region' => 'FR',
Paramètres d’envoi des mails :
Premièrement, rendez-vous dans « Paramètres d’administration » puis « Informations personnelles » et renseigner « E-mail » ainsi que « Paramètres régionaux ». Deuxièmement, aller dans « Paramètres de base » et remplissez les informations nécessaires dans « Serveur de messagerie ». Enfin, cocher la case « Cron », cela vous servira pour la suite.

Taches cron :
Pour son bon fonctionnement, Nextcloud doit exécuter des tâches en arrière-plan toutes les cinq minutes. Il faut donc ajouter une tache cron sur votre hôte. Premièrement, passer la commande suivante :
crontab -e
Copier et coller le texte.
*/5 * * * * docker exec -u www-data nextcloud php /var/www/html/cron.php
Votre instance de Nextcloud sur Docker est maintenant opérationnelle. De retour dans « Paramètres d’administration » puis « Vue d’ensemble » vous ne devriez plus avoir d’avertissements ! Sur la photo ci-dessous vous verrez qu’une nouvelle version de Nextcloud est disponible, mais l’image docker officiel n’est pas encore publié.
Paramétrage de Collabora Online sur Nextcloud et Docker :
Pour débuter, rendez-vous dans « Applications » puis dans « Vos applications » et rechercher « Nextcloud Office ». Ensuite, lancer le téléchargement et l’installation.
D’autre part, vous devez vous connecter sur le serveur Collabora et accepter le certificat. Pour cela rendez-vous à l’adresse « https://ip-de-votre-serveur:9980 »
Pour finir d’installer Collabora et Nextcloud sur Docker, de retour dans « Paramètres d’administration » puis « Nextcloud Office » cocher les cases suivantes :
- Premièrement, « Utiliser votre propre serveur ».
- Deuxièmement, « Désactiver la vérification du certificat ».
- Troisièmement, « Utiliser par défaut Office Open XML ».
Enfin, dans « URL (et port) du serveur Collabora Online » entrer l’adresse « https://ip-de-votre serveur:9980 » . Vous pouvez maintenant créer ou modifier des documents Office.
