matrix-sms-bridge:

added docs, added seperate service for database, pr comments
This commit is contained in:
benkuly 2020-05-23 13:14:24 +02:00
parent 4913ca4bb2
commit 1ffa4a326c
9 changed files with 101 additions and 26 deletions

View File

@ -52,6 +52,8 @@ Using this playbook, you can get the following services configured on your serve
- (optional) the [matrix-appservice-webhooks](https://github.com/turt2live/matrix-appservice-webhooks) bridge for slack compatible webhooks ([ConcourseCI](https://concourse-ci.org/), [Slack](https://slack.com/) etc. pp.) - (optional) the [matrix-appservice-webhooks](https://github.com/turt2live/matrix-appservice-webhooks) bridge for slack compatible webhooks ([ConcourseCI](https://concourse-ci.org/), [Slack](https://slack.com/) etc. pp.)
- (optional) the [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) for bridging your Matrix server to SMS
- (optional) [Email2Matrix](https://github.com/devture/email2matrix) for relaying email messages to Matrix rooms - (optional) [Email2Matrix](https://github.com/devture/email2matrix) for relaying email messages to Matrix rooms
- (optional) [Dimension](https://github.com/turt2live/matrix-dimension), an open source integrations manager for matrix clients - (optional) [Dimension](https://github.com/turt2live/matrix-dimension), an open source integrations manager for matrix clients
@ -144,6 +146,8 @@ This playbook sets up your server using the following Docker images:
- [turt2live/matrix-appservice-webhooks](https://hub.docker.com/r/turt2live/matrix-appservice-webhooks) - the [Appservice Webhooks](https://github.com/turt2live/matrix-appservice-webhooks) bridge (optional) - [turt2live/matrix-appservice-webhooks](https://hub.docker.com/r/turt2live/matrix-appservice-webhooks) - the [Appservice Webhooks](https://github.com/turt2live/matrix-appservice-webhooks) bridge (optional)
- [folivonet/matrix-sms-bridge](https://hub.docker.com/repository/docker/folivonet/matrix-sms-bridge) - the [matrix-sms-brdige](https://github.com/benkuly/matrix-sms-bridge) (optional)
- [sorunome/mx-puppet-skype](https://hub.docker.com/r/sorunome/mx-puppet-skype) - the [mx-puppet-skype](https://github.com/Sorunome/mx-puppet-skype) bridge to [Skype](https:/www.skype.com) (optional) - [sorunome/mx-puppet-skype](https://hub.docker.com/r/sorunome/mx-puppet-skype) - the [mx-puppet-skype](https://github.com/Sorunome/mx-puppet-skype) bridge to [Skype](https:/www.skype.com) (optional)
- [sorunome/mx-puppet-slack](https://hub.docker.com/r/sorunome/mx-puppet-slack) - the [mx-puppet-slack](https://github.com/Sorunome/mx-puppet-slack) bridge to [Slack](https:/slack.com) (optional) - [sorunome/mx-puppet-slack](https://hub.docker.com/r/sorunome/mx-puppet-slack) - the [mx-puppet-slack](https://github.com/Sorunome/mx-puppet-slack) bridge to [Slack](https:/slack.com) (optional)

View File

@ -0,0 +1,24 @@
# Setting up matrix-sms-bridge (optional)
The playbook can install and configure
[matrix-sms-brdige](https://github.com/benkuly/matrix-sms-bridge) for you.
See the project page to learn what it does and why it might be useful to you.
To enable the bridge just use the following
playbook configuration:
```yaml
matrix_sms_bridge_enabled: true
matrix_sms_bridge_gammu_modem: "/path/to/modem"
# generate a secret passwort e.g. with pwgen -s 64 1
matrix_sms_bridge_database_password: ""
# (optional) a room id to a default room
matrix_sms_bridge_default_room: ""
```
## Usage
Read the [user guide](https://github.com/benkuly/matrix-sms-bridge/blob/master/README.md#user-guide) to see how this bridge works.

View File

@ -102,3 +102,5 @@ When you're done with all the configuration you'd like to do, continue with [Ins
- [Setting up MX Puppet Slack bridging](configuring-playbook-bridge-mx-puppet-slack.md) (optional) - [Setting up MX Puppet Slack bridging](configuring-playbook-bridge-mx-puppet-slack.md) (optional)
- [Setting up Email2Matrix](configuring-playbook-email2matrix.md) (optional) - [Setting up Email2Matrix](configuring-playbook-email2matrix.md) (optional)
- [Setting up Matrix SMS bridging](configuring-playbook-matrix-sms-bridge.md) (optional)

View File

@ -324,8 +324,6 @@ matrix_sms_bridge_appservice_token: "{{ matrix_synapse_macaroon_secret_key | pas
matrix_sms_bridge_homeserver_token: "{{ matrix_synapse_macaroon_secret_key | password_hash('sha512', 'sms.hs.token') | to_uuid }}" matrix_sms_bridge_homeserver_token: "{{ matrix_synapse_macaroon_secret_key | password_hash('sha512', 'sms.hs.token') | to_uuid }}"
matrix_sms_bridge_database_password: "{{ matrix_synapse_macaroon_secret_key | password_hash('sha512', 'sms.db.password') | to_uuid }}"
###################################################################### ######################################################################
# #
# /matrix-sms-bridge # /matrix-sms-bridge

View File

@ -31,11 +31,13 @@ matrix_sms_bridge_container_http_host_bind_port: ''
# A list of extra arguments to pass to the container # A list of extra arguments to pass to the container
matrix_sms_bridge_container_extra_arguments: [] matrix_sms_bridge_container_extra_arguments: []
# List of systemd services that matrix-appservice-discord.service depends on. # List of systemd services that service depends on.
matrix_sms_bridge_systemd_required_services_list: ['docker.service'] matrix_sms_bridge_systemd_required_services_list: ['docker.service','matrix-sms-bridge-database.service']
matrix_sms_bridge_database_systemd_required_services_list: ['docker.service']
# List of systemd services that matrix-appservice-discord.service wants # List of systemd services that service wants
matrix_sms_bridge_systemd_wanted_services_list: [] matrix_sms_bridge_systemd_wanted_services_list: []
matrix_sms_bridge_database_systemd_wanted_services_list: []
matrix_sms_bridge_appservice_url: 'http://matrix-sms-bridge:8080' matrix_sms_bridge_appservice_url: 'http://matrix-sms-bridge:8080'
matrix_sms_bridge_database_url: 'bolt://matrix-sms-bridge-database:7687' matrix_sms_bridge_database_url: 'bolt://matrix-sms-bridge-database:7687'

View File

@ -66,7 +66,14 @@
mode: 0644 mode: 0644
register: matrix_sms_bridge_systemd_service_result register: matrix_sms_bridge_systemd_service_result
- name: Ensure systemd reloaded after matrix-sms-bridge.service installation - name: Ensure matrix-sms-bridge-database.service installed
template:
src: "{{ role_path }}/templates/systemd/matrix-sms-bridge-database.service.j2"
dest: "{{ matrix_systemd_path }}/matrix-sms-bridge-database.service"
mode: 0644
register: matrix_sms_bridge_database_systemd_service_result
- name: Ensure systemd reloaded after matrix-sms-bridge.service or matrix-sms-bridge-database.service installation
service: service:
daemon_reload: yes daemon_reload: yes
when: "matrix_sms_bridge_systemd_service_result.changed" when: matrix_sms_bridge_systemd_service_result.changed or matrix_sms_bridge_database_systemd_service_result.changed

View File

@ -5,6 +5,11 @@
path: "{{ matrix_systemd_path }}/matrix-sms-bridge.service" path: "{{ matrix_systemd_path }}/matrix-sms-bridge.service"
register: matrix_sms_bridge_service_stat register: matrix_sms_bridge_service_stat
- name: Check existence of matrix-sms-bridge-database service
stat:
path: "{{ matrix_systemd_path }}/matrix-sms-bridge-database.service"
register: matrix_sms_bridge_database_service_stat
- name: Ensure matrix-sms-bridge is stopped - name: Ensure matrix-sms-bridge is stopped
service: service:
name: matrix-sms-bridge name: matrix-sms-bridge
@ -12,13 +17,26 @@
daemon_reload: yes daemon_reload: yes
when: "matrix_sms_bridge_service_stat.stat.exists" when: "matrix_sms_bridge_service_stat.stat.exists"
- name: Ensure matrix-sms-bridge-database is stopped
service:
name: matrix-sms-bridge-database
state: stopped
daemon_reload: yes
when: "matrix_sms_bridge_database_service_stat.stat.exists"
- name: Ensure matrix-sms-bridge.service doesn't exist - name: Ensure matrix-sms-bridge.service doesn't exist
file: file:
path: "{{ matrix_systemd_path }}/matrix-sms-bridge.service" path: "{{ matrix_systemd_path }}/matrix-sms-bridge.service"
state: absent state: absent
when: "matrix_sms_bridge_service_stat.stat.exists" when: "matrix_sms_bridge_service_stat.stat.exists"
- name: Ensure systemd reloaded after matrix-sms-bridge.service removal - name: Ensure matrix-sms-bridge-database.service doesn't exist
file:
path: "{{ matrix_systemd_path }}/matrix-sms-bridge-database.service"
state: absent
when: "matrix_sms_bridge_database_service_stat.stat.exists"
- name: Ensure systemd reloaded after matrix-sms-bridge.service or matrix-sms-bridge-database.service removal
service: service:
daemon_reload: yes daemon_reload: yes
when: "matrix_sms_bridge_service_stat.stat.exists" when: matrix_sms_bridge_service_stat.stat.exists or matrix_sms_bridge_database_service_stat.stat.exists

View File

@ -0,0 +1,36 @@
#jinja2: lstrip_blocks: "True"
[Unit]
Description=matrix-sms-bridge-database server
{% for service in matrix_sms_bridge_database_systemd_required_services_list %}
Requires={{ service }}
After={{ service }}
{% endfor %}
{% for service in matrix_sms_bridge_database_systemd_wanted_services_list %}
Wants={{ service }}
{% endfor %}
[Service]
Type=simple
ExecStartPre=-/usr/bin/docker kill matrix-sms-bridge-database
ExecStartPre=-/usr/bin/docker rm matrix-sms-bridge-database
# Intentional delay, so that the homeserver (we likely depend on) can manage to start.
ExecStartPre=/bin/sleep 5
ExecStart=/usr/bin/docker run --rm --name matrix-sms-bridge-database \
--log-driver=none \
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
--cap-drop=ALL \
--network={{ matrix_docker_network }} \
-v {{ matrix_sms_bridge_database_path }}:/data:z \
-e NEO4J_AUTH={{ matrix_sms_bridge_database_username }}/{{ matrix_sms_bridge_database_password }} \
{{ matrix_sms_bridge_database_docker_image }}
ExecStop=-/usr/bin/docker kill matrix-sms-bridge-database
ExecStop=-/usr/bin/docker rm matrix-sms-bridge-database
Restart=always
RestartSec=30
SyslogIdentifier=matrix-sms-bridge
[Install]
WantedBy=multi-user.target

View File

@ -13,20 +13,6 @@ Wants={{ service }}
Type=simple Type=simple
ExecStartPre=-/usr/bin/docker kill matrix-sms-bridge ExecStartPre=-/usr/bin/docker kill matrix-sms-bridge
ExecStartPre=-/usr/bin/docker rm matrix-sms-bridge ExecStartPre=-/usr/bin/docker rm matrix-sms-bridge
ExecStartPre=-/usr/bin/docker kill matrix-sms-bridge-database
ExecStartPre=-/usr/bin/docker rm matrix-sms-bridge-database
ExecStartPre=/usr/bin/docker run --rm --name matrix-sms-bridge-database \
--log-driver=none \
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
--cap-drop=ALL \
--network={{ matrix_docker_network }} \
{% if matrix_sms_bridge_container_http_host_bind_port %}
-p {{ matrix_sms_bridge_container_http_host_bind_port }}:7687 \
{% endif %}
-v {{ matrix_sms_bridge_database_path }}:/data:z \
-e NEO4J_AUTH={{ matrix_sms_bridge_database_username }}/{{ matrix_sms_bridge_database_password }}
{{ matrix_sms_bridge_database_docker_image }}
# Intentional delay, so that the homeserver (we likely depend on) can manage to start. # Intentional delay, so that the homeserver (we likely depend on) can manage to start.
ExecStartPre=/bin/sleep 5 ExecStartPre=/bin/sleep 5
@ -41,7 +27,7 @@ ExecStart=/usr/bin/docker run --rm --name matrix-sms-bridge \
{% endif %} {% endif %}
-v {{ matrix_sms_bridge_config_path }}:/config:z \ -v {{ matrix_sms_bridge_config_path }}:/config:z \
-v {{ matrix_sms_bridge_data_path }}:/data:z \ -v {{ matrix_sms_bridge_data_path }}:/data:z \
--device {{ matrix_sms_bridge_gammu_modem }}:/dev/ttyModem --device {{ matrix_sms_bridge_gammu_modem }}:/dev/ttyModem \
{% for arg in matrix_sms_bridge_container_extra_arguments %} {% for arg in matrix_sms_bridge_container_extra_arguments %}
{{ arg }} \ {{ arg }} \
{% endfor %} {% endfor %}
@ -49,8 +35,6 @@ ExecStart=/usr/bin/docker run --rm --name matrix-sms-bridge \
ExecStop=-/usr/bin/docker kill matrix-sms-bridge ExecStop=-/usr/bin/docker kill matrix-sms-bridge
ExecStop=-/usr/bin/docker rm matrix-sms-bridge ExecStop=-/usr/bin/docker rm matrix-sms-bridge
ExecStop=-/usr/bin/docker kill matrix-sms-database
ExecStop=-/usr/bin/docker rm matrix-sms-database
Restart=always Restart=always
RestartSec=30 RestartSec=30
SyslogIdentifier=matrix-sms-bridge SyslogIdentifier=matrix-sms-bridge