Files
docudjeex/content/fr/3.serveex/6.cloud/2.nextcloud.md
T

7.4 KiB

title, description
title description
Nextcloud Installer Nextcloud pour auto-héberger vos fichiers, photos et agenda, une alternative respectueuse de la vie privée à Google Drive, OneDrive et iCloud.

:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}

Nextcloud est une solution auto-hébergée qui permet d'accéder à vos données et de les synchroniser sur tous vos appareils. Elle inclut aussi des fonctions de collaboration, un agenda, et bien plus. C'est une excellente alternative à des services comme Google Drive, iCloud ou OneDrive.

Picture

Installation

::note{to="https://docs.linuxserver.io/images/docker-nextcloud/"}

Nous utiliserons l'image Docker maintenue par LinuxServer.io ::

::file-tree

tree: /: - srv: - docker: - nextcloud: - config/ - data/ - compose.yaml - .env

::

::steps{level="3"}

Déployer la stack

Ouvrez Dockge, cliquez sur compose, nommez la stack nextcloud et collez ce qui suit :

---
services:
  nextcloud:
    image: lscr.io/linuxserver/nextcloud:latest
    container_name: nextcloud
    environment:
      - PUID=${PUID}
      - PGID=${GUID}
      - TZ=Etc/UTC
    volumes:
      - /srv/docker/nextcloud/config:/config
      - /srv/docker/nextcloud/data:/data
    ports:
      - ${PORT}:443
    restart: unless-stopped

::note{to="/general/networking/samba"}

Si vous utilisez un NAS ou un disque partagé sur le réseau via Samba, remplacez /srv/docker/nextcloud/data par le chemin de votre dossier partagé. ::

Renseigner vos variables d'environnement

Trouvez vos PUID et GUID avec la commande suivante :

id utilisateur

Remplissez ensuite le fichier .env avec le port de votre choix et les valeurs trouvées ci-dessus, par exemple :

PUID=1000
GUID=1000
PORT=4545

Déployez la stack et visitez http://ipdevotreserveur:4545 pour terminer la configuration.

Terminé !

::

::caution

Si ça ne marche pas : vérifiez les règles de votre pare-feu. ::

Exposer Nextcloud avec Swag

L'objectif de cette installation est d'accéder à Nextcloud à distance depuis tous vos appareils. Nous allons utiliser Swag pour exposer l'application.

::note

Nous partons du principe que vous avez un sous-domaine nextcloud.mondomaine.fr avec un CNAME pointant vers mondomaine.fr dans votre zone DNS. Et à moins d'utiliser Cloudflare Zero Trust, le port 443 de votre box doit être redirigé vers le port 443 de votre serveur via les règles NAT. ::

::steps{level="3"}

Ajouter le réseau de Nextcloud à SWAG

Dans Dockge, allez sur votre stack SWAG et modifiez le compose pour y ajouter le réseau de Nextcloud :

---
services:
  swag:
     container_name: # ...
      # ... 
     networks:               
      # ...           
      - nextcloud            

networks:                    
  # ...
  nextcloud:                 
    name: nextcloud_default  
    external: true           

::note

Nous partons du principe que le réseau de Nextcloud s'appelle nextcloud_default. Vous pouvez confirmer la connectivité en visitant le tableau de bord de SWAG sur http://ipdevotreserveur:81. ::

Redéployez la stack et attendez que SWAG soit pleinement opérationnel.

Configurer les proxys de confiance

Dans les fichiers de Nextcloud, modifiez le fichier config.php :

::tip{icon="" to="/serveex/files/file-browser-quantum"} Astuce : vous pouvez utiliser File Browser Quantum pour naviguer et modifier les fichiers plutôt que des commandes dans le terminal. ::

sudo nano /srv/docker/nextcloud/config/www/nextcloud/config/config.php

Collez ce qui suit avant le ); final :

'trusted_proxies' => [gethostbyname('swag')],
'overwrite.cli.url' => 'https://nextcloud.example.com/',
'overwritehost' => 'nextcloud.example.com',
'overwriteprotocol' => 'https',

Ajoutez également votre domaine dans la section array. Cela devrait ressembler à ceci :

array (
   0 => '192.168.0.1:444', # Cette ligne peut différer, n'y touchez pas !
   1 => 'nextcloud.mondomaine.fr', # Ajoutez votre domaine ici
),

Appuyez sur :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"} pour enregistrer, et :kbd{value="Ctrl+X"} pour quitter.

Créer le fichier subdomain.conf

Dans les dossiers de Swag, créez le fichier nextcloud.subdomain.conf :

sudo nano /srv/docker/swag/config/nginx/proxy-confs/nextcloud.subdomain.conf

Collez ce qui suit :

## Version 2024/04/25
server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name nextcloud.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    location / {
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app nextcloud;
        set $upstream_port 443;
        set $upstream_proto https;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

        # Masque les en-têtes de réponse de Nextcloud qui entrent en conflit avec ssl.conf
        proxy_hide_header Referrer-Policy;
        proxy_hide_header X-Content-Type-Options;
        proxy_hide_header X-Frame-Options;
        proxy_hide_header X-XSS-Protection;

        # Désactive la mise en tampon du proxy
        proxy_buffering off;
    }
}

Appuyez sur :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"} pour enregistrer, et :kbd{value="Ctrl+X"} pour quitter.

Terminé !

::

Et voilà ! Vous avez exposé Nextcloud ! N'oubliez pas d'installer les applications bureau et mobiles.

Protéger Nextcloud avec Pocket ID

Nextcloud peut aussi déléguer la connexion à un fournisseur OIDC plutôt qu'à (ou en plus de) ses propres comptes.

::steps{level="3"}

Installer l'application OpenID Connect

Dans Nextcloud, allez dans Apps > Integration et installez OpenID Connect user backend (user_oidc).

Enregistrer Nextcloud comme client OIDC

Enregistrez un client OIDC dans Pocket ID nommé Nextcloud, avec cette URL de callback :

https://nextcloud.mondomaine.fr/apps/user_oidc/code

Ajouter le fournisseur dans Nextcloud

Dans Nextcloud, allez dans Administration > OpenID Connect, cliquez sur le bouton +, et renseignez :

Champ Valeur
Identifier PocketID
Client ID Le client ID copié depuis Pocket ID
Client secret Le client secret copié depuis Pocket ID
Discovery endpoint L'URL de découverte OIDC de Pocket ID
Scope openid email profile groups

Terminé !

::

::tip{icon="" to="/serveex/advanced/authentik"} Vous pouvez utiliser Authentik plutôt que Pocket ID :

  1. Dans Authentik, créez une application et un provider OAuth2/OpenID Connect nommé Nextcloud, avec une redirect URI (de type Strict) valant https://nextcloud.mondomaine.fr/apps/user_oidc/code.
  2. Notez les Client ID, Client Secret et Slug du provider.
  3. Dans les réglages OpenID Connect de Nextcloud, mettez https://authentik.mondomaine.fr/application/o/<slug>/.well-known/openid-configuration comme Discovery endpoint, puis renseignez le Client ID et le Client Secret. ::