Skip to content

Commit d280177

Browse files
committed
Article : mise en place d'un NextCloud autohébergé
1 parent dbb61c1 commit d280177

File tree

4 files changed

+276
-0
lines changed

4 files changed

+276
-0
lines changed

content/articles/.pages

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
title: "📖 Articles"
22

33
nav:
4+
- "2026"
45
- "2025"
56
- "2024"
67
- "2023"

content/articles/2026/.meta.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
search:
2+
boost: 25

content/articles/2026/.pages

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
order: desc
Lines changed: 272 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,272 @@
1+
---
2+
title: Mise en place d'un NextCloud
3+
subtitle: Efficace et pas cher, c'est NextCloud que j'préfère !
4+
authors:
5+
- Guilhem ALLAMAN
6+
categories:
7+
- article
8+
comments: true
9+
date: 2026-01-08
10+
description: Mise en place d'un serveur NextCloud pour stocker et partager ses fichiers en mode collaboratif, sur Desktop et Mobile.
11+
icon: fontawesome/solid/cloud
12+
image:
13+
tags:
14+
- cloud
15+
- déploiement
16+
- infrastructure
17+
- linux
18+
- NextCloud
19+
---
20+
21+
# Mise en place d'un NextCloud auto-hébergé
22+
23+
:calendar: Date de publication initiale : {{ page.meta.date | date_localized }}
24+
25+
![Logo NextCloud](https://cdn.geotribu.fr/img/logos-icones/nextcloud.webp){: .img-thumbnail-left }
26+
27+
Salut les _géomaniacs_ ! Aujourd'hui on va voir, au long de cet article, comment mettre en place un serveur NextCloud, pour stocker et partager des fichiers en toute sérénité, au poste comme en mobilité.
28+
29+
![Interface web de NextCloud, qui montre les dossiers et fichiers stockés](https://cdn.geotribu.fr/img/articles-blog-rdp/articles/2026/mise_en_place_nextcloud_autoheberge/nextcloud_files.webp){: .img-center loading=lazy }
30+
31+
## Un énième article sur NextCloud :thinking: ?
32+
33+
Alors, devant la multitude de docs et tutos qui traînent sur le net concernant l'installation de NextCloud, comme par exemple [la documentation officielle](https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html), ou encore [un billet sur le blog officiel](https://nextcloud.com/blog/how-to-install-the-nextcloud-all-in-one-on-linux/), ou encore des tutos sur les plateformes vidéos, et si le sujet n'est pas à proprement parler orienté géo, la question c'est pourquoi en faire un tuto ici dans Geotribu ? _Why_ ? _Warum_ ? ¿_Por qué_? _なぜですか_ !?
34+
35+
Premièrement, on a souvent besoin de partager des documents, par exemple des données géospatiales, style [geopackage](https://www.geopackage.org/), ou _chépe[^1]_, ou que sais-je encore. Ce que permet NextCloud, avec des partages de liens, de la synchronisation de fichiers sur le _File System_, etc. Et franchement ça marche bien, le bouzin est solide et stable. Et il y a aussi un système d’extensions, avec beaucoup qui sont sympa ! En plus, utiliser NextCloud permet de garder le contrôle sur ses données, contrairement aux clouds propriétaires... Bref, il s'agit d'un cloud qui mérite d'être mis en avant, pour un usage perso, ou pro, ou associatif, ou autre.
36+
37+
Le sujet est également revenu sur la géotable de Geotribu récemment, après qu'on ait ~~bousculé~~ basculé [le serveur qui fournit le CDN des photos du site ainsi que les commentaires, vers un nouvel hébergeur](https://mapstodon.space/@geotribu/114929845299328320). On en profite pour dire un grand merci à [Georezo](https://georezo.net/), qui nous met un serveur à disposition en ce sens :heart: ! Alors peut-être qu'on mettra en place un NextCloud pour Geotribu à l'avenir, qui sait ?
38+
39+
De plus, _last but not least_, ici dans Geotribu on peut se permettre des blagues qu'il est difficile de faire sur le blog officiel de NextCloud :grin:. Par exemple :
40+
41+
??? question "Qu'est-ce qui est rouge, qui accroche parfaitement ses vectorisations aux sommets voisins, qui nous sauve des feux en été et qui est toujours bien habillé ?"
42+
Un snapeur-pompier...
43+
44+
Et enfin, cet article est un appel à la rédaction d'autres, pour aborder l'utilisation et l'intégration de NextCloud avec des outils SIG.
45+
46+
Allez, fini le [non-sense](https://youtu.be/J6G9t6haDII?si=roO8rcYY30lxq4v6&t=362), c'est parti ! Pas d'inquiétude ceci dit, en espérant qu'il y ait plus de blabla que de lignes de commande au long de cet article...
47+
48+
## NextCloud ? Qu'est-ce ?
49+
50+
NextCloud est donc un logiciel qui fournit un cloud de fichiers et documents. [Issu d'un fork de ownCloud en 2016](https://nextcloud.com/blog/press_releases/pr20160602/), NextCloud est développé [sous license AGPL](https://help.nextcloud.com/t/nextcloud-licensing/206830) et écrit dans le langage PHP.
51+
52+
Il y a une interface web NextCloud qu'il est possible de customiser, ainsi que des applications clients : app Android (aussi [sur le f-droid](https://f-droid.org/en/packages/com.nextcloud.client/)), iOS, [applis _Desktop_ sur toutes les plateformes](https://nextcloud.com/install/#desktop-files) + même [un client NextCloud Talk](https://github.com/nextcloud/talk-desktop#nextcloud-talk-desktop) pour faire des visios grâce à une extension :call_me_hand:, même si bon, c'est lent...
53+
54+
À noter que dans cet article, nous nous concentrerons sur l'installation du serveur.
55+
56+
La "méthode d'installation officielle" mise en avant est la méthode maintenue par NextCloud GmbH : _AIO_. Rien à voir avec quelqu'un dont le clavier se serait bloqué en écrivant "aïoli", c'est plutôt pour [_All-In-One_](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one), une méthode qui lance tout le nécessaire [dans une seule image docker](https://hub.docker.com/r/nextcloud/all-in-one).
57+
58+
Oui on va passer par [docker](https://www.docker.com/) ici, une technologie qui a ses avantages et ses inconvénients, et à noter qu'il est aussi possible [de lancer une installation manuelle](https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation). Il existe aussi une manière d'installer NextCloud [via des paquets snap](https://doc.ubuntu-fr.org/snap).
59+
60+
Ici on va lancer [la version via l'image _community_](https://hub.docker.com/_/nextcloud/), rien que pour se la raconter et le goût du risque, car la description stipule "_:warning::warning::warning: This image is maintained by community volunteers and designed for expert use_" :sunglasses:. Plus sérieusement, il s'agit d'une version maintenue par la communauté, et qui lance uniquement l'applicatif, nous permettant ainsi de choisir la base de données utilisée, ainsi que la configuration du [_reverse-proxy_](https://en.wikipedia.org/wiki/Reverse_proxy) nginx.
61+
62+
!!! warning "Ceintures et bretelles"
63+
Vous comprendrez que ça part sur une installation d'un NextCloud _on-premise_, donc à administrer, maintenir, sauvegarder etc. Notez qu'il y a des fournisseurs et hébergeurs sur qui vous pouvez vous appuyer concernant ces joies :yum:. Si vous souhaitez mettre en production une instance installée à partir de cet article, c'est à vos rixes et périls ! _Geotribu Incorporated Cloud & Services Providing Associates Holding :copyright::registered:_ est content de partager comment installer un NextCloud, ceci dit une attention particulière est toujours nécessaire quand ça commence à stocker des données en production.
64+
65+
!!! warning "Nombre d'utilisateurs max sur une instance _Community_"
66+
[Certaines discussions sur la plateforme communautaire de NextCloud](https://help.nextcloud.com/t/nextcloud-licensing/206830/2) semblent indiquer des nombres max de comptes d'utilisateur/rices. Personnellement, sur les instances que j'ai mises en place et utilisées, je n'ai jamais atteint ce plafond, alors je ne saurais vous dire.
67+
68+
## Mise en route :truck:
69+
70+
Pour installer NextCloud, il vous faudra une machine virtuelle linux, sous debian ou ubuntu pour la méthode expliquée ici. Privilégiez les dernières versions stables en date, [Ubuntu 24.04 LTS](https://ubuntu.com/about/release-cycle) ou [debian 13 "trixie"](https://www.debian.org/releases/trixie/release-notes/), ou autre.
71+
72+
Pour schématiser, on aura principalement besoin de 3 briques :
73+
74+
1. l'applicatif NextCloud, qui fournit l'API et l'interface web.
75+
2. une base de données, pour stocker en interne le nécessaire qui fait fonctionner l'applicatif ci-dessus.
76+
3. une arborescence de dossiers et fichiers, c'est un peu là le coeur et le but du truc.
77+
78+
### Base de données sous-jacente
79+
80+
[NextCloud est compatible avec 3 systèmes de bases de données](https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/linux_database_configuration.html): PostgreSQL, MySQL et Oracle. _Ouh la la_, vraiment du mal à me décider sur lequel partir ! Et si on lançait un dé à 3 faces, histoire de se dédouaner de cette responsabilité et comme [il est possible de le faire avec la commande slash `/roll` dans QChat, le plugin de tchat dans QGIS #PlacementDeProduit ?](https://geotribu.github.io/qchat/usage/slash_commands.html#roll)
81+
82+
Résultat : les dés ont parlé, c'est PostgreSQL ! Dites-donc, le hasard fait bien les choses...
83+
84+
Deux manières de la jouer maintenant :
85+
86+
- Façon "ceinture et bretelles" : on utilise une base pg externe, c'est plus simple à mettre à jour et ça décorrèle l'applicatif des données.
87+
- Façon ["Les hébergeurs de l'extrême"](https://www.youtube.com/watch?v=1H4toKvejZ8) ou Fast'n'Furious : on lance une base postgres dans un docker, au même endroit que l'applicatif. C'est plus rapide, c'est _quick and dirty_, ça permet de tester directement l'installe, mais disons que c'est fortement déconseillé...
88+
89+
### Arborescence des dossiers et fichiers
90+
91+
Pour héberger les dossiers et fichiers qui seront accessibles dans les clients (web, synchro desktop, app mobile, etc.), on a besoin d'un chemin de répertoire sur la machine hôte. Vous pouvez vous rapprocher de votre administrateur/trice systèmes, si vous avez la chance d'en avoir un/e dans votre organisation, pour monter une partition adéquate, réseau ou autres. Ou alors choisir un dossier sur la machine virtuelle, par exemple `/opt/nextcloud/data`.
92+
93+
### Définition des services
94+
95+
Abordons maintenant les services déclarés, dans le [fichier `docker-compose`](https://docs.docker.com/reference/compose-file/) qui permettra de lancer le nécessaire.
96+
97+
!!! info "À noter que..."
98+
À noter que cet exemple s'applique dans le cas où nous souhaiterions instancier un NextCloud sur le domaine `cloud.lageowcestshow.xyz`. Ce qui présuppose une configuration du DNS en amont.
99+
100+
<!-- markdownlint-disable MD046 -->
101+
=== "Ceintures et bretelles"
102+
103+
``` linenums="1" title="docker compose pour NextCloud - `docker-compose.yaml`"
104+
services:
105+
106+
app:
107+
image: nextcloud:32
108+
container_name: nextcloud-app
109+
restart: unless-stopped
110+
ports:
111+
- 8123:80
112+
volumes:
113+
- /opt/nextcloud/data:/var/www/html
114+
environment:
115+
OVERWRITEPROTOCOL: https
116+
POSTGRES_HOST: <HOTE_BASE_PG_EXTERNE>
117+
POSTGRES_DB: <NOM_DB_BASE_PG_EXTERNE>
118+
POSTGRES_USER: <NOM_ROLE_BASE_PG_EXTERNE>
119+
POSTGRES_PASSWORD: <MOT_DE_PASSE_BASE_PG_EXTERNE>
120+
NEXTCLOUD_ADMIN_USER: admin
121+
NEXTCLOUD_ADMIN_PASSWORD: <MOTDEPASSE_ADMIN>
122+
NEXTCLOUD_TRUSTED_DOMAINS=cloud.lageowcestshow.xyz
123+
```
124+
125+
- Dans la partie `environment` du service `app`, on met les infos de connexion à la base PostgreSQL externe.
126+
127+
=== "Les hébergeurs de l'extrême"
128+
129+
``` linenums="1" title="docker compose pour NextCloud - `docker-compose.yaml`"
130+
services:
131+
132+
db:
133+
image: pgautoupgrade/pgautoupgrade:18-alpine
134+
container_name: nextcloud-db
135+
restart: unless-stopped
136+
volumes:
137+
- db_data:/var/lib/postgresql/data
138+
environment:
139+
POSTGRES_DB: nextcloud
140+
POSTGRES_USER: nextcloud
141+
POSTGRES_PASSWORD: <MOTDEPASSE>
142+
143+
app:
144+
image: nextcloud:32
145+
container_name: nextcloud-app
146+
restart: unless-stopped
147+
ports:
148+
- 8123:80
149+
volumes:
150+
- /opt/nextcloud/data:/var/www/html
151+
environment:
152+
OVERWRITEPROTOCOL: https
153+
POSTGRES_HOST: db
154+
POSTGRES_DB: nextcloud
155+
POSTGRES_USER: nextcloud
156+
POSTGRES_PASSWORD: <MOTDEPASSE>
157+
NEXTCLOUD_ADMIN_USER: admin
158+
NEXTCLOUD_ADMIN_PASSWORD: <MOTDEPASSE_ADMIN>
159+
NEXTCLOUD_TRUSTED_DOMAINS=cloud.lageowcestshow.xyz
160+
161+
volumes:
162+
db_data:
163+
```
164+
165+
- On utilise [l'image `pgautoupgrade`](https://hub.docker.com/r/pgautoupgrade/pgautoupgrade), qui aura la sympathie de mettre à jour les futures versions majeures de PostgreSQL en toutautomatique.
166+
- Les valeurs d'environment `POSTGRES_DB`, `POSTGRES_USER` et `POSTGRES_PASSWORD` doivent concorder, donc être les mêmes dans le service `db` et le service `app`.
167+
168+
<!-- markdownlint-enable MD046 -->
169+
170+
- La 1e partie des `ports` du service `app` représente le port interne sur lequel NextCloud écoutera, à réutiliser plus tard dans la conf nginx.
171+
172+
- Dans la clé `volumes` du service `app`, mettre le chemin du dossier qui hébergera tous les fichiers stockés sur l'instance.
173+
174+
### Configuration du serveur web nginx
175+
176+
Dans ce tuto on va utiliser [le serveur nginx](https://nginx.org/), qui va faire office de "reverse-proxy" : il va représenter le point d'entrée de l'application des requêtes en provenance des clients, et se chargera de rediriger ces requêtes vers l'applicatif NextCloud. C'est un peu [le videur-physionomiste](https://www.youtube.com/watch?v=mXUeHIGdN9c)...
177+
178+
- On créé un nouveau fichier pour configurer notre site NextCloud, dans `/etc/nginx/sites-available` :
179+
180+
``` linenums="1" title="/etc/nginx/sites-available/nextcloud.conf"
181+
upstream nextcloud_upstream {
182+
server 127.0.0.1:8123;
183+
}
184+
185+
server {
186+
listen 80;
187+
server_name cloud.lageowcestshow.xyz;
188+
client_max_body_size 2048M;
189+
return 301 https://$host$request_uri;
190+
}
191+
192+
server {
193+
listen 443 ssl;
194+
server_name cloud.lageowcestshow.xyz;
195+
client_max_body_size 2048M;
196+
197+
ssl_certificate /etc/letsencrypt/live/cloud.lageowcestshow.xyz/fullchain.pem;
198+
ssl_certificate_key /etc/letsencrypt/live/cloud.lageowcestshow.xyz/privkey.pem;
199+
200+
location / {
201+
proxy_pass http://nextcloud_upstream;
202+
include proxy_params;
203+
}
204+
}
205+
```
206+
207+
!!! info "À noter que..."
208+
À noter que la valeur `client_max_body_size` représente la taille max des fichiers qui transiteront par nginx. Ne pas hésiter à mettre une valeur plus grande, si besoin.
209+
210+
!!! info "À noter que...²"
211+
À noter que cette conf redirige toutes les requêtes en HTTP plain vers le HTTPS. On s'assure ainsi que les communications avec le serveur NextCloud sont chiffrées.
212+
213+
- On créé [un lien sympbolique](https://fr.wikipedia.org/wiki/Lien_symbolique) vers le répertoire `/etc/nginx/sites-enabled` :
214+
215+
```sh
216+
sudo ln -s /etc/nginx/sites-available/nextcloud.conf /etc/nginx/sites-enabled/nextcloud.conf
217+
```
218+
219+
- On vérifie que le nginx est correctement configuré :
220+
221+
```sh
222+
sudo nginx -t
223+
```
224+
225+
S'il y a des erreurs, on avise, on corrige. Il est possible qu'un fichier `default.conf` - [1 crocodile, 2 crocodiles, 3 crocodiles](https://youtu.be/QUK2CMG1KqA?si=Zk0drT1AxbwMMvg9&t=94) - soit déjà là, si ce dernier n'a pas d'utilité, on peut le supprimer.
226+
227+
### Récupération des certificats
228+
229+
Maintenant, pour naviguer et synchroniser avec le NextCloud en utilisant du HTTPS, il nous faut des certificats TLS/SSL.
230+
231+
Pour cela, on utilise [Let's Encrypt](https://letsencrypt.org/), qui nous fournit ça gracieusement, et plus particulièrement [l'utilitaire `certbot` en mode _standalone_](https://certbot.eff.org/), ce qui nécessite d'éteindre nginx en amont.
232+
233+
- Arrêter le service nginx :
234+
235+
```sh
236+
sudo systemctl stop nginx
237+
```
238+
239+
- Récupérer un certificat pour notre domaine - le DNS doit être configuré correctement et pointer sur notre machine hôte :
240+
241+
```sh
242+
sudo certbot certonly --standalone -d cloud.lageowcestshow.xyz
243+
```
244+
245+
Si tout va bien, tant mieux : vous verrez un message de confirmation dans le terminal.
246+
247+
- On vérifie que nginx est correctement configuré, notamment concernant la configuration des chemins des certificats récupérés à l'étape précédente :
248+
249+
```sh
250+
sudo nginx -t
251+
```
252+
253+
Si tout est ok, on rallume le service nginx :
254+
255+
```sh
256+
sudo systemctrl start nginx
257+
```
258+
259+
Et voilà ! Nous avons maintenant un NextCloud fonctionnel :clap: !
260+
261+
![DiCaprio qui porte un toast avec une coupe de champagne](https://cdn.geotribu.fr/img/articles-blog-rdp/articles/2026/mise_en_place_nextcloud_autoheberge/dicaprio_toast_champagne.webp){: .img-center loading=lazy }
262+
263+
Vous pouvez vous rendre, dans votre navigateur web, sur l'URL de votre domaine pour la finalisation dans l'interface graphique - `cloud.lageowcestshow.xyz` dans notre cas.
264+
265+
![Écran d'accueil lors de la finalisation après la création d'un compte NextCloud](https://cdn.geotribu.fr/img/articles-blog-rdp/articles/2026/mise_en_place_nextcloud_autoheberge/nextcloud_init_welcome_apps.webp){: .img-center loading=lazy }
266+
267+
<!-- Footnotes reference -->
268+
[^1]: _chépe_: format de données géo [_ancient_](https://dictionary.cambridge.org/dictionary/english/ancient), enterré au géocimetière ?
269+
270+
<!-- geotribu:authors-block -->
271+
272+
{% include "licenses/beerware.md" %}

0 commit comments

Comments
 (0)