181 lines
5.5 KiB
YAML
181 lines
5.5 KiB
YAML
---
|
|
- name: Install chat
|
|
hosts: all
|
|
become: true
|
|
tasks:
|
|
- name: Install deps
|
|
apt:
|
|
name:
|
|
- git
|
|
- vim
|
|
- lighttpd
|
|
- sudo
|
|
state: present
|
|
update_cache: yes
|
|
when: not ( is_vmdb2 | bool )
|
|
|
|
- name: Create dendrite directories
|
|
file:
|
|
path: "/home/{{ butter_user }}/dendrite/bin"
|
|
state: directory
|
|
owner: "{{ butter_user }}"
|
|
group: "{{ butter_user }}"
|
|
mode: "0755"
|
|
|
|
- name: Download pre-built dendrite archive
|
|
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
|
|
unarchive:
|
|
src: "/tmp/dendrite-{{ go_arch_map[ansible_architecture] }}.tar.gz"
|
|
dest: "/home/{{ butter_user }}/dendrite/bin"
|
|
remote_src: yes
|
|
extra_opts: [--strip-components=2]
|
|
|
|
- name: Ensure butter_user owns Dendrite directory
|
|
file:
|
|
path: "/home/{{ butter_user }}/dendrite"
|
|
state: directory
|
|
recurse: yes
|
|
|
|
- name: Generate Matrix signing key
|
|
command: ./bin/generate-keys --private-key matrix_key.pem
|
|
args:
|
|
chdir: "/home/{{ butter_user }}/dendrite"
|
|
|
|
- name: Generate self-signed TLS certificate (optional)
|
|
command: ./bin/generate-keys --tls-cert server.crt --tls-key server.key
|
|
args:
|
|
chdir: "/home/{{ butter_user }}/dendrite"
|
|
|
|
- name: Download Dendrite config to target
|
|
get_url:
|
|
url: "{{ config_base_url }}/butterbox-dendrite.conf"
|
|
dest: "/home/{{ butter_user }}/dendrite/butterbox-dendrite.conf"
|
|
owner: "{{ butter_user }}"
|
|
group: "{{ butter_user }}"
|
|
mode: '0644'
|
|
|
|
- name: Replace REPLACEME with butter_name in config
|
|
replace:
|
|
path: "/home/{{ butter_user }}/dendrite/butterbox-dendrite.conf"
|
|
regexp: 'REPLACEME'
|
|
replace: "{{ butter_name }}"
|
|
|
|
- name: Replace /home/pi with /home/butter_user in config
|
|
replace:
|
|
path: "/home/{{ butter_user }}/dendrite/butterbox-dendrite.conf"
|
|
regexp: '/pi/'
|
|
replace: "/{{ butter_user }}/"
|
|
|
|
- name: Create log directory for Dendrite
|
|
file:
|
|
path: "/var/log/dendrite"
|
|
state: directory
|
|
owner: "{{ butter_user }}"
|
|
group: "{{ butter_user }}"
|
|
mode: '0755'
|
|
recurse: yes
|
|
|
|
- name: Download dendrite systemd service file
|
|
get_url:
|
|
url: "{{ config_base_url }}/butterbox-dendrite.service"
|
|
dest: /lib/systemd/system/dendrite.service
|
|
owner: root
|
|
group: root
|
|
mode: '0644'
|
|
|
|
- name: Replace /home/pi with /home/butter_user in service file
|
|
replace:
|
|
path: /lib/systemd/system/dendrite.service
|
|
regexp: '/pi/'
|
|
replace: "/{{ butter_user }}/"
|
|
|
|
- name: Replace pi with butter_user in service file
|
|
replace:
|
|
path: /lib/systemd/system/dendrite.service
|
|
regexp: 'User=pi'
|
|
replace: "User={{ butter_user }}"
|
|
|
|
- name: Enable dendrite by symlink
|
|
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
|
|
file:
|
|
path: "/home/{{ butter_user }}/dendrite"
|
|
state: directory
|
|
recurse: yes
|
|
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: Download Matrix reverse proxy config for Lighttpd
|
|
get_url:
|
|
url: "{{ config_base_url }}/50-matrix-reverse-proxy.conf"
|
|
dest: /etc/lighttpd/conf-available/50-matrix-reverse-proxy.conf
|
|
owner: root
|
|
group: root
|
|
mode: '0644'
|
|
|
|
- name: Ensure old symlink is removed if it exists
|
|
file:
|
|
path: /etc/lighttpd/conf-enabled/50-matrix-reverse-proxy.conf
|
|
state: absent
|
|
force: true
|
|
|
|
- name: Enable reverse proxy config for Matrix in Lighttpd
|
|
file:
|
|
src: /etc/lighttpd/conf-available/50-matrix-reverse-proxy.conf
|
|
dest: /etc/lighttpd/conf-enabled/50-matrix-reverse-proxy.conf
|
|
state: link
|
|
force: true
|
|
|
|
- name: Start dendrite as user butter_user
|
|
become: yes
|
|
become_user: "{{ butter_user }}"
|
|
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
|
|
|
|
|
|
- name: Wait for Dendrite client API to be available
|
|
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
|
|
template:
|
|
src: templates/create_public_room.sh.j2
|
|
dest: /home/pi/create_public_room.sh
|
|
mode: '0755'
|
|
|
|
- name: Run the create_public_room.sh script
|
|
command: /home/pi/create_public_room.sh
|
|
register: room_creation
|
|
ignore_errors: false
|
|
|
|
- name: Show room creation output
|
|
debug:
|
|
var: room_creation.stdout
|