Installer Nextcloud

APPLICATIONS

Cloud et Applications intégrées

Nextcloud est une plateforme de collaboration open source et auto-hébergée, conçue pour permettre aux particuliers et aux entreprises de stocker, synchroniser et partager leurs fichiers tout en gardant le contrôle total de leurs données. Elle est née en 2016 comme une branche du projet ownCloud, suite à une divergence de vision stratégique.

Caractéristiques

  • Stockage et synchronisation de fichiers entre ordinateurs, smartphones et tablettes. 

  • Partage sécurisé de fichiers, avec gestion fine des droits d’accès et des liens expirables.
  • Applications intégrées : calendrier (CalDAV), contacts (CardDAV), messagerie, édition collaborative de documents (via Nextcloud Office), visioconférence (Nextcloud Talk), gestion de tâches, galerie d’images, prise de notes.
  • Chiffrement des données au repos et en transit, avec option de chiffrement de bout en bout.

  • Compatibilité multiplateforme : clients disponibles pour Windows, macOS, Linux, Android, iOS, ainsi qu’une interface web complète.
  • Indépendance : contrairement à Google Drive ou iCloud, vos données ne sont pas hébergées chez un tiers.
  • Extensible : grâce à une architecture ouverte, des applications peuvent être ajoutées selon les besoins (ex : intégration avec Obsidian, QOwnNotes, etc.).
  • Gratuit et open source : le logiciel est libre (licence AGPLv3), ce qui permet de le télécharger, modifier et distribuer sans frais.
  • Particuliers : pour sauvegarder ses photos, documents, et travailler en toute confidentialité. 

  • Entreprises et organisations : pour remplacer Google Workspace ou Microsoft 365, tout en gardant le contrôle de l’infrastructure.

Illustration extraite du site Nextcloud

installer nextcloud illustration

Avertissement

Nextcloud regroupe un grand nombre de possibilités avec son catalogue d'applications. Il demeure, à ce jour, souvent plébiscité par les auto hébergeurs pour ses multiples fonctionnalités.

En revanche, la configuration, les ajustements de sécurité et la maintenance pourront vous apparaître chronophage et ardu si vous débutez dans ce type d'installation.

Si votre cahier des charges se limite à des fonctionnalités comme le partage de documents et/ou sync et/ou photos/vidéos personnelles et/ou gestion de courriels ... il vous sera sans doute plus facile d'installer et de maintenir les applications logicielles correspondantes à vos besoins et toutes aussi efficientes.

Configuration Console

Pour une meilleure performance de l'application il est conseillé une installation avec un container dédié à la Base de Données (DB). Vous pouvez installer Nextcloud avec au choix MariaDB ou Postgres (voir compose sur GitHub).

L'App Store de Casa/ZimaOS vous propose jusqu'à plus de six configurations. Vous pouvez aussi installer Nextcloud à partir du Compose YAML avec MariaDB (GitHub et autres tutos en ligne).

Après avoir testé huit configurations différentes, j'ai opté pour la structure proposée par BigBearCasaOS de l'App Store avec quelques modifications (versions images et autres).

1. Proxy Inversé

Configurer le Proxy Inversé en liant un NDD, Sous domaine ou Wildcard dédié. Le port local est déterminé pour cet article à 7580 en http avec l'IP locale de la machine hôte et, validez le Websockets Support + Block Common Exploits ainsi que Force SSL + HSTS Enabled + HTTP/2 Support.

installer nextcloud proxy inversé

2. Application personnalisée

Cliquez sur l’icône + en haut à droite de la page d’accueil au dessus des tuiles et sélectionnez Installer une application personnalisée.

installer nextcloud application personnalisee

3. Importer

La fenêtre des paramètres de votre application s’ouvre et cliquez sur l’icône flèche vers le carré en haut à droite, avec pour libellé Importer

installer nextcloud importer

4. Importer votre configuration

Le pop-up vous propose d’importer votre configuration avec un fichier YAML ou de copier-coller celle-ci dans la fenêtre dédiée. Vous pouvez agrandir cette fenêtre en sélectionnant les deux traits en bas à droite.

NB Ne validez pas avant la modification de l'étape 6

