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.
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.
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.
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
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

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.
7. Paramètres onglet cron
Sur le premier onglet cron, indiquez votre NDD dans la fenêtre 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
9. Installer
Cliquez sur Installer et patientez le temps de l’installation
10. Ouvrir Nextcloud
Puis, cliquez sur la nouvelle tuile créée pour ouvrir une nouvelle page web
11. Connexion
Indiquez votre nom et votre mot de passe et, Se connecter
Bienvenue sur Nextcloud
Configuration
Complément en cours de rédaction











