# vim: ft=yaml.ansible
---
- name: upload vhost config for cloud.data.coop
  template:
    src: files/configs/nextcloud/vhost
    dest: "{{ services.nginx_proxy.volume_folder }}/vhost/{{ services.nextcloud.domain }}"
  notify: "restart nginx"

- name: setup nextcloud containers
  docker_compose:
    project_name: "nextcloud"
    pull: "yes"
    definition:
      services:
        postgres:
          image: "postgres:{{ services.nextcloud.postgres_version }}"
          restart: "unless-stopped"
          networks:
            - "nextcloud"
          volumes:
            - "{{ services.nextcloud.volume_folder }}/postgres:/var/lib/postgresql/data"
          environment: 
            POSTGRES_DB: "nextcloud"
            POSTGRES_PASSWORD: "{{ postgres_passwords.nextcloud }}"
            POSTGRES_USER: "nextcloud"

        redis:
          image: "redis:{{ services.nextcloud.redis_version }}"
          restart: "unless-stopped"
          command: "redis-server --requirepass {{ nextcloud_secrets.redis_password }}"
          tmpfs:
            - /var/lib/redis
          networks:
            - "nextcloud"

        cron:
          image: "nextcloud:{{ services.nextcloud.version }}"
          restart: "unless-stopped"
          entrypoint: "/cron.sh"
          networks:
            - "nextcloud"
          volumes:
            - "{{ services.nextcloud.volume_folder }}/app:/var/www/html"
          depends_on:
            - "postgres"
            - "redis"
        
        app:
          image: "nextcloud:{{ services.nextcloud.version }}"
          restart: "unless-stopped"
          networks:
            - "nextcloud"
            - "postfix"
            - "external_services"
          volumes:
            - "{{ services.nextcloud.volume_folder }}/app:/var/www/html"
          environment:
            VIRTUAL_HOST: "{{ services.nextcloud.domain }}"
            LETSENCRYPT_HOST: "{{ services.nextcloud.domain }}"
            LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"
            POSTGRES_HOST: "postgres"
            POSTGRES_DB: "nextcloud"
            POSTGRES_USER: "nextcloud"
            POSTGRES_PASSWORD: "{{ postgres_passwords.nextcloud }}"
            REDIS_HOST: "redis"
            REDIS_HOST_PASSWORD: "{{ nextcloud_secrets.redis_password }}"
          depends_on:
            - "postgres"
            - "redis"

      networks:
          nextcloud:
          postfix:
            external: true
          external_services:
            external: true