---
- name: create matrix volume folders
  file:
    name: "{{ matrix.volume_folder }}/{{ volume }}"
    state: directory
  loop:
    - "db"
  loop_control:
    loop_var: volume

- name: create riot volume folders
  file:
    name: "{{ riot.volume_folder }}/{{ volume }}"
    state: directory
  loop:
    - "data"
  loop_control:
    loop_var: volume

- name: matrix network
  docker_network:
    name: matrix

- name: upload riot config.json
  template:
    src: files/configs/riot/config.json
    dest: "{{ riot.volume_folder }}/data/config.json"

- name: upload riot.im.conf
  template:
    src: files/configs/riot/riot.im.conf
    dest: "{{ riot.volume_folder }}/data/riot.im.conf"

- name: upload vhost config for root domain
  template:
    src: files/configs/matrix/vhost-root
    dest: "{{ nginx.volume_folder }}/vhost/{{ base_domain }}"

- name: upload vhost config for matrix domain
  template:
    src: files/configs/matrix/vhost-matrix
    dest: "{{ nginx.volume_folder }}/vhost/{{ matrix.domain }}"

- name: matrix database container
  docker_container:
    name: matrix_db
    image: postgres:10
    state: started
    restart_policy: always
    networks:
      - name: matrix
    volumes:
      - "{{ matrix.volume_folder }}/db:/var/lib/postgresql/data"
    env:
      POSTGRES_USER: "synapse"
      POSTGRES_PASSWORD: "{{ postgres_passwords.matrix }}"

- name: matrix container
  docker_container:
    name: matrix
    image: matrixdotorg/synapse:latest
    restart_policy: unless-stopped
    networks:
      - name: matrix
    published_ports:
      - "8008"
    env:
      SYNAPSE_SERVER_NAME: "{{ base_domain }}"
      SYNAPSE_REPORT_STATS: "False"
      SYNAPSE_ENABLE_REGISTRATION: "True"
      SYNAPSE_LOG_LEVEL: "INFO"
      SYNAPSE_NO_TLS: "1"
      POSTGRES_HOST: "matrix_db"
      POSTGRES_USER: "synapse"
      POSTGRES_PASSWORD: "{{ postgres_passwords.matrix }}"
      VIRTUAL_HOST: "{{ matrix.domain }}"
      VIRTUAL_PORT: "8008"
      LETSENCRYPT_HOST: "{{ matrix.domain }}"
      LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"

- name: riot container
  docker_container:
    name: riot_app
    image: avhost/docker-matrix-riot:v1.0.1
    state: started
    restart_policy: always
    networks:
      - name: matrix
      - name: external_services
    published_ports:
      - "8080"
    volumes:
      - "{{ riot.volume_folder }}/data:/data"
    env:
      VIRTUAL_HOST: "{{ riot.domain }}"
      VIRTUAL_PORT: "8080"
      LETSENCRYPT_HOST: "{{ riot.domain }}"
      LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"