Nextcloud (drive) ¶
Pour avoir une alternative à Google Drive, Google Agenda, Google Contacts, et plein d'autres plugins possibles, avec une appli desktop et mobile.
Tuto suivi : https://pimylifeup.com/nextcloud-docker/
Commandes à exécuter :
sudo mkdir -p /opt/stacks/nextcloud
cd /opt/stacks/nextcloud
sudo nano compose.yaml
sudo nano .env
sudo ufw allow 8080 comment nextcloud
docker compose up -d
Dans le cas où Nextcloud est derrière un reverse-proxy et accessible avec un nom de domaine, comme chez moi, il faut apporter des ajustements supplémentaires dans le conteneur
sudo docker exec -it nextcloud sh
apt update && apt install nano
nano /var/www/html/config/config.php
Ajouter les trusted domaines, et la surcharge du domaine et du https obligatoire :
'trusted_domains' =>
array (
0 => 'nextcloud.googlesaitouesttamere.com',
1 => '192.168.0.43',
2 => 'localhost',
),
'overwrite.cli.url' => 'https://nextcloud.googlesaitouesttamere.com',
'overwriteprotocol' => 'https',
L'ajout de la surcharge permet d'éviter l'erreur the polling url does not start with HTTPS whereas the connexion URL starts with HTTPS
. Plus d'infos : https://help.nextcloud.com/t/the-polling-url-does-not-start-with-https-despite-the-login-url-started-with-https/137576
Mon fichier compose.yaml
services:
db:
image: mariadb:lts
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MARIADB_RANDOM_ROOT_PASSWORD=yes
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
redis:
image: redis:alpine
restart: always
app:
image: nextcloud:apache
container_name: nextcloud
restart: always
volumes:
- /opt/stacks/nextcloud/docker:/var/www/html/data
- nextcloud:/var/www/html
environment:
- VIRTUAL_HOST=${DOMAIN_NAME}
- LETSENCRYPT_HOST=${DOMAIN_NAME}
- LETSENCRYPT_EMAIL=${LETS_ENCRYPT_EMAIL}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
- REDIS_HOST=redis
- NEXTCLOUD_TRUSTED_DOMAINS=localhost
- NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.googlesaitouesttamere.com
- NEXTCLOUD_TRUSTED_DOMAINS=192.168.0.43
- PHP_UPLOAD_LIMIT=16G
ports:
- 8080:80
depends_on:
- db
- redis
cron:
image: nextcloud:apache
restart: always
volumes:
- nextcloud:/var/www/html:z
entrypoint: /cron.sh
depends_on:
- db
- redis
volumes:
nextcloud:
html:
db:
Mon fichier .env :
MYSQL_PASSWORD=motdepasse
STORAGE_LOCATION=/opt/stacks/nextcloud/docker
DOMAIN_NAME=nextcloud.googlesaitouesttamere.com
LETS_ENCRYPT_EMAIL=eeolp@posteo.net
Pour mettre à jour nextcloud : https://github.com/nextcloud/docker#update-to-a-newer-version
Points d'attention / erreurs rencontrées : ¶
- Si plusieurs réinstallations via docker, penser à supprimer les volumes si leur chemin a changé, avec la commande :
sudo docker volume rm [nom]
- Si on n'a pas ajouté les trusted domain à la création on peut être bloqué lors de l'accès, il faut le faire en bash directement dans le conteneur.
- rappel de la commande pour accéder au conteneur :
docker exec -it <mycontainer> sh
- s'il n'y a pas nano dans le conteneur, on l'ajoute :
apt update && apt install nano
- faire la modif dans le fichier de config :
nano /var/www/html/config/config.php
- plus d'infos : https://help.nextcloud.com/t/howto-add-a-new-trusted-domain/26
- rappel de la commande pour accéder au conteneur :
- Pour ajouter la double-authentification (2FA), il faut :
- activer l'appli (désactivée par défaut) : dans l'interface > Apps > Disabled apps > enable Two-Factor TOTP Provider
- l'activer dans son compte : Personal settings > Security, cocher Enable TOTP
- plus d'infos : https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/two_factor-auth.html et https://github.com/nextcloud/twofactor_totp#readme
- Si besoin de créer une mot de passe d'application (pour une application ne supportant pas la double-authentification), aller dans l'interface > Settings > Security > Devices & sessions > Create new app password