matterbridge 3.2.0-dev-20250801-e5ebd91 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/dist/cli.d.ts +26 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +91 -2
  4. package/dist/cli.js.map +1 -0
  5. package/dist/cliEmitter.d.ts +34 -0
  6. package/dist/cliEmitter.d.ts.map +1 -0
  7. package/dist/cliEmitter.js +30 -0
  8. package/dist/cliEmitter.js.map +1 -0
  9. package/dist/clusters/export.d.ts +2 -0
  10. package/dist/clusters/export.d.ts.map +1 -0
  11. package/dist/clusters/export.js +2 -0
  12. package/dist/clusters/export.js.map +1 -0
  13. package/dist/defaultConfigSchema.d.ts +28 -0
  14. package/dist/defaultConfigSchema.d.ts.map +1 -0
  15. package/dist/defaultConfigSchema.js +24 -0
  16. package/dist/defaultConfigSchema.js.map +1 -0
  17. package/dist/deviceManager.d.ts +112 -0
  18. package/dist/deviceManager.d.ts.map +1 -0
  19. package/dist/deviceManager.js +94 -1
  20. package/dist/deviceManager.js.map +1 -0
  21. package/dist/devices/batteryStorage.d.ts +48 -0
  22. package/dist/devices/batteryStorage.d.ts.map +1 -0
  23. package/dist/devices/batteryStorage.js +48 -1
  24. package/dist/devices/batteryStorage.js.map +1 -0
  25. package/dist/devices/dishwasher.d.ts +91 -0
  26. package/dist/devices/dishwasher.d.ts.map +1 -0
  27. package/dist/devices/dishwasher.js +78 -3
  28. package/dist/devices/dishwasher.js.map +1 -0
  29. package/dist/devices/evse.d.ts +75 -0
  30. package/dist/devices/evse.d.ts.map +1 -0
  31. package/dist/devices/evse.js +74 -10
  32. package/dist/devices/evse.js.map +1 -0
  33. package/dist/devices/export.d.ts +11 -0
  34. package/dist/devices/export.d.ts.map +1 -0
  35. package/dist/devices/export.js +2 -0
  36. package/dist/devices/export.js.map +1 -0
  37. package/dist/devices/extractorHood.d.ts +46 -0
  38. package/dist/devices/extractorHood.d.ts.map +1 -0
  39. package/dist/devices/extractorHood.js +42 -0
  40. package/dist/devices/extractorHood.js.map +1 -0
  41. package/dist/devices/heatPump.d.ts +47 -0
  42. package/dist/devices/heatPump.d.ts.map +1 -0
  43. package/dist/devices/heatPump.js +50 -2
  44. package/dist/devices/heatPump.js.map +1 -0
  45. package/dist/devices/laundryDryer.d.ts +87 -0
  46. package/dist/devices/laundryDryer.d.ts.map +1 -0
  47. package/dist/devices/laundryDryer.js +83 -6
  48. package/dist/devices/laundryDryer.js.map +1 -0
  49. package/dist/devices/laundryWasher.d.ts +242 -0
  50. package/dist/devices/laundryWasher.d.ts.map +1 -0
  51. package/dist/devices/laundryWasher.js +91 -7
  52. package/dist/devices/laundryWasher.js.map +1 -0
  53. package/dist/devices/roboticVacuumCleaner.d.ts +112 -0
  54. package/dist/devices/roboticVacuumCleaner.d.ts.map +1 -0
  55. package/dist/devices/roboticVacuumCleaner.js +93 -7
  56. package/dist/devices/roboticVacuumCleaner.js.map +1 -0
  57. package/dist/devices/solarPower.d.ts +40 -0
  58. package/dist/devices/solarPower.d.ts.map +1 -0
  59. package/dist/devices/solarPower.js +38 -0
  60. package/dist/devices/solarPower.js.map +1 -0
  61. package/dist/devices/waterHeater.d.ts +111 -0
  62. package/dist/devices/waterHeater.d.ts.map +1 -0
  63. package/dist/devices/waterHeater.js +82 -2
  64. package/dist/devices/waterHeater.js.map +1 -0
  65. package/dist/dgram/coap.d.ts +205 -0
  66. package/dist/dgram/coap.d.ts.map +1 -0
  67. package/dist/dgram/coap.js +126 -13
  68. package/dist/dgram/coap.js.map +1 -0
  69. package/dist/dgram/dgram.d.ts +140 -0
  70. package/dist/dgram/dgram.d.ts.map +1 -0
  71. package/dist/dgram/dgram.js +113 -2
  72. package/dist/dgram/dgram.js.map +1 -0
  73. package/dist/dgram/mb_coap.d.ts +24 -0
  74. package/dist/dgram/mb_coap.d.ts.map +1 -0
  75. package/dist/dgram/mb_coap.js +41 -3
  76. package/dist/dgram/mb_coap.js.map +1 -0
  77. package/dist/dgram/mb_mdns.d.ts +24 -0
  78. package/dist/dgram/mb_mdns.d.ts.map +1 -0
  79. package/dist/dgram/mb_mdns.js +51 -13
  80. package/dist/dgram/mb_mdns.js.map +1 -0
  81. package/dist/dgram/mdns.d.ts +288 -0
  82. package/dist/dgram/mdns.d.ts.map +1 -0
  83. package/dist/dgram/mdns.js +298 -137
  84. package/dist/dgram/mdns.js.map +1 -0
  85. package/dist/dgram/multicast.d.ts +65 -0
  86. package/dist/dgram/multicast.d.ts.map +1 -0
  87. package/dist/dgram/multicast.js +60 -1
  88. package/dist/dgram/multicast.js.map +1 -0
  89. package/dist/dgram/unicast.d.ts +56 -0
  90. package/dist/dgram/unicast.d.ts.map +1 -0
  91. package/dist/dgram/unicast.js +54 -0
  92. package/dist/dgram/unicast.js.map +1 -0
  93. package/dist/frontend.d.ts +313 -0
  94. package/dist/frontend.d.ts.map +1 -0
  95. package/dist/frontend.js +448 -23
  96. package/dist/frontend.js.map +1 -0
  97. package/dist/globalMatterbridge.d.ts +59 -0
  98. package/dist/globalMatterbridge.d.ts.map +1 -0
  99. package/dist/globalMatterbridge.js +47 -0
  100. package/dist/globalMatterbridge.js.map +1 -0
  101. package/dist/helpers.d.ts +48 -0
  102. package/dist/helpers.d.ts.map +1 -0
  103. package/dist/helpers.js +53 -0
  104. package/dist/helpers.js.map +1 -0
  105. package/dist/index.d.ts +33 -0
  106. package/dist/index.d.ts.map +1 -0
  107. package/dist/index.js +30 -1
  108. package/dist/index.js.map +1 -0
  109. package/dist/logger/export.d.ts +2 -0
  110. package/dist/logger/export.d.ts.map +1 -0
  111. package/dist/logger/export.js +1 -0
  112. package/dist/logger/export.js.map +1 -0
  113. package/dist/matter/behaviors.d.ts +2 -0
  114. package/dist/matter/behaviors.d.ts.map +1 -0
  115. package/dist/matter/behaviors.js +2 -0
  116. package/dist/matter/behaviors.js.map +1 -0
  117. package/dist/matter/clusters.d.ts +2 -0
  118. package/dist/matter/clusters.d.ts.map +1 -0
  119. package/dist/matter/clusters.js +2 -0
  120. package/dist/matter/clusters.js.map +1 -0
  121. package/dist/matter/devices.d.ts +2 -0
  122. package/dist/matter/devices.d.ts.map +1 -0
  123. package/dist/matter/devices.js +2 -0
  124. package/dist/matter/devices.js.map +1 -0
  125. package/dist/matter/endpoints.d.ts +2 -0
  126. package/dist/matter/endpoints.d.ts.map +1 -0
  127. package/dist/matter/endpoints.js +2 -0
  128. package/dist/matter/endpoints.js.map +1 -0
  129. package/dist/matter/export.d.ts +5 -0
  130. package/dist/matter/export.d.ts.map +1 -0
  131. package/dist/matter/export.js +3 -0
  132. package/dist/matter/export.js.map +1 -0
  133. package/dist/matter/types.d.ts +3 -0
  134. package/dist/matter/types.d.ts.map +1 -0
  135. package/dist/matter/types.js +3 -0
  136. package/dist/matter/types.js.map +1 -0
  137. package/dist/matterbridge.d.ts +463 -0
  138. package/dist/matterbridge.d.ts.map +1 -0
  139. package/dist/matterbridge.js +802 -50
  140. package/dist/matterbridge.js.map +1 -0
  141. package/dist/matterbridgeAccessoryPlatform.d.ts +42 -0
  142. package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
  143. package/dist/matterbridgeAccessoryPlatform.js +36 -0
  144. package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
  145. package/dist/matterbridgeBehaviors.d.ts +1351 -0
  146. package/dist/matterbridgeBehaviors.d.ts.map +1 -0
  147. package/dist/matterbridgeBehaviors.js +65 -5
  148. package/dist/matterbridgeBehaviors.js.map +1 -0
  149. package/dist/matterbridgeDeviceTypes.d.ts +709 -0
  150. package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
  151. package/dist/matterbridgeDeviceTypes.js +579 -15
  152. package/dist/matterbridgeDeviceTypes.js.map +1 -0
  153. package/dist/matterbridgeDynamicPlatform.d.ts +42 -0
  154. package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
  155. package/dist/matterbridgeDynamicPlatform.js +36 -0
  156. package/dist/matterbridgeDynamicPlatform.js.map +1 -0
  157. package/dist/matterbridgeEndpoint.d.ts +1354 -0
  158. package/dist/matterbridgeEndpoint.d.ts.map +1 -0
  159. package/dist/matterbridgeEndpoint.js +1220 -54
  160. package/dist/matterbridgeEndpoint.js.map +1 -0
  161. package/dist/matterbridgeEndpointHelpers.d.ts +406 -0
  162. package/dist/matterbridgeEndpointHelpers.d.ts.map +1 -0
  163. package/dist/matterbridgeEndpointHelpers.js +344 -12
  164. package/dist/matterbridgeEndpointHelpers.js.map +1 -0
  165. package/dist/matterbridgePlatform.d.ts +310 -0
  166. package/dist/matterbridgePlatform.d.ts.map +1 -0
  167. package/dist/matterbridgePlatform.js +243 -0
  168. package/dist/matterbridgePlatform.js.map +1 -0
  169. package/dist/matterbridgeTypes.d.ts +197 -0
  170. package/dist/matterbridgeTypes.d.ts.map +1 -0
  171. package/dist/matterbridgeTypes.js +25 -0
  172. package/dist/matterbridgeTypes.js.map +1 -0
  173. package/dist/pluginManager.d.ts +270 -0
  174. package/dist/pluginManager.d.ts.map +1 -0
  175. package/dist/pluginManager.js +249 -3
  176. package/dist/pluginManager.js.map +1 -0
  177. package/dist/shelly.d.ts +174 -0
  178. package/dist/shelly.d.ts.map +1 -0
  179. package/dist/shelly.js +168 -7
  180. package/dist/shelly.js.map +1 -0
  181. package/dist/storage/export.d.ts +2 -0
  182. package/dist/storage/export.d.ts.map +1 -0
  183. package/dist/storage/export.js +1 -0
  184. package/dist/storage/export.js.map +1 -0
  185. package/dist/update.d.ts +75 -0
  186. package/dist/update.d.ts.map +1 -0
  187. package/dist/update.js +69 -0
  188. package/dist/update.js.map +1 -0
  189. package/dist/utils/colorUtils.d.ts +117 -0
  190. package/dist/utils/colorUtils.d.ts.map +1 -0
  191. package/dist/utils/colorUtils.js +263 -2
  192. package/dist/utils/colorUtils.js.map +1 -0
  193. package/dist/utils/commandLine.d.ts +59 -0
  194. package/dist/utils/commandLine.d.ts.map +1 -0
  195. package/dist/utils/commandLine.js +54 -0
  196. package/dist/utils/commandLine.js.map +1 -0
  197. package/dist/utils/copyDirectory.d.ts +33 -0
  198. package/dist/utils/copyDirectory.d.ts.map +1 -0
  199. package/dist/utils/copyDirectory.js +38 -1
  200. package/dist/utils/copyDirectory.js.map +1 -0
  201. package/dist/utils/createDirectory.d.ts +34 -0
  202. package/dist/utils/createDirectory.d.ts.map +1 -0
  203. package/dist/utils/createDirectory.js +33 -0
  204. package/dist/utils/createDirectory.js.map +1 -0
  205. package/dist/utils/createZip.d.ts +39 -0
  206. package/dist/utils/createZip.d.ts.map +1 -0
  207. package/dist/utils/createZip.js +47 -2
  208. package/dist/utils/createZip.js.map +1 -0
  209. package/dist/utils/deepCopy.d.ts +32 -0
  210. package/dist/utils/deepCopy.d.ts.map +1 -0
  211. package/dist/utils/deepCopy.js +39 -0
  212. package/dist/utils/deepCopy.js.map +1 -0
  213. package/dist/utils/deepEqual.d.ts +54 -0
  214. package/dist/utils/deepEqual.d.ts.map +1 -0
  215. package/dist/utils/deepEqual.js +72 -1
  216. package/dist/utils/deepEqual.js.map +1 -0
  217. package/dist/utils/error.d.ts +44 -0
  218. package/dist/utils/error.d.ts.map +1 -0
  219. package/dist/utils/error.js +41 -0
  220. package/dist/utils/error.js.map +1 -0
  221. package/dist/utils/export.d.ts +12 -0
  222. package/dist/utils/export.d.ts.map +1 -0
  223. package/dist/utils/export.js +1 -0
  224. package/dist/utils/export.js.map +1 -0
  225. package/dist/utils/hex.d.ts +89 -0
  226. package/dist/utils/hex.d.ts.map +1 -0
  227. package/dist/utils/hex.js +123 -0
  228. package/dist/utils/hex.js.map +1 -0
  229. package/dist/utils/isvalid.d.ts +103 -0
  230. package/dist/utils/isvalid.d.ts.map +1 -0
  231. package/dist/utils/isvalid.js +101 -0
  232. package/dist/utils/isvalid.js.map +1 -0
  233. package/dist/utils/network.d.ts +84 -0
  234. package/dist/utils/network.d.ts.map +1 -0
  235. package/dist/utils/network.js +94 -7
  236. package/dist/utils/network.js.map +1 -0
  237. package/dist/utils/spawn.d.ts +33 -0
  238. package/dist/utils/spawn.d.ts.map +1 -0
  239. package/dist/utils/spawn.js +40 -0
  240. package/dist/utils/spawn.js.map +1 -0
  241. package/dist/utils/wait.d.ts +56 -0
  242. package/dist/utils/wait.d.ts.map +1 -0
  243. package/dist/utils/wait.js +62 -9
  244. package/dist/utils/wait.js.map +1 -0
  245. package/docs/README-DEV.md +377 -0
  246. package/docs/README-DOCKER.md +208 -0
  247. package/docs/README-NGINX.md +235 -0
  248. package/docs/README-PODMAN.md +109 -0
  249. package/docs/README-SERVICE.md +212 -0
  250. package/docs/README.md +618 -0
  251. package/npm-shrinkwrap.json +2 -2
  252. package/package.json +2 -1