installer nextcloud console dimport

5. Compose YAML

Copier-coller dans la fenêtre le code de configuration ci dessous.

Attention, une modification sera à opérer à l'étape suivante

name: nextcloud
services:
  cron:
    cpu_shares: 
    command: []
    depends_on:
      db-nextcloud:
        condition: service_healthy
        required: true
      redis-nextcloud:
        condition: service_healthy
        required: true
    deploy:
      resources:
        limits:
          memory: 
        reservations: {}
    entrypoint:
      - /cron.sh
    image: nextcloud:latest
    labels:
      icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/nextcloud.png
    restart: unless-stopped
    volumes:
      - type: bind
        source: /DATA/AppData/nextcloud/html
        target: /var/www/html
        bind:
          create_host_path: true
    x-casaos:
      volumes:
        - container: /var/www/html
          description:
            en_us: "Container Path: /var/www/html"
    ports: []
    devices: []
    cap_add: []
    environment: []
    networks:
      - nextcloud_network
    privileged: false
    container_name: ""
    hostname: ""
  db-nextcloud:
    cpu_shares: 
    command: []
    container_name: db-nextcloud
    deploy:
      resources:
        limits:
          memory: 
        reservations: {}
    environment:
      - POSTGRES_DB=nextcloud
      - POSTGRES_PASSWORD=casaos
      - POSTGRES_USER=casaos
    hostname: db-nextcloud
    healthcheck:
      test:
        - CMD-SHELL
        - pg_isready -U casaos -d nextcloud
      timeout: 5s
      interval: 10s
      retries: 5
    image: postgres:14.2
    labels:
      icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/nextcloud.png
    restart: unless-stopped
    volumes:
      - type: bind
        source: /DATA/AppData/nextcloud/pgdata
        target: /var/lib/postgresql/data
        bind:
          create_host_path: true
    x-casaos:
      envs:
        - container: POSTGRES_PASSWORD
          description:
            en_us: Database password
        - container: POSTGRES_USER
          description:
            en_us: Database user
        - container: POSTGRES_DB
          description:
            en_us: Database type
      volumes:
        - container: /var/lib/postgresql/data
          description:
            en_us: "Container Path: /var/lib/postgresql/data"
    ports: []
    devices: []
    cap_add: []
    networks:
      - nextcloud_network
    privileged: false
  nextcloud:
    cpu_shares: 
    command: []
    container_name: nextcloud
    depends_on:
      db-nextcloud:
        condition: service_healthy
        required: true
      redis-nextcloud:
        condition: service_healthy
        required: true
    deploy:
      resources:
        limits:
          memory: 
        reservations: {}
    environment:
      - NEXTCLOUD_ADMIN_PASSWORD=
      - NEXTCLOUD_ADMIN_USER=
      - NEXTCLOUD_TRUSTED_DOMAINS=
      - OVERWRITEHOST=
      - OVERWRITEPROTOCOL=https
      - PHP_MEMORY_LIMIT=1024M
      - PHP_UPLOAD_LIMIT=1024M
      - POSTGRES_DB=nextcloud
      - POSTGRES_HOST=db-nextcloud
      - POSTGRES_PASSWORD=casaos
      - POSTGRES_USER=casaos
      - REDIS_HOST=redis-nextcloud
      - TRUSTED_PROXIES=
    hostname: nextcloud
    image: nextcloud:latest
    labels:
      icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/nextcloud.png
    ports:
      - mode: ingress
        target: 80
        published: "7580"
        protocol: tcp
    restart: unless-stopped
    volumes:
      - type: bind
        source: /DATA/AppData/nextcloud/html
        target: /var/www/html
        bind:
          create_host_path: true
      - type: bind
        source: /DATA/AppData/nextcloud/custom_apps
        target: /var/www/html/custom_apps
      - type: bind
        source: /DATA/AppData/nextcloud/config
        target: /var/www/html/config
      - type: bind
        source: /DATA/AppData/nextcloud/data
        target: /var/www/html/data
      - type: bind
        source: /DATA/AppData/nextcloud/themes
        target: /var/www/html/themes
    x-casaos:
      envs:
        - container: POSTGRES_HOST
          description:
            en_us: Database host
        - container: REDIS_HOST
          description:
            en_us: Redis host
        - container: POSTGRES_PASSWORD
          description:
            en_us: Database password
        - container: POSTGRES_USER
          description:
            en_us: Database user
        - container: POSTGRES_DB
          description:
            en_us: Database type
        - container: NEXTCLOUD_ADMIN_USER
          description:
            en_us: Nextcloud admin user
        - container: NEXTCLOUD_ADMIN_PASSWORD
          description:
            en_us: Nextcloud admin password
        - container: TRUSTED_PROXIES
          description:
            en_us: Trusted proxies
        - container: OVERWRITEPROTOCOL
          description:
            en_us: Overwrite protocol
        - container: PHP_UPLOAD_LIMIT
          description:
            en_us: PHP upload limit
      ports:
        - container: "7580"
          description:
            en_us: "Container Port: 7580"
      volumes:
        - container: /var/www/html
          description:
            en_us: "Container Path: /var/www/html"
    devices: []
    cap_add: []
    networks:
      - nextcloud_network
    privileged: false
  redis-nextcloud:
    cpu_shares: 
    command: []
    container_name: redis-nextcloud
    deploy:
      resources:
        limits:
          memory: 
        reservations: {}
    hostname: redis-nextcloud
    healthcheck:
      test:
        - CMD-SHELL
        - redis-cli ping || exit 1
      timeout: 5s
      interval: 10s
      retries: 5
    image: redis:latest
    labels:
      icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/nextcloud.png
    restart: unless-stopped
    user: 1000:1000
    volumes:
      - type: bind
        source: /DATA/AppData/nextcloud/redis
        target: /data
        bind:
          create_host_path: true
    x-casaos:
      ports:
        - container: "6379"
          description:
            en_us: "Container Port: 6379"
      volumes:
        - container: /data
          description:
            en_us: "Container Path: /data"
    ports: []
    devices: []
    cap_add: []
    environment: []
    networks:
      - nextcloud_network
    privileged: false
