matrix: add initial conduit-only config

main
Jef Roosens 2024-01-25 15:19:55 +01:00
parent b5e9afe5a4
commit ef8f5da37d
Signed by: Jef Roosens
GPG Key ID: 02D4C0997E74717B
11 changed files with 182 additions and 0 deletions

View File

@ -20,3 +20,6 @@
[ntfyserver]
192.168.0.3 static_ip=192.168.0.3
[matrix]
192.168.0.2 static_ip=192.168.0.2

View File

@ -76,3 +76,9 @@
roles:
- restic
tags: restic
- hosts: nas
become: yes
roles:
- matrix
tags: matrix

View File

@ -0,0 +1,3 @@
---
dependencies:
- role: caddy

View File

@ -0,0 +1,9 @@
---
- name: Ensure Caddyfile is present
template:
src: 'matrix.Caddyfile.j2'
dest: '/etc/caddy/matrix.Caddyfile'
owner: root
group: root
mode: '0644'
notify: caddy-reload

View File

@ -0,0 +1,3 @@
matrix.rustybever.be {
reverse_proxy {{ hostvars[groups['matrix'][0]].static_ip }}:8004
}

View File

@ -0,0 +1,12 @@
services:
conduit:
image: 'matrixconduit/matrix-conduit:next'
restart: 'always'
environment:
CONDUIT_CONFIG: '/etc/matrix-conduit/conduit.toml'
ports:
- '8004:6167'
volumes:
- '/mnt/data1/matrix/conduit:/var/lib/matrix-conduit'
- '/etc/matrix/conduit.toml:/etc/matrix-conduit/conduit.toml'

View File

@ -0,0 +1,57 @@
# =============================================================================
# This is the official example config for Conduit.
# If you use it for your server, you will need to adjust it to your own needs.
# At the very least, change the server_name field!
# =============================================================================
[global]
# The server_name is the pretty name of this server. It is used as a suffix for user
# and room ids. Examples: matrix.org, conduit.rs
# The Conduit server needs all /_matrix/ requests to be reachable at
# https://your.server.name/ on port 443 (client-server) and 8448 (federation).
# If that's not possible for you, you can create /.well-known files to redirect
# requests. See
# https://matrix.org/docs/spec/client_server/latest#get-well-known-matrix-client
# and
# https://matrix.org/docs/spec/server_server/r0.1.4#get-well-known-matrix-server
# for more information
# YOU NEED TO EDIT THIS
server_name = "rustybever.be"
# This is the only directory where Conduit will save its data
database_path = "/var/lib/matrix-conduit/"
database_backend = "rocksdb"
# The port Conduit will be running on. You need to set up a reverse proxy in
# your web server (e.g. apache or nginx), so all requests to /_matrix on port
# 443 and 8448 will be forwarded to the Conduit instance running on this port
# Docker users: Don't change this, you'll need to map an external port to this.
port = 6167
# Max size for uploads
max_request_size = 20_000_000 # in bytes
# Enables registration. If set to false, no users can register on this server.
allow_registration = false
allow_federation = true
allow_check_for_updates = false
# Enable the display name lightning bolt on registration.
enable_lightning_bolt = false
# Servers listed here will be used to gather public keys of other servers.
# Generally, copying this exactly should be enough. (Currently, Conduit doesn't
# support batched key requests, so this list should only contain Synapse
# servers.)
trusted_servers = ["matrix.org"]
#max_concurrent_requests = 100 # How many requests Conduit sends to other servers at the same time
#log = "warn,state_res=warn,rocket=off,_=off,sled=off"
# address = "127.0.0.1" # This makes sure Conduit can only be reached using the reverse proxy
address = "0.0.0.0" # If Conduit is running in a container, make sure the reverse proxy (ie. Traefik) can reach it.

View File

@ -0,0 +1,14 @@
#!/usr/bin/env bash
# Conduit
data_dir='/mnt/data1/matrix/conduit'
snapshot_dir="${data_dir}.snapshot"
# Read-only snapshot for atomic backup
btrfs subvolume snapshot -r "$data_dir" "$snapshot_dir" || exit $?
/usr/local/bin/restic backup "$snapshot_dir"
# Always remove snapshot subvolume, even if restic fails
btrfs subvolume delete "$snapshot_dir"

View File

@ -0,0 +1,5 @@
---
- name: conduit-restart
ansible.builtin.shell:
chdir: '/etc/matrix'
cmd: 'docker compose restart conduit'

View File

@ -0,0 +1,64 @@
---
- name: Ensure data directory is present
ansible.builtin.file:
path: '/mnt/data1/matrix'
state: directory
mode: '0755'
owner: 'root'
group: 'root'
- name: Ensure data subvolumes are present
community.general.btrfs_subvolume:
name: '/matrix/{{ item }}'
with_items:
- 'conduit'
- name: Ensure subvolume permissions are correct
ansible.builtin.file:
path: "/mnt/data1/matrix/{{ item.dir }}"
state: directory
mode: '0755'
owner: {{ item.owner }}
group: {{ item.group }}
loop:
- dir: 'conduit'
owner: 1000
group: 1000
- name: Ensure configuration directory is present
ansible.builtin.file:
path: '/etc/matrix'
state: directory
mode: '0755'
- name: Ensure Conduit config file is present
ansible.builtin.copy:
src: 'conduit.toml'
dest: '/etc/matrix/conduit.toml'
mode: '0644'
owner: 'root'
group: 'root'
notify: conduit-restart
- name: Ensure compose file is present
ansible.builtin.copy:
src: 'compose.yml'
dest: '/etc/matrix/compose.yml'
mode: '0644'
owner: 'root'
group: 'root'
register: res
- name: Ensure stack is deployed
ansible.builtin.shell:
chdir: '/etc/matrix'
cmd: 'docker compose up -d --remove-orphans'
when: 'res.changed'
- name: Ensure backup script is present
ansible.builtin.copy:
src: 'matrix.backup.sh'
dest: '/etc/backups/matrix.backup.sh'
owner: 'root'
group: 'root'
mode: '0644'

View File

@ -22,3 +22,9 @@
roles:
- ntfy-server-web
tags: ntfy
- hosts: web
become: yes
roles:
- matrix-web
tags: matrix