--- - name: Install chat hosts: all become: true tasks: - name: Install deps ansible.builtin.apt: name: - git - vim - lighttpd - sudo state: present update_cache: true when: not (is_vmdb2 | bool) - name: Create dendrite directories ansible.builtin.file: path: "/home/{{ butter_user }}/dendrite/bin" state: directory owner: "{{ butter_user }}" group: "{{ butter_user }}" mode: "0755" - name: Download pre-built dendrite archive ansible.builtin.get_url: url: "https://guardianproject.dev/api/packages/butter/generic/dendrite/latest/dendrite-{{ go_arch_map[ansible_architecture] }}.tar.gz" dest: /tmp mode: '0644' - name: Untar dendrite ansible.builtin.unarchive: src: "/tmp/dendrite-{{ go_arch_map[ansible_architecture] }}.tar.gz" dest: "/home/{{ butter_user }}/dendrite/bin" remote_src: true extra_opts: [--strip-components=2] - name: Ensure butter_user owns Dendrite directory ansible.builtin.file: path: "/home/{{ butter_user }}/dendrite" state: directory recurse: true - name: Generate Matrix signing key ansible.builtin.command: ./bin/generate-keys --private-key matrix_key.pem args: creates: "/home/{{ butter_user }}/dendrite/matrix_key.pem" chdir: "/home/{{ butter_user }}/dendrite" - name: Generate self-signed TLS certificate (optional) ansible.builtin.command: ./bin/generate-keys --tls-cert server.crt --tls-key server.key args: chdir: "/home/{{ butter_user }}/dendrite" creates: "/home/{{ butter_user }}/dendrite/server.key" - name: Download Dendrite config to target ansible.builtin.template: src: "templates/butterbox-dendrite.conf.j2" dest: "/home/{{ butter_user }}/dendrite/butterbox-dendrite.conf" owner: "{{ butter_user }}" group: "{{ butter_user }}" mode: '0644' - name: Create log directory for Dendrite ansible.builtin.file: path: "/var/log/dendrite" state: directory owner: "{{ butter_user }}" group: "{{ butter_user }}" mode: '0755' recurse: true - name: template dendrite systemd service file ansible.builtin.template: src: templates/butterbox-dendrite.service.j2 dest: /lib/systemd/system/dendrite.service owner: root group: root mode: '0644' - name: Enable dendrite by symlink ansible.builtin.file: src: /lib/systemd/system/dendrite.service dest: /etc/systemd/system/multi-user.target.wants/dendrite.service state: link - name: Ensure butter_user owns Dendrite directory ansible.builtin.file: path: "/home/{{ butter_user }}/dendrite" state: directory recurse: true owner: "{{ butter_user }}" group: "{{ butter_user }}" mode: "0755" - name: Restart service dendrite, issue daemon-reload to pick up config changes ansible.builtin.systemd_service: state: restarted daemon_reload: true name: dendrite when: not (is_vmdb2 | bool) - name: Start dendrite as user butter_user become: true become_user: "{{ butter_user }}" ansible.builtin.shell: | nohup /home/{{ butter_user }}/dendrite/bin/dendrite \ --config /home/{{ butter_user }}/dendrite/butterbox-dendrite.conf \ -really-enable-open-registration \ > /var/log/dendrite/dendrite-provision.log 2>&1 & args: chdir: "/home/{{ butter_user }}" when: is_vmdb2 | bool changed_when: false - name: Wait for Dendrite client API to be available ansible.builtin.wait_for: host: "127.0.0.1" port: 8008 delay: 3 # wait a few seconds before first check timeout: 60 # give it up to a minute to start state: started when: is_vmdb2 | bool - name: Copy public room script ansible.builtin.template: src: templates/create_public_room.sh.j2 dest: "/home/{{ butter_user }}/create_public_room.sh" mode: '0755' - name: Run the create_public_room.sh script ansible.builtin.command: "/home/{{ butter_user }}/create_public_room.sh" register: room_creation ignore_errors: false changed_when: false - name: Show room creation output ansible.builtin.debug: var: room_creation.stdout