{"id":19220127,"url":"https://github.com/teonite/matrix","last_synced_at":"2025-08-12T01:24:10.589Z","repository":{"id":181826961,"uuid":"662089374","full_name":"teonite/matrix","owner":"teonite","description":"Easy \u0026 automated Matrix, Element and Bridges deployment using Kubernetes","archived":false,"fork":false,"pushed_at":"2024-02-05T08:25:36.000Z","size":302,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-07-11T15:32:49.856Z","etag":null,"topics":["bots","bridge","deployment","kubernetes","matrix","synapse"],"latest_commit_sha":null,"homepage":"","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/teonite.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-04T10:29:48.000Z","updated_at":"2025-01-11T06:05:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"86d60207-9e3e-40cc-9e63-f231823ce903","html_url":"https://github.com/teonite/matrix","commit_stats":null,"previous_names":["teonite/matrix"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/teonite/matrix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teonite%2Fmatrix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teonite%2Fmatrix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teonite%2Fmatrix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teonite%2Fmatrix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/teonite","download_url":"https://codeload.github.com/teonite/matrix/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teonite%2Fmatrix/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269983936,"owners_count":24507709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-11T02:00:10.019Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bots","bridge","deployment","kubernetes","matrix","synapse"],"created_at":"2024-11-09T14:34:06.108Z","updated_at":"2025-08-12T01:24:10.549Z","avatar_url":"https://github.com/teonite.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\n   This section contains badges, but they do not function in private repositories.\n--\u003e\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n\n[contributors-shield]: https://img.shields.io/github/contributors/teonite/matrix.svg?style=for-the-badge\n[contributors-url]: https://github.com/teonite/matrix/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/teonite/matrix.svg?style=for-the-badge\n[forks-url]: https://github.com/teonite/matrix/network/members\n[stars-shield]: https://img.shields.io/github/stars/teonite/matrix.svg?style=for-the-badge\n[stars-url]: https://github.com/teonite/matrix/stargazers\n[issues-shield]: https://img.shields.io/github/issues/teonite/matrix.svg?style=for-the-badge\n[issues-url]: https://github.com/teonite/matrix/issues\n\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n   \u003ch3 align=\"center\"\u003eAutomated Matrix (\u003ca href=\"https://github.com/matrix-org/synapse\"\u003esynapse\u003c/a\u003e) deployment with  appservices integration\u003c/h3\u003e\n   \u003cp align=\"center\"\u003e\n      \u003ca href=\"https://teonite.com\" target=\"_blank\"\u003e\u003cimg src=\"https://drive.google.com/uc?export=view\u0026id=1z0fxSsZztoaeVWxHw2MbPbuOHMe3OsqN\" alt=\"build by teonite\" /\u003e\u003c/a\u003e\n   \u003c/p\u003e\n   \u003cp align=\"center\"\u003e\n   This repository provides an automated setup for \u003ca href=\"https://github.com/vector-im/element-web\"\u003eelement-web\u003c/a\u003e and \u003ca href=\"https://github.com/matrix-org/synapse\"\u003esynapse\u003c/a\u003e with appservices for Kubernetes cluster deployment.\n    \u003cbr /\u003e\n   \u003c/p\u003e\n\n   \u003cp align=\"right\"\u003e\n      \u003ca href=\"https://github.com/teonite/matrix/issues/new\"\u003eRequest Feature\u003c/a\u003e\n      ·\n      \u003ca href=\"https://github.com/teonite/matrix/issues/new\"\u003eReport Bug\u003c/a\u003e\n   \u003c/p\u003e\n\n\u003c/div\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\u003ca href=\"#about-the-repository\"\u003eAbout the Repository\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#element-installation\"\u003eElement-web Installation\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#installing-element-web-separately\"\u003eInstalling element-web separately\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#synapse-installation\"\u003eSynapse\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#updating-an-already-existing-synapse-server-with-new-appservices\"\u003eUpdating an already existing synapse server with new appservices\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#installing-matrix-hookshot\"\u003eInstalling hookshot\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#installing-mautrix-telegram\"\u003eInstalling Mautrix Telegram\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Updating configuration of already running appservices\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#updating-running-matrix-hookshot-config\"\u003eUpdating running matrix-hookshot config\u003c/a\u003e\u003c/li\u003e\n        \u003c!-- \u003cli\u003e\u003ca href=\"#updating-running-mautrix-telegram-config\"\u003eUpdating running mautrix-telegram config\u003c/a\u003e\u003c/li\u003e --\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n## About the repository\n\nThe purpose of this repository is to provide an **easy** way to **automate** the launch process using a combination of [element-web](https://github.com/vector-im/element-web), [synapse server](https://github.com/matrix-org/synapse), [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) and [mautrix-telegram](https://github.com/mautrix/telegram).\n\nThe repository contains configurations and instructions for integrating the aforementioned application services, allowing external services to interact with the Matrix network. This enables automation of various tasks and workflows.\n\nUsing this repository, users can effortlessly configure and set up the necessary components to automate the process of running the Synapse server and all related application services.\n\nWe utilized [Defguard](https://defguard.net/) as our OpenID Connect provider. For further information on its usage and setup instructions, please refer to their [documentation](https://defguard.gitbook.io/defguard/).\n\n\u003cbr\u003e\n\n## Prerequisites\n\nBefore integrating, ensure you have the following prerequisites:\n\n- **kubectl**: Install kubectl, the command-line tool for Kubernetes clusters. Refer to the [official kubectl documentation](https://kubernetes.io/docs/tasks/tools/#kubectl) for instructions.\n\n- **Kubernetes**: Install and configure Kubernetes using `kubectl`. Refer to the [official Kubernetes documentation](https://kubernetes.io/docs/setup/) for instructions.\n\n- **Helm**: Install Helm for managing applications on Kubernetes clusters. Refer to the [official Helm documentation](https://helm.sh/docs/intro/install/) for instructions.\n\n\u003cbr\u003e\n\n## Getting Started\n\nTo begin, you don't necessarily need to modify any variables inside the `config/config.sh` file, but in most cases, it is recommended to consider changing the namespace and cluster name.\n\nFollow the steps below to get started:\n\n1. Run the `make init` command to create configuration files from templates. \n\n2. Configure the files inside the `config/` directory.\n\n   \u003e **NOTE:** In the files provided in the `config/` directory, make sure to replace all instances of the **openearth.space** domain with your domain name.\n\n3. After configuring the files, if you want a full setup, execute the following command:\n\n   ```bash\n   make install_full\n   ```\n\n   This command will install element-web and synapse server with all appservices.\n\n\u003cbr\u003e\n\nIf you want to install appservices to an existing Synapse server, only install Element Web, or solely install the Synapse server, please refer to the appropriate sections below:\n\n- [element-web](#installing-element-web-separately)\n- [synapse](#synapse-installation)\n- [matrix-hookshot](#installing-matrix-hookshot)\n- [mautrix-telegram](#installing-mautrix-telegram)\n\n\u003cbr\u003e\n\n## Installing element-web separately\n\nTo install Element Web separately, follow these straightforward steps after ensuring that the namespace and cluster_name in the `config/config.sh` file align with your specific requirements:\n\n1. Run the `make init` command to generate the element-web configuration file.\n\n2. Edit the values inside `config/element-web.yaml`.\n\n3. Execute the following command:\n\n   ```bash\n   make install_element_web\n   ```\n\n   This command will initiate the installation of element-web, by default element-web will create ingress on ***chat.openearth.space***.\n\n\u003cbr\u003e\n\n## Synapse Installation\n\nTo operate a federating Matrix server, you must have a publicly accessible subdomain with a Kubernetes ingress (which will be automatically created). If you intend to utilize a well-known entry, you must obtain a valid certificate for the desired subdomain to serve Synapse. Furthermore, if you opt for an SRV record, you will need a valid certificate for the main domain used for your MXIDs.\n\n\u003cbr\u003e\n\nIf you wish not to install appservices with synapse server, follow those steps:\n\n1. Run the `make init` command to generate the necessary configuration files.\n\n2. Edit `/config/synapse.yaml` and ensure the removal of any undesired app services configuration file paths and volumes contained within.\n\n3. Execute the following command:\n\n   ```bash\n   make install_synapse\n   ```\n\n   \u003e _**NOTE:**_ Additional configuration and setup may be required based on your specific requirements.\n\n\u003cbr\u003e\n\n## Updating an already existing synapse server with new appservices\n\n   To update an existing Synapse server with new app services, you need to add the following lines to your Matrix-Synapse config map.\n\n   1. Begin by running `make init`. Modify the files within the `/config/` directory, excluding `element-web.yaml` and `synapse.yaml`. Remember to adjust the values in `config.sh` to match your Kubernetes setup.\n\n   2. Access the kubernetes dashboard and locate the Synapse server config map. In the `homeserver.yaml` value, incorporate the following lines:\n\n\n      ```yaml\n         app_service_config_files:\n            - /synapse/config/hookshot/registration.yml\n            - /synapse/config/telegram/registration.yml\n      ```\n\n      If you desire your app services to function in end-to-end encrypted rooms, include the subsequent lines:   \n      \n      ```yaml\n         experimental_features:\n            msc2409_to_device_messages_enabled: true\n            msc3202_device_masquerading: true\n            msc3202_transaction_extensions: true\n      ```\n\n\n   2. Open the Synapse server deployment file within the kubernetes dashboard. Locate the `volumes` section and append:\n\n      ```yaml\n         - configMap:\n            defaultMode: 420\n            name: registration-hookshot\n         name: hookshot\n         - configMap:\n            defaultMode: 420\n            name: registration-telegram\n         name: telegram\n      ```\n\n      Find the `volumeMounts` section and include:\n\n      ```yaml\n         - mountPath: /synapse/config/hookshot\n            name: hookshot\n         - mountPath: /synapse/config/telegram\n            name: telegram\n      ```\n\n   Ensure that no syntax errors are introduced.\n\n   3. Execute  `make update_synapse_server`.\n\n\u003cbr\u003e\n\n## Installing matrix-hookshot\n\n   Make sure your synapse server is running before installing matrix-hookshot. If it's not running, refer to [this section](#synapse-installation) for instructions.\n\n   To match your Kubernetes setup, modify the values in `/config/config.sh` and then run `make init`. \n\n1. Open `config/hookshot` folder and edit files inside as needed.\n\n2. Execute:\n   ```\n   make install_hookshot\n   ```\n\n3. Access the Kubernetes dashboard and find the config map for the Synapse server. Add the following lines to the homeserver.yaml value:\n\n      ```yaml\n         app_service_config_files:\n            - /synapse/config/hookshot/registration.yml\n      ```\n\n      If you desire hookshot to function in end-to-end encrypted rooms, include the subsequent lines:   \n      \n      ```yaml\n         experimental_features:\n            msc2409_to_device_messages_enabled: true\n            msc3202_device_masquerading: true\n            msc3202_transaction_extensions: true\n      ```\n\n\n4. Open the Synapse server deployment file within the kubernetes dashboard. Locate the `volumes` section and append:\n\n      ```yaml\n         - configMap:\n            defaultMode: 420\n            name: registration-hookshot\n         name: hookshot\n      ```\n\n      Find the `volumeMounts` section and include:\n\n      ```yaml\n            - mountPath: /synapse/config/hookshot\n               name: hookshot\n      ```\n\n      Ensure that no syntax errors are introduced.\n\nKeep in mind that hookshot need some time to start responding or joining rooms\n\n\u003e For more detailed setup instructions, refer to the [official guide](https://matrix-org.github.io/matrix-hookshot/latest/setup.html).\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Installing mautrix-telegram\n\n\n   Make sure your synapse server is running before installing matrix-hookshot. If it's not running, refer to [this section](#synapse-installation) for instructions.\n\n   To match your Kubernetes setup, modify the values in `/config/config.sh` and then run `make init`. \n\n1. Open `config/telegram` folder and edit files inside as needed.\n\n2. Execute:\n   ```\n   make install_telegram\n   ```\n\n3. Access the Kubernetes dashboard and find the config map for the Synapse server. Add the following lines to the homeserver.yaml value:\n\n      ```yaml\n         app_service_config_files:\n            - /synapse/config/telegram/registration.yml\n      ```\n\n      If you desire mautrix-telegram to function in end-to-end encrypted rooms, include the subsequent lines:   \n      \n      ```yaml\n         experimental_features:\n            msc2409_to_device_messages_enabled: true\n            msc3202_device_masquerading: true\n            msc3202_transaction_extensions: true\n      ```\n\n\n4. Open the Synapse server deployment file within the kubernetes dashboard. Locate the `volumes` section and append:\n\n      ```yaml\n         - configMap:\n            defaultMode: 420\n            name: registration-telegram\n         name: telegram\n      ```\n\n      Find the `volumeMounts` section and include:\n\n      ```yaml\n            - mountPath: /synapse/config/telegram\n               name: telegram\n      ```\n\n      Ensure that no syntax errors are introduced.\n\n\n\n\u003cbr\u003e\n\n## Updating running matrix-hookshot config\n\n   Updating already running matrix-hookshot config is straight forward:\n\n   1. Execute `make pull_hookshot_config`\n   2. Edit files inside `/temp/` directory\n   3. Execute `make update_hookshot_config`\n\n\u003cbr\u003e\n\n\u003chr\u003e\n\n\u003cp align=\"center\"\u003e\n   \u003ca href=\"https://github.com/teonite/matrix/issues/new\"\u003eRequest Feature\u003c/a\u003e\n   ·\n   \u003ca href=\"https://github.com/teonite/matrix/issues/new\"\u003eReport Bug\u003c/a\u003e\n\u003c/p\u003e\n\u003chr\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteonite%2Fmatrix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fteonite%2Fmatrix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteonite%2Fmatrix/lists"}