Mautrix whatsapppull/21/head
| @@ -2,7 +2,7 @@ | |||
| The playbook can install and configure [mautrix-telegram](https://github.com/tulir/mautrix-telegram) for you. | |||
| See that project's [documentation](https://github.com/tulir/mautrix-telegram/wiki#usage) to learn what it does and why it might be useful to you. | |||
| See the project's [documentation](https://github.com/tulir/mautrix-telegram/wiki#usage) to learn what it does and why it might be useful to you. | |||
| You'll need to obtain API keys from `https://my.telegram.org/apps` and then use the following playbook configuration: | |||
| ``` | |||
| @@ -10,3 +10,5 @@ matrix_mautrix_telegram_enabled: true | |||
| matrix_mautrix_telegram_api_id: YOUR_TELEGRAM_APP_ID | |||
| matrix_mautrix_telegram_api_hash: YOUR_TELEGRAM_API_HASH | |||
| ``` | |||
| You then need to start a chat with `@telegrambot:{{ hostname_identity }}` | |||
| @@ -0,0 +1,12 @@ | |||
| # Setting up Mautrix Whatsapp | |||
| The playbook can install and configure [mautrix-whatsapp](https://github.com/tulir/mautrix-whatsapp) for you. | |||
| See the project's [documentation](https://github.com/tulir/mautrix-whatsapp/wiki) to learn what it does and why it might be useful to you. | |||
| Use the following playbook configuration: | |||
| ``` | |||
| matrix_mautrix_whatsapp_enabled: true | |||
| ``` | |||
| You then need to start a chat with `@whatsappbot:{{ hostname_identity }}` | |||
| @@ -137,6 +137,7 @@ matrix_coturn_base_path: "{{ matrix_base_data_path }}/coturn" | |||
| matrix_coturn_config_path: "{{ matrix_coturn_base_path }}/turnserver.conf" | |||
| matrix_scratchpad_dir: "{{ matrix_base_data_path }}/scratchpad" | |||
| matrix_mautrix_telegram_base_path: "{{ matrix_base_data_path }}/mautrix-telegram" | |||
| matrix_mautrix_whatsapp_base_path: "{{ matrix_base_data_path }}/mautrix-whatsapp" | |||
| matrix_static_files_base_path: "{{ matrix_base_data_path }}/static-files" | |||
| matrix_docker_image_postgres_v9: "postgres:9.6.10-alpine" | |||
| @@ -151,6 +152,7 @@ matrix_docker_image_coturn: "instrumentisto/coturn:4.5.0.8" | |||
| matrix_docker_image_mailer: "panubo/postfix:latest" | |||
| matrix_docker_image_mxisd: "kamax/mxisd:1.1.1" | |||
| matrix_docker_image_mautrix_telegram: "tulir/mautrix-telegram:v0.3.0" | |||
| matrix_docker_image_mautrix_whatsapp: "tulir/mautrix-whatsapp:latest" | |||
| # The Docker network that all services would be put into | |||
| matrix_docker_network: "matrix" | |||
| @@ -252,6 +254,9 @@ matrix_mautrix_telegram_api_hash: YOUR_TELEGRAM_API_HASH | |||
| # Use an uuid so it's not easily discoverable | |||
| matrix_mautrix_telegram_public_endpoint: "/{{ matrix_synapse_macaroon_secret_key | password_hash('sha512', 'telegram') | to_uuid }}" | |||
| # Matrix mautrix is a Matrix <-> Whatsapp bridge | |||
| # Enable whatsapp bridge | |||
| matrix_mautrix_whatsapp_enabled: false | |||
| # By default, this playbook sets up its own nginx proxy server on port 80/443. | |||
| # This is fine if you're dedicating the whole server to Matrix. | |||
| @@ -5,3 +5,5 @@ | |||
| - include: tasks/setup/setup_synapse_ext_shared_secret_auth.yml | |||
| - include: tasks/setup/setup_synapse_ext_mautrix_telegram.yml | |||
| - include: tasks/setup/setup_synapse_ext_mautrix_whatsapp.yml | |||
| @@ -34,11 +34,11 @@ | |||
| when: "matrix_mautrix_telegram_enabled" | |||
| - stat: "path={{ matrix_mautrix_telegram_base_path }}/registration.yaml" | |||
| register: mautrix_registration_file | |||
| register: mautrix_telegram_registration_file | |||
| - name: Generate matrix-mautrix-telegram registration.yaml if it doesn't exist | |||
| shell: /usr/bin/docker run --rm --name matrix-mautrix-telegram-gen -v {{ matrix_mautrix_telegram_base_path }}:/data:z {{ matrix_docker_image_mautrix_telegram }} python3 -m mautrix_telegram -g -c /data/config.yaml -r /data/registration.yaml | |||
| when: "matrix_mautrix_telegram_enabled and mautrix_registration_file.stat.exists == False" | |||
| when: "matrix_mautrix_telegram_enabled and mautrix_telegram_registration_file.stat.exists == False" | |||
| - set_fact: | |||
| matrix_synapse_app_service_config_file_mautrix_telegram: '/app-registration/mautrix-telegram.yml' | |||
| @@ -0,0 +1,68 @@ | |||
| --- | |||
| - name: Ensure Mautrix Whatsapp image is pulled | |||
| docker_image: | |||
| name: "{{ matrix_docker_image_mautrix_whatsapp }}" | |||
| when: "matrix_mautrix_whatsapp_enabled" | |||
| - name: Ensure Mautrix Whatsapp configuration path exists | |||
| file: | |||
| path: "{{ matrix_mautrix_whatsapp_base_path }}" | |||
| state: directory | |||
| mode: 0750 | |||
| owner: "{{ matrix_user_username }}" | |||
| group: "{{ matrix_user_username }}" | |||
| when: "matrix_mautrix_whatsapp_enabled" | |||
| - stat: "path={{ matrix_mautrix_whatsapp_base_path }}/config.yaml" | |||
| register: mautrix_config_file | |||
| - name: Ensure Matrix Mautrix whatsapp config installed | |||
| template: | |||
| src: "{{ role_path }}/templates/mautrix-whatsapp/config.yaml.j2" | |||
| dest: "{{ matrix_mautrix_whatsapp_base_path }}/config.yaml" | |||
| mode: 0644 | |||
| owner: "{{ matrix_user_username }}" | |||
| group: "{{ matrix_user_username }}" | |||
| when: "matrix_mautrix_whatsapp_enabled and mautrix_config_file.stat.exists == False" | |||
| - name: Ensure matrix-mautrix-whatsapp.service installed | |||
| template: | |||
| src: "{{ role_path }}/templates/systemd/matrix-mautrix-whatsapp.service.j2" | |||
| dest: "/etc/systemd/system/matrix-mautrix-whatsapp.service" | |||
| mode: 0644 | |||
| when: "matrix_mautrix_whatsapp_enabled" | |||
| - stat: "path={{ matrix_mautrix_whatsapp_base_path }}/registration.yaml" | |||
| register: mautrix_whatsapp_registration_file | |||
| - name: Generate matrix-mautrix-whatsapp registration.yaml if it doesn't exist | |||
| shell: /usr/bin/docker run --rm --name matrix-mautrix-whatsapp-gen -v {{ matrix_mautrix_whatsapp_base_path }}:/data:z {{ matrix_docker_image_mautrix_whatsapp }} /usr/bin/mautrix-whatsapp -g -c /data/config.yaml -r /data/registration.yaml | |||
| when: "matrix_mautrix_whatsapp_enabled and mautrix_whatsapp_registration_file.stat.exists == False" | |||
| - set_fact: | |||
| matrix_synapse_app_service_config_file_mautrix_whatsapp: '/app-registration/mautrix-whatsapp.yml' | |||
| - set_fact: | |||
| matrix_synapse_container_additional_volumes: > | |||
| {{ matrix_synapse_container_additional_volumes }} | |||
| + | |||
| {{ [{'src': '{{ matrix_mautrix_whatsapp_base_path }}/registration.yaml', 'dst': '{{ matrix_synapse_app_service_config_file_mautrix_whatsapp }}', 'options': 'ro'}] }} | |||
| when: "matrix_mautrix_whatsapp_enabled" | |||
| - set_fact: | |||
| matrix_synapse_app_service_config_files: > | |||
| {{ matrix_synapse_app_service_config_files }} | |||
| + | |||
| {{ ["{{ matrix_synapse_app_service_config_file_mautrix_whatsapp }}"] | to_nice_json }} | |||
| when: "matrix_mautrix_whatsapp_enabled" | |||
| # | |||
| # Tasks related to getting rid of matrix-mautrix-whatsapp (if it was previously enabled) | |||
| # | |||
| - name: Ensure matrix-mautrix-whatsapp.service doesn't exist | |||
| file: | |||
| path: "/etc/systemd/system/matrix-mautrix-whatsapp.service" | |||
| state: absent | |||
| when: "not matrix_mautrix_whatsapp_enabled" | |||
| @@ -37,3 +37,7 @@ | |||
| - name: Ensure matrix-mautrix-telegram autoruns and is restarted | |||
| service: name=matrix-mautrix-telegram enabled=yes state=restarted daemon_reload=yes | |||
| when: matrix_mautrix_telegram_enabled | |||
| - name: Ensure matrix-mautrix-whatsapp autoruns and is restarted | |||
| service: name=matrix-mautrix-whatsapp enabled=yes state=restarted daemon_reload=yes | |||
| when: matrix_mautrix_whatsapp_enabled | |||
| @@ -0,0 +1,86 @@ | |||
| # Homeserver details. | |||
| homeserver: | |||
| # The address that this appservice can use to connect to the homeserver. | |||
| address: https://{{ hostname_matrix }} | |||
| # The domain of the homeserver (for MXIDs, etc). | |||
| domain: {{ hostname_identity }} | |||
| # Application service host/registration related details. | |||
| # Changing these values requires regeneration of the registration. | |||
| appservice: | |||
| # The address that the homeserver can use to connect to this appservice. | |||
| address: http://matrix-mautrix-whatsapp:8080 | |||
| # The hostname and port where this appservice should listen. | |||
| hostname: 0.0.0.0 | |||
| port: 8080 | |||
| # Database config. | |||
| database: | |||
| # The database type. Only "sqlite3" is supported. | |||
| type: sqlite3 | |||
| # The database URI. Usually file name. https://github.com/mattn/go-sqlite3#connection-string | |||
| uri: mautrix-whatsapp.db | |||
| # Path to the Matrix room state store. | |||
| state_store_path: ./mx-state.json | |||
| # The unique ID of this appservice. | |||
| id: whatsapp | |||
| # Appservice bot details. | |||
| bot: | |||
| # Username of the appservice bot. | |||
| username: whatsappbot | |||
| # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty | |||
| # to leave display name/avatar as-is. | |||
| displayname: WhatsApp bridge bot | |||
| avatar: remove | |||
| # Authentication tokens for AS <-> HS communication. Autogenerated; do not modify. | |||
| as_token: "This value is generated when generating the registration" | |||
| hs_token: "This value is generated when generating the registration" | |||
| # Bridge config. Currently unused. | |||
| bridge: | |||
| # {% raw %} | |||
| # protecting the go templates inside the raw section. | |||
| # Localpart template of MXIDs for WhatsApp users. | |||
| # {{.}} is replaced with the phone number of the WhatsApp user. | |||
| username_template: whatsapp_{{.}} | |||
| # Displayname template for WhatsApp users. | |||
| # {{.Notify}} - nickname set by the WhatsApp user | |||
| # {{.Jid}} - phone number (international format) | |||
| # The following variables are also available, but will cause problems on multi-user instances: | |||
| # {{.Name}} - display name from contact list | |||
| # {{.Short}} - short display name from contact list | |||
| displayname_template: "{{if .Notify}}{{.Notify}}{{else}}{{.Jid}}{{end}} (WA)" | |||
| # {% endraw %} | |||
| # The prefix for commands. Only required in non-management rooms. | |||
| command_prefix: "!wa" | |||
| # Permissions for using the bridge. | |||
| # Permitted values: | |||
| # user - Access to use the bridge to chat with a WhatsApp account. | |||
| # admin - User level and some additional administration tools | |||
| # Permitted keys: | |||
| # * - All Matrix users | |||
| # domain - All users on that homeserver | |||
| # mxid - Specific user | |||
| permissions: | |||
| '{{ hostname_identity }}': user | |||
| # Logging config. | |||
| logging: | |||
| # The directory for log files. Will be created if not found. | |||
| directory: ./logs | |||
| # Available variables: .Date for the file date and .Index for different log files on the same day. | |||
| file_name_format: {% raw %}"{{.Date}}-{{.Index}}.log"{% endraw %} | |||
| # Date format for file names in the Go time format: https://golang.org/pkg/time/#pkg-constants | |||
| file_date_format: 2006-01-02 | |||
| # Log file permissions. | |||
| file_mode: 0600 | |||
| # Timestamp format for log entries in the Go time format. | |||
| timestamp_format: Jan _2, 2006 15:04:05 | |||
| # Minimum severity for log messages. | |||
| # Options: debug, info, warn, error, fatal | |||
| print_level: debug | |||
| @@ -0,0 +1,24 @@ | |||
| [Unit] | |||
| Description=Matrix Mautrix Whatsapp server | |||
| After=docker.service | |||
| Requires=docker.service | |||
| Requires=matrix-synapse.service | |||
| After=matrix-synapse.service | |||
| [Service] | |||
| Type=simple | |||
| ExecStartPre=-/usr/bin/docker kill matrix-mautrix-whatsapp | |||
| ExecStartPre=-/usr/bin/docker rm matrix-mautrix-whatsapp | |||
| ExecStart=/usr/bin/docker run --rm --name matrix-mautrix-whatsapp \ | |||
| --log-driver=none \ | |||
| -e "UID={{ matrix_user_uid }}" -e "GID={{ matrix_user_gid }}" \ | |||
| --network={{ matrix_docker_network }} \ | |||
| -v {{ matrix_mautrix_whatsapp_base_path }}:/data:z \ | |||
| {{ matrix_docker_image_mautrix_whatsapp }} | |||
| ExecStop=-/usr/bin/docker kill matrix-mautrix-whatsapp | |||
| ExecStop=-/usr/bin/docker rm matrix-mautrix-whatsapp | |||
| Restart=always | |||
| RestartSec=30 | |||
| [Install] | |||
| WantedBy=multi-user.target | |||