La methode recommandée et officielle pour installer Nextcloud utilise un service d’orchestration des différents composants de nextcloud, Nextcloud All-in-One ([nc-]AIO) qui fournit une interface web pour lancer, mettre à jour ou ajouter des composants.
Nextcloud et podman#
Nextcloud ne supporte que la mise en conteneur avec docker et de préférence avec les droits root, pour utiliser podman avec un minimum de privilèges, il faut bricoler un peu (et espérer que nextcloud finira par supporter podman).
Bases de l’Installation#
Jennings Zhang a redigé un guide pour configure nc-AIO avec podman sans privilèges root; il utilise un quadlet pour une meilleure intégration à systemd en particulier pour gérer plus facilement les dépendances¹.
On crée un service utilisateur dans ~/.config/container/systemd nommé nextcloud-aio-mastercontainer.container qui décrit l’image à utiliser (docker.io/nextcloud/all-in-one:latest) et l’environment d’exécution du conteneur.
[Unit]
Description=Nextcloud AIO Master Container
Documentation=https://github.com/nextcloud/all-in-one/blob/main/docker-rootless.md
After=local-fs.target
Requires=podman.socket
[Container]
ContainerName=nextcloud-aio-mastercontainer
Image=docker.io/nextcloud/all-in-one:latest
PublishPort=11001:8080
Volume=nextcloud_aio_mastercontainer:/mnt/docker-aio-config
Volume=/run/user/1026/podman/podman.sock:/var/run/docker.sock:ro
Network=bridge
SecurityLabelDisable=true
Environment=APACHE_PORT=11000
Environment=APACHE_IP_BINDING=0.0.0.0
Environment=WATCHTOWER_DOCKER_SOCKET_PATH=/run/user/1026/podman/podman.sock
Environment=NEXTCLOUD_DATADIR=/home/frv/aio/data
[Install]
WantedBy=multi-user.target default.targetExplications
PublishPort: Le conteneur publie son port interne 8080 vers le port 11001 accessible à l’extérieur du conteneur; en ne précisant pas d’adresse IP on publie le port sur toute les adresses et en particulier les adresses accessible par d’autres machines du réseau.Environment=APACHE_IP_BINDING: On veut quenc-AIOsoit accessible de l’extérieur.Environment=NEXTCLOUD_DATADIR=/home/frv/aio/data: Les données deNextcloudsont stockées à l’extérieur du conteneur.
- AIO Reverse Proxy Documentation
- Comment (re)démarrer les conteneurs de nextcloud : https://help.nextcloud.com/t/nextcloud-aio-containers-dont-start-containers/184694/21 et la méthode officielle : https://github.com/nextcloud/all-in-one?tab=readme-ov-file#how-to-stopstartupdate-containers-or-trigger-the-daily-backup-from-a-script-externally ou encore https://help.nextcloud.com/t/nextcloud-aio-containers-dont-start-containers/184694/38.
Redis exige que l’allocation excessive de mémoire par le noyau soit autorisée ce qui se fait en créant un fichier /etc/sysctl.d/nextcloud-aio-memory-overcommit.conf contenant vm.overcommit_memory = 1 (pris en compte au redémarrage) ou par sysctl "vm.overcommit_memory=1" pour une prise en compte immédiate mais non persistante.
Les services utilisateurs sont lancés lors de l’ouverture d’une session par cet utilisateur et pas au démarrage de la machine, heureusement systemd fournit un mécanisme pour lancer les services au démarrage, la persistance (lingering) que l’on peut gérer avec loginctl. Ceci relève normalement de l’utilsateur root mais avec polkit un utilisateur peut activer la persistance de sa session : $ loginctl enable-linger configure le lancement des services de l’utilisateur courant au démarrage du système.
How to resolve Security & setup warnings displays the “missing default phone region” after initial install?
Simply run the following command: sudo docker exec –user www-data nextcloud-aio-nextcloud php occ config:system:set default_phone_region –value=“yourvalue”. Of course you need to modify yourvalue based on your location. Examples are DE, US and GB. See this list for more codes: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements Please note: If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management