networks:
  nextcloud_network:
    name: nextcloud_nextcloud_network
    driver: bridge
x-casaos:
  author: self
  category: self
  hostname: 
  icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/nextcloud.png
  index: /
  is_uncontrolled: true
  port_map: "443"
  scheme: https
  store_app_id: nextcloud
  title:
    custom: NEXTCLOUD
    en_us: Nextcloud

6. Modifier UID etGID

Modifiez, sur la fenêtre, l'UID et le GID au niveau du paragraphe "redis-nextcloud:" à user: 1000:1000

Le premier chiffre correspond à l'IUD et le second au GID (sur l'illustration pour mon ZimaOS, modification à user: 999:1000).

Après cette modification (si nécessaire), cliquez sur Appliquer, puis sur OK sur le Pop-up qui s’affiche.

installer nextcloud modification user

7. Paramètres onglet cron

Sur le premier onglet cron, indiquez votre NDD dans la fenêtre Web UI

installer nextcloud web ui

8. Paramètres onglet nextcloud

Au niveau des Variables d'environnement, remplissez les fenêtres droites vides comme suit :

  • NEXTCLOUD_ADMIN_PASSWORD = votre mot de passe de connexion (complexité moyenne au minimum)
  • NEXTCLOUD_ADMIN_USER= identifiant de connexion (nom ou pseudo)
  • NEXTCLOUD_TRUSTED_DOMAINS=votre ndd suivi (après espace) de votre ip locale. Par ex : cloud.monndd.fr 192.168.1.4
  • OVERWRITEHOST=votre ndd
  • TRUSTED_PROXIES=votre IP locale

 

installer nextcloud paramètres env nextcloud

9. Installer

Cliquez sur Installer et patientez le temps de l’installation

installer nextcloud installation

10. Ouvrir Nextcloud

Puis, cliquez sur la nouvelle tuile créée pour ouvrir une nouvelle page web

installer nextcloud ouvrir la tuile

11. Connexion

Indiquez votre nom et votre mot de passe et, Se connecter

installer nextcloud se connecter

Bienvenue sur Nextcloud

installer nextcloud bienvenue

Configuration

Complément en cours de rédaction

Share This