Installer Nextcloud sur un Synology avec Docker

Installer Nextcloud sur un Synology avec Docker
Photo by C Dustin / Unsplash

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>