Files

336 lines
8.6 KiB
YAML

- name: Create ssl cert
include_role:
name: certificate
vars:
domains:
- "{{ matrix_domain }}"
- name: Install packages
pacman:
name:
- corepack
- coturn
- freetype2
- gcc
- git
- jemalloc
- libffi
- libjpeg-turbo
- libolm
- libtiff
- libwebp
- libxslt
- libzip
- make
- nodejs-lts-krypton
- npm
- openssl
- pkgconf
- postgresql-libs
- python
- rust
- tcl
- tk
- valkey
- yarn
- zlib
- name: Add synapse group
group: name=synapse system=yes gid=198
- name: Add synapse user
user: name=synapse system=yes uid=198 group=synapse home=/var/lib/synapse shell=/bin/false createhome=no
- name: Create synapse home
file: path={{ item }} state=directory owner=synapse group=synapse mode=0700
loop:
- /var/lib/synapse
- /var/lib/synapse/media_store
- /var/lib/synapse/draupnir-data
- name: Make virtualenvs
command: 'python -m venv {{ item }}'
args:
creates: '{{ item }}/bin/python'
become: true
become_user: synapse
become_method: ansible.builtin.sudo
loop:
- /var/lib/synapse/venv
- name: Update virtualenvs
pip:
name:
- pip
- wheel
state: latest
extra_args: '--upgrade-strategy=eager'
virtualenv: '{{ item }}'
become: true
become_user: synapse
become_method: ansible.builtin.sudo
loop:
- /var/lib/synapse/venv
- name: Install synapse
pip:
name:
- 'matrix-synapse[postgres,oidc,url-preview,redis]==1.161.0'
- synapse-http-antispam
- systemd-python
state: latest
extra_args: '--upgrade-strategy=eager'
virtualenv: /var/lib/synapse/venv
become: true
become_user: synapse
become_method: ansible.builtin.sudo
register: synapse_pip
notify:
- Restart synapse
- name: Download draupnir
git:
repo: https://github.com/the-draupnir-project/Draupnir
dest: /var/lib/synapse/draupnir
version: v3.1.0
force: true
become: true
become_user: synapse
become_method: ansible.builtin.sudo
register: draupnir_git
notify:
- Restart draupnir
- name: Patch draupnir
patch:
src: draupnir-build.patch
basedir: /var/lib/synapse/draupnir
strip: 1
become: true
become_user: synapse
become_method: ansible.builtin.sudo
when: draupnir_git.changed
- name: Install draupnir
community.general.npm:
path: /var/lib/synapse/draupnir
ci: true
become: true
become_user: synapse
become_method: ansible.builtin.sudo
when: draupnir_git.changed
- name: Build draupnir # noqa no-changed-when
command: npm run build
args:
chdir: /var/lib/synapse/draupnir
become: true
become_user: synapse
become_method: ansible.builtin.sudo
when: draupnir_git.changed
- name: Download matrix-appservice-irc
git:
repo: https://github.com/matrix-org/matrix-appservice-irc
dest: /var/lib/synapse/matrix-appservice-irc
version: 4.0.0
force: true
become: true
become_user: synapse
become_method: ansible.builtin.sudo
register: irc_git
notify:
- Restart matrix-appservice-irc
- name: Install matrix-appservice-irc
community.general.yarn:
path: /var/lib/synapse/matrix-appservice-irc
become: true
become_user: synapse
become_method: ansible.builtin.sudo
when: irc_git.changed
- name: Build matrix-appservice-irc # noqa no-changed-when
command: yarn build
args:
chdir: /var/lib/synapse/matrix-appservice-irc
become: true
become_user: synapse
become_method: ansible.builtin.sudo
when: irc_git.changed
- name: Install pg_hba.conf
copy: src=pg_hba.conf dest=/var/lib/postgres/data/pg_hba.conf owner=postgres group=postgres mode=0600
notify:
- Restart postgres
- name: Add postgresql databases
postgresql_db:
name: '{{ item }}'
lc_collate: C
lc_ctype: C
template: template0
become: true
become_user: postgres
become_method: ansible.builtin.su
loop:
- synapse
- irc
- name: Add synapse postgres user
postgresql_user:
login_db: synapse
user: synapse
password: '{{ vault_postgres_users.matrix.synapse }}'
become: true
become_user: postgres
become_method: ansible.builtin.su
- name: Create synapse config dir
file: path=/etc/synapse state=directory owner=root group=synapse mode=0750
- name: Install homeserver config
template: src=homeserver.yaml.j2 dest=/etc/synapse/homeserver.yaml owner=root group=synapse mode=0640
notify:
- Restart synapse
- name: Install static config
copy: src={{ item }} dest=/etc/synapse/{{ item }} owner=root group=root mode=0644
loop:
- log_config.yaml
- oembed-providers.json
- worker-appservice.yaml
- worker-federation_reader.yaml
- worker-federation_sender.yaml
- worker-media_repository.yaml
notify:
- Restart synapse
- name: Install draupnir config
template: src=draupnir.yaml.j2 dest=/etc/synapse/draupnir.yaml owner=root group=synapse mode=0640
notify:
- Restart draupnir
- name: Install irc-bridge config
template: src=irc-bridge.yaml.j2 dest=/etc/synapse/irc-bridge.yaml owner=root group=synapse mode=0640
notify:
- Restart matrix-appservice-irc
- name: Install irc-bridge registration
template: src=appservice-registration-irc.yaml.j2 dest=/etc/synapse/appservice-registration-irc.yaml owner=root group=synapse mode=0640
notify:
- Restart synapse
- name: Install signing key # noqa template-instead-of-copy
copy:
content: '{{ vault_matrix.signing_key }}'
dest: /etc/synapse/{{ matrix_server_name }}.signing.key
owner: root
group: synapse
mode: '0640'
- name: Install ircpass key # noqa template-instead-of-copy
copy:
content: '{{ vault_matrix.irc.ircpass_key }}'
dest: /etc/synapse/{{ matrix_server_name }}.ircpass.key
owner: root
group: synapse
mode: '0640'
- name: Install ircmedia key # noqa template-instead-of-copy
copy:
content: '{{ vault_matrix.irc.ircmedia_key }}'
dest: /etc/synapse/{{ matrix_server_name }}.ircmedia.key
owner: root
group: synapse
mode: '0640'
- name: Setup HTTP redirect
include_role:
name: http_redirect
vars:
domain: "{{ matrix_domain }}"
- name: Make nginx log dir
file: path=/var/log/nginx/{{ matrix_domain }} state=directory owner=root group=root mode=0755
- name: Set up nginx
template: src=nginx.d.conf.j2 dest=/etc/nginx/nginx.d/matrix.conf owner=root group=root mode=0640
notify:
- Reload nginx
when: 'matrix_domain is defined'
tags: ['nginx']
- name: Install turnserver.conf
template: src=turnserver.conf.j2 dest=/etc/turnserver/turnserver.conf owner=turnserver group=turnserver mode=0600
notify:
- Restart turnserver
- name: Install turnserver cert renewal hook
copy: src=letsencrypt.hook.d dest=/etc/letsencrypt/hook.d/turnserver owner=root group=root mode=0755
- name: Install synapse units
copy: src={{ item }} dest=/etc/systemd/system/{{ item }} owner=root group=root mode=0644
loop:
- synapse.service
- synapse-worker@.service
notify:
- Restart synapse
- name: Install draupnir units
copy: src={{ item }} dest=/etc/systemd/system/{{ item }} owner=root group=root mode=0644
loop:
- draupnir.service
notify:
- Restart draupnir
- name: Install matrix-appservice-irc units
copy: src={{ item }} dest=/etc/systemd/system/{{ item }} owner=root group=root mode=0644
loop:
- matrix-appservice-irc.service
notify:
- Restart matrix-appservice-irc
- name: Create systemd snippet dirs
file: path={{ item }} state=directory owner=root group=root mode=0755
loop:
- /etc/systemd/system/turnserver.service.d
- /etc/systemd/resolved.conf.d
- name: Install turnserver unit snippet
copy: src=turnserver.service.d dest=/etc/systemd/system/turnserver.service.d/override.conf owner=root group=root mode=0644
notify:
- Restart turnserver
- name: Install resolved.conf snippet
copy: src=resolved.conf.d dest=/etc/systemd/resolved.conf.d/synapse.conf owner=root group=root mode=0644
notify:
- Restart systemd-resolved
- name: Enable units
service: name={{ item }} enabled=yes
loop:
- synapse.service
- synapse-worker@appservice.service
- synapse-worker@federation_reader.service
- synapse-worker@federation_sender.service
- synapse-worker@media_repository.service
- draupnir.service
- matrix-appservice-irc.service
- turnserver.service
- name: Open firewall holes
ansible.posix.firewalld: port={{ item }} permanent=true state=enabled immediate=yes
loop:
# matrix-appservice-irc's identd
- 113/tcp
# turnserver
- 2410-2411/tcp
- 2410-2411/udp
- 2420-2421/tcp
- 2420-2421/udp
- 33000-33999/udp
when: configure_firewall
tags:
- firewall