243 lines
7.4 KiB
Markdown
243 lines
7.4 KiB
Markdown
---
|
|
title: Nextcloud
|
|
description: 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](https://nextcloud.com/) 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.
|
|
|
|

|
|
|
|
## 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 :
|
|
|
|
```yaml [compose.yaml]
|
|
---
|
|
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 :
|
|
|
|
```bash [Terminal]
|
|
id utilisateur
|
|
```
|
|
|
|
Remplissez ensuite le fichier `.env` avec le port de votre choix et les valeurs trouvées ci-dessus, par exemple :
|
|
|
|
```properties [.env]
|
|
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](/general/networking/dns). Et à moins d'utiliser [Cloudflare Zero Trust](/serveex/security/cloudflare), le port `443` de votre box doit être redirigé vers le port `443` de votre serveur via les [règles NAT](/general/networking/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 :
|
|
|
|
```yaml [compose.yaml]
|
|
---
|
|
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.
|
|
::
|
|
|
|
```bash [Terminal]
|
|
sudo nano /srv/docker/nextcloud/config/www/nextcloud/config/config.php
|
|
```
|
|
|
|
Collez ce qui suit avant le `);` final :
|
|
|
|
```php [config.php]
|
|
'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 :
|
|
|
|
```php [config.php]
|
|
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` :
|
|
|
|
```bash [Terminal]
|
|
sudo nano /srv/docker/swag/config/nginx/proxy-confs/nextcloud.subdomain.conf
|
|
```
|
|
|
|
Collez ce qui suit :
|
|
|
|
```nginx [nextcloud.subdomain.conf]
|
|
## 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](https://nextcloud.com/install/).
|
|
|
|
## 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](/serveex/security/pocket-id#registering-an-oidc-client) nommé `Nextcloud`, avec cette URL de callback :
|
|
|
|
```text
|
|
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.
|
|
::
|