aboutsummaryrefslogtreecommitdiff
path: root/ansible/roles/nextcloud
diff options
context:
space:
mode:
Diffstat (limited to 'ansible/roles/nextcloud')
-rw-r--r--ansible/roles/nextcloud/tasks/main.yaml5
-rw-r--r--ansible/roles/nextcloud/tasks/setup.yaml40
-rw-r--r--ansible/roles/nextcloud/templates/docker-compose.yaml.j241
3 files changed, 86 insertions, 0 deletions
diff --git a/ansible/roles/nextcloud/tasks/main.yaml b/ansible/roles/nextcloud/tasks/main.yaml
new file mode 100644
index 0000000..0d3697b
--- /dev/null
+++ b/ansible/roles/nextcloud/tasks/main.yaml
@@ -0,0 +1,5 @@
+---
+
+- name: 'Run the setup tasks'
+ ansible.builtin.import_tasks: 'setup.yaml'
+ tags: 'nextcloud'
diff --git a/ansible/roles/nextcloud/tasks/setup.yaml b/ansible/roles/nextcloud/tasks/setup.yaml
new file mode 100644
index 0000000..ac17702
--- /dev/null
+++ b/ansible/roles/nextcloud/tasks/setup.yaml
@@ -0,0 +1,40 @@
+---
+
+- name: 'setup | Ensure required vars are set'
+ ansible.builtin.assert:
+ that:
+ - item | mandatory
+ loop:
+ - '{{ nextcloud_nas_mount_path }}'
+ - '{{ nextcloud_php_max_mem_mb }}'
+ - '{{ nextcloud_php_max_upload_size_gb }}'
+ no_log: true
+
+- name: 'setup | Install required pkgs'
+ ansible.builtin.package:
+ name:
+ - 'nfs-common'
+
+- name: 'setup | Create the mount dir'
+ ansible.builtin.file:
+ path: '/mnt/data'
+ state: 'directory'
+ mode: '755'
+
+- name: 'setup | Setup the NFS mount'
+ ansible.posix.mount:
+ src: '{{ nextcloud_nas_mount_path }}'
+ path: '/mnt/data'
+ state: 'mounted'
+ fstype: 'nfs'
+
+- name: 'setup | Copy the docker-compose file'
+ ansible.builtin.template:
+ src: 'docker-compose.yaml.j2'
+ dest: 'docker-compose.yaml'
+ mode: '644'
+
+- name: 'setup | Start the service'
+ ansible.builtin.command: 'docker-compose up -d'
+ register: '_compose_up_cmd'
+ changed_when: '_compose_up_cmd.rc == 0'
diff --git a/ansible/roles/nextcloud/templates/docker-compose.yaml.j2 b/ansible/roles/nextcloud/templates/docker-compose.yaml.j2
new file mode 100644
index 0000000..3571432
--- /dev/null
+++ b/ansible/roles/nextcloud/templates/docker-compose.yaml.j2
@@ -0,0 +1,41 @@
+{{ ansible_managed | comment }}
+version: "3"
+services:
+ nextcloud:
+ image: nextcloud/all-in-one:latest
+ restart: always
+ container_name: nextcloud-aio-mastercontainer
+ volumes:
+ - nextcloud_aio_mastercontainer:/mnt/docker-aio-config
+ - /var/run/docker.sock:/var/run/docker.sock:ro
+ ports:
+ - 8080:8080
+ environment:
+ - APACHE_PORT=11000
+ - APACHE_IP_BINDING=0.0.0.0
+ - COLLABORA_SECCOMP_DISABLED=true
+ - NEXTCLOUD_DATADIR=/mnt/data
+ - NEXTCLOUD_MOUNT=/mnt/
+ - NEXTCLOUD_UPLOAD_LIMIT={{ nextcloud_php_max_upload_size_gb }}G
+ - NEXTCLOUD_MAX_TIME=3600
+ - NEXTCLOUD_MEMORY_LIMIT={{ nextcloud_php_max_mem_mb }}M
+ - NEXTCLOUD_STARTUP_APPS=deck twofactor_totp tasks calendar contacts notes memories richdocuments -photos
+ - NEXTCLOUD_ADDITIONAL_APKS=imagemagick
+ - NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=imagick
+ - NEXTCLOUD_ENABLE_DRI_DEVICE={{ nextcloud_enable_dri }}
+ - TALK_PORT=3478
+ - WATCHTOWER_DOCKER_SOCKET_PATH=/var/run/docker.sock
+ - SKIP_DOMAIN_VALIDATION=true
+ networks:
+ - nextcloud-aio
+
+volumes:
+ nextcloud_aio_mastercontainer:
+ name: nextcloud_aio_mastercontainer
+
+networks:
+ nextcloud-aio:
+ name: nextcloud-aio
+ driver: bridge
+ driver_opts:
+ com.docker.network.driver.mtu: 1420