@@ -0,0 +1,208 @@
1
+ # <img src="frontend/public/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge docker configuration
2
+
3
+ [![npm version](https://img.shields.io/npm/v/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
4
+ [![npm downloads](https://img.shields.io/npm/dt/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
5
+ [![Docker Version](https://img.shields.io/docker/v/luligu/matterbridge?label=docker%20version&sort=semver)](https://hub.docker.com/r/luligu/matterbridge)
6
+ [![Docker Pulls](https://img.shields.io/docker/pulls/luligu/matterbridge.svg)](https://hub.docker.com/r/luligu/matterbridge)
7
+ ![Node.js CI](https://github.com/Luligu/matterbridge/actions/workflows/build.yml/badge.svg)
8
+ ![CodeQL](https://github.com/Luligu/matterbridge/actions/workflows/codeql.yml/badge.svg)
9
+ [![codecov](https://codecov.io/gh/Luligu/matterbridge/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge)
10
+
11
+ [![power by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history)
12
+ [![power by](https://img.shields.io/badge/powered%20by-node--ansi--logger-blue)](https://www.npmjs.com/package/node-ansi-logger)
13
+ [![power by](https://img.shields.io/badge/powered%20by-node--persist--manager-blue)](https://www.npmjs.com/package/node-persist-manager)
14
+
15
+ ---
16
+
17
+ # Advanced configuration
18
+
19
+ ## Run matterbridge with docker and docker compose
20
+
21
+ The Matterbridge Docker image, which includes a manifest list for the linux/amd64, linux/arm64 and linux/arm/v7 architectures, is published on **Docker Hub**.
22
+
23
+ The image (tag **latest**) includes matterbridge and all official plugins with the latest release (as published on npm). You can just pull the new image and matterbridge with all plugins will be the latest release published on npm.
24
+
25
+ The image (tag **dev**) includes matterbridge and all plugins with the dev release (as pushed on GitHub). You can just pull the new image and matterbridge with all plugins will be the latest dev release pushed on GitHub. It is possible that the devs are outdated by published latests.
26
+
27
+ You can directly select and add a plugin without installing it.
28
+
29
+ It is based on node:22-bookworm-slim and integrates the health check.
30
+
31
+ How Health Checks Work in Different Scenarios
32
+
33
+ With docker-compose
34
+
35
+ Docker monitors the health check and can restart the container if needed.
36
+
37
+ With docker run
38
+
39
+ The health check still runs in the background, but:
40
+ The container doesn’t restart automatically if it becomes unhealthy.
41
+
42
+ You can manually check the health status:
43
+
44
+ ```bash
45
+ docker exec -it matterbridge curl -v http://localhost:8283/health
46
+ ```
47
+
48
+ ### First create the Matterbridge directories
49
+
50
+ This will create the required directories in your home directory if they don't exist
51
+
52
+ ```bash
53
+ cd ~
54
+ mkdir -p ~/Matterbridge
55
+ mkdir -p ~/.matterbridge
56
+ sudo chown -R $USER:$USER ~/Matterbridge ~/.matterbridge
57
+ ```
58
+
59
+ You may need to adapt the script to your setup.
60
+
61
+ ### Add your user to docker group
62
+
63
+ If you don't want to use sudo with docker commands, run this command:
64
+
65
+ ```bash
66
+ sudo groupadd docker
67
+ sudo usermod -aG docker $USER
68
+ ```
69
+
70
+ After adding your user to the docker group, you need to log out and log back in for the changes to take effect. This ensures that your current session recognizes the group membership change.
71
+
72
+ ### Run the Docker container and start it
73
+
74
+ The container must have full access to the host network (needed for mdns and Matter protocol).
75
+
76
+ ```bash
77
+ sudo docker run --name matterbridge \
78
+ -v ~/Matterbridge:/root/Matterbridge \
79
+ -v ~/.matterbridge:/root/.matterbridge \
80
+ --network host --restart always -d luligu/matterbridge:latest
81
+ ```
82
+
83
+ You may need to adapt the script to your setup.
84
+
85
+ ### Run with docker compose
86
+
87
+ The docker-compose.yml file is available in the docker directory of the package
88
+
89
+ ```
90
+ services:
91
+ matterbridge:
92
+ container_name: matterbridge
93
+ image: luligu/matterbridge:latest # Matterbridge image with the tag latest
94
+ network_mode: host # Ensures the Matter mdns works
95
+ restart: always # Ensures the container always restarts automatically
96
+ volumes:
97
+ - "${HOME}/Matterbridge:/root/Matterbridge" # Mounts the Matterbridge plugin directory
98
+ - "${HOME}/.matterbridge:/root/.matterbridge" # Mounts the Matterbridge storage directory
99
+ ```
100
+
101
+ Copy it in the home directory or edit the existing one to add the matterbridge service.
102
+
103
+ Then start docker compose with:
104
+
105
+ ```bash
106
+ docker compose up -d
107
+ ```
108
+
109
+ or start only the matterbridge container with:
110
+
111
+ ```bash
112
+ docker compose up -d matterbridge
113
+ ```
114
+
115
+ ### Stop with docker compose
116
+
117
+ ```bash
118
+ docker compose down
119
+ ```
120
+
121
+ ### Update with docker compose
122
+
123
+ This will pull the new matterbridge image and restart only the matterbridge container.
124
+
125
+ ```bash
126
+ docker compose pull matterbridge
127
+ docker compose up -d --no-deps --force-recreate matterbridge
128
+ ```
129
+
130
+ ### Inspect the container
131
+
132
+ ```bash
133
+ docker container inspect matterbridge
134
+ ```
135
+
136
+ ### Start the Docker container
137
+
138
+ ```bash
139
+ docker start matterbridge
140
+ ```
141
+
142
+ ### Stop the Docker container
143
+
144
+ ```bash
145
+ docker stop matterbridge
146
+ ```
147
+
148
+ ### Restart the Docker container
149
+
150
+ ```bash
151
+ docker restart matterbridge
152
+ ```
153
+
154
+ ### Shows the logs
155
+
156
+ ```bash
157
+ docker logs matterbridge
158
+ ```
159
+
160
+ ### Shows the logs for a time interval
161
+
162
+ ```bash
163
+ docker logs \
164
+ --since "2025-04-19T00:00:00" \
165
+ --until "2025-04-19T00:02:00" \
166
+ matterbridge
167
+ ```
168
+
169
+ ### Shows the logs real time (tail)
170
+
171
+ ```bash
172
+ docker logs --tail 1000 -f matterbridge
173
+ ```
174
+
175
+ ### Prevent the logs to grow
176
+
177
+ If you want to prevent the docker logs to grow too much, you can configure Docker's logging options globally.
178
+
179
+ **Warning**: This will restart Docker and affect all running containers.
180
+
181
+ ```bash
182
+ sudo nano /etc/docker/daemon.json
183
+ ```
184
+
185
+ Add or update the logging configuration in the daemon.json file:
186
+
187
+ ```json
188
+ {
189
+ "log-driver": "json-file",
190
+ "log-opts": {
191
+ "max-size": "100m",
192
+ "max-file": "3"
193
+ }
194
+ }
195
+ ```
196
+
197
+ Where:
198
+
199
+ - `max-size`: Maximum size of each log file (e.g., "10m", "100m", "1g")
200
+ - `max-file`: Maximum number of log files to keep
201
+
202
+ Save the file and restart Docker:
203
+
204
+ ```bash
205
+ sudo systemctl restart docker
206
+ ```
207
+
208
+ **Note**: This configuration applies to new containers. Existing containers will need to be recreated to use the new logging settings.
@@ -0,0 +1,235 @@
1
+ # <img src="frontend/public/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge NGINX configuration
2
+
3
+ [![npm version](https://img.shields.io/npm/v/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
4
+ [![npm downloads](https://img.shields.io/npm/dt/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
5
+ [![Docker Version](https://img.shields.io/docker/v/luligu/matterbridge?label=docker%20version&sort=semver)](https://hub.docker.com/r/luligu/matterbridge)
6
+ [![Docker Pulls](https://img.shields.io/docker/pulls/luligu/matterbridge.svg)](https://hub.docker.com/r/luligu/matterbridge)
7
+ ![Node.js CI](https://github.com/Luligu/matterbridge/actions/workflows/build.yml/badge.svg)
8
+ ![CodeQL](https://github.com/Luligu/matterbridge/actions/workflows/codeql.yml/badge.svg)
9
+ [![codecov](https://codecov.io/gh/Luligu/matterbridge/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge)
10
+
11
+ [![power by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history)
12
+ [![power by](https://img.shields.io/badge/powered%20by-node--ansi--logger-blue)](https://www.npmjs.com/package/node-ansi-logger)
13
+ [![power by](https://img.shields.io/badge/powered%20by-node--persist--manager-blue)](https://www.npmjs.com/package/node-persist-manager)
14
+
15
+ ---
16
+
17
+ # Advanced configuration to use NGINX
18
+
19
+ ## Run matterbridge with nginx
20
+
21
+ ### Create a basic nginx configuration file that redirect to http://yourhost:8283
22
+
23
+ ```
24
+ sudo nano /etc/nginx/sites-available/matterbridge
25
+ ```
26
+
27
+ paste this configuration and if desired change the port to listen (here is 80) and the server_name using yours:
28
+
29
+ ```
30
+ server {
31
+ listen 80 default_server;
32
+ listen [::]:80 default_server;
33
+ server_name _;
34
+
35
+ location / {
36
+ # Redirect to Matterbridge frontend from http:/server_name:80
37
+ proxy_pass http://localhost:8283/;
38
+ proxy_set_header Host $host;
39
+ proxy_set_header X-Real-IP $remote_addr;
40
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
41
+ proxy_set_header X-Forwarded-Proto $scheme;
42
+
43
+ # WebSocket support
44
+ proxy_http_version 1.1;
45
+ proxy_set_header Upgrade $http_upgrade;
46
+ proxy_set_header Connection $http_connection;
47
+ }
48
+ }
49
+ ```
50
+
51
+ Add matterbridge to enabled sites
52
+
53
+ ```bash
54
+ sudo ln -s /etc/nginx/sites-available/matterbridge /etc/nginx/sites-enabled/
55
+ ```
56
+
57
+ ### Create a basic nginx configuration file that redirect to http://yourhost:8283/matterbridge
58
+
59
+ ```bash
60
+ sudo nano /etc/nginx/sites-available/matterbridge
61
+ ```
62
+
63
+ paste this configuration and if desired change the port to listen (here is 80) and the server_name using yours:
64
+
65
+ ```
66
+ server {
67
+ listen 80 default_server;
68
+ listen [::]:80 default_server;
69
+ server_name _;
70
+
71
+ location /matterbridge/ {
72
+ # Redirect to Matterbridge frontend from http:/server_name/matterbridge:80
73
+ proxy_pass http://localhost:8283/;
74
+ proxy_set_header Host $host;
75
+ proxy_set_header X-Real-IP $remote_addr;
76
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
77
+ proxy_set_header X-Forwarded-Proto $scheme;
78
+
79
+ # WebSocket support
80
+ proxy_http_version 1.1;
81
+ proxy_set_header Upgrade $http_upgrade;
82
+ proxy_set_header Connection $http_connection;
83
+ }
84
+ }
85
+ ```
86
+
87
+ Add matterbridge to enabled sites
88
+
89
+ ```bash
90
+ sudo ln -s /etc/nginx/sites-available/matterbridge /etc/nginx/sites-enabled/
91
+ ```
92
+
93
+ Restart nginx and test the configuration
94
+
95
+ ```bash
96
+ sudo systemctl restart nginx
97
+ sudo nginx -t
98
+ ```
99
+
100
+ ### Create an advanced nginx configuration file that redirect to http://yourhost:8283 with ssl
101
+
102
+ ```bash
103
+ sudo nano /etc/nginx/sites-available/matterbridge
104
+ ```
105
+
106
+ paste this configuration adding your certificates:
107
+
108
+ ```
109
+ # Default server configuration
110
+
111
+ # Redirect all HTTP requests to HTTPS
112
+ server {
113
+ listen 80 default_server;
114
+ listen [::]:80 default_server;
115
+ server_name _;
116
+
117
+ return 301 https://$host$request_uri;
118
+ }
119
+
120
+ # HTTPS server configuration
121
+ server {
122
+ listen 443 ssl default_server;
123
+ listen [::]:443 ssl default_server;
124
+ http2 on;
125
+ server_name _;
126
+
127
+ # SSL certificate paths
128
+ ssl_certificate /etc/nginx/certs/cert.pem;
129
+ ssl_certificate_key /etc/nginx/certs/key.pem;
130
+
131
+ # SSL security settings
132
+ ssl_protocols TLSv1.2 TLSv1.3;
133
+ ssl_ciphers HIGH:!aNULL:!MD5;
134
+ ssl_prefer_server_ciphers on;
135
+
136
+ location / {
137
+ # Redirect to Matterbridge frontend from https:/server_name:443
138
+ proxy_pass http://localhost:8283/;
139
+ proxy_set_header Host $host;
140
+ proxy_set_header X-Real-IP $remote_addr;
141
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
142
+ proxy_set_header X-Forwarded-Proto $scheme;
143
+
144
+ # WebSocket support
145
+ proxy_http_version 1.1;
146
+ proxy_set_header Upgrade $http_upgrade;
147
+ proxy_set_header Connection $http_connection;
148
+ }
149
+ }
150
+ ```
151
+
152
+ Add matterbridge to enabled sites
153
+
154
+ ```bash
155
+ sudo ln -s /etc/nginx/sites-available/matterbridge /etc/nginx/sites-enabled/
156
+ ```
157
+
158
+ Restart nginx and test the configuration
159
+
160
+ ```bash
161
+ sudo systemctl restart nginx
162
+ sudo nginx -t
163
+ ```
164
+
165
+ ### Create an advanced nginx configuration file that redirect to http://yourhost/matterbridge with ssl
166
+
167
+ ```bash
168
+ sudo nano /etc/nginx/sites-available/matterbridge
169
+ ```
170
+
171
+ paste this configuration adding your certificates:
172
+
173
+ ```
174
+ # Redirect all HTTP requests to HTTPS
175
+ server {
176
+ listen 80 default_server;
177
+ listen [::]:80 default_server;
178
+ server_name _;
179
+
180
+ return 301 https://$host$request_uri;
181
+ }
182
+
183
+ # HTTPS server configuration
184
+ server {
185
+ listen 443 ssl default_server;
186
+ listen [::]:443 ssl default_server;
187
+ http2 on;
188
+ server_name _;
189
+
190
+ # SSL certificate paths
191
+ ssl_certificate /etc/nginx/certs/cert.pem;
192
+ ssl_certificate_key /etc/nginx/certs/key.pem;
193
+
194
+ # SSL security settings
195
+ ssl_protocols TLSv1.2 TLSv1.3;
196
+ ssl_ciphers HIGH:!aNULL:!MD5;
197
+ ssl_prefer_server_ciphers on;
198
+
199
+ root /var/www/html;
200
+ index index.html index.htm index.nginx-debian.html;
201
+
202
+ location / {
203
+ # First attempt to serve request as file, then
204
+ # as directory, then fall back to displaying a 404.
205
+ try_files $uri $uri/ =404;
206
+ }
207
+
208
+ location /matterbridge/ {
209
+ # Redirect to Matterbridge frontend from https:/server_name/matterbridge:443
210
+ proxy_pass http://localhost:8283/;
211
+ proxy_set_header Host $host;
212
+ proxy_set_header X-Real-IP $remote_addr;
213
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
214
+ proxy_set_header X-Forwarded-Proto $scheme;
215
+
216
+ # WebSocket support
217
+ proxy_http_version 1.1;
218
+ proxy_set_header Upgrade $http_upgrade;
219
+ proxy_set_header Connection $http_connection;
220
+ }
221
+ }
222
+ ```
223
+
224
+ Add matterbridge to enabled sites
225
+
226
+ ```bash
227
+ sudo ln -s /etc/nginx/sites-available/matterbridge /etc/nginx/sites-enabled/
228
+ ```
229
+
230
+ Restart nginx and test the configuration
231
+
232
+ ```bash
233
+ sudo systemctl restart nginx
234
+ sudo nginx -t
235
+ ```
@@ -0,0 +1,109 @@
1
+ # <img src="frontend/public/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge Podman configuration
2
+
3
+ [![npm version](https://img.shields.io/npm/v/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
4
+ [![npm downloads](https://img.shields.io/npm/dt/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
5
+ [![Docker Version](https://img.shields.io/docker/v/luligu/matterbridge?label=docker%20version&sort=semver)](https://hub.docker.com/r/luligu/matterbridge)
6
+ [![Docker Pulls](https://img.shields.io/docker/pulls/luligu/matterbridge.svg)](https://hub.docker.com/r/luligu/matterbridge)
7
+ ![Node.js CI](https://github.com/Luligu/matterbridge/actions/workflows/build.yml/badge.svg)
8
+ ![CodeQL](https://github.com/Luligu/matterbridge/actions/workflows/codeql.yml/badge.svg)
9
+ [![codecov](https://codecov.io/gh/Luligu/matterbridge/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge)
10
+
11
+ [![power by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history)
12
+ [![power by](https://img.shields.io/badge/powered%20by-node--ansi--logger-blue)](https://www.npmjs.com/package/node-ansi-logger)
13
+ [![power by](https://img.shields.io/badge/powered%20by-node--persist--manager-blue)](https://www.npmjs.com/package/node-persist-manager)
14
+
15
+ ---
16
+
17
+ # Advanced configuration
18
+
19
+ ## Install Podman if it is not already installed
20
+
21
+ ```
22
+ cd ~
23
+ sudo apt update
24
+ sudo apt install podman -y
25
+ podman --version
26
+ ```
27
+
28
+ ## Run matterbridge with podman
29
+
30
+ The Matterbridge Docker image, which includes a manifest list for the linux/amd64, linux/arm64 and linux/arm/v7 architectures, is published on Docker Hub and can be used with podman.
31
+
32
+ Podman handles container restarts a little differently than Docker. The --restart always flag doesn’t work exactly the same. If you want the container to automatically restart when the system reboots or if it crashes, you can create a systemd unit for the Podman container.
33
+
34
+ ### First create the Matterbridge directories
35
+
36
+ This will create the required directories if they don't exist
37
+
38
+ ```
39
+ cd ~
40
+ mkdir -p ./Matterbridge
41
+ mkdir -p ./.matterbridge
42
+ sudo chown -R $USER:$USER ./Matterbridge ./.matterbridge
43
+ ```
44
+
45
+ You may need to adapt the script to your setup:
46
+
47
+ - ./Matterbridge is the position outside of the container of your matterbridge plugin directory (inside your home directory).
48
+ - ./.matterbridge is the position outside of the container of your matterbridge storage directory (inside your home directory).
49
+
50
+ ### Run the Podman container (root mode) and start it
51
+
52
+ The container must have full access to the host network (needed for matter mdns).
53
+
54
+ ```
55
+ podman run --name matterbridge \
56
+ -v ~/Matterbridge:/root/Matterbridge \
57
+ -v ~/.matterbridge:/root/.matterbridge \
58
+ --network host --restart always -d docker.io/luligu/matterbridge:latest
59
+ ```
60
+
61
+ You may need to adapt the script to your setup:
62
+
63
+ - ~/Matterbridge is the position outside of the container of your matterbridge plugin directory.
64
+ - ~/.matterbridge is the position outside of the container of your matterbridge storage directory.
65
+
66
+ ### Integrate the mattebridge podman container with systemd for automatic startup after reboots
67
+
68
+ ```
69
+ podman generate systemd --name matterbridge --files --new
70
+ sudo mv container-matterbridge.service /etc/systemd/system/
71
+ sudo systemctl enable container-matterbridge
72
+ sudo systemctl start container-matterbridge
73
+ ```
74
+
75
+ ### Start the Podman container
76
+
77
+ ```
78
+ podman start matterbridge
79
+ ```
80
+
81
+ ### Stop the Podman container
82
+
83
+ ```
84
+ podman stop matterbridge
85
+ ```
86
+
87
+ ### Restart the Podman container
88
+
89
+ ```
90
+ podman restart matterbridge
91
+ ```
92
+
93
+ ### Remove the Podman container
94
+
95
+ ```
96
+ podman rm matterbridge
97
+ ```
98
+
99
+ ### Shows the logs
100
+
101
+ ```
102
+ podman logs matterbridge
103
+ ```
104
+
105
+ ### Shows the logs real time (tail)
106
+
107
+ ```
108
+ podman logs --tail 1000 -f matterbridge
109
+ ```