diff --git a/roles/nextcloud/tasks/F18.yml b/roles/nextcloud/tasks/F18.yml.unused similarity index 100% rename from roles/nextcloud/tasks/F18.yml rename to roles/nextcloud/tasks/F18.yml.unused diff --git a/roles/nextcloud/tasks/apache.yml b/roles/nextcloud/tasks/apache.yml.unused similarity index 100% rename from roles/nextcloud/tasks/apache.yml rename to roles/nextcloud/tasks/apache.yml.unused diff --git a/roles/nextcloud/tasks/install.yml b/roles/nextcloud/tasks/install.yml index 1470f10d4..7b2f4266d 100644 --- a/roles/nextcloud/tasks/install.yml +++ b/roles/nextcloud/tasks/install.yml @@ -41,10 +41,9 @@ # February 2020: See @m-anish's PR #2119 and follow-up PR #2258. -# 2021-04-11: If you're running Nextcloud 21+ in production, carefully check the latest required AND recommended prereqs: +# 2021-07-06: If you're running Nextcloud 22+ in production, carefully check the latest required AND recommended prereqs: +# https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation # https://docs.nextcloud.com/server/21/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation -# 2021-06-27: Use this after Nextcloud 22 is released "2021-07-06" : -# https://docs.nextcloud.com/server/22/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation - name: Install ffmpeg + libxml2 + 11 PHP packages (run 'php -m' or 'php -i' to verify) package: name: @@ -56,7 +55,8 @@ - php{{ php_version }}-bz2 # OPTIONAL (for extraction of apps) #- php{{ php_version }}-common # Auto-installed as an apt dependency. REGARDLESS: php{{ php_version }}-common superset php{{ php_version }}-cli is auto-installed by php{{ php_version }}-fpm in nginx/tasks/install.yml - php{{ php_version }}-curl # Likewise installed in moodle/tasks/install.yml, pbx/tasks/freepbx_dependencies.yml, wordpress/tasks/install.yml - #- php{{ php_version }}-exif # Optional (for image rotation in pictures app) but somehow already installed in our PHP core. + #- php{{ php_version }}-exif # OPTIONAL (for image rotation in pictures app) but somehow already installed with PHP's core, as confirmed by 'php -m' + #- php{{ php_version }}-fileinfo # OPTIONAL (enhances file analysis performance) but somehow already installed with PHP's core, as confirmed by 'php -m' - php{{ php_version }}-gd # Likewise installed in moodle/tasks/install.yml, pbx/tasks/freepbx_dependencies.yml - php{{ php_version }}-gmp # OPTIONAL (for SFTP storage) - php-imagick # OPTIONAL (for preview generation). BUT drags in Apache's libapache2-mod-phpX.Y etc, as confirmed by 'apt depends php-imagick' -- while php{{ php_version }}-imagick installs (despite not being shown within 'apt list "php*imagick"') it's no better -- and 'apt depends phpX.Y-imagick' mysteriously does NOT show its deps. Likewise installed in wordpress/tasks/install.yml @@ -85,22 +85,6 @@ # state: present # when: php_version is version('8.0', '<') -# https://docs.nextcloud.com/server/18/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation -#- name: Install 9 additional php packages, if OS is not Raspbian (these are not available on Raspbian on RPi, as of Feb 2020) -# package: -# name: -# - php{{ php_version }}-ctype -# - php{{ php_version }}-dom -# - php{{ php_version }}-exif # Optional (for image rotation in pictures app) -# - php{{ php_version }}-fileinfo # Optional (enhances file analysis performance) -# - php{{ php_version }}-iconv -# - php{{ php_version }}-posix -# - php{{ php_version }}-simplexml -# - php{{ php_version }}-xmlreader -# - php{{ php_version }}-xmlwriter -# state: present -# when: not is_raspbian - - name: Create dir {{ nextcloud_root_dir }} file: @@ -121,12 +105,6 @@ - name: Provision Nextcloud's MySQL DB, run Nextcloud's install wizard, etc include_tasks: setup.yml -- name: Install /etc/{{ apache_conf_dir }}/nextcloud.conf from template, for http://box{{ nextcloud_url }} # http://box/nextcloud - template: - src: nextcloud.conf.j2 - dest: "/etc/{{ apache_conf_dir }}/nextcloud.conf" # apache2/sites-available on debuntu - when: apache_installed is defined - # RECORD Nextcloud AS INSTALLED diff --git a/roles/nextcloud/tasks/main.yml b/roles/nextcloud/tasks/main.yml index dbf65c297..83877e92e 100644 --- a/roles/nextcloud/tasks/main.yml +++ b/roles/nextcloud/tasks/main.yml @@ -24,11 +24,7 @@ when: nextcloud_installed is undefined -- name: Enable/Disable/Restart Apache if primary - include_tasks: apache.yml - when: not nginx_enabled - -- name: Enable/Disable/Restart NGINX if primary +- name: Enable/Disable/Restart NGINX include_tasks: nginx.yml when: nginx_enabled diff --git a/roles/nextcloud/tasks/setup.yml b/roles/nextcloud/tasks/setup.yml index 5619beabb..2278c7118 100644 --- a/roles/nextcloud/tasks/setup.yml +++ b/roles/nextcloud/tasks/setup.yml @@ -14,8 +14,8 @@ - localhost -# https://docs.nextcloud.com/server/18/admin_manual/installation/command_line_installation.html -- name: Create data dir {{ nextcloud_data_dir }} +# https://docs.nextcloud.com/server/latest/admin_manual/installation/command_line_installation.html +- name: Create data dir {{ nextcloud_data_dir }} ({{ apache_user }}:{{ apache_user }}) file: state: directory path: "{{ nextcloud_data_dir }}" # /library/www/nextcloud/data @@ -39,8 +39,7 @@ # insertafter: '^\$CONFIG = array \(' # line: " 'datadirectory' => '{{ nextcloud_data_dir }}'," -# 2020-02-16: SHOULD THIS STANZA GO AWAY IN FUTURE, in favor of 'nextcloud_installed is undefined' test below? -- name: Use php to determine if Nextcloud is installed (which would cause the install wizard to FAIL in the next step) +- name: "Run 'php {{ nextcloud_root_dir }}/occ status' to determine if Nextcloud is installed (causing INSTALL WIZARD TO FAIL in the next step)" shell: > php {{ nextcloud_root_dir }}/occ status | gawk '/installed:/ { print $3 }' @@ -48,10 +47,20 @@ become_user: "{{ apache_user }}" register: returned -# 3 of 3: New Way In 2020... use --data-dir "{{ nextcloud_data_dir }}" -# https://docs.nextcloud.com/server/18/admin_manual/installation/command_line_installation.html -# https://docs.nextcloud.com/server/18/admin_manual/configuration_server/occ_command.html#command-line-installation-label -- name: Run Nextcloud initial install wizard, seeding data dir {{ nextcloud_data_dir }} (IF THIS FAILS, CONSIDER MANUALLY DROPPING MySQL db '{{ nextcloud_dbname }}' THEN RERUN THIS) +# 3 of 3: NEW WAY IN 2020... use --data-dir "{{ nextcloud_data_dir }}" +# https://docs.nextcloud.com/server/latest/admin_manual/installation/command_line_installation.html +# https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#command-line-installation-label +# ...page lists alternative 'occ' commands. If Nextcloud's already installed, +# attempting 'maintenance:install' (below) also lists these options: +# app:install +# maintenance:data-fingerprint +# maintenance:mimetype:update-db +# maintenance:mimetype:update-js +# maintenance:mode +# maintenance:repair +# maintenance:theme:update +# maintenance:update:htaccess +- name: Run Nextcloud initial install wizard, seeding data dir {{ nextcloud_data_dir }} (IF THIS FAILS, CONSIDER 'sudo mysql' THEN 'DROP DATABASE {{ nextcloud_dbname }};' THEN RERUN THIS) shell: > cd {{ nextcloud_root_dir }}; php occ maintenance:install @@ -64,11 +73,13 @@ --data-dir "{{ nextcloud_data_dir }}" become: yes become_user: "{{ apache_user }}" - #when: nextcloud_installed is undefined when: returned.stdout == "false" # and nextcloud_enabled + #when: nextcloud_installed is undefined + #args: + # creates: "{{ nextcloud_root_dir }}/SOME_FILE" # /library/www/nextcloud/SOME_FILE -# https://docs.nextcloud.com/server/18/admin_manual/installation/source_installation.html#php-fpm-configuration-notes +# https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html#php-fpm-configuration-notes - name: Set 'clear_env = no' in /etc/php/{{ php_version }}/fpm/pool.d/www.conf lineinfile: path: "/etc/php/{{ php_version }}/fpm/pool.d/www.conf" @@ -76,7 +87,7 @@ insertafter: ';.*clear_env' line: 'clear_env = no' -- name: 'Allow Nextcloud access from all hosts and IP addresses (SEE ALSO: /etc/apache2/sites-available/nextcloud.conf)' +- name: 'Allow Nextcloud access from all hosts and IP addresses -- SEE ALSO THE OLD WAY: https://github.com/iiab/iiab/blob/master/roles/nextcloud/templates/nextcloud.conf.j2.unused' command: php {{ nextcloud_root_dir }}/occ config:system:set trusted_domains 1 --value=* become: yes become_user: "{{ apache_user }}" diff --git a/roles/nextcloud/templates/nextcloud-nginx.conf.j2 b/roles/nextcloud/templates/nextcloud-nginx.conf.j2 index 33575798d..a1d1a53b3 100644 --- a/roles/nextcloud/templates/nextcloud-nginx.conf.j2 +++ b/roles/nextcloud/templates/nextcloud-nginx.conf.j2 @@ -1,3 +1,6 @@ +# 2021-07-06: NGINX config should be reviewed year-by-year ! +# https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html + # 2020-02-16: Customized from template...thanks to @m_anish: # # https://docs.nextcloud.com/server/18/admin_manual/installation/nginx.html#nextcloud-in-a-subdir-of-nginx diff --git a/roles/nextcloud/templates/nextcloud.conf.j2 b/roles/nextcloud/templates/nextcloud.conf.j2.unused similarity index 100% rename from roles/nextcloud/templates/nextcloud.conf.j2 rename to roles/nextcloud/templates/nextcloud.conf.j2.unused diff --git a/roles/nginx/README.md b/roles/nginx/README.md index 320d01d6d..e3274f782 100644 --- a/roles/nginx/README.md +++ b/roles/nginx/README.md @@ -20,6 +20,7 @@ * jupyterhub * lokole * moodle + * nextcloud * nodered * OER2Go/RACHEL modules * osm-vector-maps @@ -34,7 +35,6 @@ * kolibri * mediawiki * munin - * nextcloud * sugarizer * wordpress diff --git a/roles/nginx/templates/nginx.conf.j2 b/roles/nginx/templates/nginx.conf.j2 index a3835e32f..5e440a9ff 100644 --- a/roles/nginx/templates/nginx.conf.j2 +++ b/roles/nginx/templates/nginx.conf.j2 @@ -98,7 +98,7 @@ http { # define the upstream backend fastcgi for php upstream php { - server unix:/run/php/php{{ php_version }}-fpm.sock; + server unix:/run/php/php{{ php_version }}-fpm.sock; } }