Add synapse role
This commit is contained in:
2
roles/synapse/README.md
Normal file
2
roles/synapse/README.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
Sets up a matrix synapse podman container.
|
||||||
|
See https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html for info on configuration options where descriptions are not provided in this documentation.
|
||||||
18
roles/synapse/defaults/main.yaml
Normal file
18
roles/synapse/defaults/main.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
synapse_postgres_tag: 16-alpine
|
||||||
|
|
||||||
|
synapse_trusted_key_servers:
|
||||||
|
- matrix.org
|
||||||
|
|
||||||
|
synapse_room_complexity_limit: 0
|
||||||
|
synapse_room_complexity_error: ""
|
||||||
|
|
||||||
|
synapse_turn_uris: []
|
||||||
|
|
||||||
|
synapse_max_upload_size: 50M
|
||||||
|
synapse_allow_public_rooms_over_federation: false
|
||||||
|
synapse_auto_accept_invites:
|
||||||
|
enabled: false
|
||||||
|
synapse_auto_join_rooms: []
|
||||||
|
|
||||||
|
synapse_smtp_server: ""
|
||||||
87
roles/synapse/meta/argument_specs.yaml
Normal file
87
roles/synapse/meta/argument_specs.yaml
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
---
|
||||||
|
argument_specs:
|
||||||
|
main:
|
||||||
|
description:
|
||||||
|
- Sets up a matrix synapse podman container.
|
||||||
|
- >-
|
||||||
|
See https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html for info on configuration options where descriptions are
|
||||||
|
not provided in this documentation.
|
||||||
|
options:
|
||||||
|
synapse_server_name:
|
||||||
|
description: Matrix server name. This can not be changed without a full reset and database wipe. This will be visible to users.
|
||||||
|
type: str
|
||||||
|
required: true
|
||||||
|
synapse_public_base_domain:
|
||||||
|
description:
|
||||||
|
- The public-facing domain that clients use to access synapse, without https://. e.g. matrix.domain.tld
|
||||||
|
- This is used to set the public_baseurl option for synapse (with https:// and trailing / added)
|
||||||
|
type: str
|
||||||
|
required: true
|
||||||
|
synapse_signing_key:
|
||||||
|
description: The homeserver signing key
|
||||||
|
type: str
|
||||||
|
required: true
|
||||||
|
synapse_trusted_key_servers:
|
||||||
|
type: list
|
||||||
|
required: false
|
||||||
|
default:
|
||||||
|
- matrix.org
|
||||||
|
elements: str
|
||||||
|
synapse_remote_room_complexity_limit:
|
||||||
|
description: Sets limit_remote_rooms.complexity value
|
||||||
|
type: float
|
||||||
|
required: false
|
||||||
|
default: 0
|
||||||
|
synapse_room_complexity_error:
|
||||||
|
description: Sets limit_remote_rooms.copmlexity_error value. Required if synapse_remote_room_complexity_level is set.
|
||||||
|
type: str
|
||||||
|
default: ""
|
||||||
|
synapse_turn_uris:
|
||||||
|
type: list
|
||||||
|
required: false
|
||||||
|
default: []
|
||||||
|
elements: str
|
||||||
|
synapse_turn_shared_secret:
|
||||||
|
description: Required if synapse_turn_uris is not empty
|
||||||
|
type: str
|
||||||
|
synapse_email_smtp_server:
|
||||||
|
description: email.smtp_host, set this to enable sending emails
|
||||||
|
type: str
|
||||||
|
required: false
|
||||||
|
default: ""
|
||||||
|
synapse_email_smtp_user:
|
||||||
|
description: Required if synapse_email_smtp_server is set
|
||||||
|
type: str
|
||||||
|
synapse_email_smtp_password:
|
||||||
|
description: Required if synapse_email_smtp_server is set
|
||||||
|
type: str
|
||||||
|
synapse_email_from:
|
||||||
|
description: Required if synapse_email_smtp_server is set
|
||||||
|
type: str
|
||||||
|
synapse_email_app_name:
|
||||||
|
description: Required if synapse_email_smtp_server is set
|
||||||
|
type: str
|
||||||
|
synapse_max_upload_size:
|
||||||
|
type: str
|
||||||
|
required: false
|
||||||
|
default: 50M
|
||||||
|
synapse_allow_public_rooms_over_federation:
|
||||||
|
type: bool
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
synapse_auto_accept_invites:
|
||||||
|
type: dict
|
||||||
|
required: false
|
||||||
|
default:
|
||||||
|
enabled: false
|
||||||
|
synapse_auto_join_rooms:
|
||||||
|
type: list
|
||||||
|
required: false
|
||||||
|
default: []
|
||||||
|
elements: str
|
||||||
|
|
||||||
|
synapse_postgres_tag:
|
||||||
|
description: Postgres tag to use for synapse postgres container
|
||||||
|
type: str
|
||||||
|
required: false
|
||||||
|
default: 16-alpine
|
||||||
42
roles/synapse/tasks/main.yaml
Normal file
42
roles/synapse/tasks/main.yaml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
- name: Assert complexity error is set if complexity limit is
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that: synapse_room_complexity_limit == 0 or synapse_room_complexity_error | length > 0
|
||||||
|
fail_msg: "synapse_room_complexity_error must be set when synapse_room_complexity_limit is"
|
||||||
|
quiet: true
|
||||||
|
- name: Assert turn shared secret is set if turn uris is
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that: synapse_turn_uris | length == 0 or synapse_turn_shared_secret | length > 0
|
||||||
|
fail_msg: "synapse_turn_shared_secret must be set when synapse_turn_uris is"
|
||||||
|
quiet: true
|
||||||
|
|
||||||
|
- name: Synapse container
|
||||||
|
ansible.builtin.include_role:
|
||||||
|
name: service
|
||||||
|
vars:
|
||||||
|
service_name: synapse
|
||||||
|
service_container_image: "{{ _synapse_image_name }}"
|
||||||
|
service_database_type: postgres
|
||||||
|
service_postgres_tag: "{{ synapse_postgres_tag }}"
|
||||||
|
service_container_mounts:
|
||||||
|
- type: template
|
||||||
|
source: homeserver.yaml.j2
|
||||||
|
destination: /data/homeserver.yaml
|
||||||
|
- type: template
|
||||||
|
source: log.yaml.j2
|
||||||
|
destination: /data/log.yaml
|
||||||
|
- type: volume
|
||||||
|
source: media
|
||||||
|
destination: /data/media
|
||||||
|
user: "991"
|
||||||
|
group: "991"
|
||||||
|
service_container_secrets:
|
||||||
|
- name: signing-key
|
||||||
|
value: "{{ synapse_signing_key }}"
|
||||||
|
service_container_env:
|
||||||
|
SYNAPSE_SERVER_NAME: "{{ synapse_server_name }}"
|
||||||
|
SYNAPSE_REPORT_STATS: "no"
|
||||||
|
UID: 991
|
||||||
|
GID: 991
|
||||||
|
service_container_http_port: 8008
|
||||||
|
service_domains: "{{ [synapse_public_base_domain] }}"
|
||||||
99
roles/synapse/templates/homeserver.yaml.j2
Normal file
99
roles/synapse/templates/homeserver.yaml.j2
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
---
|
||||||
|
# vim:ft=yaml
|
||||||
|
# {{ ansible_managed }}
|
||||||
|
|
||||||
|
signing_key_path: /run/secrets/synapse-signing-key
|
||||||
|
media_store_path: /data/media
|
||||||
|
log_config: /data/log.yaml
|
||||||
|
|
||||||
|
server_name: {{ synapse_server_name }}
|
||||||
|
public_baseurl: https://{{ synapse_public_base_domain }}/
|
||||||
|
report_stats: false
|
||||||
|
|
||||||
|
listeners:
|
||||||
|
- port: 8008
|
||||||
|
tls: false
|
||||||
|
type: http
|
||||||
|
x_forwarded: true
|
||||||
|
resources:
|
||||||
|
- names: [client, federation]
|
||||||
|
|
||||||
|
database:
|
||||||
|
name: psycopg2
|
||||||
|
args:
|
||||||
|
host: synapse-postgres
|
||||||
|
user: synapse
|
||||||
|
password: "{{ _service_database_password }}"
|
||||||
|
dbname: synapse
|
||||||
|
|
||||||
|
caches:
|
||||||
|
global_factor: 1.0
|
||||||
|
|
||||||
|
enable_registration: false
|
||||||
|
enable_3pid_changes: false
|
||||||
|
ui_auth:
|
||||||
|
session_timeout: 5m
|
||||||
|
|
||||||
|
trusted_key_servers:
|
||||||
|
{% for server in synapse_trusted_key_servers %}
|
||||||
|
- server_name: {{ server }}
|
||||||
|
{% endfor %}
|
||||||
|
suppress_key_server_warning: true
|
||||||
|
|
||||||
|
max_upload_sixe: "{{ synapse_max_upload_size }}"
|
||||||
|
|
||||||
|
{% if synapse_room_complexity_limit > 0 %}
|
||||||
|
limit_remote_rooms:
|
||||||
|
enabled: true
|
||||||
|
complexity: {{ synapse_room_complexity_limit }}
|
||||||
|
complexity_error: "{{ synapse_room_complexity_error }}"
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
url_preview_enabled: true
|
||||||
|
url_preview_ip_range_blacklist:
|
||||||
|
- '127.0.0.0/8'
|
||||||
|
- '10.0.0.0/8'
|
||||||
|
- '172.16.0.0/12'
|
||||||
|
- '192.168.0.0/16'
|
||||||
|
- '100.64.0.0/10'
|
||||||
|
- '192.0.0.0/24'
|
||||||
|
- '169.254.0.0/16'
|
||||||
|
- '192.88.99.0/24'
|
||||||
|
- '198.18.0.0/15'
|
||||||
|
- '192.0.2.0/24'
|
||||||
|
- '198.51.100.0/24'
|
||||||
|
- '203.0.113.0/24'
|
||||||
|
- '224.0.0.0/4'
|
||||||
|
- '::1/128'
|
||||||
|
- 'fe80::/10'
|
||||||
|
- 'fc00::/7'
|
||||||
|
- '2001:db8::/32'
|
||||||
|
- 'ff00::/8'
|
||||||
|
- 'fec0::/10'
|
||||||
|
|
||||||
|
turn_uris: {{ synapse_turn_uris }}
|
||||||
|
{% if synapse_turn_uris | length > 0 %}
|
||||||
|
turn_shared_secret: {{ synapse_turn_shared_secret }}
|
||||||
|
{% endif %}
|
||||||
|
turn_user_lifetime: 1d
|
||||||
|
turn_allow_guests: false
|
||||||
|
|
||||||
|
{% if synapse_smtp_server | length > 0 %}
|
||||||
|
email:
|
||||||
|
smtp_host: {{ synapse_smtp_server }}
|
||||||
|
smtp_port: 587
|
||||||
|
smtp_user: {{ synapse_smtp_user }}
|
||||||
|
smtp_pass: {{ synapse_smtp_password }}
|
||||||
|
require_transport_security: true
|
||||||
|
|
||||||
|
notif_from: "{{ synapse_email_from }}"
|
||||||
|
app_name: "{{ synapse_email_app_name }}"
|
||||||
|
enable_notifs: true
|
||||||
|
notif_for_new_users: false
|
||||||
|
notif_delay_before_mail: 1h
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
allow_public_rooms_over_federation: {{ synapse_allow_public_rooms_over_federation }}
|
||||||
|
auto_accept_invites: {{ synapse_auto_accept_invites }}
|
||||||
|
auto_join_rooms: {{ synapse_auto_join_rooms }}
|
||||||
|
autocreate_auto_join_rooms: false
|
||||||
24
roles/synapse/templates/log.yaml.j2
Normal file
24
roles/synapse/templates/log.yaml.j2
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# {{ ansible_managed }}
|
||||||
|
|
||||||
|
version: 1
|
||||||
|
|
||||||
|
formatters:
|
||||||
|
precise:
|
||||||
|
format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s'
|
||||||
|
|
||||||
|
handlers:
|
||||||
|
console:
|
||||||
|
class: logging.StreamHandler
|
||||||
|
formatter: precise
|
||||||
|
|
||||||
|
loggers:
|
||||||
|
synapse:
|
||||||
|
level: WARNING
|
||||||
|
synapse.storage.SQL:
|
||||||
|
level: WARNING
|
||||||
|
|
||||||
|
root:
|
||||||
|
level: WARNING
|
||||||
|
handlers: [console]
|
||||||
|
|
||||||
|
disable_existing_loggers: false
|
||||||
2
roles/synapse/vars/main.yaml
Normal file
2
roles/synapse/vars/main.yaml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
_synapse_image_name: ghcr.io/element-hq/synapse:latest
|
||||||
Reference in New Issue
Block a user