Sommaire

D’après Wikipédia, Nextcloud est un logiciel libre de site d’hébergement de fichiers et une plateforme de collaboration. À l’origine accessible via WebDAV, n’importe quel navigateur web, ou des clients spécialisés, son architecture ouverte a permis de voir ses fonctionnalités s’étendre depuis ses origines. En 2020, il propose de nombreux services.

Nextcloud est une plateforme de type “cloud” personnel, où vous allez pouvoir y stocker vos fichiers, mais aussi vos agendas, vos contacts, vos notes, vos photos… Il propose également une série d’applications facultatives (travail collaboratif, visio…).

Installation

Nextcloud a besoin d’une base de données. Je propose une installation avec postgres, plus performant que mariaDB pour ce genre d’applications.

Le fichier docker-compose.yml :

services:
  nextcloud-db:
    image: docker.io/postgres:16.4
    container_name: nextcloud-db
    hostname: nextcloud-db
    env_file: nextcloud-db.env
    networks:
      - default
    volumes:
      - /opt/nextcloud/postgres:/var/lib/postgresql/data
    restart: always

  nextcloud:
    image: lscr.io/linuxserver/nextcloud:latest
    container_name: nextcloud
    hostname: nextcloud
    nv_file: nextcloud.env
    networks:
      - default
      - nginx_proxy
    volumes:
      - /opt/nextcloud/config:/config
      - /opt/nextcloud/data:/data
    depends_on:
      - nextcloud-db
    restart: always

networks:
  default:
    external: false
  nginx_proxy:
    external: true

Le fichier nextcloud.env :

PUID=1000
PGID=1000
TZ=Europe/Paris

Et le fichier nextcloud-db.env :

POSTGRES_PASSWORD=Password
POSTGRES_USER=nextcloud
POSTGRES_DB=nextcloud

N’oubliez pas de changer le mot de passe dans la variable POSTGRES_PASSWORD.

Reverse proxy

Les fichiers de configuration ci-dessus sont prévus pour être utilisés avec un reverse proxy.

Pour rappel, un article dédié est disponible ici.

L’image Docker de Linuxserver.io propose un fichier sample de configuration, il vous suffit juste de modifier votre sous domaine en conséquence :

sudo cp /opt/nginx/nginx/proxy-confs/nextcloud.subdomain.conf.sample /opt/nginx/nginx/proxy-confs/nextcloud.subdomain.conf
sudo sed -i "s,server_name nextcloud,server_name <votre_sous_domaine>,g" /opt/nginx/nginx/proxy-confs/nextcloud.subdomain.conf

Autre point important, Nextcloud a besoin de certains éléments côté ssl. il faut donc modifier le fichier /opt/nginx/nginx/ssl.conf pour y décommenter les lignes suivantes :

add_header Strict-Transport-Security "max-age=63072000" always;
add_header Referrer-Policy "same-origin" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;

Enfin, un petit redémarrage pour prendre en compte vos modifications :

sudo docker restart nginx

Initialisation

Une fois votre application déployée, vous connecter à l’url que vous avez défini dans votre proxy devrait vous amener à la page suivante :

Cliquez sur Stockage & base de données pour sélectionner PostgreSQL. Il vous faudra renseigner les informations de la base de données définies dans votre fichier .env:

  • Le compte, qui est votre user postgre
  • le mot de passe de la base
  • le nom de la base
  • le hostname, qui correspond au nom du conteneur : nextcloud-db dans notre cas

Vous pouvez maintenant cliquer sur Installer.

Une fois l’initialisation terminée, il vous sera demandé si vous voulez le pack d’applications recommandées. Dans notre exemple, nous allons les installer :

Vous devriez enfin vous retrouver sur la page d’accueil :


Conclusion

Votre instance Nextcloud est maintenant prête à être utilisée ! Il reste toutefois quelques configurations à faire dans l’application elle-même. Pour cela, je vous renvoie vers la documentation de Nextcloud.

A plus !