Ubuntu 20.04 & 21.04 - Installation de Nextcloud avec Docker et Traefik

Article écrit par • créé le • mis à jour le 5 mai 2022 à 23h42
🔙  Partie 2
Installation de Traefik

7 - Configuration

Veillez à décocher « Installer les applications recommandées » ! L'image officielle Nextcloud présente un bug qui ralentit considérablement l'application si vous laissez cocher cette case. Il est recommandé d'installer les applications dans l'interface de votre cloud une fois la configuration terminée.

Renseignez l'utilisateur et le mot de passe de votre choix et cliquez sur « Terminer l'installation » :

Nextcloud Configuration Docker

8 - Suivre les recommandations de Nextcloud

Votre instance Nextcloud effectue automatiquement des vérifications sur la sécurité et la configuration. Il est possible de consulter les avertissements liés à votre configuration dans les paramètres (Administration → Vue d'ensemble) :

Nextcloud Recommandations

8.1 - La configuration des en-têtes du reverse proxy

Comme l'indique le message d'avertissement, vous devez définir explicitement les serveurs proxy auxquels Nextcloud doit faire confiance et fournir des en-têtes spécifiques pour des raisons de sécurité.

  • Ajoutez les lignes suivantes dans votre docker-compose.yml :
    version: '3.7'
    services:
      database:
        image: mariadb
        container_name: nextcloud_database
        restart: unless-stopped
        command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
        environment:
          - MYSQL_RANDOM_ROOT_PASSWORD=yes
          - MYSQL_DATABASE=${MYSQL_DATABASE}
          - MYSQL_USER=${MYSQL_USER}
          - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        networks:
          - lan
        volumes:
          - db:/var/lib/mysql
    
      nextcloud:
        depends_on:
          - database
        image: nextcloud
        container_name: nextcloud_app
        restart: unless-stopped
        ports:
          - 8080:80
        environment:
          - MYSQL_HOST=database
          - MYSQL_DATABASE=${MYSQL_DATABASE}
          - MYSQL_USER=${MYSQL_USER}
          - MYSQL_PASSWORD=${MYSQL_PASSWORD}
          - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_URL}
        networks:
          - lan
          - traefik_network
        volumes:
          - html:/var/www/html
        labels:
          - "traefik.enable=true"
          - "traefik.docker.network=traefik_network"
          - "traefik.http.routers.nextcloud.entrypoints=web,websecure"
          - "traefik.http.routers.nextcloud.rule=Host(`${NEXTCLOUD_URL}`)"
          - "traefik.http.services.nextcloud.loadbalancer.server.port=80"
          - "traefik.http.routers.nextcloud.tls=true"
          - "traefik.http.routers.nextcloud.tls.certresolver=leresolver"
          - "traefik.http.routers.nextcloud.middlewares=nextcloud"
          - "traefik.http.middlewares.nextcloud.headers.stsSeconds=155520011"
          - "traefik.http.middlewares.nextcloud.headers.stsIncludeSubdomains=true"
          - "traefik.http.middlewares.nextcloud.headers.stsPreload=true"
    
    volumes:
      db:
      html:
    
    networks:
      lan:
      traefik_network:
        external: true
  • Exécutez les commandes suivantes (attention à bien remplacer cloud.mondomaine.com par le vôtre dans la deuxième commande) :
    docker exec -it -u www-data nextcloud_app php occ config:system:set trusted_proxies 1 --value='127.0.0.1'
    docker exec -it -u www-data nextcloud_app php occ config:system:set overwritehost --value="cloud.mondomaine.com"
    docker exec -it -u www-data nextcloud_app php occ config:system:set overwriteprotocol --value="https"
  • Redémarrez vos containers pour prendre en compte la nouvelle configuration avec la commande suivante :
    docker-compose up -d

8.2 - CalDAV et CardDAV

CalDAV et CardDAV sont des protocoles réseaux permettant de synchroniser respectivement vos calendriers et vos contacts créés au sein de votre cloud vers d'autres appareils (votre smartphone Android par exemple).

