diff --git a/nextcloud/.env b/nextcloud/.env index 8cd5d60..15a8d09 100644 --- a/nextcloud/.env +++ b/nextcloud/.env @@ -4,7 +4,7 @@ #DOCKER_CONTEXT= #DOCKER_HOST= SERVICES_DIR=.. -COMPOSE_FILE=${SERVICES_DIR}/nextcloud/docker-compose.yml:${SERVICES_DIR}/nextcloud/docker-compose.local.yml:${SERVICES_DIR}/postgres/docker-compose.yml:${SERVICES_DIR}/redis/docker-compose.yml +COMPOSE_FILE=${SERVICES_DIR}/nextcloud/docker-compose.yml:${SERVICES_DIR}/nextcloud/docker-compose.config.yml:${SERVICES_DIR}/nextcloud/docker-compose.local.yml:${SERVICES_DIR}/postgres/docker-compose.yml:${SERVICES_DIR}/redis/docker-compose.yml #COMPOSE_PROJECT_NAME= ## APP diff --git a/nextcloud/README.md b/nextcloud/README.md index 2f04a15..0aca8d8 100644 --- a/nextcloud/README.md +++ b/nextcloud/README.md @@ -14,45 +14,78 @@ On peut trouver [la documentation ici][documentation] en anglais ou ici pour la ## Aide -Exemple de commande : +Commande pour se connecter à un serveur : ```sh -docker exec --user www-data -it nextcloud bash +. .env +docker exec --user www-data -it ${NEXTCLOUD_CONTAINER_NAME}-fpm ash +``` -docker-compose exec --user www-data nextcloud php occ db:add-missing-primary-keys +Pour mettre un site en maintenance : + +```sh +. .env +docker exec --user www-data -it ${NEXTCLOUD_CONTAINER_NAME}-fpm php occ maintenance:mode --on ``` ## Configuration -Il est possible de configurer certaines parties avec des variables d'environnement, mais ce n'est pas le cas de l'ensemble de la configuration. +Il est possible de configurer certaines parties avec des variables d'environnement : +- Soit les variables sont spécifique à l'image Docker +- soit avec des variables du type `NC_` + clé (exemple : NC_default_phone_region=FR) -Voici les modifications que j'effectue : +### Création d'un groupe ``` -docker-compose exec --user www-data nextcloud-fpm ash -vi config/config.php -``` -Ajout de la configuration suivante : -``` - 'default_language' => 'fr', - 'default_locale' => 'fr_FR', - 'default_phone_region' => 'FR', - 'defaultapp' => 'files', - 'preview_max_x' => 2048, - 'preview_max_y' => 2048, - 'jpeg_quality' => 60, +export NC_GROUP=com-en-aubrac +php occ group:add $NC_GROUP ``` -Ajout de imagemagick : -``` -docker-compose exec nextcloud-fpm apk add --no-cache imagemagick -``` - -ou +### Création d'un utilisateur ``` -ssh -docker exec nextcloud-fpm apk add --no-cache imagemagick +# La variable OC_PASS est spécifique pour l'utilisation de --password-from-env +export OC_PASS=unmotdepasse! + +export NC_USER=simon +export NC_NAME=Simon +export NC_MAIL=simon@example.org +export NC_QUOTA="180 GB" + +php occ user:add --password-from-env --display-name=$NC_NAME --group="$NC_GROUP" $NC_USER +php occ user:setting $NC_USER settings email $NC_MAIL +``` + +### Quota + +Pour bien comprendre les quotas dans Nextcloud : https://docs.nextcloud.com/server/latest/user_manual/en/files/quota.html + +``` +export NC_USER=simon +export NC_QUOTA="10 GB" +php occ user:setting $NC_USER files quota "$NC_QUOTA" +``` + +### imagemagick + +> Le module php-imagick n’a aucun support SVG dans cette instance. Pour une meilleure compatibilité, il est recommandé de l’installer. + +Pour résoudre ce problème il faut ajouter le paquet `imagemagick` + +``` +. .env +docker exec -it ${NEXTCLOUD_CONTAINER_NAME}-fpm apk add --no-cache imagemagick +``` + +## Application + +Suppression d'application : + +``` +php occ app:disable dashboard +php occ app:disable photos +php occ app:disable weather_status +php occ app:disable user_status ``` ## PHP-FPM: remédier à server reached pm.max_children diff --git a/nextcloud/docker-compose.config.yml b/nextcloud/docker-compose.config.yml new file mode 100644 index 0000000..f7491ce --- /dev/null +++ b/nextcloud/docker-compose.config.yml @@ -0,0 +1,21 @@ +--- +version: "3.8" + +services: + nextcloud-fpm: + environment: + &nextcloud-configuration + NC_trashbin_retention_obligation: ${NC_trashbin_retention_obligation:-auto, 30} + NC_force_language: ${NC_force_language:-fr} + NC_default_locale: ${NC_default_locale:-fr_FR} + NC_force_locale: ${NC_force_locale:-fr_FR} + NC_default_language: ${NC_default_language:-fr} + NC_default_phone_region: ${NC_default_phone_region:-FR} + NC_defaultapp: ${NC_defaultapp:-files} + NC_preview_max_x: ${NC_preview_max_x:-2048} + NC_preview_max_y: ${NC_preview_max_y:-2048} + NC_jpeg_quality: ${NC_jpeg_quality:-60} + + nextcloud-cron: + environment: + <<: *nextcloud-configuration diff --git a/nextcloud/docker-compose.smtp.yml b/nextcloud/docker-compose.smtp.yml index b8a880f..60136d8 100644 --- a/nextcloud/docker-compose.smtp.yml +++ b/nextcloud/docker-compose.smtp.yml @@ -3,11 +3,16 @@ version: "3.8" services: nextcloud-fpm: environment: - SMTP_HOST: ${SMTP_HOST?err} # The hostname of the SMTP server. - SMTP_SECURE: ${SMTP_SECURE:-ssl} # Set to ssl to use SSL, or tls to use STARTTLS. - SMTP_PORT: ${SMTP_PORT:-465} - SMTP_AUTHTYPE: ${SMTP_AUTHTYPE:-LOGIN} - SMTP_NAME: ${SMTP_NAME?err} - SMTP_PASSWORD: ${SMTP_PASSWORD?err} - MAIL_FROM_ADDRESS: ${MAIL_FROM_ADDRESS} - MAIL_DOMAIN: ${MAIL_DOMAIN} + &smtp-configuration + NC_mail_smtphost: ${NC_mail_smtphost:?err} # The hostname of the SMTP server. + NC_mail_smtpsecure: ${NC_mail_smtpsecure:-ssl} # Set to ssl to use SSL, or tls to use STARTTLS. + NC_mail_smtpport: ${NC_mail_smtpport:-465} + NC_mail_smtpauthtype: ${NC_mail_smtpauthtype:-LOGIN} + NC_mail_smtpname: ${NC_mail_smtpname:?err} + NC_mail_smtppassword: ${NC_mail_smtppassword:?err} + NC_mail_from_address: ${NC_mail_from_address:?err} + NC_mail_domain: ${NC_mail_domain:?err} + + nextcloud-cron: + environment: + <<: *smtp-configuration diff --git a/nextcloud/docker-compose.yml b/nextcloud/docker-compose.yml index 909e536..351eb38 100644 --- a/nextcloud/docker-compose.yml +++ b/nextcloud/docker-compose.yml @@ -7,7 +7,7 @@ volumes: services: nextcloud-fpm: container_name: ${NEXTCLOUD_CONTAINER_NAME:-nextcloud}-fpm - image: ${NEXTCLOUD_IMAGE:-nextcloud:23.0.3-fpm-alpine} + image: ${NEXTCLOUD_IMAGE:-nextcloud:25.0.2-fpm-alpine} restart: always depends_on: - postgres @@ -17,6 +17,7 @@ services: - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro environment: + &fpm-configuration NEXTCLOUD_TRUSTED_DOMAINS: ${NEXTCLOUD_TRUSTED_DOMAINS?err} NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER?err} NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD?err} @@ -32,7 +33,7 @@ services: nextcloud-web: container_name: ${NEXTCLOUD_CONTAINER_NAME:-nextcloud}-web - build: web + build: ${SERVICES_DIR}/nextcloud/web restart: always environment: NEXTCLOUD_FPM_CONTAINER_NAME: ${NEXTCLOUD_CONTAINER_NAME:-nextcloud}-fpm @@ -46,15 +47,14 @@ services: - /etc/localtime:/etc/localtime:ro nextcloud-cron: - image: ${NEXTCLOUD_IMAGE:-nextcloud:22.2.3-fpm-alpine} + image: ${NEXTCLOUD_IMAGE:-nextcloud:25.0.2-fpm-alpine} container_name: ${NEXTCLOUD_CONTAINER_NAME:-nextcloud}-cron restart: always depends_on: - nextcloud-web entrypoint: /cron.sh environment: - PUID: ${NEXTCLOUD_PUID:-1000} - PGID: ${NEXTCLOUD_PGID:-1000} + <<: *fpm-configuration volumes: - nextcloud:/var/www/html - /etc/timezone:/etc/timezone:ro diff --git a/nextcloud/run b/nextcloud/run deleted file mode 100755 index a98ccba..0000000 --- a/nextcloud/run +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -set -eu - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -. $DIR/../help.sh -. $DIR/../postgres/run --only-source - -nextcloud_help() { - echo "./run backup : Lancement de la sauvegarde de Nextcloud" - echo "./run restore : Restauration de la sauvegarde de Nextcloud" -} - -nextcloud_backup() { - script_env - BACKUP_DATE_DEFAULT=`date +%Y%m%d_%H%M%S` - BACKUP_DATE=${BACKUP_DATE:-$BACKUP_DATE_DEFAULT} - backup_folder_create - - POSTGRES_BACKUP_FILE=backups/${BACKUP_DATE}_${NEXTCLOUD_DOMAIN}_postgres.sql - docker-compose exec --user www-data nextcloud php occ maintenance:mode --on - postgres_backup - - docker run -it --rm -v $HOME/backups/${NEXTCLOUD_DOMAIN}:/backup --volumes-from nextcloud alpine:3.12.3 ash -c "cd /var/www/html && tar cvf /backup/${BACKUP_DATE}_${NEXTCLOUD_DOMAIN}_files.tar ." - docker-compose exec --user www-data nextcloud php occ maintenance:mode --off -} - -nextcloud_restore() { - script_env - - postgres_restore - docker run -it --rm -v $HOME/backups/${NEXTCLOUD_DOMAIN}:/backup -v nextcloud:/var/www/html alpine:3.12.3 ash -c "cd /var/www/html && tar xvf /backup/${BACKUP_DATE}_${NEXTCLOUD_DOMAIN}_files.tar --strip 1" -} - -if [ $# -ge 1 ]; then - if [ "${1}" == "backup" ]; then - script_start - nextcloud_backup - script_end - elif [ "${1}" == "restore" ]; then - script_start - nextcloud_restore - script_end - elif [ "${1}" != "--only-source" ]; then - nextcloud_help - fi -else - nextcloud_help -fi diff --git a/nextcloud/web/Dockerfile b/nextcloud/web/Dockerfile index 2cde763..345321a 100644 --- a/nextcloud/web/Dockerfile +++ b/nextcloud/web/Dockerfile @@ -1,3 +1,3 @@ -FROM nginx:1.21.5-alpine +FROM nginx:1.23.3-alpine COPY nextcloud.conf.template /etc/nginx/templates/default.conf.template