From 1961184f93a703a1fea169f08d2481b0c8f15614 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Sun, 29 Oct 2023 21:56:57 +0100 Subject: [PATCH 01/17] Fixes container restart policy --- templates/docker-compose.nextcloud.yml.j2 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/docker-compose.nextcloud.yml.j2 b/templates/docker-compose.nextcloud.yml.j2 index 156b020..4626bdc 100644 --- a/templates/docker-compose.nextcloud.yml.j2 +++ b/templates/docker-compose.nextcloud.yml.j2 @@ -22,6 +22,7 @@ services: nextcloud-app: image: nextcloud:27-fpm-alpine + restart: unless-stopped container_name: nextcloud-app depends_on: - mysqldb @@ -42,7 +43,7 @@ services: web: image: nginx - restart: always + restart: unless-stopped depends_on: - nextcloud-app volumes: From 51636d95380b26e5f6f1a9bb6e8ed1304abfe9f0 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Sun, 10 Dec 2023 10:35:30 +0100 Subject: [PATCH 02/17] Various Nginx improvements --- files/nginx.conf | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/files/nginx.conf b/files/nginx.conf index 0f134fa..96f6873 100644 --- a/files/nginx.conf +++ b/files/nginx.conf @@ -20,7 +20,17 @@ http { access_log /var/log/nginx/access.log main; sendfile on; - #tcp_nopush on; + send_timeout 3600; + tcp_nopush on; + tcp_nodelay on; + + open_file_cache max=500 inactive=10m; + open_file_cache_errors on; + reset_timedout_connection on; + + set_real_ip_from revproxy; + real_ip_header X-Forwarded-For; + real_ip_recursive on; # Prevent nginx HTTP Server Detection server_tokens off; @@ -46,7 +56,21 @@ http { # set max upload size client_max_body_size 512M; - fastcgi_buffers 64 4K; + + # Do not limit download file size (default: 1G) + fastcgi_max_temp_file_size 0; + + #fastcgi_buffers 64 4K; + fastcgi_buffers 64 64K; + fastcgi_buffer_size 256k; + fastcgi_busy_buffers_size 3840K; + fastcgi_read_timeout 3600; + fastcgi_send_timeout 3600; + fastcgi_connect_timeout 3600; + fastcgi_cache_key $http_cookie$request_method$host$request_uri; + fastcgi_cache_use_stale error timeout invalid_header http_500; + fastcgi_ignore_headers Cache-Control Expires Set-Cookie; + # Enable gzip but do not remove ETag headers gzip on; @@ -55,6 +79,7 @@ http { gzip_min_length 256; gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; + gzip_disable "MSIE [1-6]\." # Pagespeed is not supported by Nextcloud, so if your server is built # with the `ngx_pagespeed` module, uncomment this line to disable it. @@ -142,6 +167,11 @@ http { fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice fastcgi_param front_controller_active true; # Enable pretty urls + + fastcgi_cache_valid 404 1m; + fastcgi_cache_valid any 1h; + fastcgi_cache_methods GET HEAD; + fastcgi_pass php-handler; fastcgi_intercept_errors on; From 7513615b6fce48edde6513ac4a0ef638d716c60a Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Sun, 10 Dec 2023 10:41:26 +0100 Subject: [PATCH 03/17] Switching from geerlingguy.docker to community.docker --- README.md | 2 ++ meta/main.yml | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c17ee1c..253fc46 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ TODO Dependencies ------------ +- Collection: community.docker + Example Playbook ---------------- diff --git a/meta/main.yml b/meta/main.yml index a52e2b3..9461006 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -49,7 +49,6 @@ galaxy_info: dependencies: - geerlingguy.pip - - geerlingguy.docker # List your role dependencies here, one per line. Be sure to remove the '[]' above, # if you add dependencies to this list. \ No newline at end of file From edf24dd5a6043578bb8a66663332f6cf4dc726b5 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Sun, 10 Dec 2023 11:34:42 +0100 Subject: [PATCH 04/17] Adds task to install a list of Nextcloud apps --- defaults/main.yml | 1 + tasks/main.yml | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/defaults/main.yml b/defaults/main.yml index a708a3c..9dbe9b1 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -24,6 +24,7 @@ nextcloud_overwrite_cli_url: nextcloud_overwrite_host: nextcloud_overwrite_protocol: nextcloud_enable_restic_compose_backup: False +nextcloud_app_list_to_install: [] restic_aws_access_key_id: restic_aws_secret_access_key: restic_repository: diff --git a/tasks/main.yml b/tasks/main.yml index 572fe16..97754f4 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -151,6 +151,19 @@ chdir: /home/{{ docker_user }}/nextcloud/ cmd: "docker-compose exec --user root nextcloud-app /bin/sh -c 'chown -R www-data: /var/www/html'" +- name: "docker-compose: Install Nextcloud apps (will not fail)" + shell: + chdir: /home/{{ docker_user }}/nextcloud/ + cmd: docker-compose exec -u www-data nextcloud-app /bin/sh -c './occ app:install "{{ item }}"' + loop: "{{ nextcloud_app_list_to_install }}" + when: nextcloud_app_list_to_install | count + failed_when: false + register: nextcloud_app_install_result + +- name: "Output app install result" + debug: + var: "{{ nextcloud_app_install_result }}" + - name: "Test whether Nextcloud is healthy from the outside" when: not ansible_check_mode become: false From 365e166cbf381d13397fe5666b47e2a793b7e1e5 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Sat, 14 Sep 2024 10:03:27 +0200 Subject: [PATCH 05/17] Provides Nextcloud Hub 8 (Nextcloud 29) --- files/nginx.conf | 4 ++++ templates/docker-compose.nextcloud.yml.j2 | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/files/nginx.conf b/files/nginx.conf index 96f6873..31a5023 100644 --- a/files/nginx.conf +++ b/files/nginx.conf @@ -11,6 +11,10 @@ events { http { include /etc/nginx/mime.types; + types { + application/javascript js mjs; + } + default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' diff --git a/templates/docker-compose.nextcloud.yml.j2 b/templates/docker-compose.nextcloud.yml.j2 index 4626bdc..8b7f730 100644 --- a/templates/docker-compose.nextcloud.yml.j2 +++ b/templates/docker-compose.nextcloud.yml.j2 @@ -21,7 +21,7 @@ services: restart: unless-stopped nextcloud-app: - image: nextcloud:27-fpm-alpine + image: nextcloud:29-fpm-alpine restart: unless-stopped container_name: nextcloud-app depends_on: @@ -71,6 +71,7 @@ services: - "traefik.http.middlewares.nextcloud-headers.headers.STSIncludeSubdomains=true" - "traefik.http.middlewares.nextcloud-headers.headers.STSPreload=true" - "traefik.http.middlewares.nextcloud-headers.headers.featurePolicy=payment 'none'" + - "traefik.http.middlewares.nextcloud-headers.headers.referrerPolicy=no-referrer" - "traefik.http.middlewares.nextcloud.headers.customFrameOptionsValue=SAMEORIGIN" #- "traefik.http.middlewares.nextcloud-headers.headers.contentSecurityPolicy=default-src 'self'; img-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; font-src 'self'; object-src 'none'; base-uri 'none'; frame-ancestors 'none'; form-action 'none'; block-all-mixed-content" - "traefik.http.routers.nextcloud.middlewares=nextcloud-rep,nextcloud-headers" From 08fb8594794f0a493fa9dc8e895652859b097406 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Sat, 14 Sep 2024 10:39:34 +0200 Subject: [PATCH 06/17] Adds support to provision trusted_proxies --- defaults/main.yml | 1 + tasks/main.yml | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/defaults/main.yml b/defaults/main.yml index 9dbe9b1..fe3716d 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -8,6 +8,7 @@ nextcloud_mariadb_password: nextcloud nextcloud_admin_user: admin nextcloud_admin_password: mynextcloud nextcloud_trusted_domains: localhost +nextcloud_trusted_proxies: [ '172.18.0.0/16' ] virtual_host: localhost letsencrypt_host: letsencrypt_email: diff --git a/tasks/main.yml b/tasks/main.yml index 97754f4..5644ca4 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -134,27 +134,35 @@ - name: "docker-compose: Set overwriteprotocol using occ" shell: chdir: /home/{{ docker_user }}/nextcloud/ - cmd: docker-compose exec -u www-data nextcloud-app /bin/sh -c './occ config:system:set overwriteprotocol --value="{{ nextcloud_overwrite_protocol }}"' + cmd: docker-compose exec -T -u www-data nextcloud-app ./occ config:system:set overwriteprotocol --value="{{ nextcloud_overwrite_protocol }}" - name: "docker-compose: Set overwrite.cli.url using occ" shell: chdir: /home/{{ docker_user }}/nextcloud/ - cmd: docker-compose exec -u www-data nextcloud-app /bin/sh -c './occ config:system:set overwrite.cli.url --value="{{ nextcloud_overwrite_cli_url }}"' + cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ config:system:set overwrite.cli.url --value="{{ nextcloud_overwrite_cli_url }}"' - name: "docker-compose: Set overwritehost using occ" shell: chdir: /home/{{ docker_user }}/nextcloud/ - cmd: docker-compose exec -u www-data nextcloud-app /bin/sh -c './occ config:system:set overwritehost --value="{{ nextcloud_overwrite_host }}"' + cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ config:system:set overwritehost --value="{{ nextcloud_overwrite_host }}"' + +- name: "docker-compose: Set trusted_proxies using occ" + shell: + chdir: /home/{{ docker_user }}/nextcloud/ + cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ config:system:set trusted_proxies {{ idx }} --value="{{ item }}"' + loop: "{{ nextcloud_trusted_proxies }}" + loop_control: + index_var: idx - name: "docker-compose: Fix ownership of /var/www/html" shell: chdir: /home/{{ docker_user }}/nextcloud/ - cmd: "docker-compose exec --user root nextcloud-app /bin/sh -c 'chown -R www-data: /var/www/html'" + cmd: "docker-compose exec -T --user root nextcloud-app /bin/sh -c 'chown -R www-data: /var/www/html'" - name: "docker-compose: Install Nextcloud apps (will not fail)" shell: chdir: /home/{{ docker_user }}/nextcloud/ - cmd: docker-compose exec -u www-data nextcloud-app /bin/sh -c './occ app:install "{{ item }}"' + cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ app:install "{{ item }}"' loop: "{{ nextcloud_app_list_to_install }}" when: nextcloud_app_list_to_install | count failed_when: false From 0be8dd75b4b9b09161943b3edde86e70b867a703 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Sat, 14 Sep 2024 10:47:28 +0200 Subject: [PATCH 07/17] Restores a /bin/sh wrapper --- tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/main.yml b/tasks/main.yml index 5644ca4..93780d2 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -134,7 +134,7 @@ - name: "docker-compose: Set overwriteprotocol using occ" shell: chdir: /home/{{ docker_user }}/nextcloud/ - cmd: docker-compose exec -T -u www-data nextcloud-app ./occ config:system:set overwriteprotocol --value="{{ nextcloud_overwrite_protocol }}" + cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ config:system:set overwriteprotocol --value="{{ nextcloud_overwrite_protocol }}"' - name: "docker-compose: Set overwrite.cli.url using occ" shell: From 11fe863b6dd78469d0293a0470e976e7e59c2446 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Fri, 18 Apr 2025 14:56:02 +0200 Subject: [PATCH 08/17] Updates Nextcloud image to 31 --- templates/docker-compose.nextcloud.yml.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/docker-compose.nextcloud.yml.j2 b/templates/docker-compose.nextcloud.yml.j2 index 8b7f730..d0b7553 100644 --- a/templates/docker-compose.nextcloud.yml.j2 +++ b/templates/docker-compose.nextcloud.yml.j2 @@ -21,7 +21,7 @@ services: restart: unless-stopped nextcloud-app: - image: nextcloud:29-fpm-alpine + image: nextcloud:31-fpm-alpine restart: unless-stopped container_name: nextcloud-app depends_on: From 93ed612a65f1b38fe9c05d36b493b02efb555029 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Fri, 18 Apr 2025 21:11:32 +0200 Subject: [PATCH 09/17] Explicitly handles maintenance mode around instance setup; Provides and runs database utils scripts --- defaults/main.yml | 2 + ...xtcloud-mysql-innodb-convert-row-format.sh | 16 ++++++++ tasks/main.yml | 38 +++++++++++++++++++ templates/docker-compose.nextcloud.yml.j2 | 1 + 4 files changed, 57 insertions(+) create mode 100755 files/nextcloud-mysql-innodb-convert-row-format.sh diff --git a/defaults/main.yml b/defaults/main.yml index fe3716d..889c32e 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -9,6 +9,8 @@ nextcloud_admin_user: admin nextcloud_admin_password: mynextcloud nextcloud_trusted_domains: localhost nextcloud_trusted_proxies: [ '172.18.0.0/16' ] +nextcloud_database_utils: + - nextcloud-mysql-innodb-convert-row-format.sh virtual_host: localhost letsencrypt_host: letsencrypt_email: diff --git a/files/nextcloud-mysql-innodb-convert-row-format.sh b/files/nextcloud-mysql-innodb-convert-row-format.sh new file mode 100755 index 0000000..e6360c4 --- /dev/null +++ b/files/nextcloud-mysql-innodb-convert-row-format.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +# Source: https://help.nextcloud.com/t/upgrade-to-nextcloud-hub-10-31-0-0-incorrect-row-format-found-in-your-database/218366/13 + +# # Prompt for database credentials +# read -p "Enter Database Name: " MYSQL_DATABASE +# read -p "Enter Username: " MYSQL_USER +# read -s -p "Enter Password: " MYSQL_PASSWORD +# echo + +mysql -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" -Bse " +SELECT CONCAT('ALTER TABLE \`', TABLE_NAME, '\` ROW_FORMAT=DYNAMIC;') +FROM INFORMATION_SCHEMA.TABLES +WHERE TABLE_SCHEMA = '$MYSQL_DATABASE' +AND ENGINE = 'InnoDB' +" | mysql -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" \ No newline at end of file diff --git a/tasks/main.yml b/tasks/main.yml index 93780d2..402aaa6 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -15,6 +15,25 @@ group: "{{ docker_user }}" mode: '0644' +- name: Ensure database utils scripts directory exists + file: + path: /home/{{ docker_user }}/nextcloud/utils + state: directory + owner: '{{ docker_user }}' + group: '{{ docker_user }}' + +- name: Provide database utils scripts + copy: + src: "{{ item }}" + dest: /home/{{ docker_user }}/nextcloud/utils/ + owner: "{{ docker_user }}" + group: "{{ docker_user }}" + mode: '0644' + loop: "{{ nextcloud_database_utils }}" + when: + - nextcloud_database_utils is defined + - nextcloud_database_utils | length > 0 + - name: Provide docker-compose.yml template: src: templates/docker-compose.nextcloud.yml.j2 @@ -131,6 +150,11 @@ host: "{{ nextcloud_ip }}" port: 80 +- name: "docker-compose: Enable maintenance mode using occ" + shell: + chdir: /home/{{ docker_user }}/nextcloud/ + cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ maintenance:mode --on' + - name: "docker-compose: Set overwriteprotocol using occ" shell: chdir: /home/{{ docker_user }}/nextcloud/ @@ -172,6 +196,20 @@ debug: var: "{{ nextcloud_app_install_result }}" +- name: "docker-compose: Run database utils" + shell: + chdir: /home/{{ docker_user }}/nextcloud/ + cmd: docker-compose exec -T mysqldb /bin/sh '/opt/utils/{{ item }}' + loop: "{{ nextcloud_database_utils }}" + when: + - nextcloud_database_utils is defined + - nextcloud_database_utils | length > 0 + +- name: "docker-compose: Disable maintenance mode using occ" + shell: + chdir: /home/{{ docker_user }}/nextcloud/ + cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ maintenance:mode --off' + - name: "Test whether Nextcloud is healthy from the outside" when: not ansible_check_mode become: false diff --git a/templates/docker-compose.nextcloud.yml.j2 b/templates/docker-compose.nextcloud.yml.j2 index d0b7553..fc48522 100644 --- a/templates/docker-compose.nextcloud.yml.j2 +++ b/templates/docker-compose.nextcloud.yml.j2 @@ -12,6 +12,7 @@ services: volumes: - mysqldb:/var/lib/mysql - /etc/localtime:/etc/localtime:ro + - ./utils/:/opt/utils:ro env_file: - db.env {% if nextcloud_enable_restic_compose_backup %} From abbf7b50dc120f559cdd64d1e9b4b1789ba9d165 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Fri, 18 Apr 2025 21:12:21 +0200 Subject: [PATCH 10/17] Docker Compose should always pull --- tasks/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/tasks/main.yml b/tasks/main.yml index 402aaa6..f1e1173 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -129,6 +129,7 @@ - name: "docker-compose: Start Nextcloud service" docker_compose: project_src: "/home/{{ docker_user }}/nextcloud/" + pull: true register: output tags: service_start From 16304bd7c4921b4f10c035d69db4ed846d997295 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Fri, 18 Apr 2025 21:19:52 +0200 Subject: [PATCH 11/17] Sets default_phone_region --- defaults/main.yml | 1 + tasks/main.yml | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/defaults/main.yml b/defaults/main.yml index 889c32e..6a4693b 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -9,6 +9,7 @@ nextcloud_admin_user: admin nextcloud_admin_password: mynextcloud nextcloud_trusted_domains: localhost nextcloud_trusted_proxies: [ '172.18.0.0/16' ] +nextcloud_default_phone_region: DE nextcloud_database_utils: - nextcloud-mysql-innodb-convert-row-format.sh virtual_host: localhost diff --git a/tasks/main.yml b/tasks/main.yml index f1e1173..04fbfcb 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -197,6 +197,11 @@ debug: var: "{{ nextcloud_app_install_result }}" +- name: "docker-compose: Set default_phone_region using occ" + shell: + chdir: /home/{{ docker_user }}/nextcloud/ + cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ config:system:set default_phone_region --value="{{ nextcloud_default_phone_region }}"' + - name: "docker-compose: Run database utils" shell: chdir: /home/{{ docker_user }}/nextcloud/ From 81b86deddcd0e158aa57def9488e53fe53835b8c Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Fri, 18 Apr 2025 21:20:37 +0200 Subject: [PATCH 12/17] Maintenance activities should run at night between 01:00-05:00 UTC --- tasks/main.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tasks/main.yml b/tasks/main.yml index 04fbfcb..d92e9d0 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -202,6 +202,11 @@ chdir: /home/{{ docker_user }}/nextcloud/ cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ config:system:set default_phone_region --value="{{ nextcloud_default_phone_region }}"' +- name: "docker-compose: Set maintenance_window_start to 1 using occ (This will run maintenance tasks between 01:00-05:00 UTC)" + shell: + chdir: /home/{{ docker_user }}/nextcloud/ + cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ config:system:set maintenance_window_start --value=1 --type=integer' + - name: "docker-compose: Run database utils" shell: chdir: /home/{{ docker_user }}/nextcloud/ From a70efcf8e9e938b60d91dd99c80a0a8fafc3b426 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Fri, 18 Apr 2025 21:25:30 +0200 Subject: [PATCH 13/17] Runs maintenance:repair --include-expensive --- tasks/main.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tasks/main.yml b/tasks/main.yml index d92e9d0..3a500bd 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -207,6 +207,11 @@ chdir: /home/{{ docker_user }}/nextcloud/ cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ config:system:set maintenance_window_start --value=1 --type=integer' +- name: "docker-compose: Run maintenance:repair --include-expensive using occ" + shell: + chdir: /home/{{ docker_user }}/nextcloud/ + cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ maintenance:repair --include-expensive' + - name: "docker-compose: Run database utils" shell: chdir: /home/{{ docker_user }}/nextcloud/ From b8acfca98ea5b7209ff61d877da8d6ee473f35eb Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Fri, 18 Apr 2025 21:36:15 +0200 Subject: [PATCH 14/17] Add missing indices --- tasks/main.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tasks/main.yml b/tasks/main.yml index 3a500bd..b8493dc 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -207,6 +207,11 @@ chdir: /home/{{ docker_user }}/nextcloud/ cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ config:system:set maintenance_window_start --value=1 --type=integer' +- name: "docker-compose: Add missing indices using occ" + shell: + chdir: /home/{{ docker_user }}/nextcloud/ + cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ db:add-missing-indices' + - name: "docker-compose: Run maintenance:repair --include-expensive using occ" shell: chdir: /home/{{ docker_user }}/nextcloud/ From f36c602a0e0312b16cd70664c0268247646f7d64 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Fri, 18 Apr 2025 21:37:23 +0200 Subject: [PATCH 15/17] Update all apps --- tasks/main.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tasks/main.yml b/tasks/main.yml index b8493dc..cc5888b 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -207,6 +207,11 @@ chdir: /home/{{ docker_user }}/nextcloud/ cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ config:system:set maintenance_window_start --value=1 --type=integer' +- name: "docker-compose: Update all apps using occ" + shell: + chdir: /home/{{ docker_user }}/nextcloud/ + cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ app:update --all' + - name: "docker-compose: Add missing indices using occ" shell: chdir: /home/{{ docker_user }}/nextcloud/ From 23e504e481dc4d3a170944a59fcb9eefd9feaf23 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Fri, 18 Apr 2025 21:57:59 +0200 Subject: [PATCH 16/17] Always teardown the Docker Compose stack before updating it (will not delete any data) --- tasks/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasks/main.yml b/tasks/main.yml index cc5888b..850dd63 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -120,11 +120,11 @@ CRON_SCHEDULE="{{ restic_cron_schedule }}" when: nextcloud_enable_restic_compose_backup == true -- name: "docker-compose: Teardown existing Nextcloud service" +- name: "docker-compose: Teardown existing Nextcloud service (will keep your volumes)" docker_compose: project_src: "/home/{{ docker_user }}/nextcloud/" state: absent - tags: ['never', 'teardown'] + tags: ['teardown'] - name: "docker-compose: Start Nextcloud service" docker_compose: From 8f3f6dd3d52f9a706542b0a512cf252f050c6ff8 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Fri, 18 Apr 2025 22:54:35 +0200 Subject: [PATCH 17/17] Adds tasks to gather and run open background jobs on demand (run with `--tags run_background_jobs`) --- tasks/main.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tasks/main.yml b/tasks/main.yml index 850dd63..2fc162d 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -231,6 +231,30 @@ - nextcloud_database_utils is defined - nextcloud_database_utils | length > 0 +- name: Run background jobs + tags: ['never', 'run_background_jobs'] + block: + - name: Get list of background jobs + shell: + chdir: /home/{{ docker_user }}/nextcloud/ + cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ background-job:list --output=json' + register: background_jobs + + - name: Output background jobs + debug: + msg: "{{ background_jobs.stdout }}" + + - name: Run background jobs + shell: + chdir: /home/{{ docker_user }}/nextcloud/ + cmd: docker-compose exec -T -u www-data nextcloud-app /bin/sh -c './occ background-job:execute --force-execute {{ item.id }}' + loop: "{{ background_jobs.stdout }}" + register: background_jobs_execution_result + + - name: Output background jobs execution result + debug: + msg: "{{ background_jobs_execution_result }}" + - name: "docker-compose: Disable maintenance mode using occ" shell: chdir: /home/{{ docker_user }}/nextcloud/