Les redirections pour CalDAV ou CardDAV ne fonctionnent pas si Nextcloud s'exécute derrière un reverse proxy (ici Traefik). La solution est de demander à Traefik de réaliser les redirections.

  • Ajoutez le middleware nextcloud_redirect à la ligne 45 et les 3 propriétés de redirections dans votre docker-compose.yml :
    version: '3.7'
    services:
      database:
        image: mariadb
        container_name: nextcloud_database
        restart: unless-stopped
        command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
        environment:
          - MYSQL_RANDOM_ROOT_PASSWORD=yes
          - MYSQL_DATABASE=${MYSQL_DATABASE}
          - MYSQL_USER=${MYSQL_USER}
          - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        networks:
          - lan
        volumes:
          - db:/var/lib/mysql
    
      nextcloud:
        depends_on:
          - database
        image: nextcloud
        container_name: nextcloud_app
        restart: unless-stopped
        ports:
          - 8080:80
        environment:
          - MYSQL_HOST=database
          - MYSQL_DATABASE=${MYSQL_DATABASE}
          - MYSQL_USER=${MYSQL_USER}
          - MYSQL_PASSWORD=${MYSQL_PASSWORD}
          - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_URL}
        networks:
          - lan
          - traefik_network
        volumes:
          - html:/var/www/html
        labels:
          - "traefik.enable=true"
          - "traefik.docker.network=traefik_network"
          - "traefik.http.routers.nextcloud.entrypoints=web,websecure"
          - "traefik.http.routers.nextcloud.rule=Host(`${NEXTCLOUD_URL}`)"
          - "traefik.http.services.nextcloud.loadbalancer.server.port=80"
          - "traefik.http.routers.nextcloud.tls=true"
          - "traefik.http.routers.nextcloud.tls.certresolver=leresolver"
          - "traefik.http.routers.nextcloud.middlewares=nextcloud,nextcloud_redirect"
          - "traefik.http.middlewares.nextcloud.headers.stsSeconds=155520011"
          - "traefik.http.middlewares.nextcloud.headers.stsIncludeSubdomains=true"
          - "traefik.http.middlewares.nextcloud.headers.stsPreload=true"
          - "traefik.http.middlewares.nextcloud-redirectregex.redirectRegex.permanent=true"
          - "traefik.http.middlewares.nextcloud_redirect.redirectregex.regex=/.well-known/(card|cal)dav"
          - "traefik.http.middlewares.nextcloud_redirect.redirectregex.replacement=/remote.php/dav/"
    volumes:
      db:
      html:
    
    networks:
      lan:
      traefik_network:
        external: true
  • Redémarrez vos containers pour prendre en compte la nouvelle configuration avec la commande suivante :
    docker-compose up -d

8.3 - Index manquants

Ajoutez les index manquants avec la commande suivante :
docker exec -it -u www-data nextcloud_app php occ db:add-missing-indices

Vous pouvez maintenant recharger la page et constater que la sécurité et la configuration suivent désormais les recommandations officielles :

Nextcloud Recommandations Succès

9 - Améliorer le temps de réponse avec Redis

En construction...

10 - Installation de la suite Collabora Online

Nextcloud Collabora Online

Collabora Online permet d'éditer vos documents en temps réel directement dans Nextcloud, en affichant un rendu WYSIWYG de haute fidélité et en préservant la présentation et le formatage de vos documents. Les utilisateurs peuvent insérer des commentaires et y répondre, et en inviter d'autres personnes sans compte Nextcloud à se joindre anonymement pour éditer des fichiers se trouvant dans un dossier public partagé par lien. Collabora Online prend en charge des dizaines de formats de documents dont DOC, DOCX, PPT, PPTX, XLS, XLSX + ODF, Import/View Visio, Publisher et bien plus...

 

La suite est réservée aux membres. Déjà membre ? Se connecter

11 - Nextcloud sur Android...


Découvrez l'excellente application officielle Nextcloud sur Android qui vous permettra de synchroniser et de partager vos fichiers sur votre mobile.
Testé sur
Ubuntu Server 20.04 LTS
Auteur
Edouard WATTECAMPS

2 réflexions au sujet de “Ubuntu 20.04 & 21.04 - Installation de Nextcloud avec Docker et Traefik”

  1. Bonjour,
    Lorsque je lance la commande « docker-compose -v », j’ai le message suivant :
    « /usr/local/bin/docker-compose: line 1: Not: command not found »
    La version de Docker est la suivante : Docker version 19.03.13, build 4484c46
    Merci de votre aide

    Répondre
  2. Bonjour!
    Attention, depuis les versions récentes dun conteneur de Collabora, la variable d’environnement domain= n’est plus acceptée. Si je reprend l’exemple de ce guide, dans docker-compose.yml il faut remplacer « domain=${NEXTCLOUD_URL_ESCAPED} » par « aliasgroup1=${NEXTCLOUD_URL_ESCAPED} »
    Puis dans le fichier .env il faut remplacer NEXTCLOUD_URL_ESCAPED=cloud\.mondomaine\.com par NEXTCLOUD_URL_ESCAPED=https://cloud.mondomaine.com:443,https://cloud\.mondomaine\.com,https://cloud\.mondomaine\.com:443
    Voilà, j’espère avoir aidé 🙂

    Répondre

Laisser un commentaire