Installer Nextcloud sur un Synology avec Docker
Nextcloud est une suite de logiciels client-serveur permettant de créer et d'utiliser des services d'hébergement de fichiers. Nextcloud est gratuit et open-source, ce qui signifie que tout le monde est autorisé à l'installer et à l'exploiter sur ses propres serveurs privés.
Prérequis
- Docker installé sur votre NAS Synology,
- Un container Portainer, histoire de jouer avec docker-compose
Installation
Accédez à File Station et ouvrez le dossier Docker. Dans le dossier Docker , créez un nouveau dossier et nommez-le nextcloud.
Dans le dossier nextcloud, créez les 5 nouveaux dossiers suivants :
- config
- custom_apps
- data
- html
- themes
Ouvrez Portainer, sur votre Endpoint, sélectionnez Stack, nous allons créer une stack Nextcloud complète, avec un conteneur nextcloud et un conteneur mariadb.
Pensez bien à rester sur Web Editor afin de copier-coller le contenu du fichier docker-compose suivant :
version: '2.9'
services:
mariadb:
container_name: mariadb
image: mariadb
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- mariadb:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=rootpassword
- MYSQL_PASSWORD=mysqlpassword
- MYSQL_DATABASE=nextclouddb
- MYSQL_USER=nextcloud
nextcloud:
container_name: nextcloud
ports:
- 8082:80
links:
- mariadb
environment:
- PUID=1026
- PGID=100
- TZ=Europe/Paris
volumes:
- /volume1/docker/nextcloud/html:/var/www/html
- /volume1/docker/nextcloud/custom_apps:/var/www/html/custom_apps
- /volume1/docker/nextcloud/config:/var/www/html/config
- /volume1/docker/nextcloud/data:/var/www/html/data
- /volume1/docker/nextcloud/themes:/var/www/html/themes/
image: nextcloud
restart: always
volumes:
mariadb: # nextcloud
Cliquez ensuite sur Deploy the stack, et patientez quelques instants et voilà le tour est joué !
Quelques précisions
- modifiez les identifiants relatifs à la connexion à la base de données par les vôtres,
- Lors de la première connexion à l'interface Nextcloud avec votre navigateur sur http://IP:8082, enlevez localhost pour la connexion à la base de donnée par mariadb:3306,
- Il faudra créer un proxy inversé et obtenir un certificat SSL si vous souhaitez y accéder en HTTPS, et bien modifier le fichier config.php de Nextcloud à cet effet (valeurs 'overwrite.cli.url' et 'overwriteprotocol'),
- Pensez également à modifier le fichier .htaccess à la racine de nextcloud de la sorte (pensez à modifier https://votredomaine.tld par votre nom de domaine) :
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} DavClnt
RewriteRule ^$ /remote.php/webdav/ [L,R=302]
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^\.well-known/host-meta /public.php?service=host-meta [QSA,L]
RewriteRule ^\.well-known/host-meta\.json /public.php?service=host-meta-json [QSA,L]
RewriteRule ^\.well-known/webfinger /public.php?service=webfinger [QSA,L]
RewriteRule ^\.well-known/nodeinfo /public.php?service=nodeinfo [QSA,L]
RewriteRule ^\.well-known/carddav https://votredomaine.tld/remote.php/dav/ [R=301,L]
RewriteRule ^\.well-known/caldav https://votredomaine.tld/remote.php/dav/ [R=301,L]
RewriteRule ^remote/(.*) remote.php [QSA,L]
RewriteRule ^(?:build|tests|config|lib|3rdparty|templates)/.* - [R=404,L]
RewriteCond %{REQUEST_URI} !^/\.well-known/(acme-challenge|pki-validation)/.*
RewriteRule ^(?:\.|autotest|occ|issue|indie|db_|console).* - [R=404,L]
</IfModule>