diff --git a/roles/server/README.md b/roles/server/README.md index 2d3018a..c7a6cf2 100644 --- a/roles/server/README.md +++ b/roles/server/README.md @@ -6,3 +6,9 @@ regardless of wether the `apache` or `fpm` docker image is used. It provides various common (optimization) configuration options and creates a user on the host which is mapped into the container, so the host file permissions remain comprehensible. + +## Configuration + +- `nextcloud_socket_path`: Setting this (to, for example, `{{ nextcloud_basepath }}/socket`), + will make FPM listen on `{{ nextcloud_socket_path }}/nextcloud.sock` on the host, enabling + you to use FPM to interface with nextcloud. diff --git a/roles/server/defaults/main.yml b/roles/server/defaults/main.yml index 9f8f2f9..d8c4362 100644 --- a/roles/server/defaults/main.yml +++ b/roles/server/defaults/main.yml @@ -9,6 +9,7 @@ nextcloud_data_path: "{{ nextcloud_basepath }}/data" # Where user data like media, documents etc are persisted nextcloud_storage_path: "{{ nextcloud_basepath }}/storage" nextcloud_fpm_config_path: "{{ nextcloud_basepath }}/fpm-config" +#nextcloud_socket_path: "{{ nextcloud_basepath }}/socket" nextcloud_background_job_mode: cron @@ -32,6 +33,7 @@ nextcloud_container_base_volumes: - "{{ nextcloud_data_path }}:/var/www/html:z" - "{{ nextcloud_fpm_config_path }}/opcache.ini:/usr/local/etc/php/conf.d/opcache-recommended.ini:z" - "{{ nextcloud_fpm_config_path }}/fpm.ini:/usr/local/etc/php-fpm.d/www.conf:z" + - "{{ nextcloud_fpm_config_path }}/fpm-docker.ini:/usr/local/etc/php-fpm.d/zz-docker.conf:z" - "{{ nextcloud_basepath }}/nextcloud-passwd:/etc/passwd:z" - "{{ nextcloud_basepath }}/nextcloud-group:/etc/group:z" nextcloud_container_extra_volumes: [] diff --git a/roles/server/tasks/main.yml b/roles/server/tasks/main.yml index a07fc1f..22e2572 100644 --- a/roles/server/tasks/main.yml +++ b/roles/server/tasks/main.yml @@ -7,6 +7,19 @@ system: yes register: nextcloud_user_info +- name: Map nextcloud socket path if defined + set_fact: + nextcloud_paths: "{{ nextcloud_paths + [ socket_dir ] }}" + nextcloud_container_base_volumes: "{{ nextcloud_container_base_volumes + [ socket_map ] }}" + vars: + socket_dir: + path: "{{ nextcloud_socket_path }}" + mode: "0755" + owner: "{{ nextcloud_user_info.uid|default(nextcloud_user) }}" + group: "{{ nextcloud_user_info.uid|default(nextcloud_user) }}" + socket_map: "{{ nextcloud_socket_path }}:{{ nextcloud_container_php_socket_path }}:z" + when: nextcloud_socket_path is defined and nextcloud_socket_path is string + - name: Ensure nextcloud directories exist and have correct permissions file: path: "{{ item.path }}" @@ -43,6 +56,16 @@ notify: - reload-nextcloud +- name: Template PHP FPM docker-specific configuration + template: + src: nextcloud-fpm-docker.ini.j2 + dest: "{{ nextcloud_fpm_config_path }}/fpm-docker.ini" + mode: "0640" + owner: "root" + group: "root" + notify: + - reload-nextcloud + - name: Template modified /etc/passwd for nextcloud container template: src: nextcloud-passwd.j2 diff --git a/roles/server/templates/nextcloud-fpm-docker.ini.j2 b/roles/server/templates/nextcloud-fpm-docker.ini.j2 new file mode 100644 index 0000000..c50c360 --- /dev/null +++ b/roles/server/templates/nextcloud-fpm-docker.ini.j2 @@ -0,0 +1,2 @@ +[global] +daemonize = no diff --git a/roles/server/templates/nextcloud-fpm.ini.j2 b/roles/server/templates/nextcloud-fpm.ini.j2 index f66b41b..477bd8a 100644 --- a/roles/server/templates/nextcloud-fpm.ini.j2 +++ b/roles/server/templates/nextcloud-fpm.ini.j2 @@ -3,7 +3,14 @@ user = www-data group = www-data -listen = 127.0.0.1:9000 +{% if nextcloud_socket_path is defined and nextcloud_socket_path is string %} +listen = {{ nextcloud_container_php_socket_path }}/nextcloud.sock +listen.owner = www-data +listen.group = www-data +listen.mode = 0666 +{% else %} +;listen = 0.0.0.0:9000 +{% endif %} pm = dynamic pm.max_children = {{ nextcloud_fpm_max_children }} diff --git a/roles/server/vars/main.yml b/roles/server/vars/main.yml index 5396a1e..9dee6fd 100644 --- a/roles/server/vars/main.yml +++ b/roles/server/vars/main.yml @@ -26,3 +26,4 @@ nextcloud_container_base_environment_yaml: |+2 PHP_UPLOAD_LIMIT: "{{ nextcloud_php_upload_limit }}" nextcloud_occ_command: "php occ" +nextcloud_container_php_socket_path: /var/run/php