mirror of
https://github.com/spantaleev/matrix-docker-ansible-deploy.git
synced 2026-03-29 19:31:25 +03:00
Compare commits
1132 Commits
element-ca
...
0a03679230
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0a03679230 | ||
|
|
8483683b28 | ||
|
|
e4c62da332 | ||
|
|
ae78862f7a | ||
|
|
5879959151 | ||
|
|
3400769336 | ||
|
|
e5dbd51b46 | ||
|
|
68eeb9e303 | ||
|
|
e39b7f89a7 | ||
|
|
bea22b97fa | ||
|
|
7c5a729c18 | ||
|
|
38bdf5b181 | ||
|
|
ad5d783a3c | ||
|
|
5c80913739 | ||
|
|
df44c8d4b3 | ||
|
|
63c4fffe65 | ||
|
|
9f109f81ee | ||
|
|
9a9392d24a | ||
|
|
4991ce3c90 | ||
|
|
36d0c5d8c3 | ||
|
|
4174eafd6b | ||
|
|
09221fd611 | ||
|
|
b3153fcc49 | ||
|
|
312cfe9b41 | ||
|
|
b3a0f52824 | ||
|
|
27a2b126bc | ||
|
|
8ae8b83139 | ||
|
|
74cc760d00 | ||
|
|
c831ce6f63 | ||
|
|
d3241588e3 | ||
|
|
b092e126a9 | ||
|
|
5167507989 | ||
|
|
d7ec806b51 | ||
|
|
11fee5e4db | ||
|
|
5523277bc1 | ||
|
|
ed7be50cea | ||
|
|
4ac5266efc | ||
|
|
392ac0125f | ||
|
|
756e189141 | ||
|
|
c55156b394 | ||
|
|
446597aac9 | ||
|
|
b942715469 | ||
|
|
aeb71d3543 | ||
|
|
54c0b56200 | ||
|
|
12af6da9d0 | ||
|
|
f0a5393d48 | ||
|
|
68aca96cbd | ||
|
|
68318ce932 | ||
|
|
4e4bccd03a | ||
|
|
19423864f0 | ||
|
|
a000abdf19 | ||
|
|
b596319a4a | ||
|
|
f0906e79a9 | ||
|
|
2fff4b5b88 | ||
|
|
e09ea540a0 | ||
|
|
bd614abd30 | ||
|
|
b6f8a59b50 | ||
|
|
b7d501802c | ||
|
|
1c98e76423 | ||
|
|
cb7b13daad | ||
|
|
7e8f3250f7 | ||
|
|
e145bffb7e | ||
|
|
c3156a1a99 | ||
|
|
f9811a0e0a | ||
|
|
1dac2b5c14 | ||
|
|
c6d33b819a | ||
|
|
7e0d86d2ea | ||
|
|
a035d77b1a | ||
|
|
9934bc3e39 | ||
|
|
a2fd140a61 | ||
|
|
5df7e678f7 | ||
|
|
9af79ce4d2 | ||
|
|
0f687a69c5 | ||
|
|
ec36904671 | ||
|
|
69df322f40 | ||
|
|
c0044a9b0a | ||
|
|
63a0e8216b | ||
|
|
975f14d2d8 | ||
|
|
d80ef72fbe | ||
|
|
dfe8628fbf | ||
|
|
a3ff72ebff | ||
|
|
df76b1cd5b | ||
|
|
dafac35a0e | ||
|
|
980d1ccc5b | ||
|
|
f9fa63fc7e | ||
|
|
021285d8d2 | ||
|
|
e2d2a341a8 | ||
|
|
79a4156a78 | ||
|
|
d12970c0fd | ||
|
|
d4e8da3e0a | ||
|
|
2237b53979 | ||
|
|
0320e671e3 | ||
|
|
0c4bce582f | ||
|
|
4e3658bb98 | ||
|
|
94beb79279 | ||
|
|
ac559889f9 | ||
|
|
12d8015bc4 | ||
|
|
a602035383 | ||
|
|
1898bb5c49 | ||
|
|
805f3ef892 | ||
|
|
81b944540b | ||
|
|
df5b84588b | ||
|
|
6b6b74afa9 | ||
|
|
677919fc39 | ||
|
|
f803ad6957 | ||
|
|
5d7569adf0 | ||
|
|
82caf3a7d3 | ||
|
|
45d5ebd008 | ||
|
|
c3437e22e6 | ||
|
|
d046855f3a | ||
|
|
55ffeb226c | ||
|
|
0c40a03efc | ||
|
|
86bb61aba0 | ||
|
|
87ef61ac56 | ||
|
|
6d9b1a8260 | ||
|
|
df205a2f77 | ||
|
|
7e3b82b80e | ||
|
|
c3a9772f51 | ||
|
|
1f3ea18213 | ||
|
|
0acb1f98e8 | ||
|
|
58141f9926 | ||
|
|
1ee5c1f416 | ||
|
|
c9bb48ff11 | ||
|
|
0cbffe695b | ||
|
|
af237ac9c7 | ||
|
|
87a799faa6 | ||
|
|
f5b722b13d | ||
|
|
c0be489796 | ||
|
|
2d1be91ac2 | ||
|
|
bd809f16f3 | ||
|
|
58bf4fe34b | ||
|
|
a787993aaf | ||
|
|
d5ffc94916 | ||
|
|
4208b4f553 | ||
|
|
768fdbbde3 | ||
|
|
af30790d6a | ||
|
|
baa1a29f76 | ||
|
|
9d6980a175 | ||
|
|
90bcb1f4ee | ||
|
|
46321552b7 | ||
|
|
0620d6a822 | ||
|
|
0a653dfeaa | ||
|
|
3564155a73 | ||
|
|
58937731f8 | ||
|
|
9bdf84eecf | ||
|
|
c4a05ce06a | ||
|
|
15ffb04293 | ||
|
|
a949605518 | ||
|
|
a77250ab97 | ||
|
|
a809f4d124 | ||
|
|
ceebf644a3 | ||
|
|
123dbbf191 | ||
|
|
37d45d6772 | ||
|
|
28afbde971 | ||
|
|
63b6bf4bc1 | ||
|
|
39f867a1c9 | ||
|
|
78a08482fa | ||
|
|
da86297655 | ||
|
|
8417f655af | ||
|
|
a7f7a3d002 | ||
|
|
e7419fbafa | ||
|
|
8c6c544c90 | ||
|
|
b98a6d39c9 | ||
|
|
93c6587b9d | ||
|
|
f187cf84d5 | ||
|
|
ee243a8aab | ||
|
|
816b95f951 | ||
|
|
324ff0dff6 | ||
|
|
2e7e034d3a | ||
|
|
2c29027868 | ||
|
|
1718181ff4 | ||
|
|
f1d1c50106 | ||
|
|
b55444e44f | ||
|
|
f96dcff028 | ||
|
|
c6cd76e988 | ||
|
|
4761ff7e9a | ||
|
|
976d2c4cd0 | ||
|
|
32aeaca28b | ||
|
|
ee79348254 | ||
|
|
a1dc468004 | ||
|
|
0da4c43cf1 | ||
|
|
1dfd4dc4ad | ||
|
|
b528f0e6af | ||
|
|
f2e961293c | ||
|
|
7bfa823fa3 | ||
|
|
5abd9cfb11 | ||
|
|
6e4a0ab2a1 | ||
|
|
1fc1da393d | ||
|
|
5ee0b4f168 | ||
|
|
3651a07f88 | ||
|
|
0cf3482eb2 | ||
|
|
6bfcec2d23 | ||
|
|
ff2a0be559 | ||
|
|
23203ff9d3 | ||
|
|
ca2b6b0a27 | ||
|
|
f0e0f5ec56 | ||
|
|
78d9f725b3 | ||
|
|
acf3d72c47 | ||
|
|
9d4ec45e72 | ||
|
|
bca2c43368 | ||
|
|
528a32f6c1 | ||
|
|
893e90a65f | ||
|
|
426839c287 | ||
|
|
51a357133b | ||
|
|
dbc71fccf7 | ||
|
|
f2ebc00e22 | ||
|
|
669490f18e | ||
|
|
dbe4b1db5f | ||
|
|
e5b48f22db | ||
|
|
bf744319e0 | ||
|
|
628bddb613 | ||
|
|
30be1a8892 | ||
|
|
2608ee8a3e | ||
|
|
23317b9caa | ||
|
|
e72b0bc483 | ||
|
|
1f3704d89d | ||
|
|
1d0bbce4cf | ||
|
|
7a2f036452 | ||
|
|
8a3017c964 | ||
|
|
f0f496b6ba | ||
|
|
7801b91aad | ||
|
|
fb01b79243 | ||
|
|
d620fa3b69 | ||
|
|
409d8c9a36 | ||
|
|
8b48aebaa5 | ||
|
|
a4bb7030cf | ||
|
|
956d2d81a5 | ||
|
|
985740e89d | ||
|
|
0d86610cbe | ||
|
|
16010ff8c7 | ||
|
|
6da1223500 | ||
|
|
4a8df13854 | ||
|
|
3e73005eb3 | ||
|
|
2d3d1f83d2 | ||
|
|
9accc848c4 | ||
|
|
af193043ab | ||
|
|
452d54b53f | ||
|
|
f954df4707 | ||
|
|
eea7d15158 | ||
|
|
17894ef70b | ||
|
|
7b41de4eb1 | ||
|
|
409c7393a0 | ||
|
|
a4c40979d2 | ||
|
|
0f5015a33c | ||
|
|
47bf99af7a | ||
|
|
0b5ef18d1c | ||
|
|
81b90a7089 | ||
|
|
014380eecd | ||
|
|
a77a8753d9 | ||
|
|
9569633164 | ||
|
|
9d9e9e9177 | ||
|
|
bcddeda5df | ||
|
|
59e70b8ca9 | ||
|
|
f8815c0bb9 | ||
|
|
2fad873b42 | ||
|
|
294cd109fd | ||
|
|
9d6c8eabcb | ||
|
|
dd26f8a12a | ||
|
|
7b7b6feb5b | ||
|
|
fa7b784c5b | ||
|
|
15ba65f235 | ||
|
|
4ec41c0b42 | ||
|
|
0a08126324 | ||
|
|
482ef0fdf5 | ||
|
|
ca356c52e2 | ||
|
|
ecf9befc32 | ||
|
|
750cb7e29e | ||
|
|
815b9baec6 | ||
|
|
1dcd4636ff | ||
|
|
7f04231904 | ||
|
|
b0828528df | ||
|
|
96029bf916 | ||
|
|
ace086056f | ||
|
|
0e8ef8ef10 | ||
|
|
2c2738a48f | ||
|
|
09914bf338 | ||
|
|
44b43a51b9 | ||
|
|
5f8235f44a | ||
|
|
eb393b4eb8 | ||
|
|
92c204394a | ||
|
|
a1015b6df2 | ||
|
|
2a581cce62 | ||
|
|
c21a80d232 | ||
|
|
baa740fcda | ||
|
|
66d66f67f8 | ||
|
|
c1a8ca6397 | ||
|
|
4310fb83c1 | ||
|
|
9320ef49fe | ||
|
|
cf6c5208e8 | ||
|
|
e6168d8e9c | ||
|
|
6d1ec58a82 | ||
|
|
adf521f8cb | ||
|
|
4cfe5f8f3f | ||
|
|
72c8873d06 | ||
|
|
90129f75aa | ||
|
|
c8920885f9 | ||
|
|
1f0e33e07a | ||
|
|
8f6ae1f734 | ||
|
|
2c0688334f | ||
|
|
d548f7ba8c | ||
|
|
a7ddb189b5 | ||
|
|
7d4536cf78 | ||
|
|
93f6264466 | ||
|
|
45c855c853 | ||
|
|
5cc69ca7eb | ||
|
|
81f815d19b | ||
|
|
c63a0f984b | ||
|
|
6c4b9bb3d7 | ||
|
|
76e13f8200 | ||
|
|
aeea016e3c | ||
|
|
5bbb1930cb | ||
|
|
2f66b7df94 | ||
|
|
f621eb8018 | ||
|
|
3f0ff4c510 | ||
|
|
b9631aea1c | ||
|
|
b1ff71266b | ||
|
|
72d522b9f1 | ||
|
|
67e650b5f9 | ||
|
|
18b11eea3b | ||
|
|
fd6f72382d | ||
|
|
460d46999f | ||
|
|
93d110e61e | ||
|
|
6629867235 | ||
|
|
8a3c75b7bd | ||
|
|
b6bf91c150 | ||
|
|
b0e70f419f | ||
|
|
692c34ad9b | ||
|
|
97c2915034 | ||
|
|
292397234a | ||
|
|
82d6f3de2c | ||
|
|
cc9234d3ba | ||
|
|
47322a8d52 | ||
|
|
911031e2cf | ||
|
|
e01a79865c | ||
|
|
ab97b94245 | ||
|
|
c8fc504470 | ||
|
|
a6c447ade3 | ||
|
|
aa69069627 | ||
|
|
fa22053bf1 | ||
|
|
a3ef7109b6 | ||
|
|
7c8a28d590 | ||
|
|
28af19a1a7 | ||
|
|
ea4b467cd3 | ||
|
|
bd6202eb65 | ||
|
|
4d0cf32151 | ||
|
|
1890f3a01a | ||
|
|
ac5dc5d44f | ||
|
|
a050107e0f | ||
|
|
41108b57e3 | ||
|
|
78c7b61af8 | ||
|
|
b5c5f34ca4 | ||
|
|
e1bf0aebd2 | ||
|
|
8a02d791ea | ||
|
|
dd54691137 | ||
|
|
a3a2c568d0 | ||
|
|
0bc84a7129 | ||
|
|
afe5b06771 | ||
|
|
e4d0d42f04 | ||
|
|
91711669c6 | ||
|
|
5fe789cd96 | ||
|
|
e4abe50daf | ||
|
|
e70d0d7673 | ||
|
|
ae88c51dd7 | ||
|
|
9d7c224021 | ||
|
|
65213ff497 | ||
|
|
13727bc0a2 | ||
|
|
ed87ef7e50 | ||
|
|
858a4ab555 | ||
|
|
5f3f57197e | ||
|
|
4f00bb4789 | ||
|
|
5e558aab55 | ||
|
|
e09d10419c | ||
|
|
e60ef27bb8 | ||
|
|
be7536390d | ||
|
|
e7612dc0ce | ||
|
|
6f736653e9 | ||
|
|
1ca3c91fd7 | ||
|
|
edf833627e | ||
|
|
ed20b65912 | ||
|
|
9cbc9c6b06 | ||
|
|
484e94d493 | ||
|
|
b0f73f7966 | ||
|
|
3c64fe6eb5 | ||
|
|
048ce7503d | ||
|
|
2161500e60 | ||
|
|
927f6fa2e3 | ||
|
|
66c85f63e6 | ||
|
|
9ea18d6f2d | ||
|
|
a073f21a8f | ||
|
|
68337b6f45 | ||
|
|
a8ef76735d | ||
|
|
df6ac15324 | ||
|
|
ce14e60a02 | ||
|
|
16bec7bfbb | ||
|
|
91e9d0b227 | ||
|
|
c05849920d | ||
|
|
2e313f6c38 | ||
|
|
6d202a30fc | ||
|
|
42cfbc06cc | ||
|
|
17898f6be2 | ||
|
|
a1df76f9d4 | ||
|
|
f2242246ec | ||
|
|
12bee503e0 | ||
|
|
e7cb9eee79 | ||
|
|
e813932240 | ||
|
|
98331ae970 | ||
|
|
5612af92e8 | ||
|
|
1f31975aef | ||
|
|
fa3d05ea81 | ||
|
|
5c0c03893f | ||
|
|
f7a3bde4a7 | ||
|
|
52278a8108 | ||
|
|
3a12aa7682 | ||
|
|
6a8a1dfa24 | ||
|
|
aec4185135 | ||
|
|
fd612f99fd | ||
|
|
ddc5e094a3 | ||
|
|
c14d1bd1f4 | ||
|
|
fe9f70517e | ||
|
|
59ab28cab2 | ||
|
|
904a98d56c | ||
|
|
f36983bfdb | ||
|
|
88dcfbdaa7 | ||
|
|
d5580ea322 | ||
|
|
95884479c3 | ||
|
|
64fc64921c | ||
|
|
4238ec6e86 | ||
|
|
940dcb0162 | ||
|
|
98663a8386 | ||
|
|
bbfe345758 | ||
|
|
c7ed2deb22 | ||
|
|
1bc70935a0 | ||
|
|
472bf1c58c | ||
|
|
717c9bfd7d | ||
|
|
325b22a302 | ||
|
|
f8f7406c51 | ||
|
|
caa2e338bc | ||
|
|
585d606856 | ||
|
|
cf97144ed8 | ||
|
|
d5709e4596 | ||
|
|
1838840f65 | ||
|
|
0041bd01c3 | ||
|
|
aea799260f | ||
|
|
1ee83861c3 | ||
|
|
db793428a1 | ||
|
|
f31be1a725 | ||
|
|
a451f1fcb1 | ||
|
|
64d890300b | ||
|
|
7e0815c5ea | ||
|
|
fb0a1bd489 | ||
|
|
bab3a47c50 | ||
|
|
a88c394ae0 | ||
|
|
eda41e89c1 | ||
|
|
d1b480de65 | ||
|
|
2821774fca | ||
|
|
77a173f8b2 | ||
|
|
ebdb2cc827 | ||
|
|
9b7767f451 | ||
|
|
201d3ea087 | ||
|
|
bf3f4a9059 | ||
|
|
cbf8a2e7e9 | ||
|
|
ddf0fe7167 | ||
|
|
07423d3dd4 | ||
|
|
430f350733 | ||
|
|
889970314a | ||
|
|
1f2f7e468e | ||
|
|
6865a59e88 | ||
|
|
e128c761ba | ||
|
|
4caf38e682 | ||
|
|
2eadddcde9 | ||
|
|
6cc837600a | ||
|
|
7181131967 | ||
|
|
a116620238 | ||
|
|
b464f3cc55 | ||
|
|
fb2d7481dc | ||
|
|
388e79ea5a | ||
|
|
0ab40bbd9c | ||
|
|
9582f6a565 | ||
|
|
4b2919b538 | ||
|
|
d05c83d0d5 | ||
|
|
97a1562942 | ||
|
|
346dfbbc07 | ||
|
|
7520469644 | ||
|
|
8405bbdb94 | ||
|
|
dfa38bec2c | ||
|
|
4e3dd04b17 | ||
|
|
ff884f5b4b | ||
|
|
4b93bbde98 | ||
|
|
46f00c89cc | ||
|
|
f3020a8ce6 | ||
|
|
1e3e722f8f | ||
|
|
f276b204a7 | ||
|
|
45ed9cc226 | ||
|
|
99d68c4e51 | ||
|
|
fe34e6c61d | ||
|
|
42e6c8d989 | ||
|
|
86f9cdfe2c | ||
|
|
56629103c6 | ||
|
|
4b19196a75 | ||
|
|
c8c6a83ecc | ||
|
|
272c03892c | ||
|
|
7f6c23f91d | ||
|
|
934e560b0d | ||
|
|
77d2b43fb5 | ||
|
|
20104ad5a9 | ||
|
|
cb769f0939 | ||
|
|
1ccdbfd2b5 | ||
|
|
386d94a8f6 | ||
|
|
fb1824e66d | ||
|
|
8979fdef79 | ||
|
|
ee976242e5 | ||
|
|
1861faf31d | ||
|
|
26f15e0803 | ||
|
|
bf99fa9bb2 | ||
|
|
3eced43292 | ||
|
|
096b85bd96 | ||
|
|
69a3d1f69d | ||
|
|
3c587f25af | ||
|
|
32eeab7c42 | ||
|
|
4f6293ecb8 | ||
|
|
2b7a0453eb | ||
|
|
4d465a9d92 | ||
|
|
d3858ed079 | ||
|
|
0579e14d6b | ||
|
|
fba4ee598a | ||
|
|
d9d671d8d9 | ||
|
|
bac0463bc8 | ||
|
|
dd2ce83fc2 | ||
|
|
a406a57f01 | ||
|
|
7862fd7cdd | ||
|
|
37c02af0a6 | ||
|
|
80ff36ad06 | ||
|
|
f068f42c6b | ||
|
|
1dab0ae510 | ||
|
|
7fbc55040a | ||
|
|
506bf4d9ae | ||
|
|
87427b331a | ||
|
|
3d5e3e4014 | ||
|
|
7191c7a3be | ||
|
|
b108c8a151 | ||
|
|
710fe6cb6d | ||
|
|
9d04962330 | ||
|
|
5b4e1b1a74 | ||
|
|
1235ea886d | ||
|
|
afbf4df32d | ||
|
|
c1bc2be7ec | ||
|
|
32dd3c328b | ||
|
|
eb410d5df9 | ||
|
|
b6e1cdb638 | ||
|
|
ca5e66ac2e | ||
|
|
bbcc94980b | ||
|
|
f547e19dcc | ||
|
|
f92740929e | ||
|
|
14d982c1ea | ||
|
|
8a838c1621 | ||
|
|
3ff7e2a614 | ||
|
|
58d14d6bdb | ||
|
|
e60db3019d | ||
|
|
0f09fbdd81 | ||
|
|
5caae3b515 | ||
|
|
e6f7cff994 | ||
|
|
93e45e6173 | ||
|
|
f541425a7f | ||
|
|
2fc071981e | ||
|
|
81584bdc9c | ||
|
|
6185c1e8cd | ||
|
|
c5d9e384aa | ||
|
|
5282227247 | ||
|
|
df6df6cbad | ||
|
|
f75ddd0a80 | ||
|
|
4c5804fc82 | ||
|
|
08acb5ea34 | ||
|
|
c7a3315af3 | ||
|
|
b5ffb9e72f | ||
|
|
92beb4ae51 | ||
|
|
b25dd4c829 | ||
|
|
e24bcb73dc | ||
|
|
d2287ef2ef | ||
|
|
16cf98e5e2 | ||
|
|
d43f03bbca | ||
|
|
544d25e8c3 | ||
|
|
31f1d40a9f | ||
|
|
dd70df545a | ||
|
|
b2024fa7c1 | ||
|
|
a254f69e56 | ||
|
|
ae7847719d | ||
|
|
2fea3c3e4a | ||
|
|
b50d9352c3 | ||
|
|
6190fe0ca2 | ||
|
|
3ff32ec07a | ||
|
|
e9406589e6 | ||
|
|
376fcdafc2 | ||
|
|
bff95835ef | ||
|
|
d908d003c8 | ||
|
|
31f222823b | ||
|
|
6a3c0423e0 | ||
|
|
d755b959d6 | ||
|
|
8fd2b75756 | ||
|
|
9fb28c9fd7 | ||
|
|
ec5efe8c4e | ||
|
|
ec3f25e8ad | ||
|
|
2719f5e806 | ||
|
|
489bf39322 | ||
|
|
525d4bc997 | ||
|
|
8511d4dfc4 | ||
|
|
1c4738b89a | ||
|
|
7caa583743 | ||
|
|
f048a0f9a5 | ||
|
|
b54eadb9e0 | ||
|
|
2b0ea94a72 | ||
|
|
ad9c01fd5b | ||
|
|
ed9bb75a52 | ||
|
|
2d05db52c7 | ||
|
|
f53a3bb365 | ||
|
|
9791f8a120 | ||
|
|
4145b811a3 | ||
|
|
6e4f781995 | ||
|
|
958b0de4f1 | ||
|
|
1bd6e8d064 | ||
|
|
01d548d4a7 | ||
|
|
3a5e6d5f2e | ||
|
|
feb7953132 | ||
|
|
951b27ed7f | ||
|
|
b7f03aa4b2 | ||
|
|
4e21bbe064 | ||
|
|
58688bf538 | ||
|
|
14c32cad77 | ||
|
|
afa003fadd | ||
|
|
03607e8dcd | ||
|
|
edad6a17bd | ||
|
|
dbae258970 | ||
|
|
647652852b | ||
|
|
c704be1f68 | ||
|
|
ba19f37cb2 | ||
|
|
7261a50892 | ||
|
|
32f9c34aeb | ||
|
|
37a0967258 | ||
|
|
4c17617397 | ||
|
|
625d246d73 | ||
|
|
931056a1dc | ||
|
|
677b1ea55b | ||
|
|
3bf56e931d | ||
|
|
db54063a0c | ||
|
|
8857f78a4d | ||
|
|
1b8c153c4a | ||
|
|
704eae3040 | ||
|
|
1eaa399c65 | ||
|
|
dccfbcbdf5 | ||
|
|
cb6ae3de76 | ||
|
|
3467baf62f | ||
|
|
895f149a34 | ||
|
|
42aa749f14 | ||
|
|
91372da03c | ||
|
|
04773517dd | ||
|
|
a0858df60f | ||
|
|
344f9bf7af | ||
|
|
796b5597f4 | ||
|
|
29d80b2243 | ||
|
|
65d41bd84d | ||
|
|
85504350af | ||
|
|
495a4e5312 | ||
|
|
6fd1119cdd | ||
|
|
31333460dc | ||
|
|
b71968cf64 | ||
|
|
90d3cf78b3 | ||
|
|
70fd18079e | ||
|
|
3819cc7b13 | ||
|
|
2607714887 | ||
|
|
4cc7d8456b | ||
|
|
2997f23e20 | ||
|
|
6e5cf9f3be | ||
|
|
238cc68889 | ||
|
|
2591223b20 | ||
|
|
ca69a97d08 | ||
|
|
3c3cc2bf7d | ||
|
|
3fee130331 | ||
|
|
2ea4384840 | ||
|
|
66729311db | ||
|
|
06263ddf61 | ||
|
|
9f6305db4d | ||
|
|
1d6bf63ca5 | ||
|
|
25e7cac28d | ||
|
|
ba4153da97 | ||
|
|
130d756dcb | ||
|
|
beaf0ba16e | ||
|
|
c2e606095c | ||
|
|
84bde915c7 | ||
|
|
910cdf8a0a | ||
|
|
d8eed6bfd3 | ||
|
|
38b40242c4 | ||
|
|
f12d6a901c | ||
|
|
c67c7d6f46 | ||
|
|
a6f0f40296 | ||
|
|
f65656175f | ||
|
|
24c2de23d5 | ||
|
|
deb19fb67c | ||
|
|
4d15ebcffa | ||
|
|
2a2ef828c3 | ||
|
|
40813784c1 | ||
|
|
071b5789f2 | ||
|
|
d2f38f04a6 | ||
|
|
840ad0171f | ||
|
|
051d77e541 | ||
|
|
facdde367f | ||
|
|
a008665ad5 | ||
|
|
aa58c5cfd6 | ||
|
|
a444d45f1e | ||
|
|
a22d2cc2bf | ||
|
|
cab01be63c | ||
|
|
f5b1ba57eb | ||
|
|
beb8e6d5f9 | ||
|
|
14b65ed7ed | ||
|
|
841e2f7c4e | ||
|
|
3ea0a10947 | ||
|
|
fedb5a8cb0 | ||
|
|
60ab080147 | ||
|
|
3daf14d695 | ||
|
|
39efe79417 | ||
|
|
46a416e678 | ||
|
|
48c08f62fb | ||
|
|
b85f7c61dd | ||
|
|
41043ffb1f | ||
|
|
62cef9375e | ||
|
|
ab6f091f5f | ||
|
|
9357eebbf1 | ||
|
|
cd6e9843e1 | ||
|
|
9354fa253e | ||
|
|
de212a2211 | ||
|
|
ac063d0629 | ||
|
|
814d3acc42 | ||
|
|
28deb25810 | ||
|
|
b62b5c3659 | ||
|
|
153fd1f68f | ||
|
|
21766eba94 | ||
|
|
c6b66d93b7 | ||
|
|
5951437e15 | ||
|
|
2253fc4d45 | ||
|
|
eb8bc55dfe | ||
|
|
83165d77fa | ||
|
|
1efc2fb7ba | ||
|
|
945c4b503c | ||
|
|
824d18626d | ||
|
|
8e01a51f00 | ||
|
|
0f50f24c1b | ||
|
|
7f0c9aaf55 | ||
|
|
992f974a65 | ||
|
|
6e89e181ec | ||
|
|
f136c2e5f1 | ||
|
|
5deead45cd | ||
|
|
2252697119 | ||
|
|
831a288ffc | ||
|
|
ec8a7a4934 | ||
|
|
1c09eda631 | ||
|
|
dd5994cfb4 | ||
|
|
8ff8e435c0 | ||
|
|
13cc78a9ac | ||
|
|
bb32475f27 | ||
|
|
daba4cb225 | ||
|
|
3462196eb3 | ||
|
|
0f00cddcda | ||
|
|
b2c9468ac2 | ||
|
|
06ab77fdcc | ||
|
|
0ebefac8d3 | ||
|
|
5ec3257e3c | ||
|
|
ddf161aa74 | ||
|
|
6ba22f5db7 | ||
|
|
c2bd2ba6fc | ||
|
|
6006d1e4d8 | ||
|
|
9bcfbc13fb | ||
|
|
b6f2255d49 | ||
|
|
2190e7a5ea | ||
|
|
bb322ad692 | ||
|
|
dd3399aa44 | ||
|
|
c84a4ee28c | ||
|
|
662c477a65 | ||
|
|
bb98127754 | ||
|
|
2c859b2868 | ||
|
|
fccd7442d6 | ||
|
|
5711a8bda3 | ||
|
|
6bd758ec5a | ||
|
|
50abe5b92f | ||
|
|
567cd9b669 | ||
|
|
e057dd93cc | ||
|
|
92ad39bf51 | ||
|
|
67b078f061 | ||
|
|
5b148e0d60 | ||
|
|
c4968592d9 | ||
|
|
03b78f90b5 | ||
|
|
a8a410546c | ||
|
|
865345a08f | ||
|
|
a8134ae198 | ||
|
|
9dd2305bae | ||
|
|
36687c4747 | ||
|
|
20729fcdfb | ||
|
|
72d082d6f5 | ||
|
|
eef4036c6e | ||
|
|
ff79d9d8e8 | ||
|
|
370f01c0bf | ||
|
|
6658c690cb | ||
|
|
e0dbd0581f | ||
|
|
b129ab77cd | ||
|
|
be161ae6e1 | ||
|
|
5d7e80d6c6 | ||
|
|
17b738b40e | ||
|
|
851cfd8bee | ||
|
|
b24b13564a | ||
|
|
c38c606b8e | ||
|
|
d3fcd7a97a | ||
|
|
d720a6a7a5 | ||
|
|
8c84fb245c | ||
|
|
d69b5b5beb | ||
|
|
389118760f | ||
|
|
593fbd74de | ||
|
|
8bde2035f7 | ||
|
|
e5d4400ccc | ||
|
|
e395857a14 | ||
|
|
8762cc0d7d | ||
|
|
9cb695a971 | ||
|
|
f324c01e78 | ||
|
|
65de112d87 | ||
|
|
e343b69510 | ||
|
|
9706f9eb97 | ||
|
|
6f2e7e7a57 | ||
|
|
ce8a9b1653 | ||
|
|
75b0aeabee | ||
|
|
dca53824ef | ||
|
|
1761615bf8 | ||
|
|
2f429411f3 | ||
|
|
a01b111495 | ||
|
|
5d5289576e | ||
|
|
d2419fccf3 | ||
|
|
cbbf20004c | ||
|
|
5de4b5c657 | ||
|
|
e8c7091c3f | ||
|
|
84b0879606 | ||
|
|
0d56aa126c | ||
|
|
d4c168daa9 | ||
|
|
e7d4bd4e28 | ||
|
|
0728f9ca36 | ||
|
|
c1f9032f04 | ||
|
|
abbcb0bc22 | ||
|
|
11028761a1 | ||
|
|
24d6d4b94b | ||
|
|
350cd2031a | ||
|
|
95f239c4a6 | ||
|
|
7f1fa52dd3 | ||
|
|
9d31b44040 | ||
|
|
d876da4186 | ||
|
|
4ef78bdb7f | ||
|
|
c085b540f2 | ||
|
|
9d98c5056e | ||
|
|
da9b82439b | ||
|
|
997e6ca611 | ||
|
|
3a11a32f9e | ||
|
|
570c4121b7 | ||
|
|
90813b3739 | ||
|
|
f2524902af | ||
|
|
2ee0826079 | ||
|
|
51ab9ed9ff | ||
|
|
5651206e77 | ||
|
|
a09760492b | ||
|
|
a1f6ee4dc9 | ||
|
|
6da6b466da | ||
|
|
c7989af64f | ||
|
|
28870d2867 | ||
|
|
8c89f577ad | ||
|
|
e2cb95f145 | ||
|
|
d4d293f9a4 | ||
|
|
d70bccbda4 | ||
|
|
16212150a3 | ||
|
|
69184bc4a3 | ||
|
|
514a947386 | ||
|
|
8ab525d609 | ||
|
|
8be4927770 | ||
|
|
7261be5537 | ||
|
|
7eff95f38d | ||
|
|
abc74a6b96 | ||
|
|
c6871d187f | ||
|
|
7cf0fe52d4 | ||
|
|
70686595d5 | ||
|
|
2ad2fd8b57 | ||
|
|
eb067b7536 | ||
|
|
c1d5d38cf6 | ||
|
|
b5af7f7a32 | ||
|
|
a04a72d4e5 | ||
|
|
b8029111c9 | ||
|
|
6a98f47f73 | ||
|
|
8ecee76f62 | ||
|
|
30156f1ac0 | ||
|
|
aa527d2b99 | ||
|
|
f3a819c5f1 | ||
|
|
9b3d2637ad | ||
|
|
cffda7277b | ||
|
|
eff5dd0527 | ||
|
|
05202d0032 | ||
|
|
49d32b15c6 | ||
|
|
f0f1d6ca67 | ||
|
|
bc55e358bf | ||
|
|
9e205d50ac | ||
|
|
348324d347 | ||
|
|
63a3915d86 | ||
|
|
a770681b18 | ||
|
|
7fcb253c23 | ||
|
|
56e01ad456 | ||
|
|
bd6be256b7 | ||
|
|
fb0ccc391e | ||
|
|
e6413534be | ||
|
|
2d1b1cfdde | ||
|
|
54ef63e0c2 | ||
|
|
06e14a6b70 | ||
|
|
9726cb24be | ||
|
|
a41ec6e8de | ||
|
|
c399c6ff10 | ||
|
|
9e31a254d8 | ||
|
|
1ccb6c822a | ||
|
|
1813c856e6 | ||
|
|
f4306be183 | ||
|
|
78a3bf42f3 | ||
|
|
5142b2ee90 | ||
|
|
f08bc17273 | ||
|
|
3997244190 | ||
|
|
c04dfe2384 | ||
|
|
d1796978ca | ||
|
|
1b2b6ddaa3 | ||
|
|
e813309311 | ||
|
|
8eb5bbf2c1 | ||
|
|
4632628b74 | ||
|
|
bdec7c646d | ||
|
|
25498851a0 | ||
|
|
613f685f54 | ||
|
|
5987bc5b5e | ||
|
|
d2164d7a48 | ||
|
|
9adfd8fc0d | ||
|
|
24d1875d38 | ||
|
|
c0269b71b8 | ||
|
|
4e8aa53e27 | ||
|
|
31a7f4367c | ||
|
|
1a6a75bdab | ||
|
|
29607f442d | ||
|
|
f8142a0c37 | ||
|
|
b13ba5b909 | ||
|
|
018f3f4408 | ||
|
|
39d13a826a | ||
|
|
34878abd67 | ||
|
|
acf244ea26 | ||
|
|
133ba64375 | ||
|
|
bebaac886e | ||
|
|
b8ebe57558 | ||
|
|
93fffee6a4 | ||
|
|
3be0449c35 | ||
|
|
91817e8335 | ||
|
|
772c248733 | ||
|
|
185f9b5765 | ||
|
|
9289859673 | ||
|
|
279de764c8 | ||
|
|
cb2586f8b4 | ||
|
|
b046292c10 | ||
|
|
8f0ac84721 | ||
|
|
aada2d255f | ||
|
|
3b425908da | ||
|
|
3092037a7e | ||
|
|
048b8eb918 | ||
|
|
779eb0fc9a | ||
|
|
6a1ebe6e91 | ||
|
|
30875764c5 | ||
|
|
15ed07d970 | ||
|
|
13d22af9db | ||
|
|
5742800329 | ||
|
|
3508c87aee | ||
|
|
868ee4d688 | ||
|
|
eb9af8fe32 | ||
|
|
27c0fa55f4 | ||
|
|
e76b50a0b7 | ||
|
|
db8bee548d | ||
|
|
adef970239 | ||
|
|
20e98fbb33 | ||
|
|
5dcdf8e9e2 | ||
|
|
7aca61c5dd | ||
|
|
5def3b176f | ||
|
|
01c8b55c6f | ||
|
|
9b8dab89df | ||
|
|
5701ce5054 | ||
|
|
cabedeae73 | ||
|
|
3edad9d8d4 | ||
|
|
2935d6a1a4 | ||
|
|
0941953889 | ||
|
|
f9f5182919 | ||
|
|
25c20f16d4 | ||
|
|
95f6347974 | ||
|
|
c9dfb1c877 | ||
|
|
3653f9f89b | ||
|
|
0152758f5d | ||
|
|
05caaab302 | ||
|
|
17e14a4b89 | ||
|
|
cb7db82fe9 | ||
|
|
f4e13a380d | ||
|
|
312b4826f0 | ||
|
|
a2ddbb8169 | ||
|
|
2c9aa1af9c | ||
|
|
1dc404dc5f | ||
|
|
2087c13a4e | ||
|
|
1c335da420 | ||
|
|
3ef1726a40 | ||
|
|
d3172f0f32 | ||
|
|
c97bb125c6 | ||
|
|
f36c776bc3 | ||
|
|
e16a644fa2 | ||
|
|
777882b40f | ||
|
|
8c9b95d68c | ||
|
|
429bbc1c7d | ||
|
|
5d0b0c98ae | ||
|
|
571b14eaf8 | ||
|
|
d5d7adf4b5 | ||
|
|
3c08f008bc | ||
|
|
e818bbb373 | ||
|
|
0bd29b938a | ||
|
|
a3c13c5786 | ||
|
|
b9121e7105 | ||
|
|
978d24aa32 | ||
|
|
1fdb3dd990 | ||
|
|
31effafc08 | ||
|
|
ecb7ccf8cc | ||
|
|
14d4a58583 | ||
|
|
fa35c3802d | ||
|
|
ef5be1d138 | ||
|
|
37a35c039e | ||
|
|
477bd98b15 | ||
|
|
eb67e08d98 | ||
|
|
757527bbd2 | ||
|
|
b3cd3910a9 | ||
|
|
89599d464a | ||
|
|
8e5de2dc31 | ||
|
|
0c8137220d | ||
|
|
90dcdf5261 | ||
|
|
3cb67f23ee | ||
|
|
09ae8750d8 | ||
|
|
34b2dd3dd0 | ||
|
|
9adc5be572 | ||
|
|
15e453039c | ||
|
|
7afaba64f0 | ||
|
|
96f4670887 | ||
|
|
3d25bd70f8 | ||
|
|
1fa2a2a615 | ||
|
|
94d5182f4d | ||
|
|
14be193d20 | ||
|
|
4e0f031ebd | ||
|
|
360ee544a9 | ||
|
|
465df3a949 | ||
|
|
ae87a3bb19 | ||
|
|
19ccd491fb | ||
|
|
95ef383ef7 | ||
|
|
43cb86ac8a | ||
|
|
d1329edf71 | ||
|
|
025909e05b | ||
|
|
9f83f52ea9 | ||
|
|
0b4b21660c | ||
|
|
381b987e99 | ||
|
|
026f4b3282 | ||
|
|
4599fd7159 | ||
|
|
47ca615931 | ||
|
|
99221c35d8 | ||
|
|
cfc02b542d | ||
|
|
9a1f7165c2 | ||
|
|
f6725a9bfe | ||
|
|
882b528c96 | ||
|
|
ae58880f0c | ||
|
|
a638565580 | ||
|
|
0a6be12878 | ||
|
|
20133def86 | ||
|
|
03672a3a52 | ||
|
|
63c2e831a8 | ||
|
|
0a6490ad46 | ||
|
|
7fb0bff47d | ||
|
|
37a7af52ab | ||
|
|
32ca5bf55c | ||
|
|
81b371e690 | ||
|
|
51e961ce9f | ||
|
|
3ee7deb2d7 | ||
|
|
9fc5cdab33 | ||
|
|
a59383fcc7 | ||
|
|
14aef55573 | ||
|
|
ffde4fcb80 | ||
|
|
71ce8f792d | ||
|
|
9476be0592 | ||
|
|
feaa656fde | ||
|
|
186d3dbd71 | ||
|
|
bcd50c8e08 | ||
|
|
1c39a67c0a | ||
|
|
5ea613a3f6 | ||
|
|
f0c48392fe | ||
|
|
3e1bc3ce59 | ||
|
|
46e587ee29 | ||
|
|
fd32960687 | ||
|
|
bd405c410a | ||
|
|
6383b1b37a | ||
|
|
41ac053912 | ||
|
|
98e4f369b7 | ||
|
|
dd2f8d1150 | ||
|
|
8a4eb88f0d | ||
|
|
74b8f78a7f | ||
|
|
2b50a0e6a0 | ||
|
|
202be672a4 | ||
|
|
57ea240060 | ||
|
|
b719c3c11a | ||
|
|
909bf8729e | ||
|
|
38c9f47bb0 | ||
|
|
69d6111354 | ||
|
|
80ac45e069 | ||
|
|
efb3072bc8 | ||
|
|
5c120397ab | ||
|
|
3f19344e9d | ||
|
|
f32633826a | ||
|
|
85d82eb1e4 | ||
|
|
5eb247b5bf | ||
|
|
6915c7de12 | ||
|
|
de10cb2239 | ||
|
|
d48867c07e | ||
|
|
ef156614ec | ||
|
|
c4da60c4e4 | ||
|
|
0d30d315e3 | ||
|
|
1317e5632a | ||
|
|
6ed5db1464 | ||
|
|
b35289cae8 | ||
|
|
222f877261 | ||
|
|
00cb1e5c0c | ||
|
|
e02dd74e3a | ||
|
|
08b68e93dc | ||
|
|
60b291f197 | ||
|
|
8378e6f164 | ||
|
|
40dd8f7785 | ||
|
|
761e6d4cd6 | ||
|
|
7cb33c5519 |
2
.codespellrc
Normal file
2
.codespellrc
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[codespell]
|
||||||
|
ignore-words-list = aNULL,brose,doub,Udo,re-use,re-used,registr,shema,commet,Commet
|
||||||
11
.github/renovate.json
vendored
11
.github/renovate.json
vendored
@@ -9,8 +9,8 @@
|
|||||||
"customManagers": [
|
"customManagers": [
|
||||||
{
|
{
|
||||||
"customType": "regex",
|
"customType": "regex",
|
||||||
"fileMatch": [
|
"managerFilePatterns": [
|
||||||
"defaults/main.yml$"
|
"/defaults/main.yml$/"
|
||||||
],
|
],
|
||||||
"matchStrings": [
|
"matchStrings": [
|
||||||
"# renovate: datasource=(?<datasource>[a-z-.]+?) depName=(?<depName>[^\\s]+?)(?: (?:lookupName|packageName)=(?<packageName>[^\\s]+?))?(?: versioning=(?<versioning>[a-z-0-9]+?))?\\s+[A-Za-z0-9_]+?(?:_version|_tag)\\s*:\\s*[\"']?(?<currentValue>.+?)[\"']?\\s"
|
"# renovate: datasource=(?<datasource>[a-z-.]+?) depName=(?<depName>[^\\s]+?)(?: (?:lookupName|packageName)=(?<packageName>[^\\s]+?))?(?: versioning=(?<versioning>[a-z-0-9]+?))?\\s+[A-Za-z0-9_]+?(?:_version|_tag)\\s*:\\s*[\"']?(?<currentValue>.+?)[\"']?\\s"
|
||||||
@@ -20,13 +20,14 @@
|
|||||||
"packageRules": [
|
"packageRules": [
|
||||||
{
|
{
|
||||||
"ignoreUnstable": false,
|
"ignoreUnstable": false,
|
||||||
|
"versioning": "loose",
|
||||||
"matchSourceUrls": [
|
"matchSourceUrls": [
|
||||||
"https://github.com/devture/com.devture.ansible.role{/,}**",
|
"https://github.com/devture/com.devture.ansible.role{/,}**",
|
||||||
"https://github.com/mother-of-all-self-hosting{/,}**"
|
"https://github.com/mother-of-all-self-hosting{/,}**"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"ignoreDeps": [
|
"pre-commit": {
|
||||||
"ghcr.io/matrixgpt/matrix-chatgpt-bot"
|
"enabled": true
|
||||||
]
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
2
.github/workflows/close-stale-issues.yml
vendored
2
.github/workflows/close-stale-issues.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
|||||||
if: github.repository == 'spantaleev/matrix-docker-ansible-deploy'
|
if: github.repository == 'spantaleev/matrix-docker-ansible-deploy'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v9
|
- uses: actions/stale@v10
|
||||||
with:
|
with:
|
||||||
######################################################################
|
######################################################################
|
||||||
# Issues/PRs
|
# Issues/PRs
|
||||||
|
|||||||
2
.github/workflows/lock-threads.yml
vendored
2
.github/workflows/lock-threads.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
|||||||
if: github.repository == 'spantaleev/matrix-docker-ansible-deploy'
|
if: github.repository == 'spantaleev/matrix-docker-ansible-deploy'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: dessant/lock-threads@v5
|
- uses: dessant/lock-threads@v6
|
||||||
with:
|
with:
|
||||||
add-issue-labels: 'outdated'
|
add-issue-labels: 'outdated'
|
||||||
process-only: 'issues, prs'
|
process-only: 'issues, prs'
|
||||||
|
|||||||
47
.github/workflows/matrix.yml
vendored
47
.github/workflows/matrix.yml
vendored
@@ -7,26 +7,39 @@
|
|||||||
---
|
---
|
||||||
name: Matrix CI
|
name: Matrix CI
|
||||||
|
|
||||||
on: # yamllint disable-line rule:truthy
|
on: [push, pull_request] # yamllint disable-line rule:truthy
|
||||||
push:
|
|
||||||
pull_request:
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
yamllint:
|
prek:
|
||||||
name: yamllint
|
name: Run prek hooks
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: docker.io/archlinux:base-devel
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
# git must be installed before checkout so it does a proper clone
|
||||||
|
# (with .git directory) instead of a tarball download.
|
||||||
|
- name: Install git
|
||||||
|
run: pacman -Sy --noconfirm git
|
||||||
|
|
||||||
- name: Check out
|
- name: Check out
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
- name: Run yamllint
|
|
||||||
uses: frenck/action-yamllint@v1.5.0
|
- name: Restore prek cache
|
||||||
ansible-lint:
|
uses: actions/cache@v5
|
||||||
name: ansible-lint
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Check out
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Run ansible-lint
|
|
||||||
uses: ansible-community/ansible-lint-action@v6.17.0
|
|
||||||
with:
|
with:
|
||||||
path: roles/custom
|
path: var/prek
|
||||||
|
key: arch-prek-v1-${{ hashFiles('.pre-commit-config.yaml') }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pacman -S --noconfirm --needed just mise python
|
||||||
|
|
||||||
|
- name: Run prek hooks
|
||||||
|
run: |
|
||||||
|
# The checkout action sets safe.directory using its own bundled
|
||||||
|
# git, which is separate from the pacman-installed git that prek uses.
|
||||||
|
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
||||||
|
just prek-run-on-all
|
||||||
|
|||||||
20
.github/workflows/reuse.yml
vendored
20
.github/workflows/reuse.yml
vendored
@@ -1,20 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2022 Free Software Foundation Europe e.V. <https://fsfe.org>
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
|
||||||
---
|
|
||||||
name: REUSE Compliance Check
|
|
||||||
|
|
||||||
on: [push, pull_request] # yamllint disable-line rule:truthy
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
reuse-compliance-check:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: REUSE Compliance Check
|
|
||||||
uses: fsfe/reuse-action@v5
|
|
||||||
52
.github/workflows/update-translations.yml
vendored
Normal file
52
.github/workflows/update-translations.yml
vendored
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2024 Suguru Hirahara
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
|
---
|
||||||
|
name: Update translations
|
||||||
|
|
||||||
|
on: # yamllint disable-line rule:truthy
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
paths: # See include_patterns on conf.py
|
||||||
|
- 'docs/*.md'
|
||||||
|
- 'i18n/README.md'
|
||||||
|
- '*.md'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update:
|
||||||
|
if: github.repository == 'spantaleev/matrix-docker-ansible-deploy'
|
||||||
|
name: Update translations
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- uses: actions/setup-python@v6
|
||||||
|
with:
|
||||||
|
python-version: '3.14'
|
||||||
|
|
||||||
|
# Setting up recommended prerequisites
|
||||||
|
# See: i18n/README.md
|
||||||
|
- uses: astral-sh/setup-uv@v7
|
||||||
|
- uses: extractions/setup-just@v3
|
||||||
|
|
||||||
|
# TODO: optimize when we start publishing translations and integrate a Weblate instance
|
||||||
|
- name: Update translation catalog templates (POT) files
|
||||||
|
run: just --justfile i18n/justfile extract-translation-templates
|
||||||
|
|
||||||
|
- name: Create Pull Request
|
||||||
|
uses: peter-evans/create-pull-request@v8.1.0
|
||||||
|
with:
|
||||||
|
author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> # Same as committer
|
||||||
|
body: This is an automatic pull request to update translation files.
|
||||||
|
branch: create-pull-request/i18n
|
||||||
|
commit-message: Automatic translations update
|
||||||
|
delete-branch: true
|
||||||
|
labels: docs
|
||||||
|
sign-commits: true
|
||||||
|
title: Automatic translations update
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -4,6 +4,7 @@
|
|||||||
.python-version
|
.python-version
|
||||||
.idea/
|
.idea/
|
||||||
.direnv/
|
.direnv/
|
||||||
|
/var/
|
||||||
|
|
||||||
# ignore roles pulled by ansible-galaxy
|
# ignore roles pulled by ansible-galaxy
|
||||||
/roles/galaxy/*
|
/roles/galaxy/*
|
||||||
|
|||||||
40
.pre-commit-config.yaml
Normal file
40
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
exclude: "^(LICENSES/|var/)"
|
||||||
|
|
||||||
|
# See: https://pre-commit.com/hooks.html
|
||||||
|
repos:
|
||||||
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
|
rev: v6.0.0
|
||||||
|
hooks:
|
||||||
|
- id: check-added-large-files
|
||||||
|
- id: check-case-conflict
|
||||||
|
- id: check-json
|
||||||
|
- id: check-shebang-scripts-are-executable
|
||||||
|
- id: check-toml
|
||||||
|
- id: trailing-whitespace
|
||||||
|
- id: end-of-file-fixer
|
||||||
|
- repo: https://github.com/codespell-project/codespell
|
||||||
|
rev: v2.4.2
|
||||||
|
hooks:
|
||||||
|
- id: codespell
|
||||||
|
args: ["--skip=*.po,*.pot,i18n/"]
|
||||||
|
- repo: https://github.com/fsfe/reuse-tool # https://reuse.software/dev/#pre-commit-hook
|
||||||
|
rev: v6.2.0
|
||||||
|
hooks:
|
||||||
|
- id: reuse
|
||||||
|
- repo: https://github.com/ansible/ansible-lint
|
||||||
|
rev: v26.3.0
|
||||||
|
hooks:
|
||||||
|
- id: ansible-lint
|
||||||
|
files: '^roles/custom/'
|
||||||
|
args: ['roles/custom']
|
||||||
|
pass_filenames: false
|
||||||
|
- repo: local
|
||||||
|
hooks:
|
||||||
|
- id: check-examples-vars-migration-version
|
||||||
|
name: Check examples/vars.yml migration version matches expected
|
||||||
|
entry: bin/check-examples-vars-migration-version.sh
|
||||||
|
language: script
|
||||||
|
files: '(examples/vars\.yml|roles/custom/matrix_playbook_migration/defaults/main\.yml)'
|
||||||
|
pass_filenames: false
|
||||||
519
CHANGELOG.md
519
CHANGELOG.md
@@ -1,3 +1,474 @@
|
|||||||
|
# 2026-03-23
|
||||||
|
|
||||||
|
## Migration validation system introduced
|
||||||
|
|
||||||
|
Previously, when updating your setup, you had to remember to read the [CHANGELOG](CHANGELOG.md) file or risk breakage.
|
||||||
|
|
||||||
|
Now, the playbook includes a migration validation system that ensures you're aware of breaking changes before they affect your deployment.
|
||||||
|
You're now forced to acknowledge each breaking change, unless you wish to live dangerously (see below).
|
||||||
|
|
||||||
|
A new `matrix_playbook_migration_validated_version` variable has been introduced.
|
||||||
|
|
||||||
|
**New users** who started from the [example `vars.yml`](examples/vars.yml) file already have this variable set and do not need to do anything.
|
||||||
|
|
||||||
|
**Existing users** will need to add the following to their `vars.yml` file after reviewing all changelog entries up to now:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
matrix_playbook_migration_validated_version: v2026.03.23.0
|
||||||
|
```
|
||||||
|
|
||||||
|
Going forward, whenever a breaking change is introduced the playbook will:
|
||||||
|
|
||||||
|
- bump its expected version value (`matrix_playbook_migration_expected_version`), causing a discrepancy with what you validated (`matrix_playbook_migration_validated_version`)
|
||||||
|
|
||||||
|
- fail when you run it with a helpful message listing what changed and linking to the relevant changelog entries
|
||||||
|
|
||||||
|
After reviewing and adapting your setup, you simply update the variable to the new version.
|
||||||
|
|
||||||
|
If you'd like to live dangerously and skip these checks (not recommended), you can set this once and be done with it:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
matrix_playbook_migration_validated_version: "{{ matrix_playbook_migration_expected_version }}"
|
||||||
|
```
|
||||||
|
|
||||||
|
# 2026-03-19
|
||||||
|
|
||||||
|
## Matrix Authentication Service now prefers UNIX sockets for playbook-managed Postgres
|
||||||
|
|
||||||
|
When [Matrix Authentication Service](docs/configuring-playbook-matrix-authentication-service.md) (MAS) uses the playbook-managed Postgres service, it now connects to it via a [UNIX socket](https://en.wikipedia.org/wiki/Unix_domain_socket) by default instead of TCP.
|
||||||
|
|
||||||
|
This follows the same approach [applied to Synapse](#synapse-now-prefers-unix-sockets-for-playbook-managed-postgres-and-valkey) and reduces unnecessary container-network wiring, keeping local IPC off the network stack.
|
||||||
|
|
||||||
|
If you use an external Postgres server for MAS, this does not change your setup.
|
||||||
|
|
||||||
|
If you'd like to keep the previous TCP-based behavior, add the following configuration to your `vars.yml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
matrix_authentication_service_config_database_socket_enabled: false
|
||||||
|
```
|
||||||
|
|
||||||
|
# 2026-03-17
|
||||||
|
|
||||||
|
## Synapse now prefers UNIX sockets for playbook-managed Postgres and Valkey
|
||||||
|
|
||||||
|
When Synapse uses the playbook-managed Postgres and Valkey services, it now connects to them via [UNIX sockets](https://en.wikipedia.org/wiki/Unix_domain_socket) by default instead of TCP.
|
||||||
|
|
||||||
|
This reduces unnecessary container-network wiring and keeps local IPC off the network stack, which is a bit simpler and slightly more secure.
|
||||||
|
|
||||||
|
If you use an external Postgres server or external Redis/Valkey for Synapse, this does not change your setup.
|
||||||
|
|
||||||
|
If you'd like to keep the previous TCP-based behavior, add the following configuration to your `vars.yml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
matrix_synapse_database_socket_enabled: false
|
||||||
|
matrix_synapse_redis_path_enabled: false
|
||||||
|
```
|
||||||
|
|
||||||
|
# 2026-03-01
|
||||||
|
|
||||||
|
## (Potential BC Break) Synapse S3 media prefix is now applied consistently
|
||||||
|
|
||||||
|
The `matrix_synapse_ext_synapse_s3_storage_provider_config_prefix` variable is now wired consistently for both:
|
||||||
|
|
||||||
|
- the Synapse `s3_storage_provider` module configuration
|
||||||
|
- the `matrix-synapse-s3-storage-provider-migrate` migration script (`s3_media_upload --prefix`)
|
||||||
|
|
||||||
|
Previously, this variable could be set, but was not effectively applied by either of these paths.
|
||||||
|
|
||||||
|
**Affects**: users of [synapse-s3-storage-provider](docs/configuring-playbook-synapse-s3-storage-provider.md) who have configured a non-empty `matrix_synapse_ext_synapse_s3_storage_provider_config_prefix` value.
|
||||||
|
|
||||||
|
If your bucket data was uploaded without the prefix before this fix, enabling proper prefix usage can make existing objects appear missing until data is migrated/copied to the prefixed key namespace.
|
||||||
|
|
||||||
|
# 2026-02-26
|
||||||
|
|
||||||
|
## Internal refactor: merged the Synapse reverse-proxy companion role into `matrix-synapse`
|
||||||
|
|
||||||
|
The standalone `matrix-synapse-reverse-proxy-companion` role has been merged into the [matrix-synapse](roles/custom/matrix-synapse/) role.
|
||||||
|
|
||||||
|
This is not a user-facing change and does not change variable names (`matrix_synapse_reverse_proxy_companion_*` remain the same). The split looked clean on paper, but in practice both parts are tightly coupled through worker routing, tags (`setup-synapse`/`install-synapse`), and lifecycle ordering, so keeping them separate added coordination overhead with little practical benefit.
|
||||||
|
|
||||||
|
Compatibility note: existing companion-specific tags (`setup-synapse-reverse-proxy-companion` and `install-synapse-reverse-proxy-companion`) are still available.
|
||||||
|
|
||||||
|
With this change, Synapse and its reverse-proxy companion are managed in one role (`matrix-synapse`) while still keeping companion logic in dedicated task/template subdirectories for maintainability.
|
||||||
|
|
||||||
|
# 2026-02-21
|
||||||
|
|
||||||
|
## (BC Break) coturn is no longer auto-enabled by default
|
||||||
|
|
||||||
|
By default, the [coturn](./docs/configuring-playbook-turn.md) TURN server component is no longer enabled for every deployment.
|
||||||
|
|
||||||
|
This reduces resources and attach surface for deployments which:
|
||||||
|
|
||||||
|
- either don't need calls at all
|
||||||
|
- or use the modern [Matrix RTC](docs/configuring-playbook-matrix-rtc.md)/[Element Call](docs/configuring-playbook-element-call.md) stack.
|
||||||
|
|
||||||
|
Coturn is still auto-enabled when [Jitsi](./docs/configuring-playbook-jitsi.md) is enabled (`jitsi_enabled: true`), because Jitsi still depends on TURN for legacy Matrix integration.
|
||||||
|
|
||||||
|
Additionally, Coturn (when enabled) now defaults to using automatic IP detection of your server's external IP address, instead of assuming your Ansible inventory (`ansible_host`) points to a public address and using it for configuring `coturn_turn_external_ip_address`.
|
||||||
|
|
||||||
|
To restore the old behavior (needed for legacy call setups), add the following configuration to your `vars.yml`:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
coturn_enabled: true
|
||||||
|
|
||||||
|
# If you'd like explicit control over the external IP address (like before), keep this too.
|
||||||
|
coturn_turn_external_ip_address: "{{ ansible_host }}"
|
||||||
|
```
|
||||||
|
|
||||||
|
## LiveKit TURN TLS is now automatically fronted by playbook-managed Traefik
|
||||||
|
|
||||||
|
For deployments that use the playbook-managed Traefik reverse-proxy, LiveKit TURN over TCP is now SSL-terminated at Traefik and passed as plain TCP to LiveKit (`turn.external_tls = true`) by default.
|
||||||
|
|
||||||
|
To disable this behavior, set `livekit_server_config_turn_external_tls: false` and the playbook will revert to the old behavior - using traefik-certs-dumper to extract SSL certificates out of Traefik and pass them to LiveKit for explicit SSL termination there.
|
||||||
|
|
||||||
|
If you are using `other-traefik-container` or [another reverse-proxy](./configuring-playbook-own-webserver.md), this change does **not** switch behavior automatically. That mode remains using certificate files in the container (Traefik certificates dumper flow) unless you explicitly set the TURN-Traefik mode variables to opt in.
|
||||||
|
|
||||||
|
# 2026-02-17
|
||||||
|
|
||||||
|
## (BC Break) prometheus-nginxlog-exporter role has been relocated and variable names need adjustments
|
||||||
|
|
||||||
|
The role for prometheus-nginxlog-exporter has been relocated to the [mother-of-all-self-hosting](https://github.com/mother-of-all-self-hosting) organization.
|
||||||
|
|
||||||
|
Along with the relocation, the `matrix_prometheus_nginxlog_exporter_` prefix on its variable names has been renamed to `prometheus_nginxlog_exporter_`, so you need to adjust your `vars.yml` configuration.
|
||||||
|
|
||||||
|
As always, the playbook would let you know about this and point out any variables you may have missed.
|
||||||
|
|
||||||
|
## synapse-auto-invite-accept has been removed from the playbook
|
||||||
|
|
||||||
|
[synapse-auto-invite-accept](./docs/configuring-playbook-synapse-auto-accept-invite.md) has been removed from the playbook, as the same functionality [has been integrated](https://github.com/element-hq/synapse/pull/17147) to Synapse since [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0).
|
||||||
|
|
||||||
|
See [this section](./docs/configuring-playbook-synapse-auto-accept-invite.md#native-alternative) for details about how to enable the function on Synapse.
|
||||||
|
|
||||||
|
If you're using any `matrix_synapse_ext_synapse_auto_accept_invite_*` variables, the playbook will let you know which one you'll need to remove from `vars.yml`.
|
||||||
|
|
||||||
|
# 2026-02-16
|
||||||
|
|
||||||
|
## matrix-appservice-slack has been removed from the playbook
|
||||||
|
|
||||||
|
[matrix-appservice-slack](./docs/configuring-playbook-bridge-appservice-slack.md) has been removed from the playbook, as it has been discontinued because the public Matrix.org Slack bridge has been decommissioned on January 14th, 2026.
|
||||||
|
|
||||||
|
The playbook will let you know if you're using any `matrix_appservice_slack_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the component manually](./docs/configuring-playbook-bridge-appservice-slack.md#uninstalling-the-component-manually).
|
||||||
|
|
||||||
|
**Note**: Bridging to [Slack](https://slack.com) can also happen via the [mautrix-slack](./docs/configuring-playbook-bridge-mautrix-slack.md) bridge supported by the playbook.
|
||||||
|
|
||||||
|
# 2026-02-13
|
||||||
|
|
||||||
|
## Conditional service restart for `install-*` commands
|
||||||
|
|
||||||
|
When running `install-all` or `install-service` (whether via `just` or raw `ansible-playbook`), only services whose configuration or container image actually changed during the playbook run will now be restarted. Unchanged services are left running (or get started if they were stopped). This reduces unnecessary downtime — particularly for services like Traefik (the reverse proxy), which previously caused brief connectivity interruptions on every playbook run even when nothing changed.
|
||||||
|
|
||||||
|
When running with `setup-*` tags (e.g. `setup-all`, `setup-synapse`), all services continue to be unconditionally restarted as before.
|
||||||
|
|
||||||
|
Currently, only Traefik tracks its own changes and benefits from conditional restart. All other services default to being restarted (the previous behavior). This is just the beginning — as more roles gain change-tracking support, playbook performance will improve and downtime will decrease dramatically, especially for `install-all` runs where most services haven't changed.
|
||||||
|
|
||||||
|
Some benchmarks for `just install-service traefik` when Traefik settings did not change:
|
||||||
|
|
||||||
|
- **Before**:
|
||||||
|
- total time: ~56 seconds 🐌
|
||||||
|
- Traefik restarted: yes (unnecessarily) ❌
|
||||||
|
- dependent services restarted: yes, all of them ❌
|
||||||
|
- **After**:
|
||||||
|
- total time: ~27 seconds ⚡
|
||||||
|
- Traefik restarted: no ✅
|
||||||
|
- dependent services restarted: no ✅
|
||||||
|
|
||||||
|
This behavior can be overridden via `--extra-vars='devture_systemd_service_manager_conditional_restart_enabled=false'` to force unconditional restarts. See [Conditional service restart](docs/just.md#conditional-service-restart) for details.
|
||||||
|
|
||||||
|
|
||||||
|
# 2026-02-12
|
||||||
|
|
||||||
|
## Dimension integration manager has been removed from the playbook
|
||||||
|
|
||||||
|
The [Dimension integration manager](./docs/configuring-playbook-dimension.md) has been removed from the playbook, as it has been unmaintained.
|
||||||
|
|
||||||
|
The playbook will let you know if you're using any `matrix_dimension_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the component manually](./docs/configuring-playbook-dimension.md#uninstalling-the-component-manually).
|
||||||
|
|
||||||
|
## (BC Break) Hydrogen role has been relocated and variable names need adjustments
|
||||||
|
|
||||||
|
The role for Hydrogen has been relocated to the [mother-of-all-self-hosting](https://github.com/mother-of-all-self-hosting) organization.
|
||||||
|
|
||||||
|
Along with the relocation, the `matrix_client_hydrogen_` prefix was dropped from its variable names, so you need to adjust your `vars.yml` configuration.
|
||||||
|
|
||||||
|
You need to do the following replacement:
|
||||||
|
|
||||||
|
- `matrix_client_hydrogen_` -> `hydrogen_`
|
||||||
|
|
||||||
|
As always, the playbook would let you know about this and point out any variables you may have missed.
|
||||||
|
|
||||||
|
# 2026-02-11
|
||||||
|
|
||||||
|
## (BC Break) coturn role has been relocated and variable names need adjustments
|
||||||
|
|
||||||
|
The role for coturn has been relocated to the [mother-of-all-self-hosting](https://github.com/mother-of-all-self-hosting) organization.
|
||||||
|
|
||||||
|
Along with the relocation, the `matrix_coturn_` prefix on its variable names has been renamed to `coturn_`, so you need to adjust your `vars.yml` configuration.
|
||||||
|
|
||||||
|
As always, the playbook would let you know about this and point out any variables you may have missed.
|
||||||
|
|
||||||
|
## conduwuit has been removed from the playbook
|
||||||
|
|
||||||
|
[conduwuit](./docs/configuring-playbook-conduwuit.md) has been removed from the playbook, as it has been abandoned.
|
||||||
|
|
||||||
|
The playbook will let you know if you're using any `matrix_conduwuit_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the service manually](./docs/configuring-playbook-conduwuit.md#uninstalling-the-service-manually).
|
||||||
|
|
||||||
|
Since [Continuwuity](configuring-playbook-continuwuity.md) is a drop-in replacement for conduwuit, migration is possible. Please refer to [this section](./configuring-playbook-continuwuity.md#migrating-from-conduwuit) for details.
|
||||||
|
|
||||||
|
# 2026-02-09
|
||||||
|
|
||||||
|
## (BC Break) matrix-media-repo datastore IDs are now required in `vars.yml`
|
||||||
|
|
||||||
|
**Affects**: users with [matrix-media-repo](docs/configuring-playbook-matrix-media-repo.md) enabled (`matrix_media_repo_enabled: true`)
|
||||||
|
|
||||||
|
The `matrix_media_repo_datastore_file_id` and `matrix_media_repo_datastore_s3_id` variables are no longer auto-configured with values. They must now be explicitly defined in your `vars.yml` file. The playbook will fail with a helpful error if they are not set (when needed).
|
||||||
|
|
||||||
|
These were never meant to be auto-configured. They were derived from `matrix_homeserver_generic_secret_key`, which is intended for secrets that are OK to change subsequently (and Ansible would assist in propagating these changes). matrix-media-repo datastore IDs are not secrets — they are static identifiers linking media to storage backends, and **must not change** after first use.
|
||||||
|
|
||||||
|
**For existing installations**, retrieve your current values from the server:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
grep 'id:' /matrix/media-repo/config/media-repo.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
Then add to your `vars.yml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
matrix_media_repo_datastore_file_id: "YOUR_FILE_DATASTORE_ID_HERE"
|
||||||
|
|
||||||
|
# Only if you use S3 storage:
|
||||||
|
# matrix_media_repo_datastore_s3_id: "YOUR_S3_DATASTORE_ID_HERE"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Why do this?**: This change allows us to **remove the [passlib](https://passlib.readthedocs.io/en/stable/index.html) Python library** from the [prerequisites](docs/prerequisites.md), as it was the last component that depended on it.
|
||||||
|
|
||||||
|
# 2026-02-08
|
||||||
|
|
||||||
|
## Zulip bridge has been removed from the playbook
|
||||||
|
|
||||||
|
Zulip bridge has been removed from the playbook, as it doesn't work, and the maintainer seems to have abandoned it. See [this issue](https://github.com/GearKite/MatrixZulipBridge/issues/23) for more context.
|
||||||
|
|
||||||
|
## Switched to faster secret derivation for service passwords
|
||||||
|
|
||||||
|
We've switched the method used for deriving service passwords (database passwords, appservice tokens, etc.) from the `matrix_homeserver_generic_secret_key` variable.
|
||||||
|
|
||||||
|
The old method used `password_hash('sha512', rounds=655555)` (655,555 rounds of SHA-512 hashing), which was designed for protecting low-entropy human passwords against brute-force attacks. For deriving secrets from an already high-entropy secret key, this many rounds provide no additional security - the secret key's entropy is what protects the derived passwords, not the computational cost of hashing.
|
||||||
|
|
||||||
|
The new method uses a single-round `hash('sha512')` with a unique salt per service. This is equally secure for this use case (SHA-512 remains preimage-resistant; brute-forcing a high-entropy key is infeasible regardless of rounds), while being dramatically faster.
|
||||||
|
|
||||||
|
On a fast mini PC, evaluating `postgres_managed_databases` (which references multiple database passwords) dropped from **~10.7 seconds to ~0.6 seconds**. The Postgres role evaluates this variable multiple times during a run, so the cumulative savings are significant. All other roles that reference derived passwords also benefit.
|
||||||
|
|
||||||
|
**What this means for users**: all derived service passwords (database passwords, appservice tokens, etc.) will change on the next playbook run. The main/superuser database password (`postgres_connection_password`) is not affected, as it is hardcoded in inventory variables rather than derived via hashing. All services will receive their new passwords as part of the same run, so this should be a seamless, non-user-impacting change.
|
||||||
|
|
||||||
|
## (BC Break) Dynamic DNS role has been relocated and variable names need adjustments
|
||||||
|
|
||||||
|
The role for Dynamic DNS has been relocated to the [mother-of-all-self-hosting](https://github.com/mother-of-all-self-hosting) organization.
|
||||||
|
|
||||||
|
Along with the relocation, the `matrix_dynamic_dns_` prefix on its variable names has been renamed to `ddclient_`, so you need to adjust your `vars.yml` configuration.
|
||||||
|
|
||||||
|
As always, the playbook would let you know about this and point out any variables you may have missed.
|
||||||
|
|
||||||
|
## ma1sd has been removed from the playbook
|
||||||
|
|
||||||
|
[ma1sd](./docs/configuring-playbook-ma1sd.md) has been removed from the playbook, as it has been unmaintained for a long time.
|
||||||
|
|
||||||
|
The playbook will let you know if you're using any `matrix_ma1sd_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the component manually](./docs/configuring-playbook-ma1sd.md#uninstalling-the-component-manually).
|
||||||
|
|
||||||
|
Please note that some of the functions can be achieved with other components. For example, if you wish to implement LDAP integration, you might as well check out [the LDAP provider module for Synapse](./docs/configuring-playbook-ldap-auth.md) instead.
|
||||||
|
|
||||||
|
# 2026-02-07
|
||||||
|
|
||||||
|
## (BC Break) Cinny role has been relocated and variable names need adjustments
|
||||||
|
|
||||||
|
The role for Cinny has been relocated to the [mother-of-all-self-hosting](https://github.com/mother-of-all-self-hosting) organization.
|
||||||
|
|
||||||
|
Along with the relocation, the `matrix_client_cinny_` prefix was dropped from its variable names, so you need to adjust your `vars.yml` configuration.
|
||||||
|
|
||||||
|
You need to do the following replacement:
|
||||||
|
|
||||||
|
- `matrix_client_cinny_` -> `cinny_`
|
||||||
|
|
||||||
|
As always, the playbook would let you know about this and point out any variables you may have missed.
|
||||||
|
|
||||||
|
## The Sliding Sync proxy has been removed from the playbook
|
||||||
|
|
||||||
|
The [Sliding Sync proxy](./docs/configuring-playbook-sliding-sync-proxy.md) has been removed from the playbook, as it's been replaced with a different method (called Simplified Sliding Sync) integrated to newer homeservers by default (**Conduit** homeserver from version `0.6.0` or **Synapse** from version `1.114`).
|
||||||
|
|
||||||
|
The playbook will let you know if you're using any `matrix_sliding_sync_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the proxy manually](./docs/configuring-playbook-sliding-sync-proxy.md#uninstalling-the-proxy-manually).
|
||||||
|
|
||||||
|
# 2026-02-04
|
||||||
|
|
||||||
|
## baibot now supports OpenAI's built-in tools (Web Search and Code Interpreter)
|
||||||
|
|
||||||
|
**TLDR**: if you're using the [OpenAI provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#openai) with [baibot](docs/configuring-playbook-bot-baibot.md), you can now enable [built-in tools](https://github.com/etkecc/baibot/blob/61d18b2/docs/features.md#%EF%B8%8F-built-in-tools-openai-only) (`web_search` and `code_interpreter`) to extend the model's capabilities.
|
||||||
|
|
||||||
|
These tools are **disabled by default** and can be enabled via Ansible variables for static agent configurations:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_tools_web_search: true
|
||||||
|
matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_tools_code_interpreter: true
|
||||||
|
```
|
||||||
|
|
||||||
|
Users who define agents dynamically at runtime will need to [update their agents](https://github.com/etkecc/baibot/blob/61d18b2/docs/agents.md#updating-agents) to enable these tools. See the [baibot v1.14.0 changelog](https://github.com/etkecc/baibot/blob/61d18b2/CHANGELOG.md) for details.
|
||||||
|
|
||||||
|
## Whoami-based sync worker routing for improved sticky sessions for Synapse
|
||||||
|
|
||||||
|
Deployments using [Synapse workers](./docs/configuring-playbook-synapse.md#load-balancing-with-workers) now benefit from improved sync worker routing via a new whoami-based mechanism (making use of the [whoami Matrix Client-Server API](https://spec.matrix.org/v1.17/client-server-api/#get_matrixclientv3accountwhoami)).
|
||||||
|
|
||||||
|
Previously, sticky routing for sync workers relied on parsing usernames from access tokens, which only worked with native Synapse tokens (`syt_<base64 username>_...`). This approach failed for [Matrix Authentication Service](docs/configuring-playbook-matrix-authentication-service.md) (MAS) deployments, where tokens are opaque and don't contain username information. This resulted in device-level stickiness (same token → same worker) rather than user-level stickiness (same user → same worker regardless of device), leading to suboptimal cache utilization on sync workers.
|
||||||
|
|
||||||
|
The new implementation calls Synapse's `/whoami` endpoint to resolve access tokens to usernames, enabling proper user-level sticky routing regardless of the authentication system in use (native Synapse auth, MAS, etc.). Results are cached to minimize overhead.
|
||||||
|
|
||||||
|
This change:
|
||||||
|
- **Automatically enables** when sync workers are configured (no action required)
|
||||||
|
- **Works universally** with any authentication system
|
||||||
|
- **Replaces the old implementation** entirely to keep the codebase simple
|
||||||
|
- **Adds minimal overhead** (one cached internal subrequest per sync request) for non-MAS deployments
|
||||||
|
|
||||||
|
For debugging, you can enable verbose logging and/or response headers showing routing decisions:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Logs cache hits/misses and routing decisions to the container's stderr
|
||||||
|
matrix_synapse_reverse_proxy_companion_whoami_sync_worker_router_logging_enabled: true
|
||||||
|
|
||||||
|
# Adds X-Sync-Worker-Router-User-Identifier and X-Sync-Worker-Router-Upstream headers to sync responses
|
||||||
|
matrix_synapse_reverse_proxy_companion_whoami_sync_worker_router_debug_headers_enabled: true
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
# 2025-12-09
|
||||||
|
|
||||||
|
## Traefik Cert Dumper upgrade
|
||||||
|
|
||||||
|
The variable `traefik_certs_dumper_ssl_dir_path` was renamed to `traefik_certs_dumper_ssl_path`. Users who use [their own webserver with Traefik](docs/configuring-playbook-own-webserver.md) may need to adjust their configuration.
|
||||||
|
|
||||||
|
The variable `traefik_certs_dumper_dumped_certificates_dir_path` was renamed to `traefik_certs_dumper_dumped_certificates_path`. Users who use [SRV Server Delegation](docs/howto-srv-server-delegation.md) may need to adjust their configuration.
|
||||||
|
|
||||||
|
# 2025-11-23
|
||||||
|
|
||||||
|
## Matrix.to support
|
||||||
|
|
||||||
|
The playbook now supports [Matrix.to](https://github.com/matrix-org/matrix.to) — a simple URL redirection service which powers [matrix.to](https://matrix.to).
|
||||||
|
|
||||||
|
To learn more, see our [Setting up Matrix.to](docs/configuring-playbook-matrixto.md) documentation page.
|
||||||
|
|
||||||
|
# 2025-11-09
|
||||||
|
|
||||||
|
## matrix-appservice-webhooks has been removed from the playbook
|
||||||
|
|
||||||
|
[matrix-appservice-webhooks](./docs/configuring-playbook-bridge-appservice-webhooks.md) has been removed from the playbook, as it has been deprecated since more than several years.
|
||||||
|
|
||||||
|
The playbook will let you know if you're using any `matrix_appservice_webhooks_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the bridge manually](./docs/configuring-playbook-bridge-appservice-webhooks.md#uninstalling-the-bridge-manually).
|
||||||
|
|
||||||
|
## mautrix-facebook and mautrix-instagram have been removed from the playbook
|
||||||
|
|
||||||
|
[mautrix-facebook](./docs/configuring-playbook-bridge-mautrix-facebook.md) and [mautrix-instagram](./docs/configuring-playbook-bridge-mautrix-instagram.md) have been removed from the playbook, as they have been deprecated in favor of the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge, integrated to the playbook at [2024-02-19](#2024-02-19).
|
||||||
|
|
||||||
|
The playbook will let you know if you're using any variables for those bridges:
|
||||||
|
|
||||||
|
- `matrix_mautrix_facebook_*`
|
||||||
|
- `matrix_mautrix_instagram_*`
|
||||||
|
|
||||||
|
You'll need to remove them from `vars.yml` and potentially uninstall them manually. Consult pages below for details:
|
||||||
|
|
||||||
|
- [Instruction for mautrix-facebook](./docs/configuring-playbook-bridge-mautrix-facebook.md#uninstalling-the-bridge-manually)
|
||||||
|
- [Instruction for mautrix-instagram](./docs/configuring-playbook-bridge-mautrix-instagram.md#uninstalling-the-bridge-manually)
|
||||||
|
|
||||||
|
# 2025-11-08
|
||||||
|
|
||||||
|
## MatrixZulipBridge support
|
||||||
|
|
||||||
|
Thanks to [Suguru Hirahara](https://github.com/luixxiul), the playbook now supports the [GearKite/MatrixZulipBridge](https://github.com/GearKite/MatrixZulipBridg) bridge for bridging Matrix to [Zulip](https://zulip.com/).
|
||||||
|
|
||||||
|
To learn more, see our [Setting up Zulip bridging](docs/configuring-playbook-bridge-zulip.md) documentation page.
|
||||||
|
|
||||||
|
# 2025-11-07
|
||||||
|
|
||||||
|
## The matrix-chatgpt-bot has been removed from the playbook
|
||||||
|
|
||||||
|
The [matrix-bot-chatgpt](./docs/configuring-playbook-bot-chatgpt.md) has been removed from the playbook, as it has been deprecated since September 2024.
|
||||||
|
|
||||||
|
The playbook will let you know if you're using any `matrix_bot_chatgpt_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the bot manually](./docs/configuring-playbook-bot-chatgpt.md#uninstalling-matrix-chatgpt-bot-manually).
|
||||||
|
|
||||||
|
# 2025-11-05
|
||||||
|
|
||||||
|
## The MX Puppet bridges for Discord, Instagram, Slack, and Twitter have been removed from the playbook
|
||||||
|
|
||||||
|
The MX Puppet bridges for Discord, Instagram, Slack, and Twitter have been removed from the playbook, as they have been unmaintained for more than several years and do not support important features like authenticated media. See [this issue](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3867) for the context.
|
||||||
|
|
||||||
|
The playbook will let you know if you're using any variables for those bridges:
|
||||||
|
|
||||||
|
- `matrix_mx_puppet_discord_*`
|
||||||
|
- `matrix_mx_puppet_instagram_*`
|
||||||
|
- `matrix_mx_puppet_slack_*`
|
||||||
|
- `matrix_mx_puppet_twitter_*`
|
||||||
|
|
||||||
|
You'll need to remove them from `vars.yml` and potentially uninstall them manually. Consult pages below for details:
|
||||||
|
|
||||||
|
- [Instruction for MX Puppet Discord bridge](./docs/configuring-playbook-bridge-mx-puppet-discord.md#uninstalling-the-bridge-manually)
|
||||||
|
- [Instruction for MX Puppet Instagram bridge](./docs/configuring-playbook-bridge-mx-puppet-instagram.md#uninstalling-the-bridge-manually)
|
||||||
|
- [Instruction for MX Puppet Slack bridge](./docs/configuring-playbook-bridge-mx-puppet-slack.md#uninstalling-the-bridge-manually)
|
||||||
|
- [Instruction for MX Puppet Twitter bridge](./docs/configuring-playbook-bridge-mx-puppet-twitter.md#uninstalling-the-bridge-manually)
|
||||||
|
|
||||||
|
# 2025-11-04
|
||||||
|
|
||||||
|
## The Go Skype bridge has been removed from the playbook
|
||||||
|
|
||||||
|
The [go-skype-bridge](./docs/configuring-playbook-bridge-go-skype-bridge.md) has been removed from the playbook, as Skype has been discontinued since the May 2025.
|
||||||
|
|
||||||
|
The playbook will let you know if you're using any `matrix_go_skype_bridge_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the bridge manually](./docs/configuring-playbook-bridge-go-skype-bridge.md#uninstalling-the-bridge-manually).
|
||||||
|
|
||||||
|
# 2025-10-02
|
||||||
|
|
||||||
|
## Element Admin support
|
||||||
|
|
||||||
|
The playbook now supports [Element Admin](./docs/configuring-playbook-element-admin.md) - a new web-based administration panel for Synapse and [Matrix Authentication Service](./docs/configuring-playbook-matrix-authentication-service.md).
|
||||||
|
|
||||||
|
Deployments based on Matrix Authentication Service may find it useful to run both Synapse Admin and Element Admin at the same time.
|
||||||
|
|
||||||
|
Deployments that don't rely on Matrix Authentication Service are unlikely to find anything useful in Element Admin right now (it's too basic in its current form).
|
||||||
|
|
||||||
|
|
||||||
|
# 2025-04-26
|
||||||
|
|
||||||
|
## Continuwuity support
|
||||||
|
|
||||||
|
Thanks to [Virkkunen](https://github.com/Virkkunen), we now have optional experimental [Continuwuity](./docs/configuring-playbook-continuwuity.md) homeserver support.
|
||||||
|
|
||||||
|
Continuwuity is a fork of [conduwuit](./docs/configuring-playbook-conduwuit.md), which the playbook also supports. It appears that conduwuit has been abandoned and various forks (like Continuwuity, [Tuwunel](https://github.com/matrix-construct/tuwunel) and possibly others) are continuing in its path.
|
||||||
|
|
||||||
|
Existing installations do **not** need to be updated. **Synapse is still the default homeserver implementation** installed by the playbook.
|
||||||
|
|
||||||
|
People that used to run conduwuit, may wish to:
|
||||||
|
|
||||||
|
- either [migrate from conduwuit to Continuwuity](./docs/configuring-playbook-continuwuity.md#migrating-from-conduwuit)
|
||||||
|
- or wait for some of the other forks to progress and for support for them to get added to the playbook
|
||||||
|
|
||||||
|
**The homeserver implementation of an existing server cannot be changed** (e.g. from Synapse/Conduit/Dendrite to Continuwuity) without data loss.
|
||||||
|
|
||||||
|
|
||||||
|
# 2025-04-09
|
||||||
|
|
||||||
|
## Element Call frontend installation is now optional
|
||||||
|
|
||||||
|
Because all Element clients (Element Web and Element X mobile) now embed and use their own Element Call frontend application (and not the one hosted via the playbook), it makes little sense for the playbook to self-host the Element Call frontend for you. Setting up the frontend requires an additional hostname (DNS setup) and it won't be used by Element clients anyway, so **we now recommend not installing the Element Call frontend**.
|
||||||
|
|
||||||
|
💡 A reason you may wish to continue installing the Element Call frontend (despite Matrix clients not making use of it), is if you need to use it standalone - directly via a browser (without a Matrix client).
|
||||||
|
|
||||||
|
The playbook now lets you [Decide between Element Call vs just the Matrix RTC stack](./docs/configuring-playbook-element-call.md#decide-between-element-call-vs-just-the-matrix-rtc-stack).
|
||||||
|
|
||||||
|
If you've already installed Element Call (via `matrix_element_call_enabled: true`), you can switch to installing just the [Matrix RTC (Real-Time Communication) stack](./docs/configuring-playbook-matrix-rtc.md) (all supporting services **without the Element Call frontend**) by:
|
||||||
|
|
||||||
|
1. Adjusting your `vars.yml` configuration like this:
|
||||||
|
|
||||||
|
```diff
|
||||||
|
-matrix_element_call_enabled: true
|
||||||
|
+matrix_rtc_enabled: true
|
||||||
|
```
|
||||||
|
|
||||||
|
2. [Re-running the playbook](./docs/installing.md) with the `setup-all` Ansible tag (e.g. `just setup-all`)
|
||||||
|
|
||||||
|
3. Getting rid of the `call.element.example.com` DNS record
|
||||||
|
|
||||||
|
|
||||||
# 2025-03-15
|
# 2025-03-15
|
||||||
|
|
||||||
## Element Call support
|
## Element Call support
|
||||||
@@ -58,7 +529,7 @@ In light of this new information, you have 2 options:
|
|||||||
- Consider closing the STUN/UDP port with the following configuration:
|
- Consider closing the STUN/UDP port with the following configuration:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_coturn_container_stun_plain_host_bind_port_udp: ""
|
coturn_container_stun_plain_host_bind_port_udp: ""
|
||||||
```
|
```
|
||||||
|
|
||||||
- Consider keeping `3478/udp` blocked in your external firewall (if you have one)
|
- Consider keeping `3478/udp` blocked in your external firewall (if you have one)
|
||||||
@@ -114,21 +585,21 @@ To **completely eliminate the problem** of DDoS amplification attacks done throu
|
|||||||
|
|
||||||
The playbook now **only exposes the Coturn STUN port (`3478`) over TCP by default**.
|
The playbook now **only exposes the Coturn STUN port (`3478`) over TCP by default**.
|
||||||
|
|
||||||
💡 Users may wish to further remove the (now unnnecessary) firewall rule allowing access to `3478/udp`.
|
💡 Users may wish to further remove the (now unnecessary) firewall rule allowing access to `3478/udp`.
|
||||||
|
|
||||||
If you'd like the Coturn STUN port to be exposed over UDP like before, you can revert to the previous behavior by using the following configuration in your `vars.yml` file:
|
If you'd like the Coturn STUN port to be exposed over UDP like before, you can revert to the previous behavior by using the following configuration in your `vars.yml` file:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_coturn_container_stun_plain_host_bind_port_udp: "3478"
|
coturn_container_stun_plain_host_bind_port_udp: "3478"
|
||||||
```
|
```
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> People running Coturn directly on the `host` network (using `matrix_coturn_container_network: host`) will still have the STUN port exposed over UDP, as port exposure is done directly via Coturn and not via Docker. In such cases, the playbook cannot prevent `3478/udp` port exposure and you'd need to do it in another way (separate firewall rule, etc).
|
> People running Coturn directly on the `host` network (using `coturn_container_network: host`) will still have the STUN port exposed over UDP, as port exposure is done directly via Coturn and not via Docker. In such cases, the playbook cannot prevent `3478/udp` port exposure and you'd need to do it in another way (separate firewall rule, etc).
|
||||||
|
|
||||||
|
|
||||||
# 2025-02-17
|
# 2025-02-17
|
||||||
|
|
||||||
## FluffyChat Web suport
|
## FluffyChat Web support
|
||||||
|
|
||||||
Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook now supports [FluffyChat Web](https://github.com/krille-chan/fluffychat) as an additional Matrix client you can self-host.
|
Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook now supports [FluffyChat Web](https://github.com/krille-chan/fluffychat) as an additional Matrix client you can self-host.
|
||||||
|
|
||||||
@@ -150,7 +621,7 @@ The playbook will let you know if you're using any `matrix_mautrix_hangouts_*` v
|
|||||||
|
|
||||||
## Redis and KeyDB are no longer part of the playbook
|
## Redis and KeyDB are no longer part of the playbook
|
||||||
|
|
||||||
**TLDR**: The playbook now exclusively uses Valkey as its Redis-compatible memorystore implementation, removing support for Redis and KeyDB. Most users are unaffected by this change unless they explicitly configured Redis or KeyDB variables. Only users that were explicitly definining `redis_*` or `keydb_*` variables will need to update their configuration to use `valkey_*` variables instead.
|
**TLDR**: The playbook now exclusively uses Valkey as its Redis-compatible memorystore implementation, removing support for Redis and KeyDB. Most users are unaffected by this change unless they explicitly configured Redis or KeyDB variables. Only users that were explicitly defining `redis_*` or `keydb_*` variables will need to update their configuration to use `valkey_*` variables instead.
|
||||||
|
|
||||||
The playbook has gone through several iterations of memorystore implementations:
|
The playbook has gone through several iterations of memorystore implementations:
|
||||||
|
|
||||||
@@ -376,8 +847,8 @@ If upstream synapse-admin picks up the pace and improves, the etke.cc fork may d
|
|||||||
If you'd like to switch back to the original synapse-admin software, you can do so by adding the following configuration to your `vars.yml` file:
|
If you'd like to switch back to the original synapse-admin software, you can do so by adding the following configuration to your `vars.yml` file:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_synapse_admin_docker_image: "{{ matrix_synapse_admin_docker_image_registry_prefix }}awesometechnologies/synapse-admin:{{ matrix_synapse_admin_version }}"
|
matrix_synapse_admin_container_image: "{{ matrix_synapse_admin_container_image_registry_prefix }}awesometechnologies/synapse-admin:{{ matrix_synapse_admin_version }}"
|
||||||
matrix_synapse_admin_docker_image_registry_prefix_upstream: docker.io/
|
matrix_synapse_admin_container_image_registry_prefix_upstream: docker.io/
|
||||||
|
|
||||||
matrix_synapse_admin_version: 0.10.3
|
matrix_synapse_admin_version: 0.10.3
|
||||||
|
|
||||||
@@ -703,7 +1174,7 @@ For people building commercial products on top of Synapse, they may have to eith
|
|||||||
|
|
||||||
We're no lawyers and this changelog entry does not aim to give you the best legal advice, so please research on your own!
|
We're no lawyers and this changelog entry does not aim to give you the best legal advice, so please research on your own!
|
||||||
|
|
||||||
If you'd like to continue using the old Apache-2.0-licensed Synapse (for a while longer anyway), the playbook makes it possible by intruducing a new Ansible variable. You can do it like this:
|
If you'd like to continue using the old Apache-2.0-licensed Synapse (for a while longer anyway), the playbook makes it possible by introducing a new Ansible variable. You can do it like this:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Switch the organization that Synapse container images (or source code for self-building) are pulled from.
|
# Switch the organization that Synapse container images (or source code for self-building) are pulled from.
|
||||||
@@ -786,7 +1257,7 @@ Despite these downsides (which the playbook manages automatically), we believe i
|
|||||||
|
|
||||||
People running the default Traefik setup do not need to do anything to make Traefik take on this extra job. Your Traefik configuration will be updated automatically.
|
People running the default Traefik setup do not need to do anything to make Traefik take on this extra job. Your Traefik configuration will be updated automatically.
|
||||||
|
|
||||||
**People runnning their own Traefik reverse-proxy need to do [minor adjustments](#people-managing-their-own-traefik-instance-need-to-do-minor-changes)**, as described in the section below.
|
**People running their own Traefik reverse-proxy need to do [minor adjustments](#people-managing-their-own-traefik-instance-need-to-do-minor-changes)**, as described in the section below.
|
||||||
|
|
||||||
You may disable Traefik acting as an intermediary by explicitly setting `matrix_playbook_public_matrix_federation_api_traefik_entrypoint_enabled` to `false`. Services would then be configured to talk to the homeserver directly, giving you a slight performance boost and a "simpler" Traefik setup. However, such a configuration is less tested and will cause troubles, especially if you enable more services (like `matrix-media-repo`, etc.) in the future. As such, it's not recommended.
|
You may disable Traefik acting as an intermediary by explicitly setting `matrix_playbook_public_matrix_federation_api_traefik_entrypoint_enabled` to `false`. Services would then be configured to talk to the homeserver directly, giving you a slight performance boost and a "simpler" Traefik setup. However, such a configuration is less tested and will cause troubles, especially if you enable more services (like `matrix-media-repo`, etc.) in the future. As such, it's not recommended.
|
||||||
|
|
||||||
@@ -1466,12 +1937,12 @@ Other roles which aren't strictly related to Matrix are likely to follow this fa
|
|||||||
|
|
||||||
## coturn can now use host-networking
|
## coturn can now use host-networking
|
||||||
|
|
||||||
Large coturn deployments (with a huge range of ports specified via `matrix_coturn_turn_udp_min_port` and `matrix_coturn_turn_udp_max_port`) experience a huge slowdown with how Docker publishes all these ports (setting up firewall forwarding rules), which leads to a very slow coturn service startup and shutdown.
|
Large coturn deployments (with a huge range of ports specified via `coturn_turn_udp_min_port` and `coturn_turn_udp_max_port`) experience a huge slowdown with how Docker publishes all these ports (setting up firewall forwarding rules), which leads to a very slow coturn service startup and shutdown.
|
||||||
|
|
||||||
Such deployments don't need to run coturn within a private container network anymore. coturn can now run with host-networking by using configuration like this:
|
Such deployments don't need to run coturn within a private container network anymore. coturn can now run with host-networking by using configuration like this:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_coturn_container_network: host
|
coturn_container_network: host
|
||||||
```
|
```
|
||||||
|
|
||||||
With such a configuration, **Docker no longer needs to configure thousands of firewall forwarding rules** each time coturn starts and stops. This, however, means that **you will need to ensure these ports are open** in your firewall yourself.
|
With such a configuration, **Docker no longer needs to configure thousands of firewall forwarding rules** each time coturn starts and stops. This, however, means that **you will need to ensure these ports are open** in your firewall yourself.
|
||||||
@@ -1480,11 +1951,11 @@ Thanks to us [tightening coturn security](#backward-compatibility-tightening-cot
|
|||||||
|
|
||||||
## (Backward Compatibility) Tightening coturn security can lead to connectivity issues
|
## (Backward Compatibility) Tightening coturn security can lead to connectivity issues
|
||||||
|
|
||||||
**TLDR**: users who run and access their Matrix server on a private network (likely a small minority of users) may experience connectivity issues with our new default coturn blocklists. They may need to override `matrix_coturn_denied_peer_ips` and remove some IP ranges from it.
|
**TLDR**: users who run and access their Matrix server on a private network (likely a small minority of users) may experience connectivity issues with our new default coturn blocklists. They may need to override `coturn_denied_peer_ips` and remove some IP ranges from it.
|
||||||
|
|
||||||
Inspired by [this security article](https://www.rtcsec.com/article/cve-2020-26262-bypass-of-coturns-access-control-protection/), we've decided to make use of coturn's `denied-peer-ip` functionality to prevent relaying network traffic to certain private IP subnets. This ensures that your coturn server won't accidentally try to forward traffic to certain services running on your local networks. We run coturn in a container and in a private container network by default, which should prevent such access anyway, but having additional block layers in place is better.
|
Inspired by [this security article](https://www.rtcsec.com/article/cve-2020-26262-bypass-of-coturns-access-control-protection/), we've decided to make use of coturn's `denied-peer-ip` functionality to prevent relaying network traffic to certain private IP subnets. This ensures that your coturn server won't accidentally try to forward traffic to certain services running on your local networks. We run coturn in a container and in a private container network by default, which should prevent such access anyway, but having additional block layers in place is better.
|
||||||
|
|
||||||
If you access your Matrix server from a local network and need coturn to relay to private IP addresses, you may observe that relaying is now blocked due to our new default `denied-peer-ip` lists (specified in `matrix_coturn_denied_peer_ips`). If you experience such connectivity problems, consider overriding this setting in your `vars.yml` file and removing certain networks from it.
|
If you access your Matrix server from a local network and need coturn to relay to private IP addresses, you may observe that relaying is now blocked due to our new default `denied-peer-ip` lists (specified in `coturn_denied_peer_ips`). If you experience such connectivity problems, consider overriding this setting in your `vars.yml` file and removing certain networks from it.
|
||||||
|
|
||||||
We've also added `no-multicast-peers` to the default coturn configuration, but we don't expect this to cause trouble for most people.
|
We've also added `no-multicast-peers` to the default coturn configuration, but we don't expect this to cause trouble for most people.
|
||||||
|
|
||||||
@@ -2270,8 +2741,8 @@ To improve security, we've [removed TLSv1 and TLSv1.1 support](https://github.co
|
|||||||
If you need to support old clients, you can re-enable both (or whichever one you need) with the following configuration:
|
If you need to support old clients, you can re-enable both (or whichever one you need) with the following configuration:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_coturn_tls_v1_enabled: true
|
coturn_tls_v1_enabled: true
|
||||||
matrix_coturn_tls_v1_1_enabled: true
|
coturn_tls_v1_1_enabled: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -2772,7 +3243,7 @@ See our [Migrating to Element Web](docs/configuring-playbook-riot-web.md#migrati
|
|||||||
|
|
||||||
## Steam bridging support via mx-puppet-steam
|
## Steam bridging support via mx-puppet-steam
|
||||||
|
|
||||||
Thanks to [Hugues Morisset](https://github.com/izissise)'s efforts, the playbook now supports bridging to [Steam](https://steamapp.com/) via the [mx-puppet-steam](https://github.com/icewind1991/mx-puppet-steam) bridge. See our [Setting up MX Puppet Steam bridging](docs/configuring-playbook-bridge-mx-puppet-steam.md) documentation page for getting started.
|
Thanks to [Hugues Morisset](https://github.com/izissise)'s efforts, the playbook now supports bridging to [Steam](https://steamapp.com/) via the [mx-puppet-steam](https://codeberg.org/icewind/mx-puppet-steam) bridge. See our [Setting up MX Puppet Steam bridging](docs/configuring-playbook-bridge-mx-puppet-steam.md) documentation page for getting started.
|
||||||
|
|
||||||
|
|
||||||
# 2020-07-01
|
# 2020-07-01
|
||||||
@@ -2809,7 +3280,7 @@ As always, re-running the playbook is enough to get the updated bits.
|
|||||||
|
|
||||||
## SMS bridging requires db reset
|
## SMS bridging requires db reset
|
||||||
|
|
||||||
The current version of [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) needs you to delete the database to work as expected. Just remove `/matrix/matrix-sms-bridge/database/*`. It also adds a new requried var `matrix_sms_bridge_default_region`.
|
The current version of [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) needs you to delete the database to work as expected. Just remove `/matrix/matrix-sms-bridge/database/*`. It also adds a new required var `matrix_sms_bridge_default_region`.
|
||||||
|
|
||||||
To reuse your existing rooms, invite `@smsbot:yourServer` to the room or write a message. You are also able to use automated room creation with telephonenumers by writing `sms send -t 01749292923 "Hello World"` in a room with `@smsbot:yourServer`. See [the docs](https://github.com/benkuly/matrix-sms-bridge) for more information.
|
To reuse your existing rooms, invite `@smsbot:yourServer` to the room or write a message. You are also able to use automated room creation with telephonenumers by writing `sms send -t 01749292923 "Hello World"` in a room with `@smsbot:yourServer`. See [the docs](https://github.com/benkuly/matrix-sms-bridge) for more information.
|
||||||
|
|
||||||
@@ -2841,7 +3312,7 @@ Until the issue gets fixed, we're making User Directory search not go to ma1sd b
|
|||||||
|
|
||||||
This upgrades matrix-appservice-irc from 0.14.1 to 0.16.0. Upstream
|
This upgrades matrix-appservice-irc from 0.14.1 to 0.16.0. Upstream
|
||||||
made a change to how you define manual mappings. If you added a
|
made a change to how you define manual mappings. If you added a
|
||||||
`mapping` to your configuration, you will need to update it accoring
|
`mapping` to your configuration, you will need to update it according
|
||||||
to the [upstream
|
to the [upstream
|
||||||
instructions](https://github.com/matrix-org/matrix-appservice-irc/blob/master/CHANGELOG.md#0150-2020-02-05). If you did not include `mappings` in your configuration for IRC, no
|
instructions](https://github.com/matrix-org/matrix-appservice-irc/blob/master/CHANGELOG.md#0150-2020-02-05). If you did not include `mappings` in your configuration for IRC, no
|
||||||
change is necessary. `mappings` is not part of the default
|
change is necessary. `mappings` is not part of the default
|
||||||
@@ -3004,7 +3475,7 @@ As per this [advisory blog post](https://matrix.org/blog/2019/11/09/avoiding-unw
|
|||||||
|
|
||||||
Our general goal is to favor privacy and security when running personal (family & friends) and corporate homeservers. Both of these likely benefit from having a more secure default of **not showing the room directory without authentication** and **not publishing the room directory over federation**.
|
Our general goal is to favor privacy and security when running personal (family & friends) and corporate homeservers. Both of these likely benefit from having a more secure default of **not showing the room directory without authentication** and **not publishing the room directory over federation**.
|
||||||
|
|
||||||
As with anything else, these new defaults can be overriden by changing the `matrix_synapse_allow_public_rooms_without_auth` and `matrix_synapse_allow_public_rooms_over_federation` variables, respectively.
|
As with anything else, these new defaults can be overridden by changing the `matrix_synapse_allow_public_rooms_without_auth` and `matrix_synapse_allow_public_rooms_over_federation` variables, respectively.
|
||||||
|
|
||||||
|
|
||||||
# 2019-10-05
|
# 2019-10-05
|
||||||
@@ -3550,7 +4021,7 @@ Because people like using the playbook's components independently (outside of th
|
|||||||
With the new changes, **all roles are now only dependent on the minimal `matrix-base` role**. They are no longer dependent among themselves.
|
With the new changes, **all roles are now only dependent on the minimal `matrix-base` role**. They are no longer dependent among themselves.
|
||||||
|
|
||||||
In addition, the following components can now be completely disabled (for those who want/need to):
|
In addition, the following components can now be completely disabled (for those who want/need to):
|
||||||
- `matrix-coturn` by using `matrix_coturn_enabled: false`
|
- `matrix-coturn` by using `coturn_enabled: false`
|
||||||
- `matrix-mailer` by using `matrix_mailer_enabled: false`
|
- `matrix-mailer` by using `matrix_mailer_enabled: false`
|
||||||
- `matrix-postgres` by using `matrix_postgres_enabled: false`
|
- `matrix-postgres` by using `matrix_postgres_enabled: false`
|
||||||
|
|
||||||
@@ -3558,7 +4029,7 @@ The following changes had to be done:
|
|||||||
|
|
||||||
- glue variables had to be introduced to the playbook, so it can wire together the various components. Those glue vars are stored in the [`group_vars/matrix-servers`](group_vars/matrix-servers) file. When overriding variables for a given component (role), you need to be aware of both the role defaults (`role/ROLE/defaults/main.yml`) and the role's corresponding section in the [`group_vars/matrix-servers`](group_vars/matrix-servers) file.
|
- glue variables had to be introduced to the playbook, so it can wire together the various components. Those glue vars are stored in the [`group_vars/matrix-servers`](group_vars/matrix-servers) file. When overriding variables for a given component (role), you need to be aware of both the role defaults (`role/ROLE/defaults/main.yml`) and the role's corresponding section in the [`group_vars/matrix-servers`](group_vars/matrix-servers) file.
|
||||||
|
|
||||||
- `matrix_postgres_use_external` has been superceeded by the more consistently named `matrix_postgres_enabled` variable and a few other `matrix_synapse_database_` variables. See the [Using an external PostgreSQL server (optional)](docs/configuring-playbook-external-postgres.md) documentation page for an up-to-date replacement.
|
- `matrix_postgres_use_external` has been superseded by the more consistently named `matrix_postgres_enabled` variable and a few other `matrix_synapse_database_` variables. See the [Using an external PostgreSQL server (optional)](docs/configuring-playbook-external-postgres.md) documentation page for an up-to-date replacement.
|
||||||
|
|
||||||
- Postgres tools (`matrix-postgres-cli` and `matrix-make-user-admin`) are no longer installed if you're not enabling the `matrix-postgres` role (`matrix_postgres_enabled: false`)
|
- Postgres tools (`matrix-postgres-cli` and `matrix-make-user-admin`) are no longer installed if you're not enabling the `matrix-postgres` role (`matrix_postgres_enabled: false`)
|
||||||
|
|
||||||
@@ -3747,7 +4218,7 @@ matrix_riot_web_integrations_jitsi_widget_url: "https://dimension.t2bot.io/widge
|
|||||||
|
|
||||||
There's now a new `matrix_nginx_proxy_ssl_protocols` playbook variable, which controls the SSL protocols used to serve Riot and Synapse. Its default value is `TLSv1.1 TLSv1.2`. This playbook previously used `TLSv1 TLSv1.1 TLSv1.2` to serve Riot and Synapse.
|
There's now a new `matrix_nginx_proxy_ssl_protocols` playbook variable, which controls the SSL protocols used to serve Riot and Synapse. Its default value is `TLSv1.1 TLSv1.2`. This playbook previously used `TLSv1 TLSv1.1 TLSv1.2` to serve Riot and Synapse.
|
||||||
|
|
||||||
You may wish to reenable TLSv1 if you need to access Riot in older browsers.
|
You may wish to re-enable TLSv1 if you need to access Riot in older browsers.
|
||||||
|
|
||||||
Note: Currently the dockerized nginx doesn't support TLSv1.3. See https://github.com/nginxinc/docker-nginx/issues/190 for more details.
|
Note: Currently the dockerized nginx doesn't support TLSv1.3. See https://github.com/nginxinc/docker-nginx/issues/190 for more details.
|
||||||
|
|
||||||
@@ -3770,7 +4241,7 @@ The following playbook variables were renamed:
|
|||||||
- from `matrix_docker_image_mautrix_telegram` to `matrix_mautrix_telegram_docker_image`
|
- from `matrix_docker_image_mautrix_telegram` to `matrix_mautrix_telegram_docker_image`
|
||||||
- from `matrix_docker_image_mautrix_whatsapp` to `matrix_mautrix_whatsapp_docker_image`
|
- from `matrix_docker_image_mautrix_whatsapp` to `matrix_mautrix_whatsapp_docker_image`
|
||||||
- from `matrix_docker_image_mailer` to `matrix_mailer_docker_image`
|
- from `matrix_docker_image_mailer` to `matrix_mailer_docker_image`
|
||||||
- from `matrix_docker_image_coturn` to `matrix_coturn_docker_image`
|
- from `matrix_docker_image_coturn` to `coturn_container_image`
|
||||||
- from `matrix_docker_image_goofys` to `matrix_s3_goofys_docker_image`
|
- from `matrix_docker_image_goofys` to `matrix_s3_goofys_docker_image`
|
||||||
- from `matrix_docker_image_riot` to `matrix_riot_web_docker_image`
|
- from `matrix_docker_image_riot` to `matrix_riot_web_docker_image`
|
||||||
- from `matrix_docker_image_nginx` to `matrix_nginx_proxy_docker_image`
|
- from `matrix_docker_image_nginx` to `matrix_nginx_proxy_docker_image`
|
||||||
|
|||||||
23
README.md
23
README.md
@@ -1,4 +1,4 @@
|
|||||||
[](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com) [](https://liberapay.com/s.pantaleev/donate) [](https://api.reuse.software/info/github.com/spantaleev/matrix-docker-ansible-deploy)
|
[](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com) [](https://liberapay.com/s.pantaleev/donate) [](https://api.reuse.software/info/github.com/spantaleev/matrix-docker-ansible-deploy)
|
||||||
|
|
||||||
# Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker
|
# Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ The homeserver is the backbone of your Matrix system. Choose one from the follow
|
|||||||
| ---- | -------- | ----------- | ------------- |
|
| ---- | -------- | ----------- | ------------- |
|
||||||
| [Synapse](https://github.com/element-hq/synapse) | ✅ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network | [Link](docs/configuring-playbook-synapse.md) |
|
| [Synapse](https://github.com/element-hq/synapse) | ✅ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network | [Link](docs/configuring-playbook-synapse.md) |
|
||||||
| [Conduit](https://conduit.rs) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Conduit is a lightweight open-source server implementation of the Matrix Specification with a focus on easy setup and low system requirements | [Link](docs/configuring-playbook-conduit.md) |
|
| [Conduit](https://conduit.rs) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Conduit is a lightweight open-source server implementation of the Matrix Specification with a focus on easy setup and low system requirements | [Link](docs/configuring-playbook-conduit.md) |
|
||||||
| [conduwuit](https://conduwuit.puppyirl.gay/) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. conduwuit is a fork of Conduit. | [Link](docs/configuring-playbook-conduwuit.md) |
|
| [continuwuity](https://continuwuity.org) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. | [Link](docs/configuring-playbook-continuwuity.md) |
|
||||||
| [Dendrite](https://github.com/element-hq/dendrite) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Dendrite is a second-generation Matrix homeserver written in Go, an alternative to Synapse. | [Link](docs/configuring-playbook-dendrite.md) |
|
| [Dendrite](https://github.com/element-hq/dendrite) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Dendrite is a second-generation Matrix homeserver written in Go, an alternative to Synapse. | [Link](docs/configuring-playbook-dendrite.md) |
|
||||||
|
|
||||||
### Clients
|
### Clients
|
||||||
@@ -64,6 +64,7 @@ Web clients for Matrix that you can host on your own domains.
|
|||||||
| [Element Web](https://github.com/element-hq/element-web) | ✅ | Default Matrix web client, configured to connect to your own Synapse server | [Link](docs/configuring-playbook-client-element-web.md) |
|
| [Element Web](https://github.com/element-hq/element-web) | ✅ | Default Matrix web client, configured to connect to your own Synapse server | [Link](docs/configuring-playbook-client-element-web.md) |
|
||||||
| [Hydrogen](https://github.com/element-hq/hydrogen-web) | ❌ | Lightweight Matrix client with legacy and mobile browser support | [Link](docs/configuring-playbook-client-hydrogen.md) |
|
| [Hydrogen](https://github.com/element-hq/hydrogen-web) | ❌ | Lightweight Matrix client with legacy and mobile browser support | [Link](docs/configuring-playbook-client-hydrogen.md) |
|
||||||
| [Cinny](https://github.com/ajbura/cinny) | ❌ | Simple, elegant and secure web client | [Link](docs/configuring-playbook-client-cinny.md) |
|
| [Cinny](https://github.com/ajbura/cinny) | ❌ | Simple, elegant and secure web client | [Link](docs/configuring-playbook-client-cinny.md) |
|
||||||
|
| [Sable](https://github.com/7w1/sable) | ❌ | Simple, elegant and secure web client | [Link](docs/configuring-playbook-client-sable.md) |
|
||||||
| [SchildiChat Web](https://schildi.chat/) | ❌ | Based on Element Web, with a more traditional instant messaging experience | [Link](docs/configuring-playbook-client-schildichat-web.md) |
|
| [SchildiChat Web](https://schildi.chat/) | ❌ | Based on Element Web, with a more traditional instant messaging experience | [Link](docs/configuring-playbook-client-schildichat-web.md) |
|
||||||
| [FluffyChat Web](https://fluffychat.im/) | ❌ | The cutest messenger in Matrix | [Link](docs/configuring-playbook-client-fluffychat-web.md) |
|
| [FluffyChat Web](https://fluffychat.im/) | ❌ | The cutest messenger in Matrix | [Link](docs/configuring-playbook-client-fluffychat-web.md) |
|
||||||
|
|
||||||
@@ -74,14 +75,12 @@ Services that run on the server to make the various parts of your installation w
|
|||||||
| Name | Default? | Description | Documentation |
|
| Name | Default? | Description | Documentation |
|
||||||
| ---- | -------- | ----------- | ------------- |
|
| ---- | -------- | ----------- | ------------- |
|
||||||
| [PostgreSQL](https://www.postgresql.org/)| ✅ | Database for Synapse. [Using an external PostgreSQL server](docs/configuring-playbook-external-postgres.md) is also possible. | [Link](docs/configuring-playbook-external-postgres.md) |
|
| [PostgreSQL](https://www.postgresql.org/)| ✅ | Database for Synapse. [Using an external PostgreSQL server](docs/configuring-playbook-external-postgres.md) is also possible. | [Link](docs/configuring-playbook-external-postgres.md) |
|
||||||
| [coturn](https://github.com/coturn/coturn) | ✅ | STUN/TURN server for WebRTC audio/video calls | [Link](docs/configuring-playbook-turn.md) |
|
|
||||||
| [Traefik](https://doc.traefik.io/traefik/) | ✅ | Web server, listening on ports 80, 443 and 8448 - standing in front of all the other services. [Using your own webserver](docs/configuring-playbook-own-webserver.md) is also possible. | [Link](docs/configuring-playbook-traefik.md) |
|
| [Traefik](https://doc.traefik.io/traefik/) | ✅ | Web server, listening on ports 80, 443 and 8448 - standing in front of all the other services. [Using your own webserver](docs/configuring-playbook-own-webserver.md) is also possible. | [Link](docs/configuring-playbook-traefik.md) |
|
||||||
| [Let's Encrypt](https://letsencrypt.org/) | ✅ | Free SSL certificate, which secures the connection to all components | [Link](docs/configuring-playbook-ssl-certificates.md) |
|
| [Let's Encrypt](https://letsencrypt.org/) | ✅ | Free SSL certificate, which secures the connection to all components | [Link](docs/configuring-playbook-ssl-certificates.md) |
|
||||||
| [Exim](https://www.exim.org/) | ✅ | Mail server, through which all Matrix services send outgoing email (can be configured to relay through another SMTP server) | [Link](docs/configuring-playbook-email.md) |
|
| [Exim](https://www.exim.org/) | ✅ | Mail server, through which all Matrix services send outgoing email (can be configured to relay through another SMTP server) | [Link](docs/configuring-playbook-email.md) |
|
||||||
| [ma1sd](https://github.com/ma1uta/ma1sd) | ❌ | Matrix Identity Server | [Link](docs/configuring-playbook-ma1sd.md)
|
| [coturn](https://github.com/coturn/coturn) | ❌ | STUN/TURN server for WebRTC audio/video calls | [Link](docs/configuring-playbook-turn.md) |
|
||||||
| [ddclient](https://github.com/linuxserver/docker-ddclient) | ❌ | Dynamic DNS | [Link](docs/configuring-playbook-dynamic-dns.md) |
|
| [ddclient](https://github.com/linuxserver/docker-ddclient) | ❌ | Dynamic DNS | [Link](docs/configuring-playbook-dynamic-dns.md) |
|
||||||
| [LiveKit Server](https://github.com/livekit/livekit) | ❌ | WebRTC server for audio/video calls | [Link](docs/configuring-playbook-livekit-server.md) |
|
| Matrix RTC stack | ❌ | Supporting components ([LiveKit Server](docs/configuring-playbook-livekit-server.md) and [LiveKit JWT Service](docs/configuring-playbook-livekit-jwt-service.md)) for in-app audio/video calls for Matrix clients | [Link](docs/configuring-playbook-matrix-rtc.md) |
|
||||||
| [Livekit JWT Service](https://github.com/livekit/livekit-jwt-service) | ❌ | JWT service for integrating [Element Call](./configuring-playbook-element-call.md) with [LiveKit Server](./configuring-playbook-livekit-server.md) | [Link](docs/configuring-playbook-livekit-jwt-service.md) |
|
|
||||||
|
|
||||||
### Authentication
|
### Authentication
|
||||||
|
|
||||||
@@ -128,18 +127,13 @@ Bridges can be used to connect your Matrix installation with third-party communi
|
|||||||
| [matrix-appservice-irc](https://github.com/matrix-org/matrix-appservice-irc) | ❌ | Bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) | [Link](docs/configuring-playbook-bridge-appservice-irc.md) |
|
| [matrix-appservice-irc](https://github.com/matrix-org/matrix-appservice-irc) | ❌ | Bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) | [Link](docs/configuring-playbook-bridge-appservice-irc.md) |
|
||||||
| [matrix-appservice-kakaotalk](https://src.miscworks.net/fair/matrix-appservice-kakaotalk) | ❌ | Bridge to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG) | [Link](docs/configuring-playbook-bridge-appservice-kakaotalk.md) |
|
| [matrix-appservice-kakaotalk](https://src.miscworks.net/fair/matrix-appservice-kakaotalk) | ❌ | Bridge to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG) | [Link](docs/configuring-playbook-bridge-appservice-kakaotalk.md) |
|
||||||
| [matrix-appservice-discord](https://github.com/matrix-org/matrix-appservice-discord) | ❌ | Bridge to [Discord](https://discordapp.com/) | [Link](docs/configuring-playbook-bridge-appservice-discord.md) |
|
| [matrix-appservice-discord](https://github.com/matrix-org/matrix-appservice-discord) | ❌ | Bridge to [Discord](https://discordapp.com/) | [Link](docs/configuring-playbook-bridge-appservice-discord.md) |
|
||||||
| [matrix-appservice-slack](https://github.com/matrix-org/matrix-appservice-slack) | ❌ | Bridge to [Slack](https://slack.com/) | [Link](docs/configuring-playbook-bridge-appservice-slack.md) |
|
|
||||||
| [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) | ❌ | Bridge for generic webhooks and multiple project management services, such as GitHub, GitLab, Figma, and Jira in particular | [Link](docs/configuring-playbook-bridge-hookshot.md) |
|
| [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) | ❌ | Bridge for generic webhooks and multiple project management services, such as GitHub, GitLab, Figma, and Jira in particular | [Link](docs/configuring-playbook-bridge-hookshot.md) |
|
||||||
| [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) | ❌ | Bridge to SMS | [Link](docs/configuring-playbook-bridge-matrix-bridge-sms.md) |
|
| [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) | ❌ | Bridge to SMS | [Link](docs/configuring-playbook-bridge-matrix-bridge-sms.md) |
|
||||||
|
| [matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge) | ❌ | Bridge to [Steam](https://steampowered.com/) | [Link](docs/configuring-playbook-bridge-steam.md) |
|
||||||
| [matrix-wechat](https://github.com/duo/matrix-wechat) | ❌ | Bridge to [WeChat](https://www.wechat.com/) | [Link](docs/configuring-playbook-bridge-wechat.md) |
|
| [matrix-wechat](https://github.com/duo/matrix-wechat) | ❌ | Bridge to [WeChat](https://www.wechat.com/) | [Link](docs/configuring-playbook-bridge-wechat.md) |
|
||||||
| [Heisenbridge](https://github.com/hifi/heisenbridge) | ❌ | Bouncer-style bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) | [Link](docs/configuring-playbook-bridge-heisenbridge.md) |
|
| [Heisenbridge](https://github.com/hifi/heisenbridge) | ❌ | Bouncer-style bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) | [Link](docs/configuring-playbook-bridge-heisenbridge.md) |
|
||||||
| [go-skype-bridge](https://github.com/kelaresg/go-skype-bridge) | ❌ | Bridge to [Skype](https://www.skype.com) | [Link](docs/configuring-playbook-bridge-go-skype-bridge.md) |
|
|
||||||
| [mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack) | ❌ | Bridge to [Slack](https://slack.com) | [Link](docs/configuring-playbook-bridge-mx-puppet-slack.md) |
|
|
||||||
| [mx-puppet-instagram](https://github.com/Sorunome/mx-puppet-instagram) | ❌ | Bridge for Instagram-DMs ([Instagram](https://www.instagram.com/)) | [Link](docs/configuring-playbook-bridge-mx-puppet-instagram.md) |
|
|
||||||
| [mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter) | ❌ | Bridge for Twitter-DMs ([Twitter](https://twitter.com/)) | [Link](docs/configuring-playbook-bridge-mx-puppet-twitter.md) |
|
|
||||||
| [mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord) | ❌ | Bridge to [Discord](https://discordapp.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-discord.md) |
|
|
||||||
| [mx-puppet-groupme](https://gitlab.com/xangelix-pub/matrix/mx-puppet-groupme) | ❌ | Bridge to [GroupMe](https://groupme.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-groupme.md) |
|
| [mx-puppet-groupme](https://gitlab.com/xangelix-pub/matrix/mx-puppet-groupme) | ❌ | Bridge to [GroupMe](https://groupme.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-groupme.md) |
|
||||||
| [mx-puppet-steam](https://github.com/icewind1991/mx-puppet-steam) | ❌ | Bridge to [Steam](https://steamapp.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-steam.md) |
|
| [mx-puppet-steam](https://codeberg.org/icewind/mx-puppet-steam) | ❌ | Bridge to [Steam](https://steamapp.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-steam.md) |
|
||||||
| [Postmoogle](https://github.com/etkecc/postmoogle) | ❌ | Email to Matrix bridge | [Link](docs/configuring-playbook-bridge-postmoogle.md) |
|
| [Postmoogle](https://github.com/etkecc/postmoogle) | ❌ | Email to Matrix bridge | [Link](docs/configuring-playbook-bridge-postmoogle.md) |
|
||||||
|
|
||||||
### Bots
|
### Bots
|
||||||
@@ -177,10 +171,9 @@ Various services that don't fit any other categories.
|
|||||||
|
|
||||||
| Name | Default? | Description | Documentation |
|
| Name | Default? | Description | Documentation |
|
||||||
| ---- | -------- | ----------- | ------------- |
|
| ---- | -------- | ----------- | ------------- |
|
||||||
| [sliding-sync](https://github.com/matrix-org/sliding-sync)| ❌ | (Superseded by Simplified Sliding Sync integrated into Synapse > `1.114` and Conduit > `0.6.0`) Sliding Sync support for clients which require it (e.g. old Element X versions before Simplified Sliding Sync was developed) | [Link](docs/configuring-playbook-sliding-sync-proxy.md) |
|
|
||||||
| [synapse_auto_accept_invite](https://github.com/matrix-org/synapse-auto-accept-invite) | ❌ | Synapse module to automatically accept invites | [Link](docs/configuring-playbook-synapse-auto-accept-invite.md) |
|
|
||||||
| [synapse_auto_compressor](https://github.com/matrix-org/rust-synapse-compress-state/#automated-tool-synapse_auto_compressor) | ❌ | Cli tool that automatically compresses `state_groups` database table in background | [Link](docs/configuring-playbook-synapse-auto-compressor.md) |
|
| [synapse_auto_compressor](https://github.com/matrix-org/rust-synapse-compress-state/#automated-tool-synapse_auto_compressor) | ❌ | Cli tool that automatically compresses `state_groups` database table in background | [Link](docs/configuring-playbook-synapse-auto-compressor.md) |
|
||||||
| [Matrix Corporal](https://github.com/devture/matrix-corporal) (advanced) | ❌ | Reconciliator and gateway for a managed Matrix server | [Link](docs/configuring-playbook-matrix-corporal.md) |
|
| [Matrix Corporal](https://github.com/devture/matrix-corporal) (advanced) | ❌ | Reconciliator and gateway for a managed Matrix server | [Link](docs/configuring-playbook-matrix-corporal.md) |
|
||||||
|
| [Matrix.to](https://github.com/matrix-org/matrix.to) | ❌ | Simple URL redirection service for the Matrix ecosystem | [Link](docs/configuring-playbook-matrixto.md) |
|
||||||
| [Etherpad](https://etherpad.org) | ❌ | Open source collaborative text editor | [Link](docs/configuring-playbook-etherpad.md) |
|
| [Etherpad](https://etherpad.org) | ❌ | Open source collaborative text editor | [Link](docs/configuring-playbook-etherpad.md) |
|
||||||
| [Jitsi](https://jitsi.org/) | ❌ | Open source video-conferencing platform | [Link](docs/configuring-playbook-jitsi.md) |
|
| [Jitsi](https://jitsi.org/) | ❌ | Open source video-conferencing platform | [Link](docs/configuring-playbook-jitsi.md) |
|
||||||
| [Cactus Comments](https://cactus.chat) | ❌ | Federated comment system built on Matrix | [Link](docs/configuring-playbook-cactus-comments.md) |
|
| [Cactus Comments](https://cactus.chat) | ❌ | Federated comment system built on Matrix | [Link](docs/configuring-playbook-cactus-comments.md) |
|
||||||
|
|||||||
@@ -13,10 +13,12 @@ path = [
|
|||||||
"i18n/PUBLISHED_LANGUAGES",
|
"i18n/PUBLISHED_LANGUAGES",
|
||||||
"i18n/requirements.txt",
|
"i18n/requirements.txt",
|
||||||
"roles/custom/**/*.repo",
|
"roles/custom/**/*.repo",
|
||||||
|
".codespellrc",
|
||||||
".editorconfig",
|
".editorconfig",
|
||||||
".envrc",
|
".envrc",
|
||||||
".gitattributes",
|
".gitattributes",
|
||||||
".gitignore",
|
".gitignore",
|
||||||
|
".pre-commit-config.yaml",
|
||||||
".yamllint",
|
".yamllint",
|
||||||
"ansible.cfg",
|
"ansible.cfg",
|
||||||
"flake.lock",
|
"flake.lock",
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
|||||||
|
|
||||||
2023 is probably [the year of AI](https://journal.everypixel.com/2023-the-year-of-ai), with millions of people jumping aboard [OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/chatgpt) train. matrix-docker-ansible-deploy is no stranger to this and 2023 began with a PR from [bertybuttface](https://github.com/bertybuttface) who added support for [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#chatgpt-support)). While OpenAI's chat GPT website was frequently overloaded in the past, their API was up which made using this bot both convenient and more reliable.
|
2023 is probably [the year of AI](https://journal.everypixel.com/2023-the-year-of-ai), with millions of people jumping aboard [OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/chatgpt) train. matrix-docker-ansible-deploy is no stranger to this and 2023 began with a PR from [bertybuttface](https://github.com/bertybuttface) who added support for [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#chatgpt-support)). While OpenAI's chat GPT website was frequently overloaded in the past, their API was up which made using this bot both convenient and more reliable.
|
||||||
|
|
||||||
AI aside, with the playbook's focus being containers, we're **doubling down on being "container native"** and becoming more interoperable for people hosting other containers on the Matrix server. In [2022](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/YEAR-IN-REVIEW.md#2022), we've announced a few sibling Ansible playbooks, their use of [Traefik](https://doc.traefik.io/traefik/) and the possiblity of matrix-docker-ansible-deploy also switching to this reverse-proxy. This prediction materialized quickly. The **largest change** in the playbook in 2023 happened way back in February - matrix-docker-ansible-deploy [starting the switch from nginx to Traefik](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#backward-compatibility-reverse-proxy-configuration-changes-and-initial-traefik-support) and then quickly [making Treafik the default reverse-proxy](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#traefik-is-the-default-reverse-proxy-now). As noted in the changelog entries, we envisioned a quick and complete elimination of `matrix-nginx-proxy`, but at the end of 2023, it hasn't happened yet. The playbook is already using Traefik as the front-most reverse-proxy, but nginx (via `matrix-nginx-proxy`) is still around - it has taken a step back and is only used internally for new setups. Work got to a stall due to:
|
AI aside, with the playbook's focus being containers, we're **doubling down on being "container native"** and becoming more interoperable for people hosting other containers on the Matrix server. In [2022](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/YEAR-IN-REVIEW.md#2022), we've announced a few sibling Ansible playbooks, their use of [Traefik](https://doc.traefik.io/traefik/) and the possibility of matrix-docker-ansible-deploy also switching to this reverse-proxy. This prediction materialized quickly. The **largest change** in the playbook in 2023 happened way back in February - matrix-docker-ansible-deploy [starting the switch from nginx to Traefik](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#backward-compatibility-reverse-proxy-configuration-changes-and-initial-traefik-support) and then quickly [making Treafik the default reverse-proxy](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#traefik-is-the-default-reverse-proxy-now). As noted in the changelog entries, we envisioned a quick and complete elimination of `matrix-nginx-proxy`, but at the end of 2023, it hasn't happened yet. The playbook is already using Traefik as the front-most reverse-proxy, but nginx (via `matrix-nginx-proxy`) is still around - it has taken a step back and is only used internally for new setups. Work got to a stall due to:
|
||||||
|
|
||||||
* complexity: untangling the overly large and messy `matrix-nginx-proxy` component is difficult
|
* complexity: untangling the overly large and messy `matrix-nginx-proxy` component is difficult
|
||||||
* the current setup became "good enough" because nginx has become an internal implementation detail for those who have migrated to Traefik. Traefik is already the default public reverse-proxy and gives better possibilities to people wishing to run other web-exposed containers on their Matrix server via [Docker Compose](https://docs.docker.com/compose/), other Ansible playbooks like [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) (more about this one, below) or any other way.
|
* the current setup became "good enough" because nginx has become an internal implementation detail for those who have migrated to Traefik. Traefik is already the default public reverse-proxy and gives better possibilities to people wishing to run other web-exposed containers on their Matrix server via [Docker Compose](https://docs.docker.com/compose/), other Ansible playbooks like [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) (more about this one, below) or any other way.
|
||||||
|
|||||||
35
bin/check-examples-vars-migration-version.sh
Executable file
35
bin/check-examples-vars-migration-version.sh
Executable file
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2026 Slavi Pantaleev
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
|
# Ensures that the migration validated version in examples/vars.yml
|
||||||
|
# matches the expected version in the matrix_playbook_migration role defaults.
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
defaults_file="roles/custom/matrix_playbook_migration/defaults/main.yml"
|
||||||
|
examples_file="examples/vars.yml"
|
||||||
|
|
||||||
|
expected_version=$(grep -oP '^matrix_playbook_migration_expected_version:\s*"?\K[^"]+' "$defaults_file")
|
||||||
|
examples_version=$(grep -oP '^matrix_playbook_migration_validated_version:\s*"?\K[^"]+' "$examples_file")
|
||||||
|
|
||||||
|
if [ -z "$expected_version" ]; then
|
||||||
|
echo "ERROR: Could not extract matrix_playbook_migration_expected_version from $defaults_file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$examples_version" ]; then
|
||||||
|
echo "ERROR: Could not extract matrix_playbook_migration_validated_version from $examples_file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$expected_version" != "$examples_version" ]; then
|
||||||
|
echo "ERROR: Migration version mismatch!"
|
||||||
|
echo " $defaults_file has expected version: $expected_version"
|
||||||
|
echo " $examples_file has validated version: $examples_version"
|
||||||
|
echo ""
|
||||||
|
echo "Please update $examples_file to match."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
0
bin/rebuild-mautrix-meta-instagram.sh
Normal file → Executable file
0
bin/rebuild-mautrix-meta-instagram.sh
Normal file → Executable file
@@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
|||||||
|
|
||||||
# Table of Contents
|
# Table of Contents
|
||||||
|
|
||||||
## ⬇️ Installaton guides <!-- NOTE: the 🚀 emoji is used by "Getting started" on README.md -->
|
## ⬇️ Installation guides <!-- NOTE: the 🚀 emoji is used by "Getting started" on README.md -->
|
||||||
|
|
||||||
There are two installation guides available for beginners and advanced users.
|
There are two installation guides available for beginners and advanced users.
|
||||||
|
|
||||||
|
|||||||
@@ -20,10 +20,13 @@ To manually check which version of Ansible you're on, run: `ansible --version`.
|
|||||||
|
|
||||||
For the **best experience**, we recommend getting the **latest version of Ansible available**.
|
For the **best experience**, we recommend getting the **latest version of Ansible available**.
|
||||||
|
|
||||||
We're not sure what's the minimum version of Ansible that can run this playbook successfully. The lowest version that we've confirmed (on 2022-11-26) to be working fine is: `ansible-core` (`2.11.7`) combined with `ansible` (`4.10.0`).
|
We're not sure what's the minimum version of Ansible that can run this playbook successfully. The lowest version that we suspect (on 2025-09-03) to be working fine is: `ansible-core` (`2.15.1`).
|
||||||
|
|
||||||
If your distro ships with an Ansible version older than this, you may run into issues. Consider [Upgrading Ansible](#upgrading-ansible) or [using Ansible via Docker](#using-ansible-via-docker).
|
If your distro ships with an Ansible version older than this, you may run into issues. Consider [Upgrading Ansible](#upgrading-ansible) or [using Ansible via Docker](#using-ansible-via-docker).
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> One reason for the version requirement being as such is that the playbook by default installs Docker for you using [this Docker role](https://github.com/geerlingguy/ansible-role-docker) which [has a hard requirement on Ansible v2.15.1](https://github.com/geerlingguy/ansible-role-docker/commit/7f44a1d9ad8132819ea9852918bca5dab8757cd0). If you install Docker yourself another way, you can tell the playbook to skip running this role (by adding `matrix_playbook_docker_installation_enabled: false` to your `vars.yml` configuration). It may then be possible to get the playbook running on an older version of Ansible. Still, this is a complication and your mileage may vary. We recommend [upgrading Ansible](#upgrading-ansible) instead of going into uncharted territory.
|
||||||
|
|
||||||
## Upgrading Ansible
|
## Upgrading Ansible
|
||||||
|
|
||||||
Depending on your distribution, you may be able to upgrade Ansible in a few different ways:
|
Depending on your distribution, you may be able to upgrade Ansible in a few different ways:
|
||||||
@@ -71,7 +74,7 @@ docker run \
|
|||||||
-w /work \
|
-w /work \
|
||||||
--mount type=bind,src=`pwd`,dst=/work \
|
--mount type=bind,src=`pwd`,dst=/work \
|
||||||
--entrypoint=/bin/sh \
|
--entrypoint=/bin/sh \
|
||||||
ghcr.io/devture/ansible:11.1.0-r0-0
|
ghcr.io/devture/ansible:11.6.0-r0-0
|
||||||
```
|
```
|
||||||
|
|
||||||
Once you execute the above command, you'll be dropped into a `/work` directory inside a Docker container. The `/work` directory contains the playbook's code.
|
Once you execute the above command, you'll be dropped into a `/work` directory inside a Docker container. The `/work` directory contains the playbook's code.
|
||||||
@@ -90,9 +93,9 @@ docker run \
|
|||||||
--rm \
|
--rm \
|
||||||
-w /work \
|
-w /work \
|
||||||
--mount type=bind,src=`pwd`,dst=/work \
|
--mount type=bind,src=`pwd`,dst=/work \
|
||||||
--mount type=bind,src$HOME/.ssh/id_ed25519,dst=/root/.ssh/id_ed25519,ro \
|
--mount type=bind,src=$HOME/.ssh/id_ed25519,dst=/root/.ssh/id_ed25519,ro \
|
||||||
--entrypoint=/bin/sh \
|
--entrypoint=/bin/sh \
|
||||||
ghcr.io/devture/ansible:11.1.0-r0-0
|
ghcr.io/devture/ansible:11.6.0-r0-0
|
||||||
```
|
```
|
||||||
|
|
||||||
The above command tries to mount an SSH key (`$HOME/.ssh/id_ed25519`) into the container (at `/root/.ssh/id_ed25519`). If your SSH key is at a different path (not in `$HOME/.ssh/id_ed25519`), adjust that part.
|
The above command tries to mount an SSH key (`$HOME/.ssh/id_ed25519`) into the container (at `/root/.ssh/id_ed25519`). If your SSH key is at a different path (not in `$HOME/.ssh/id_ed25519`), adjust that part.
|
||||||
@@ -117,7 +120,7 @@ Then, to be asked for the password whenever running an `ansible-playbook` comman
|
|||||||
|
|
||||||
#### Resolve directory ownership issues
|
#### Resolve directory ownership issues
|
||||||
|
|
||||||
Because you're `root` in the container running Ansible and this likely differs fom the owner (your regular user account) of the playbook directory outside of the container, certain playbook features which use `git` locally may report warnings such as:
|
Because you're `root` in the container running Ansible and this likely differs from the owner (your regular user account) of the playbook directory outside of the container, certain playbook features which use `git` locally may report warnings such as:
|
||||||
|
|
||||||
> fatal: unsafe repository ('/work' is owned by someone else)
|
> fatal: unsafe repository ('/work' is owned by someone else)
|
||||||
> To add an exception for this directory, call:
|
> To add an exception for this directory, call:
|
||||||
|
|||||||
@@ -95,13 +95,13 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
If you made it through all the steps above and your main control room was joined by a user called `@draupnir-main:example.com` you have succesfully installed Draupnir for All and can now start using it.
|
If you made it through all the steps above and your main control room was joined by a user called `@draupnir-main:example.com` you have successfully installed Draupnir for All and can now start using it.
|
||||||
|
|
||||||
The installation of Draupnir for all in this playbook is very much Alpha quality. Usage-wise, Draupnir for all is almost identical to Draupnir bot mode.
|
The installation of Draupnir for all in this playbook is very much Alpha quality. Usage-wise, Draupnir for all is almost identical to Draupnir bot mode.
|
||||||
|
|
||||||
### Granting Users the ability to use D4A
|
### Granting Users the ability to use D4A
|
||||||
|
|
||||||
Draupnir for all includes several security measures like that it only allows users that are on its allow list to ask for a bot. To add a user to this list we have 2 primary options. Using the chat to tell Draupnir to do this for us or if you want to automatically do it by sending `m.policy.rule.user` events that target the subject you want to allow provisioning for with the `org.matrix.mjolnir.allow` recomendation. Using the chat is recomended.
|
Draupnir for all includes several security measures like that it only allows users that are on its allow list to ask for a bot. To add a user to this list we have 2 primary options. Using the chat to tell Draupnir to do this for us or if you want to automatically do it by sending `m.policy.rule.user` events that target the subject you want to allow provisioning for with the `org.matrix.mjolnir.allow` recommendation. Using the chat is recommended.
|
||||||
|
|
||||||
The bot requires a powerlevel of 50 in the management room to control who is allowed to use the bot. The bot does currently not say anything if this is true or false. (This is considered a bug and is documented in issue [#297](https://github.com/the-draupnir-project/Draupnir/issues/297))
|
The bot requires a powerlevel of 50 in the management room to control who is allowed to use the bot. The bot does currently not say anything if this is true or false. (This is considered a bug and is documented in issue [#297](https://github.com/the-draupnir-project/Draupnir/issues/297))
|
||||||
|
|
||||||
|
|||||||
@@ -39,16 +39,35 @@ Depending on your current `vars.yml` file and desired configuration, **you may r
|
|||||||
|
|
||||||
To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
||||||
|
|
||||||
|
Authentication can be configured in one of two mutually-exclusive ways:
|
||||||
|
|
||||||
|
- **Password authentication** (`matrix_bot_baibot_config_user_password`) - recommended for most playbook-managed setups, because it integrates with automatic user creation flow used by the playbook, and auto-creates the bot account
|
||||||
|
- **Access-token authentication** (`matrix_bot_baibot_config_user_access_token` + `matrix_bot_baibot_config_user_device_id`) - useful for specific [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md)/OIDC setups where password authentication is not available or not desired
|
||||||
|
|
||||||
|
Even when [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md) is enabled, password authentication is still typically the best fit for baibot if you're using a playbook-managed bot account.
|
||||||
|
|
||||||
|
For upstream details, see baibot's [🔐 Authentication](https://github.com/etkecc/baibot/blob/main/docs/configuration/authentication.md) documentation.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_bot_baibot_enabled: true
|
matrix_bot_baibot_enabled: true
|
||||||
|
|
||||||
# Uncomment and adjust this part if you'd like to use a username different than the default
|
# Uncomment and adjust this part if you'd like to use a username different than the default
|
||||||
# matrix_bot_baibot_config_user_mxid_localpart: baibot
|
# matrix_bot_baibot_config_user_mxid_localpart: baibot
|
||||||
|
|
||||||
|
# Authentication mode (choose exactly one):
|
||||||
|
#
|
||||||
|
# 1) Password authentication (recommended for most setups)
|
||||||
# Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`.
|
# Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`.
|
||||||
# If you'd like to change this password subsequently, see the details below.
|
# If you'd like to change this password subsequently, see the details below.
|
||||||
matrix_bot_baibot_config_user_password: 'PASSWORD_FOR_THE_BOT'
|
matrix_bot_baibot_config_user_password: 'PASSWORD_FOR_THE_BOT'
|
||||||
|
|
||||||
|
# 2) Access-token authentication (for MAS/OIDC-enabled homeservers)
|
||||||
|
# matrix_bot_baibot_config_user_access_token: 'YOUR_MAS_COMPATIBILITY_TOKEN_HERE'
|
||||||
|
# matrix_bot_baibot_config_user_device_id: 'BAIBOT'
|
||||||
|
#
|
||||||
|
# You can generate a compatibility token for MAS with:
|
||||||
|
# mas-cli manage issue-compatibility-token <username> [device_id]
|
||||||
|
|
||||||
# An optional passphrase to use for backing up and recovering the bot's encryption keys.
|
# An optional passphrase to use for backing up and recovering the bot's encryption keys.
|
||||||
# You can create one with a command like `pwgen -s 64 1`.
|
# You can create one with a command like `pwgen -s 64 1`.
|
||||||
#
|
#
|
||||||
@@ -242,7 +261,13 @@ matrix_bot_baibot_config_agents_static_definitions_openai_config_api_key: "YOUR_
|
|||||||
# matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}"
|
# matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}"
|
||||||
|
|
||||||
# If you'd like to use another text-generation agent, uncomment and adjust:
|
# If you'd like to use another text-generation agent, uncomment and adjust:
|
||||||
# matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_model_id: gpt-4o
|
# matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_model_id: gpt-4.1
|
||||||
|
|
||||||
|
# Uncomment below to enable OpenAI's built-in tools.
|
||||||
|
# These tools are disabled by default. Enabling them may incur additional costs.
|
||||||
|
# See: https://github.com/etkecc/baibot/blob/61d18b2/docs/features.md#%EF%B8%8F-built-in-tools-openai-only
|
||||||
|
# matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_tools_web_search: true
|
||||||
|
# matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_tools_code_interpreter: true
|
||||||
```
|
```
|
||||||
|
|
||||||
Because this is a [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agent, it will be given a `static/` ID prefix and will be named `static/openai`.
|
Because this is a [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agent, it will be given a `static/` ID prefix and will be named `static/openai`.
|
||||||
@@ -381,13 +406,15 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-use
|
|||||||
|
|
||||||
**Notes**:
|
**Notes**:
|
||||||
|
|
||||||
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
|
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account when password authentication is used.
|
||||||
|
|
||||||
|
- If you're using access-token authentication, the bot account must already exist and the configured token + device ID must match that account. This mode is mainly for MAS/OIDC setups where password-based bot login is not suitable.
|
||||||
|
|
||||||
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
||||||
|
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
|
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
|
||||||
|
|
||||||
- If you change the bot password (`matrix_bot_baibot_config_user_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_baibot_config_user_password` to let the bot know its new password.
|
- If you change the bot password (`matrix_bot_baibot_config_user_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_baibot_config_user_password` to let the bot know its new password. (This note applies to password authentication mode.)
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
|||||||
@@ -1,98 +1,25 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev
|
SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev
|
||||||
SPDX-FileCopyrightText: 2023 MDAD project contributors
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
|
SPDX-FileCopyrightText: 2022 Nikita Chernyi
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2024 MDAD project contributors
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up matrix-bot-chatgpt (optional, unmaintained)
|
# Setting up matrix-chatgpt-bot (optional, removed)
|
||||||
|
|
||||||
**Note**: [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) is now an archived (**unmaintained**) project. Talking to ChatGPT (and many other LLM providers) can happen via the much more featureful [baibot](https://github.com/etkecc/baibot), which can be [installed using this playbook](configuring-playbook-bot-baibot.md). Consider using that bot instead of this one.
|
🪦 The playbook used to be able to install and configure [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot), but no longer includes this component.
|
||||||
|
|
||||||
The playbook can install and configure [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) for you.
|
While not a 1:1 replacement, the bot's author suggests taking a look at [baibot](https://github.com/etkecc/baibot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bot-baibot.md).
|
||||||
|
|
||||||
Talk to [ChatGPT](https://openai.com/blog/chatgpt/) via your favourite Matrix client!
|
## Uninstalling matrix-chatgpt-bot manually
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/matrixgpt/matrix-chatgpt-bot/blob/main/README.md) to learn what it does and why it might be useful to you.
|
If you still have the matrix-chatgpt-bot component installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
### Obtain an OpenAI API key
|
|
||||||
|
|
||||||
To use the bot, you'd need to obtain an API key from [https://platform.openai.com/account/api-keys](https://platform.openai.com/account/api-keys).
|
|
||||||
|
|
||||||
### Register the bot account
|
|
||||||
|
|
||||||
The playbook does not automatically create users for you. You **need to register the bot user manually** before setting up the bot.
|
|
||||||
|
|
||||||
Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`.
|
|
||||||
|
|
||||||
You can use the playbook to [register a new user](registering-users.md):
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=bot.chatgpt password=PASSWORD_FOR_THE_BOT admin=no' --tags=register-user
|
systemctl disable --now matrix-bot-chatgpt.service
|
||||||
|
|
||||||
|
rm -rf /matrix/chatgpt
|
||||||
```
|
```
|
||||||
|
|
||||||
### Obtain an access token and create encryption keys
|
|
||||||
|
|
||||||
The bot requires an access token to be able to connect to your homeserver. Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md).
|
|
||||||
|
|
||||||
> [!WARNING]
|
|
||||||
> Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone.
|
|
||||||
|
|
||||||
To make sure the bot can read encrypted messages, it will need an encryption key, just like any other new user. While obtaining the access token, follow the prompts to setup a backup key. More information can be found in the [Element documentation](https://element.io/help#encryption6).
|
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
|
||||||
|
|
||||||
To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `API_KEY_HERE` with the API key retrieved [here](#obtain-an-openai-api-key) and `ACCESS_TOKEN_HERE` with the access token created [here](#obtain-an-access-token-and-create-encryption-keys), respectively.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_bot_chatgpt_enabled: true
|
|
||||||
|
|
||||||
matrix_bot_chatgpt_openai_api_key: 'API_KEY_HERE'
|
|
||||||
|
|
||||||
# Uncomment and adjust this part if you'd like to use a username different than the default
|
|
||||||
# matrix_bot_chatgpt_matrix_bot_username_localpart: 'bot.chatgpt'
|
|
||||||
|
|
||||||
matrix_bot_chatgpt_matrix_access_token: 'ACCESS_TOKEN_HERE'
|
|
||||||
|
|
||||||
# Configuring the system promt used, needed if the bot is used for special tasks.
|
|
||||||
# More information: https://github.com/mustvlad/ChatGPT-System-Prompts
|
|
||||||
matrix_bot_chatgpt_matrix_bot_prompt_prefix: 'Instructions:\nYou are ChatGPT, a large language model trained by OpenAI.'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Extending the configuration
|
|
||||||
|
|
||||||
There are some additional things you may wish to configure about the bot.
|
|
||||||
|
|
||||||
Take a look at:
|
|
||||||
|
|
||||||
- `roles/custom/matrix-bot-chatgpt/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
|
||||||
|
|
||||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
|
||||||
```sh
|
|
||||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
|
|
||||||
```
|
|
||||||
|
|
||||||
**Notes**:
|
|
||||||
|
|
||||||
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
|
|
||||||
|
|
||||||
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
|
||||||
|
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
To use the bot, invite it to the room you specified on your `vars.yml` file (`/invite @bot.chatgpt:example.com` where `example.com` is your base domain, not the `matrix.` domain).
|
|
||||||
|
|
||||||
After the bot joins the room, you can send a message to it. When you do so, use the prefix if you configured it or mention the bot.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-bot-chatgpt`.
|
|
||||||
|
|||||||
@@ -145,6 +145,20 @@ The bot can intercept the report API endpoint of the client-server API, which re
|
|||||||
matrix_bot_draupnir_config_web_abuseReporting: true
|
matrix_bot_draupnir_config_web_abuseReporting: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Enabling synapse-http-antispam support
|
||||||
|
|
||||||
|
Certain protections in Draupnir require the [synapse-http-antispam](https://github.com/maunium/synapse-http-antispam) module and a Synapse homeserver plus homeserver admin status to function. This module can be enabled in the playbook via setting `matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled` to `true` and making sure that Draupnir admin API access is enabled.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Enables the integration between Draupnir and synapse-http-antispam module.
|
||||||
|
matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled: true
|
||||||
|
|
||||||
|
# Enables draupnir to access Synapse admin APIs. This is required for the module functionality to take full effect.
|
||||||
|
matrix_bot_draupnir_admin_api_enabled: true
|
||||||
|
```
|
||||||
|
|
||||||
|
These protections need to be manually activated and consulting the [enabling protections](#enabling-built-in-protections) guide can be helpful or consulting upstream documentation.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
NOTE: this is unsupported by the playbook due to the admin API being inaccessible from containers currently.
|
NOTE: this is unsupported by the playbook due to the admin API being inaccessible from containers currently.
|
||||||
|
|
||||||
@@ -228,9 +242,12 @@ For Draupnir to do its job, you need to [give it permissions](https://the-draupn
|
|||||||
|
|
||||||
We recommend **subscribing to a public [policy list](https://the-draupnir-project.github.io/draupnir-documentation/concepts/policy-lists)** using the [watch command](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-policy-lists#using-draupnirs-watch-command-to-subscribe-to-policy-rooms).
|
We recommend **subscribing to a public [policy list](https://the-draupnir-project.github.io/draupnir-documentation/concepts/policy-lists)** using the [watch command](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-policy-lists#using-draupnirs-watch-command-to-subscribe-to-policy-rooms).
|
||||||
|
|
||||||
Polcy lists are maintained in Matrix rooms. A popular policy list is maintained in the public `#community-moderation-effort-bl:neko.dev` room.
|
Policy lists are maintained in Matrix rooms. Popular ones maintained in the public are:
|
||||||
|
|
||||||
You can tell Draupnir to subscribe to it by sending the following command to the Management Room: `!draupnir watch #community-moderation-effort-bl:neko.dev`
|
- `#community-moderation-effort-bl:neko.dev`
|
||||||
|
- `#huginn-muninn-active-threats:feline.support`
|
||||||
|
|
||||||
|
You can tell Draupnir to subscribe to each of these by sending the following command to the Management Room: `!draupnir watch POLICY_LIST_ADDRESS_HERE` (e.g. `!draupnir watch #community-moderation-effort-bl:neko.dev`)
|
||||||
|
|
||||||
#### Creating your own policy lists and rules
|
#### Creating your own policy lists and rules
|
||||||
|
|
||||||
@@ -245,7 +262,7 @@ The simplest and most useful entity to target is `user`. Below are a few example
|
|||||||
To create rules, you run commands in the Management Room (**not** in the policy list room).
|
To create rules, you run commands in the Management Room (**not** in the policy list room).
|
||||||
|
|
||||||
- (ban a single user on a given homeserver): `!draupnir ban @charles:example.com my-bans Rude to others`
|
- (ban a single user on a given homeserver): `!draupnir ban @charles:example.com my-bans Rude to others`
|
||||||
- (ban all users on a given homeserver by using a [wildcard](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-users#wildcards)): `!draupnir ban @*:example.org my-bans Spam server - all users are fake`
|
- (ban all users on a given homeserver by using a [wildcard](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-users#wildcards)): `!draupnir ban @*:example.org my-bans Spam server, all users are fake`
|
||||||
|
|
||||||
As a result of running these commands, you may observe:
|
As a result of running these commands, you may observe:
|
||||||
|
|
||||||
@@ -256,14 +273,14 @@ You can undo bans with the [unban command](https://the-draupnir-project.github.i
|
|||||||
|
|
||||||
### Enabling built-in protections
|
### Enabling built-in protections
|
||||||
|
|
||||||
You can also **turn on various built-in [protections](https://the-draupnir-project.github.io/draupnir-documentation/protections)** like `JoinWaveShortCircuit` ("If X amount of users join in Y time, set the room to invite-only").
|
You can also **turn on various built-in [protections](https://the-draupnir-project.github.io/draupnir-documentation/protections)** like `JoinWaveShortCircuitProtection` ("If X amount of users join in Y time, set the room to invite-only").
|
||||||
|
|
||||||
To **see which protections are available and which are enabled**, send a `!draupnir protections` command to the Management Room.
|
To **see which protections are available and which are enabled**, send a `!draupnir protections` command to the Management Room.
|
||||||
|
|
||||||
To **see the configuration options for a given protection**, send a `!draupnir protections show PROTECTION_NAME` (e.g. `!draupnir protections show JoinWaveShortCircuit`).
|
To [**see the configuration options for a given protection**](https://the-draupnir-project.github.io/draupnir-documentation/protections/configuring-protections#displaying-the-protection-settings), send a `!draupnir protections show PROTECTION_NAME` (e.g. `!draupnir protections show JoinWaveShortCircuitProtection`).
|
||||||
|
|
||||||
To **set a specific option for a given protection**, send a command like this: `!draupnir config set PROTECTION_NAME.OPTION VALUE` (e.g. `!draupnir config set JoinWaveShortCircuit.timescaleMinutes 30`).
|
To [**set a specific option for a given protection**](https://the-draupnir-project.github.io/draupnir-documentation/protections/configuring-protections#changing-protection-settings), send a command like this: `!draupnir protections config set PROTECTION_NAME OPTION VALUE` (e.g. `!draupnir protections config set JoinWaveShortCircuitProtection timescaleMinutes 30`).
|
||||||
|
|
||||||
To **enable a given protection**, send a command like this: `!draupnir enable PROTECTION_NAME` (e.g. `!draupnir enable JoinWaveShortCircuit`).
|
To [**enable a given protection**](https://the-draupnir-project.github.io/draupnir-documentation/protections/block-invitations-on-server-protection#enabling-the-protection), send a command like this: `!draupnir protections enable PROTECTION_NAME` (e.g. `!draupnir protections enable JoinWaveShortCircuitProtection`).
|
||||||
|
|
||||||
To **disable a given protection**, send a command like this: `!draupnir disable PROTECTION_NAME` (e.g. `!draupnir disable JoinWaveShortCircuit`).
|
To **disable a given protection**, send a command like this: `!draupnir protections disable PROTECTION_NAME` (e.g. `!draupnir protections disable JoinWaveShortCircuitProtection`).
|
||||||
|
|||||||
@@ -37,6 +37,10 @@ matrix_synapse_enable_registration: true
|
|||||||
|
|
||||||
# Restrict registration to users with a token
|
# Restrict registration to users with a token
|
||||||
matrix_synapse_registration_requires_token: true
|
matrix_synapse_registration_requires_token: true
|
||||||
|
|
||||||
|
# Set an optional command prefix for the bot. This can be any arbitrary string, including whitespace.
|
||||||
|
# Example: "!regbot "
|
||||||
|
matrix_bot_matrix_registration_bot_bot_prefix: ""
|
||||||
```
|
```
|
||||||
|
|
||||||
The bot account will be created automatically.
|
The bot account will be created automatically.
|
||||||
@@ -77,7 +81,7 @@ Send `help` to the bot to see the available commands.
|
|||||||
|
|
||||||
You can also refer to the upstream [Usage documentation](https://github.com/moan0s/matrix-registration-bot#supported-commands).
|
You can also refer to the upstream [Usage documentation](https://github.com/moan0s/matrix-registration-bot#supported-commands).
|
||||||
|
|
||||||
If you have any questions, or if you need help setting it up, read the [troublshooting guide](https://github.com/moan0s/matrix-registration-bot/blob/main/docs/troubleshooting.md) or join [#matrix-registration-bot:hyteck.de](https://matrix.to/#/#matrix-registration-bot:hyteck.de).
|
If you have any questions, or if you need help setting it up, read the [troubleshooting guide](https://github.com/moan0s/matrix-registration-bot/blob/main/docs/troubleshooting.md) or join [#matrix-registration-bot:hyteck.de](https://matrix.to/#/#matrix-registration-bot:hyteck.de).
|
||||||
|
|
||||||
To clean the cache (session & encryption data) after you changed the bot's username, changed the login method from access_token to password etc… you can use:
|
To clean the cache (session & encryption data) after you changed the bot's username, changed the login method from access_token to password etc… you can use:
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
|||||||
|
|
||||||
# Setting up Appservice Discord bridging (optional)
|
# Setting up Appservice Discord bridging (optional)
|
||||||
|
|
||||||
**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) and [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridges supported by the playbook.
|
**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridge supported by the playbook.
|
||||||
- For using as a Bot we are recommend the Appservice Discord bridge (the one being discussed here), because it supports plumbing.
|
- For using as a Bot we are recommend the Appservice Discord bridge (the one being discussed here), because it supports plumbing.
|
||||||
- For personal use we recommend the [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridge, because it is the most fully-featured and stable of the 3 Discord bridges supported by the playbook.
|
- For personal use we recommend the [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridge, because it is the most fully-featured and stable of the 3 Discord bridges supported by the playbook.
|
||||||
|
|
||||||
|
|||||||
@@ -1,157 +1,38 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2019 - 2022 MDAD project contributors
|
SPDX-FileCopyrightText: 2019 Edgars Voroboks
|
||||||
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
|
SPDX-FileCopyrightText: 2019-2025 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2019-2025 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2020 Chris van Dijk
|
||||||
|
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
||||||
SPDX-FileCopyrightText: 2020 Udo Rader
|
SPDX-FileCopyrightText: 2020 Udo Rader
|
||||||
SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev
|
SPDX-FileCopyrightText: 2020 jens quade
|
||||||
SPDX-FileCopyrightText: 2021 Joel Bennett
|
SPDX-FileCopyrightText: 2021 Joel Bennett
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
|
SPDX-FileCopyrightText: 2022 Kim Brose
|
||||||
|
SPDX-FileCopyrightText: 2022 Travis Ralston
|
||||||
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
|
SPDX-FileCopyrightText: 2022 Yan Minagawa
|
||||||
SPDX-FileCopyrightText: 2024 Fabio Bonelli
|
SPDX-FileCopyrightText: 2024 Fabio Bonelli
|
||||||
|
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up Appservice Slack bridging (optional)
|
# Setting up Appservice Slack bridging (optional, removed)
|
||||||
|
|
||||||
**Notes**:
|
🪦 The playbook used to be able to install and configure [matrix-appservice-slack](https://github.com/matrix-org/matrix-appservice-slack), but no longer includes this component, as it had been unavailable for new installation since 2024, and was finally abandoned because the public Matrix.org Slack bridge has been decommissioned on January 14th, 2026.
|
||||||
- Bridging to [Slack](https://slack.com) can also happen via the [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) and [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridges supported by the playbook.
|
|
||||||
- Currently (as of November, 2024) **this component is not available for new installation unless you have already created a classic Slack application** (which the bridge makes use of in order to enable bridging between Slack and Matrix), because the creation of classic Slack applications has been discontinued since June 4 2024. The author of the bridge claims [here](https://github.com/matrix-org/matrix-appservice-slack/issues/789#issuecomment-2172947787) that he plans to support the modern Slack application and until then "the best (and only) option for new installations is to use the webhook bridging".
|
|
||||||
|
|
||||||
The playbook can install and configure [matrix-appservice-slack](https://github.com/matrix-org/matrix-appservice-slack) for you.
|
**Note**: Bridging to [Slack](https://slack.com) can also happen via the [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridge supported by the playbook.
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/matrix-org/matrix-appservice-slack/blob/master/README.md) to learn what it does and why it might be useful to you.
|
## Uninstalling the component manually
|
||||||
|
|
||||||
## Prerequisites
|
If you still have matrix-appservice-slack installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
|
||||||
|
|
||||||
### Create a Classic Slack App
|
|
||||||
|
|
||||||
First, you need to create a Classic Slack App [here](https://api.slack.com/apps?new_classic_app=1).
|
|
||||||
|
|
||||||
Name the app "matrixbot" (or anything else you'll remember). Select the team/workspace this app will belong to. Click on bot users and add a new bot user. We will use this account to bridge the the rooms.
|
|
||||||
|
|
||||||
Then, click on Event Subscriptions and enable them and use the request url: `https://matrix.example.com/appservice-slack`.
|
|
||||||
|
|
||||||
Add the following events as `Bot User Events` and save:
|
|
||||||
|
|
||||||
- team_domain_change
|
|
||||||
- message.channels
|
|
||||||
- message.groups (if you want to bridge private channels)
|
|
||||||
- reaction_added
|
|
||||||
- reaction_removed
|
|
||||||
|
|
||||||
Next, click on "OAuth & Permissions" and add the following scopes:
|
|
||||||
|
|
||||||
- chat:write:bot
|
|
||||||
- users:read
|
|
||||||
- reactions:write
|
|
||||||
- files:write:user (if you want to bridge files)
|
|
||||||
|
|
||||||
**Note**: In order to make Slack files visible to Matrix users, this bridge will make Slack files visible to anyone with the url (including files in private channels). This is different than the current behavior in Slack, which only allows authenticated access to media posted in private channels. See MSC701 for details.
|
|
||||||
|
|
||||||
Click on "Install App" and "Install App to Workspace". Note the access tokens shown. You will need the Bot User OAuth Access Token and if you want to bridge files, the OAuth Access Token whenever you link a room.
|
|
||||||
|
|
||||||
### Create an administration control room on Matrix
|
|
||||||
|
|
||||||
Create a new Matrix room to act as the administration control room.
|
|
||||||
|
|
||||||
Note its internal room ID. This can be done in Element Web by sending a message, opening the options for that message and choosing "view source". The room ID will be displayed near the top.
|
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
|
||||||
|
|
||||||
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_appservice_slack_enabled: true
|
|
||||||
matrix_appservice_slack_control_room_id: "Your Matrix admin room ID"
|
|
||||||
|
|
||||||
# Uncomment to enable puppeting (optional, but recommended)
|
|
||||||
# matrix_appservice_slack_puppeting_enabled: true
|
|
||||||
# matrix_appservice_slack_puppeting_slackapp_client_id: "Your Classic Slack App Client ID"
|
|
||||||
# matrix_appservice_slack_puppeting_slackapp_client_secret: "Your Classic Slack App Client Secret"
|
|
||||||
|
|
||||||
# Uncomment to enable Team Sync (optional)
|
|
||||||
# See https://matrix-appservice-slack.readthedocs.io/en/latest/team_sync/
|
|
||||||
# matrix_appservice_slack_team_sync_enabled: true
|
|
||||||
```
|
|
||||||
|
|
||||||
### Extending the configuration
|
|
||||||
|
|
||||||
There are some additional things you may wish to configure about the bridge.
|
|
||||||
|
|
||||||
Take a look at:
|
|
||||||
|
|
||||||
- `roles/custom/matrix-bridge-appservice-slack/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
|
||||||
- `roles/custom/matrix-bridge-appservice-slack/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_appservice_slack_configuration_extension_yaml` variable
|
|
||||||
|
|
||||||
For example, to change the bot's username from `slackbot`, add the following configuration to your `vars.yml` file. Replace `examplebot` with your own.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_appservice_slack_configuration_extension_yaml: |
|
|
||||||
bot_username: "examplebot"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
|
||||||
|
|
||||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
|
||||||
```sh
|
```sh
|
||||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
systemctl disable --now matrix-appservice-slack.service
|
||||||
|
|
||||||
|
rm -rf /matrix/appservice-slack
|
||||||
|
|
||||||
|
/matrix/postgres/bin/cli-non-interactive -c 'DROP DATABASE matrix_appservice_slack;'
|
||||||
```
|
```
|
||||||
|
|
||||||
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
|
||||||
|
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
To use the bridge, you need to send `/invite @slackbot:example.com` to invite the bridge bot user into the admin room.
|
|
||||||
|
|
||||||
If Team Sync is not enabled, for each channel you would like to bridge, perform the following steps:
|
|
||||||
|
|
||||||
- Create a Matrix room in the usual manner for your client. Take a note of its Matrix room ID — it will look something like `!qporfwt:example.com`.
|
|
||||||
- Invite the bot user to both the Slack and Matrix channels you would like to bridge using `/invite @matrixbot` for Slack and `/invite @slackbot:example.com` for Matrix.
|
|
||||||
- Determine the "channel ID" that Slack uses to identify the channel. You can see it when you open a given Slack channel in a browser. The URL reads like this: `https://app.slack.com/client/XXX/<the channel ID>/details/`.
|
|
||||||
- Issue a link command in the administration control room with these collected values as arguments:
|
|
||||||
|
|
||||||
with file bridging:
|
|
||||||
|
|
||||||
```
|
|
||||||
link --channel_id CHANNELID --room !qporfwt:example.com --slack_bot_token xoxb-xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxx --slack_user_token xoxp-xxxxxxxx-xxxxxxxxx-xxxxxxxx-xxxxxxxx
|
|
||||||
```
|
|
||||||
|
|
||||||
without file bridging:
|
|
||||||
|
|
||||||
```
|
|
||||||
link --channel_id CHANNELID --room !qporfwt:example.com --slack_bot_token xoxb-xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxx
|
|
||||||
```
|
|
||||||
|
|
||||||
These arguments can be shortened to single-letter forms:
|
|
||||||
|
|
||||||
```
|
|
||||||
link -I CHANNELID -R !qporfwt:example.com -t xoxb-xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxx
|
|
||||||
```
|
|
||||||
|
|
||||||
### Unlinking
|
|
||||||
|
|
||||||
Channels can be unlinked again by sending this:
|
|
||||||
|
|
||||||
```
|
|
||||||
unlink --room !qporfwt:example.com
|
|
||||||
```
|
|
||||||
|
|
||||||
Unlinking doesn't only disconnect the bridge, but also makes the slackbot leave the bridged Matrix room. So in case you want to re-link later, don't forget to re-invite the slackbot into this room again.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-appservice-slack`.
|
|
||||||
|
|
||||||
### Linking: "Room is now pending-name"
|
|
||||||
|
|
||||||
This typically means that you haven't used the correct Slack channel ID. Unlink the room and recheck 'Determine the "channel ID"' from above.
|
|
||||||
|
|
||||||
### Messages work from Matrix to Slack, but not the other way around
|
|
||||||
|
|
||||||
Check the logs, and if you find the message like below, unlink your room, reinvite the bot and re-link it again.
|
|
||||||
|
|
||||||
`WARN SlackEventHandler Ignoring message from unrecognised Slack channel ID : %s (%s) <the channel ID> <some other ID>`
|
|
||||||
|
|
||||||
This may particularly hit you, if you tried to unsuccessfully link your room multiple times without unlinking it after each failed attempt.
|
|
||||||
|
|||||||
@@ -1,113 +1,30 @@
|
|||||||
<!--
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
SPDX-FileCopyrightText: 2020 - 2023 MDAD project contributors
|
SPDX-FileCopyrightText: 2020 - 2023 MDAD project contributors
|
||||||
SPDX-FileCopyrightText: 2020 Björn Marten
|
SPDX-FileCopyrightText: 2020 Björn Marten
|
||||||
SPDX-FileCopyrightText: 2020 Slavi Pantaleev
|
|
||||||
SPDX-FileCopyrightText: 2020 iLyas Bakouch
|
SPDX-FileCopyrightText: 2020 iLyas Bakouch
|
||||||
|
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
||||||
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
SPDX-FileCopyrightText: 2022 Kim Brose
|
SPDX-FileCopyrightText: 2022 Kim Brose
|
||||||
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up Appservice Webhooks bridging (optional, deprecated)
|
# Setting up Appservice Webhooks bridging (optional, removed)
|
||||||
|
|
||||||
**Note**: This bridge has been deprecated. We recommend not bothering with installing it. While not a 1:1 replacement, the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bridge-hookshot.md). Consider using that bridge instead of this one.
|
🪦 The playbook used to be able to install and configure [matrix-appservice-webhooks](https://github.com/turt2live/matrix-appservice-webhooks), but no longer includes this component, as it has been deprecated since more than several years.
|
||||||
|
|
||||||
The playbook can install and configure [matrix-appservice-webhooks](https://github.com/turt2live/matrix-appservice-webhooks) for you. This bridge provides support for Slack-compatible webhooks.
|
You may wish to use [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) instead.
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/turt2live/matrix-appservice-webhooks/blob/master/README.md) to learn what it does and why it might be useful to you.
|
## Uninstalling the bridge manually
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
If you still have matrix-appservice-webhooks installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
|
||||||
|
|
||||||
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_appservice_webhooks_enabled: true
|
|
||||||
matrix_appservice_webhooks_api_secret: '<your_secret>'
|
|
||||||
|
|
||||||
# As of Synapse 1.90.0, uncomment to enable the backwards compatibility (https://matrix-org.github.io/synapse/latest/upgrade#upgrading-to-v1900) that this bridge needs.
|
|
||||||
# Note: This deprecated method is considered insecure.
|
|
||||||
#
|
|
||||||
# matrix_synapse_configuration_extension_yaml: |
|
|
||||||
# use_appservice_legacy_authorization: true
|
|
||||||
```
|
|
||||||
|
|
||||||
### Extending the configuration
|
|
||||||
|
|
||||||
There are some additional things you may wish to configure about the bridge.
|
|
||||||
|
|
||||||
Take a look at:
|
|
||||||
|
|
||||||
- `roles/custom/matrix-bridge-appservice-webhooks/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
|
||||||
- `roles/custom/matrix-bridge-appservice-webhooks/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_appservice_webhooks_configuration_extension_yaml` variable
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
|
||||||
|
|
||||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
|
||||||
```sh
|
|
||||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
|
||||||
```
|
|
||||||
|
|
||||||
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
|
||||||
|
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
To use the bridge, you need to invite the bridge bot user to your room in either way.
|
|
||||||
|
|
||||||
- Send `/invite @_webhook:example.com` (**Note**: Make sure you have administration permissions in your room)
|
|
||||||
- Add the bridge bot to a private channel (personal channels imply you being an administrator)
|
|
||||||
|
|
||||||
You then need to send a message to the bridge bot to receive a private message including the webhook link:
|
|
||||||
|
|
||||||
```
|
|
||||||
!webhook
|
|
||||||
```
|
|
||||||
|
|
||||||
The JSON body for posting messages will have to look like this:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"text": "Hello world!",
|
|
||||||
"format": "plain",
|
|
||||||
"displayName": "My Cool Webhook",
|
|
||||||
"avatar_url": "http://i.imgur.com/IDOBtEJ.png"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
You can test this via curl like so:
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl --header "Content-Type: application/json" \
|
systemctl disable --now matrix-appservice-webhooks.service
|
||||||
--data '{
|
|
||||||
"text": "Hello world!",
|
rm -rf /matrix/appservice-webhooks
|
||||||
"format": "plain",
|
|
||||||
"displayName": "My Cool Webhook",
|
|
||||||
"avatar_url": "http://i.imgur.com/IDOBtEJ.png"
|
|
||||||
}' \
|
|
||||||
<the webhook link you've gotten from the bridge bot>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Setting Webhooks with Dimension integration manager
|
|
||||||
|
|
||||||
If you're using the [Dimension integration manager](configuring-playbook-dimension.md), you can configure the Webhooks bridge with it.
|
|
||||||
|
|
||||||
To configure it, open the Dimension integration manager, and go to "Settings" and "Bridges", then select edit action for "Webhook Bridge".
|
|
||||||
|
|
||||||
On the UI, press "Add self-hosted Bridge" button and populate "Provisioning URL" and "Shared Secret" values from `/matrix/appservice-webhooks/config/config.yaml` file's homeserver URL value and provisioning secret value, respectively.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-appservice-webhooks`.
|
|
||||||
|
|
||||||
### Increase logging verbosity
|
|
||||||
|
|
||||||
The default logging level for this component is `info`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# Valid values: info, verbose
|
|
||||||
matrix_appservice_webhooks_log_level: 'verbose'
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,68 +1,26 @@
|
|||||||
<!--
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
|
SPDX-FileCopyrightText: 2021 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up Go Skype Bridge bridging (optional)
|
# Setting up Go Skype Bridge bridging (optional, removed)
|
||||||
|
|
||||||
The playbook can install and configure [go-skype-bridge](https://github.com/kelaresg/go-skype-bridge) for you, for bridging to [Skype](https://www.skype.com/). This bridge was created based on [mautrix-whatsapp](https://github.com/mautrix/whatsapp) and can be configured in a similar way to it.
|
🪦 The playbook used to be able to install and configure [go-skype-bridge](https://github.com/kelaresg/go-skype-bridge), but no longer includes this component, as Skype has been discontinued since May 2025.
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/kelaresg/go-skype-bridge/blob/master/README.md) to learn what it does and why it might be useful to you.
|
## Uninstalling the bridge manually
|
||||||
|
|
||||||
## Prerequisite (optional)
|
If you still have the Go Skype bridge installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
|
||||||
|
|
||||||
### Enable Shared Secret Auth
|
|
||||||
|
|
||||||
If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) for this playbook.
|
|
||||||
|
|
||||||
See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-puppeting-optional) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about setting up Double Puppeting.
|
|
||||||
|
|
||||||
**Note**: double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future.
|
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
|
||||||
|
|
||||||
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_go_skype_bridge_enabled: true
|
|
||||||
```
|
|
||||||
|
|
||||||
### Extending the configuration
|
|
||||||
|
|
||||||
There are some additional things you may wish to configure about the bridge.
|
|
||||||
|
|
||||||
See [this section](configuring-playbook-bridge-mautrix-bridges.md#extending-the-configuration) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about variables that you can customize and the bridge's default configuration, including [bridge permissions](configuring-playbook-bridge-mautrix-bridges.md#configure-bridge-permissions-optional), [encryption support](configuring-playbook-bridge-mautrix-bridges.md#enable-encryption-optional), [relay mode](configuring-playbook-bridge-mautrix-bridges.md#enable-relay-mode-optional), [bot's username](configuring-playbook-bridge-mautrix-bridges.md#set-the-bots-username-optional), etc.
|
|
||||||
|
|
||||||
**Note**: when following the guide to configure the bridge, make sure to replace `_mautrix_SERVICENAME_` in the variable names with `_go_skype_bridge_`.
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
|
||||||
|
|
||||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
|
||||||
```sh
|
```sh
|
||||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
systemctl disable --now matrix-go-skype-bridge.service
|
||||||
```
|
|
||||||
|
rm -rf /matrix/go-skype-bridge
|
||||||
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
|
||||||
|
/matrix/postgres/bin/cli-non-interactive -c 'DROP DATABASE matrix_go_skype_bridge;'
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
To use the bridge, you need to start a chat with `@skypebridgebot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-go-skype-bridge`.
|
|
||||||
|
|
||||||
### Increase logging verbosity
|
|
||||||
|
|
||||||
The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# Valid values: fatal, error, warn, info, debug
|
|
||||||
matrix_go_skype_bridge_log_level: 'info'
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -16,8 +16,6 @@ Hookshot can bridge [Webhooks](https://en.wikipedia.org/wiki/Webhook) from softw
|
|||||||
|
|
||||||
See the project's [documentation](https://matrix-org.github.io/matrix-hookshot/latest/hookshot.html) to learn what it does and why it might be useful to you.
|
See the project's [documentation](https://matrix-org.github.io/matrix-hookshot/latest/hookshot.html) to learn what it does and why it might be useful to you.
|
||||||
|
|
||||||
**Note**: the playbook also supports [matrix-appservice-webhooks](configuring-playbook-bridge-appservice-webhooks.md), which however was deprecated by its author.
|
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
### Download GitHub app private key (optional)
|
### Download GitHub app private key (optional)
|
||||||
@@ -35,7 +33,7 @@ matrix_hookshot_enabled: true
|
|||||||
|
|
||||||
# Uncomment to enable end-to-bridge encryption.
|
# Uncomment to enable end-to-bridge encryption.
|
||||||
# See: https://matrix-org.github.io/matrix-hookshot/latest/advanced/encryption.html
|
# See: https://matrix-org.github.io/matrix-hookshot/latest/advanced/encryption.html
|
||||||
# matrix_hookshot_experimental_encryption_enabled: true
|
# matrix_hookshot_encryption_enabled: true
|
||||||
|
|
||||||
# Uncomment and paste the contents of GitHub app private key to enable GitHub bridge.
|
# Uncomment and paste the contents of GitHub app private key to enable GitHub bridge.
|
||||||
# Alternatively, you can use one of the other methods explained below on the "Manage GitHub Private Key with aux role" section.
|
# Alternatively, you can use one of the other methods explained below on the "Manage GitHub Private Key with aux role" section.
|
||||||
@@ -103,7 +101,6 @@ Unless indicated otherwise, the following endpoints are reachable on your `matri
|
|||||||
| github oauth | `/hookshot/webhooks/oauth` | `matrix_hookshot_github_oauth_endpoint` | GitHub "Callback URL" |
|
| github oauth | `/hookshot/webhooks/oauth` | `matrix_hookshot_github_oauth_endpoint` | GitHub "Callback URL" |
|
||||||
| jira oauth | `/hookshot/webhooks/jira/oauth` | `matrix_hookshot_jira_oauth_endpoint` | Jira OAuth |
|
| jira oauth | `/hookshot/webhooks/jira/oauth` | `matrix_hookshot_jira_oauth_endpoint` | Jira OAuth |
|
||||||
| figma endpoint | `/hookshot/webhooks/figma/webhook` | `matrix_hookshot_figma_endpoint` | Figma |
|
| figma endpoint | `/hookshot/webhooks/figma/webhook` | `matrix_hookshot_figma_endpoint` | Figma |
|
||||||
| provisioning | `/hookshot/v1/` | `matrix_hookshot_provisioning_endpoint` | Dimension [provisioning](#provisioning-api) |
|
|
||||||
| appservice | `/hookshot/_matrix/app/` | `matrix_hookshot_appservice_endpoint` | Matrix server |
|
| appservice | `/hookshot/_matrix/app/` | `matrix_hookshot_appservice_endpoint` | Matrix server |
|
||||||
| widgets | `/hookshot/widgetapi/` | `matrix_hookshot_widgets_endpoint` | Widgets |
|
| widgets | `/hookshot/widgetapi/` | `matrix_hookshot_widgets_endpoint` | Widgets |
|
||||||
|
|
||||||
@@ -126,20 +123,12 @@ aux_file_definitions:
|
|||||||
- dest: "{{ matrix_hookshot_base_path }}/{{ matrix_hookshot_github_private_key_file }}"
|
- dest: "{{ matrix_hookshot_base_path }}/{{ matrix_hookshot_github_private_key_file }}"
|
||||||
content: "{{ lookup('file', '/path/to/your-github-private-key.pem') }}"
|
content: "{{ lookup('file', '/path/to/your-github-private-key.pem') }}"
|
||||||
mode: '0400'
|
mode: '0400'
|
||||||
owner: "{{ matrix_user_username }}"
|
owner: "{{ matrix_user_name }}"
|
||||||
group: "{{ matrix_user_groupname }}"
|
group: "{{ matrix_group_name }}"
|
||||||
```
|
```
|
||||||
|
|
||||||
For more information, see the documentation in the [default configuration of the aux role](https://github.com/mother-of-all-self-hosting/ansible-role-aux/blob/main/defaults/main.yml).
|
For more information, see the documentation in the [default configuration of the aux role](https://github.com/mother-of-all-self-hosting/ansible-role-aux/blob/main/defaults/main.yml).
|
||||||
|
|
||||||
### Provisioning API
|
|
||||||
|
|
||||||
The provisioning API will be enabled automatically if you set `matrix_dimension_enabled: true` and provided a `matrix_hookshot_provisioning_secret`, unless you override it either way. To use hookshot with Dimension, you will need to enter as "Provisioning URL": `http://matrix-hookshot:9002`, which is made up of the variables `matrix_hookshot_container_url` and `matrix_hookshot_provisioning_port`.
|
|
||||||
|
|
||||||
### Collision with matrix-appservice-webhooks
|
|
||||||
|
|
||||||
If you are also running [matrix-appservice-webhooks](configuring-playbook-bridge-appservice-webhooks.md), it reserves its namespace by the default setting `matrix_appservice_webhooks_user_prefix: '_webhook_'`. You should take care if you modify its or hookshot's prefix that they do not collide with each other's namespace (default `matrix_hookshot_generic_userIdPrefix: '_webhooks_'`).
|
|
||||||
|
|
||||||
### Enable metrics
|
### Enable metrics
|
||||||
|
|
||||||
The playbook can enable and configure the metrics of the service for you.
|
The playbook can enable and configure the metrics of the service for you.
|
||||||
@@ -172,7 +161,7 @@ To `matrix_hookshot_container_labels_metrics_middleware_basic_auth_users`, set t
|
|||||||
|
|
||||||
#### Enable Grafana (optional)
|
#### Enable Grafana (optional)
|
||||||
|
|
||||||
Probably you wish to enable Grafana along with Prometheus for generating graphs of the metics.
|
Probably you wish to enable Grafana along with Prometheus for generating graphs of the metrics.
|
||||||
|
|
||||||
To enable Grafana, see [this section](configuring-playbook-prometheus-grafana.md#adjusting-the-playbook-configuration-grafana) for instructions.
|
To enable Grafana, see [this section](configuring-playbook-prometheus-grafana.md#adjusting-the-playbook-configuration-grafana) for instructions.
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ To enable the bridge, add the following configuration to your `inventory/host_va
|
|||||||
matrix_mautrix_SERVICENAME_enabled: true
|
matrix_mautrix_SERVICENAME_enabled: true
|
||||||
```
|
```
|
||||||
|
|
||||||
**Note**: for bridging to Meta's Messenger or Instagram, you would need to add `meta` with an underscore symbol (`_`) or hyphen (`-`) based on the context as prefix to each `SERVICENAME`; add `_` to variables (as in `matrix_mautrix_meta_messenger_configuration_extension_yaml` for example) and `-` to paths of the configuration files (as in `roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2`), respectively. **`matrix_mautrix_facebook_*` and `matrix_mautrix_instagram_*` variables belong to the deprecated components and do not control the new bridge** ([mautrix-meta](https://github.com/mautrix/meta)), which can be [installed using this playbook](configuring-playbook-bridge-mautrix-meta-messenger.md).
|
**Note**: for bridging to Meta's Messenger or Instagram, you would need to add `meta` with an underscore symbol (`_`) or hyphen (`-`) based on the context as prefix to each `SERVICENAME`; add `_` to variables (as in `matrix_mautrix_meta_messenger_configuration_extension_yaml` for example) and `-` to paths of the configuration files (as in `roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2`), respectively.
|
||||||
|
|
||||||
There are some additional things you may wish to configure about the bridge before you continue. Each bridge may have additional requirements besides `_enabled: true`. For example, the mautrix-telegram bridge (our documentation page about it is [here](configuring-playbook-bridge-mautrix-telegram.md)) requires the `matrix_mautrix_telegram_api_id` and `matrix_mautrix_telegram_api_hash` variables to be defined. Refer to each bridge's individual documentation page for details about enabling bridges.
|
There are some additional things you may wish to configure about the bridge before you continue. Each bridge may have additional requirements besides `_enabled: true`. For example, the mautrix-telegram bridge (our documentation page about it is [here](configuring-playbook-bridge-mautrix-telegram.md)) requires the `matrix_mautrix_telegram_api_id` and `matrix_mautrix_telegram_api_hash` variables to be defined. Refer to each bridge's individual documentation page for details about enabling bridges.
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2018 - 2024 Slavi Pantaleev
|
|
||||||
SPDX-FileCopyrightText: 2018 Hugues Morisset
|
SPDX-FileCopyrightText: 2018 Hugues Morisset
|
||||||
SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors
|
SPDX-FileCopyrightText: 2018-2024 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2021, 2022 MDAD project contributors
|
||||||
SPDX-FileCopyrightText: 2022 Abílio Costa
|
SPDX-FileCopyrightText: 2022 Abílio Costa
|
||||||
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
SPDX-FileCopyrightText: 2022 Marko Weltzer
|
SPDX-FileCopyrightText: 2022 Marko Weltzer
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
@@ -14,9 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
|||||||
|
|
||||||
<sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup>
|
<sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup>
|
||||||
|
|
||||||
**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) and [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md) bridges supported by the playbook.
|
**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md) bridge supported by the playbook.
|
||||||
- For using as a Bot we recommend the [Appservice Discord](configuring-playbook-bridge-appservice-discord.md), because it supports plumbing.
|
|
||||||
- For personal use with a discord account we recommend the `mautrix-discord` bridge (the one being discussed here), because it is the most fully-featured and stable of the 3 Discord bridges supported by the playbook.
|
|
||||||
|
|
||||||
The playbook can install and configure [mautrix-discord](https://github.com/mautrix/discord) for you.
|
The playbook can install and configure [mautrix-discord](https://github.com/mautrix/discord) for you.
|
||||||
|
|
||||||
@@ -24,9 +22,9 @@ See the project's [documentation](https://docs.mau.fi/bridges/go/discord/index.h
|
|||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
There are 2 ways to login to discord using this bridge, either by [scanning a QR code](#method-1-login-using-qr-code-recommended) using the Discord mobile app **or** by using a [Discord token](#method-2-login-using-discord-token-not-recommended).
|
There are 3 ways to login to discord using this bridge, either by [scanning a QR code](https://docs.mau.fi/bridges/go/discord/authentication.html#qr-login) using the Discord mobile app, by using a [Discord token](https://docs.mau.fi/bridges/go/discord/authentication.html#token-login), **or** by using a [Discord bot token](https://docs.mau.fi/bridges/go/discord/authentication.html#bot-token-login).
|
||||||
|
|
||||||
If this is a dealbreaker for you, consider using one of the other Discord bridges supported by the playbook: [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) or [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md). These come with their own complexity and limitations, however, so we recommend that you proceed with this one if possible.
|
⚠️ QR code login is considered a self-bot and is forbidden by Discord. It can result in an account termination. See the [Discord policy](https://support.discord.com/hc/en-us/articles/115002192352-Automated-User-Accounts-Self-Bots).
|
||||||
|
|
||||||
### Enable Appservice Double Puppet or Shared Secret Auth (optional)
|
### Enable Appservice Double Puppet or Shared Secret Auth (optional)
|
||||||
|
|
||||||
@@ -80,6 +78,14 @@ After bridging, spaces will be created automatically, and rooms will be created
|
|||||||
|
|
||||||
If you want to manually bridge channels, invite the bot to the room you want to bridge, and run `!discord bridge CHANNEL_ID_HERE` to bridge the room. Make sure to replace `CHANNEL_ID_HERE` with the channel's ID.
|
If you want to manually bridge channels, invite the bot to the room you want to bridge, and run `!discord bridge CHANNEL_ID_HERE` to bridge the room. Make sure to replace `CHANNEL_ID_HERE` with the channel's ID.
|
||||||
|
|
||||||
|
### Enable relay
|
||||||
|
|
||||||
|
The bridge supports using Discord's webhook feature to relay messages from Matrix users who haven't logged into the bridge.
|
||||||
|
|
||||||
|
In a room that has already been bridged, run `!discord set-relay --create`. The bridge will then create a webhook in the bridged discord channel and begin relaying messages. If the discord user does not have access to manage webhooks, run `!discord set-relay --url <url>` with the url of an already created webhook. (See Discords [Intro to webhooks](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks))
|
||||||
|
|
||||||
|
More information on relaying is available on the [official documentation](https://docs.mau.fi/bridges/go/discord/relay.html).
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-mautrix-discord`.
|
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-mautrix-discord`.
|
||||||
@@ -92,3 +98,7 @@ The default logging level for this component is `warn`. If you want to increase
|
|||||||
# Valid values: fatal, error, warn, info, debug, trace
|
# Valid values: fatal, error, warn, info, debug, trace
|
||||||
matrix_mautrix_discord_logging_level: 'debug'
|
matrix_mautrix_discord_logging_level: 'debug'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Command requires room admin rights when user is creator
|
||||||
|
|
||||||
|
[MSC4289](https://github.com/matrix-org/matrix-spec-proposals/blob/main/proposals/4289-privilege-creators.md), introduced in [room version 12](https://spec.matrix.org/unstable/rooms/v12/), gives creators an infinitley high powerlevel. At the time of implementation, mautrix-discord and similar applications may not identify creators as or above admins. Either a separate admin user will need to manage the bridge or the room version should be less than version 12.
|
||||||
|
|||||||
@@ -1,100 +1,32 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev
|
SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
SPDX-FileCopyrightText: 2019 Hugues Morisset
|
SPDX-FileCopyrightText: 2019 Hugues Morisset
|
||||||
|
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
||||||
SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors
|
SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors
|
||||||
SPDX-FileCopyrightText: 2021 Aaron Raimist
|
SPDX-FileCopyrightText: 2021 Aaron Raimist
|
||||||
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
SPDX-FileCopyrightText: 2022 László Várady
|
SPDX-FileCopyrightText: 2022 László Várady
|
||||||
SPDX-FileCopyrightText: 2024 Suguru Hirahara
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
|
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up Mautrix Facebook bridging (optional, deprecated)
|
# Setting up Mautrix Facebook bridging (optional, removed)
|
||||||
|
|
||||||
<sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup>
|
🪦 The playbook used to be able to install and configure [mautrix-facebook](https://github.com/mautrix/facebook), but no longer includes this component, as it has been deprecated in favor of the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge.
|
||||||
|
|
||||||
**Note**: This bridge has been deprecated in favor of the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge, which can be [installed using this playbook](configuring-playbook-bridge-mautrix-meta-messenger.md). Consider using that bridge instead of this one.
|
The mautrix-meta bridge can be [installed using this playbook](configuring-playbook-bridge-mautrix-meta-messenger.md).
|
||||||
|
|
||||||
The playbook can install and configure [mautrix-facebook](https://github.com/mautrix/facebook) for you.
|
## Uninstalling the bridge manually
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/mautrix/facebook/blob/master/README.md) to learn what it does and why it might be useful to you.
|
If you still have the bridge installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
|
||||||
|
|
||||||
## Prerequisite (optional)
|
|
||||||
|
|
||||||
### Enable Shared Secret Auth
|
|
||||||
|
|
||||||
If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) for this playbook.
|
|
||||||
|
|
||||||
See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-puppeting-optional) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about setting up Double Puppeting.
|
|
||||||
|
|
||||||
**Note**: double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future.
|
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
|
||||||
|
|
||||||
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_mautrix_facebook_enabled: true
|
|
||||||
```
|
|
||||||
|
|
||||||
### Extending the configuration
|
|
||||||
|
|
||||||
There are some additional things you may wish to configure about the bridge.
|
|
||||||
|
|
||||||
See [this section](configuring-playbook-bridge-mautrix-bridges.md#extending-the-configuration) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about variables that you can customize and the bridge's default configuration, including [bridge permissions](configuring-playbook-bridge-mautrix-bridges.md#configure-bridge-permissions-optional), [encryption support](configuring-playbook-bridge-mautrix-bridges.md#enable-encryption-optional), [relay mode](configuring-playbook-bridge-mautrix-bridges.md#enable-relay-mode-optional), [bot's username](configuring-playbook-bridge-mautrix-bridges.md#set-the-bots-username-optional), etc.
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
|
||||||
|
|
||||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
|
||||||
```sh
|
|
||||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
|
||||||
```
|
|
||||||
|
|
||||||
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
|
||||||
|
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
To use the bridge, you need to start a chat with `@facebookbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
|
|
||||||
|
|
||||||
You then need to send `login YOUR_FACEBOOK_EMAIL_ADDRESS` to the bridge bot to enable bridging for your Facebook Messenger account.
|
|
||||||
|
|
||||||
If you run into trouble, check the [Troubleshooting](#troubleshooting) section below.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-mautrix-facebook`.
|
|
||||||
|
|
||||||
### Increase logging verbosity
|
|
||||||
|
|
||||||
The default logging level for this component is `WARNING`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_mautrix_facebook_logging_level: DEBUG
|
|
||||||
```
|
|
||||||
|
|
||||||
### Facebook rejecting login attempts and forcing you to change password
|
|
||||||
|
|
||||||
If your Matrix server is in a wildly different location than where you usually use your Facebook account from, the bridge's login attempts may be outright rejected by Facebook. Along with that, Facebook may even force you to change the account's password.
|
|
||||||
|
|
||||||
If you happen to run into this problem while [setting up bridging](#usage), try to first get a successful session up by logging in to Facebook through the Matrix server's IP address.
|
|
||||||
|
|
||||||
The easiest way to do this may be to use [sshuttle](https://sshuttle.readthedocs.io/) to proxy your traffic through the Matrix server.
|
|
||||||
|
|
||||||
Example command for proxying your traffic through the Matrix server:
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sshuttle -r root@matrix.example.com:22 0/0
|
systemctl disable --now matrix-mautrix-facebook.service
|
||||||
|
|
||||||
|
rm -rf /matrix/mautrix-facebook
|
||||||
|
|
||||||
|
/matrix/postgres/bin/cli-non-interactive -c 'DROP DATABASE matrix_mautrix_facebook;'
|
||||||
```
|
```
|
||||||
|
|
||||||
Once connected, you should be able to verify that you're browsing the web through the Matrix server's IP by checking [icanhazip](https://icanhazip.com/).
|
|
||||||
|
|
||||||
Then proceed to log in to [Facebook/Messenger](https://www.facebook.com/).
|
|
||||||
|
|
||||||
Once logged in, proceed to [set up bridging](#usage).
|
|
||||||
|
|
||||||
If that doesn't work, enable 2FA (see: [Facebook help page on enabling 2FA](https://www.facebook.com/help/148233965247823)) and try to login again with a new password, and entering the 2FA code when prompted, it may take more then one try, in between attempts, check facebook.com to see if they are requiring another password change
|
|
||||||
|
|||||||
@@ -23,5 +23,5 @@ systemctl disable --now matrix-mautrix-hangouts.service
|
|||||||
|
|
||||||
rm -rf /matrix/mautrix-hangouts
|
rm -rf /matrix/mautrix-hangouts
|
||||||
|
|
||||||
/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_mautrix_hangouts;'
|
/matrix/postgres/bin/cli-non-interactive -c 'DROP DATABASE matrix_mautrix_hangouts;'
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,63 +1,33 @@
|
|||||||
<!--
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
|
SPDX-FileCopyrightText: 2019 Hugues Morisset
|
||||||
|
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
||||||
SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors
|
SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2021 Aaron Raimist
|
||||||
SPDX-FileCopyrightText: 2021 Marcus Proest
|
SPDX-FileCopyrightText: 2021 Marcus Proest
|
||||||
SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
|
SPDX-FileCopyrightText: 2022 László Várady
|
||||||
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up Mautrix Instagram bridging (optional, deprecated)
|
# Setting up Mautrix Instagram bridging (optional, removed)
|
||||||
|
|
||||||
<sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup>
|
🪦 The playbook used to be able to install and configure [mautrix-instagram](https://github.com/mautrix/instagram), but no longer includes this component, as it has been deprecated in favor of the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge.
|
||||||
|
|
||||||
**Note**: This bridge has been deprecated in favor of the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge, which can be [installed using this playbook](configuring-playbook-bridge-mautrix-meta-instagram.md). Consider using that bridge instead of this one.
|
The mautrix-meta bridge can be [installed using this playbook](configuring-playbook-bridge-mautrix-meta-messenger.md).
|
||||||
|
|
||||||
The playbook can install and configure [mautrix-instagram](https://github.com/mautrix/instagram) for you.
|
## Uninstalling the bridge manually
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/mautrix/instagram/blob/master/README.md) to learn what it does and why it might be useful to you.
|
If you still have the bridge installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
|
||||||
|
|
||||||
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_mautrix_instagram_enabled: true
|
|
||||||
```
|
|
||||||
|
|
||||||
### Extending the configuration
|
|
||||||
|
|
||||||
There are some additional things you may wish to configure about the bridge.
|
|
||||||
|
|
||||||
See [this section](configuring-playbook-bridge-mautrix-bridges.md#extending-the-configuration) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about variables that you can customize and the bridge's default configuration, including [bridge permissions](configuring-playbook-bridge-mautrix-bridges.md#configure-bridge-permissions-optional), [encryption support](configuring-playbook-bridge-mautrix-bridges.md#enable-encryption-optional), [relay mode](configuring-playbook-bridge-mautrix-bridges.md#enable-relay-mode-optional), [bot's username](configuring-playbook-bridge-mautrix-bridges.md#set-the-bots-username-optional), etc.
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
|
||||||
|
|
||||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
|
||||||
```sh
|
```sh
|
||||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
systemctl disable --now matrix-mautrix-instagram.service
|
||||||
```
|
|
||||||
|
rm -rf /matrix/mautrix-instagram
|
||||||
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
|
||||||
|
/matrix/postgres/bin/cli-non-interactive -c 'DROP DATABASE matrix_mautrix_instagram;'
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
To use the bridge, you need to start a chat with `@instagrambot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
|
|
||||||
|
|
||||||
You then need to send `login YOUR_INSTAGRAM_EMAIL_ADDRESS YOUR_INSTAGRAM_PASSWORD` to the bridge bot to enable bridging for your instagram/Messenger account.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-mautrix-instagram`.
|
|
||||||
|
|
||||||
### Increase logging verbosity
|
|
||||||
|
|
||||||
The default logging level for this component is `WARNING`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_mautrix_instagram_logging_level: DEBUG
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -11,10 +11,6 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
|||||||
|
|
||||||
<sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup>
|
<sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup>
|
||||||
|
|
||||||
**Note**: bridging to [Slack](https://slack.com/) can also happen via the [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) and [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) bridges supported by the playbook.
|
|
||||||
- For using as a Bot we recommend the [Appservice Slack](configuring-playbook-bridge-appservice-slack.md), because it supports plumbing. Note that it is not available for new installation unless you have already created a classic Slack application, because the creation of classic Slack applications, which this bridge makes use of, has been discontinued.
|
|
||||||
- For personal use with a slack account we recommend the `mautrix-slack` bridge (the one being discussed here), because it is the most fully-featured and stable of the 3 Slack bridges supported by the playbook.
|
|
||||||
|
|
||||||
The playbook can install and configure [mautrix-slack](https://github.com/mautrix/slack) for you.
|
The playbook can install and configure [mautrix-slack](https://github.com/mautrix/slack) for you.
|
||||||
|
|
||||||
See the project's [documentation](https://docs.mau.fi/bridges/go/slack/index.html) to learn what it does and why it might be useful to you.
|
See the project's [documentation](https://docs.mau.fi/bridges/go/slack/index.html) to learn what it does and why it might be useful to you.
|
||||||
@@ -25,7 +21,7 @@ See the [features and roadmap](https://github.com/mautrix/slack/blob/main/ROADMA
|
|||||||
|
|
||||||
For using this bridge, you would need to authenticate by **providing your username and password** (legacy) or by using a **token login**. See more information in the [docs](https://docs.mau.fi/bridges/go/slack/authentication.html).
|
For using this bridge, you would need to authenticate by **providing your username and password** (legacy) or by using a **token login**. See more information in the [docs](https://docs.mau.fi/bridges/go/slack/authentication.html).
|
||||||
|
|
||||||
Note that neither of these methods are officially supported by Slack. [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) uses a Slack bot account which is the only officially supported method for bridging a Slack channel.
|
Note that neither of these methods are officially supported by Slack.
|
||||||
|
|
||||||
### Enable Appservice Double Puppet (optional)
|
### Enable Appservice Double Puppet (optional)
|
||||||
|
|
||||||
@@ -45,8 +41,7 @@ matrix_mautrix_slack_enabled: true
|
|||||||
|
|
||||||
There are some additional things you may wish to configure about the bridge.
|
There are some additional things you may wish to configure about the bridge.
|
||||||
|
|
||||||
<!-- NOTE: relay mode is not supported for this bridge -->
|
See [this section](configuring-playbook-bridge-mautrix-bridges.md#extending-the-configuration) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about variables that you can customize and the bridge's default configuration, including [bridge permissions](configuring-playbook-bridge-mautrix-bridges.md#configure-bridge-permissions-optional), [encryption support](configuring-playbook-bridge-mautrix-bridges.md#enable-encryption-optional), [relay mode](configuring-playbook-bridge-mautrix-bridges.md#enable-relay-mode-optional), [bot's username](configuring-playbook-bridge-mautrix-bridges.md#set-the-bots-username-optional), etc.
|
||||||
See [this section](configuring-playbook-bridge-mautrix-bridges.md#extending-the-configuration) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about variables that you can customize and the bridge's default configuration, including [bridge permissions](configuring-playbook-bridge-mautrix-bridges.md#configure-bridge-permissions-optional), [encryption support](configuring-playbook-bridge-mautrix-bridges.md#enable-encryption-optional), [bot's username](configuring-playbook-bridge-mautrix-bridges.md#set-the-bots-username-optional), etc.
|
|
||||||
|
|
||||||
## Installing
|
## Installing
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,6 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
|||||||
|
|
||||||
<sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup>
|
<sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup>
|
||||||
|
|
||||||
**Note**: bridging to [Twitter](https://twitter.com/) can also happen via the [mx-puppet-twitter](configuring-playbook-bridge-mx-puppet-twitter.md) bridge supported by the playbook.
|
|
||||||
|
|
||||||
The playbook can install and configure [mautrix-twitter](https://github.com/mautrix/twitter) for you.
|
The playbook can install and configure [mautrix-twitter](https://github.com/mautrix/twitter) for you.
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/mautrix/twitter/blob/master/README.md) to learn what it does and why it might be useful to you.
|
See the project's [documentation](https://github.com/mautrix/twitter/blob/master/README.md) to learn what it does and why it might be useful to you.
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Follow the [mautrix-imessage documenation](https://docs.mau.fi/bridges/go/imessage/index.html) for running `android-sms` and/or `matrix-imessage` on your device(s).
|
Follow the [mautrix-imessage documentation](https://docs.mau.fi/bridges/go/imessage/index.html) for running `android-sms` and/or `matrix-imessage` on your device(s).
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
|
|||||||
@@ -1,51 +1,31 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2020 - 2022 Slavi Pantaleev
|
SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
SPDX-FileCopyrightText: 2020 Hugues Morisset
|
SPDX-FileCopyrightText: 2020 Hugues Morisset
|
||||||
|
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
||||||
|
SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
SPDX-FileCopyrightText: 2022 MDAD project contributors
|
SPDX-FileCopyrightText: 2022 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up MX Puppet Discord bridging (optional)
|
# Setting up MX Puppet Discord bridging (optional, removed)
|
||||||
|
|
||||||
**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md)and [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridges supported by the playbook.
|
🪦 The playbook used to be able to install and configure [mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord), but no longer includes this component, as it has been unmaintained for a long time.
|
||||||
- For using as a Bot we recommend the [Appservice Discord](configuring-playbook-bridge-appservice-discord.md), because it supports plumbing.
|
|
||||||
- For personal use with a discord account we recommend the [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridge, because it is the most fully-featured and stable of the 3 Discord bridges supported by the playbook.
|
|
||||||
|
|
||||||
The playbook can install and configure [mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord) for you.
|
You may wish to use the [Mautrix Discord bridge](https://github.com/mautrix/discord) instead.
|
||||||
|
|
||||||
See the project's [documentation](https://gitlab.com/mx-puppet/discord/mx-puppet-discord/blob/master/README.md) to learn what it does and why it might be useful to you.
|
## Uninstalling the bridge manually
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
If you still have the MX Puppet Discord bridge installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
|
||||||
|
|
||||||
To enable the [Discord](https://discordapp.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_mx_puppet_discord_enabled: true
|
|
||||||
```
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
|
||||||
|
|
||||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
|
||||||
```sh
|
```sh
|
||||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
systemctl disable --now matrix-mx-puppet-discord.service
|
||||||
|
|
||||||
|
rm -rf /matrix/mx-puppet-discord
|
||||||
|
|
||||||
|
/matrix/postgres/bin/cli-non-interactive -c 'DROP DATABASE matrix_mx_puppet_discord;'
|
||||||
```
|
```
|
||||||
|
|
||||||
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
|
||||||
|
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
To use the bridge, you need to start a chat with `Discord Puppet Bridge` with the handle `@_discordpuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
|
|
||||||
|
|
||||||
Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-discord [documentation](https://gitlab.com/mx-puppet/discord/mx-puppet-discord) for more information about how to configure the bridge.
|
|
||||||
|
|
||||||
Once logged in, send `list` to the bot user to list the available rooms.
|
|
||||||
|
|
||||||
Clicking rooms in the list will result in you receiving an invitation to the bridged room.
|
|
||||||
|
|
||||||
Send `help` to the bot to see the available commands.
|
|
||||||
|
|||||||
@@ -1,51 +1,30 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2021 MDAD project contributors
|
SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
|
SPDX-FileCopyrightText: 2020 Hugues Morisset
|
||||||
|
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
||||||
|
SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up MX Puppet Instagram bridging (optional)
|
# Setting up MX Puppet Instagram bridging (optional, removed)
|
||||||
|
|
||||||
The playbook can install and configure [mx-puppet-instagram](https://github.com/Sorunome/mx-puppet-instagram) for you.
|
🪦 The playbook used to be able to install and configure [mx-puppet-instagram](https://gitlab.com/mx-puppet/instagram/mx-puppet-instagram), but no longer includes this component, as it has been unmaintained for a long time.
|
||||||
|
|
||||||
This allows you to bridge Instagram DirectMessages into Matrix.
|
You may wish to use the [Mautrix Meta](https://github.com/mautrix/meta) Messenger/Instagram bridge instead.
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
## Uninstalling the bridge manually
|
||||||
|
|
||||||
To enable the [Instagram](https://www.instagram.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
If you still have the MX Puppet Instagram bridge installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_mx_puppet_instagram_enabled: true
|
|
||||||
```
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
|
||||||
|
|
||||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
|
||||||
```sh
|
```sh
|
||||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
systemctl disable --now matrix-mx-puppet-instagram.service
|
||||||
|
|
||||||
|
rm -rf /matrix/mx-puppet-instagram
|
||||||
|
|
||||||
|
/matrix/postgres/bin/cli-non-interactive -c 'DROP DATABASE matrix_mx_puppet_instagram;'
|
||||||
```
|
```
|
||||||
|
|
||||||
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
|
||||||
|
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
To use the bridge, you need to start a chat with `Instagram Puppet Bridge` with the handle `@_instagrampuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
|
|
||||||
|
|
||||||
Send `link <username> <password>` to the bridge bot to link your instagram account.
|
|
||||||
|
|
||||||
The `list` commands shows which accounts are linked and which `puppetId` is associated.
|
|
||||||
|
|
||||||
For double-puppeting, you probably want to issue these commands:
|
|
||||||
|
|
||||||
- `settype $puppetId puppet` to enable puppeting for the link (instead of relaying)
|
|
||||||
- `setautoinvite $puppetId 1` to automatically invite you to chats
|
|
||||||
- `setmatrixtoken $accessToken` to set the access token to enable puppeting from the other side (the "double" in double puppeting)
|
|
||||||
|
|
||||||
If you are linking only one Instagram account, your `$puppetId` is probably 1, but use the `list` command find out.
|
|
||||||
|
|
||||||
Send `help` to the bot to see the available commands. At the time of writing, not every command is fully implemented.
|
|
||||||
|
|||||||
@@ -10,4 +10,4 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
|||||||
|
|
||||||
🪦 The playbook used to be able to install and configure [mx-puppet-skype](https://github.com/Sorunome/mx-puppet-skype), but no longer includes this component, because it has been broken and unmaintained for a long time.
|
🪦 The playbook used to be able to install and configure [mx-puppet-skype](https://github.com/Sorunome/mx-puppet-skype), but no longer includes this component, because it has been broken and unmaintained for a long time.
|
||||||
|
|
||||||
Bridging to [Skype](https://www.skype.com/) can also happen via the [go-skype-bridge](configuring-playbook-bridge-go-skype-bridge.md) bridge supported by the playbook.
|
The playbook used to be able to install and configure [go-skype-bridge](configuring-playbook-bridge-go-skype-bridge.md) as alternative to this bridge, but no longer includes this component, because Skype has been discontinued since May 2025.
|
||||||
|
|||||||
@@ -1,58 +1,33 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2020 - 2023 Slavi Pantaleev
|
SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
SPDX-FileCopyrightText: 2020 Rodrigo Belem
|
SPDX-FileCopyrightText: 2020 Rodrigo Belem
|
||||||
|
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
||||||
SPDX-FileCopyrightText: 2021 Marcel Ackermann
|
SPDX-FileCopyrightText: 2021 Marcel Ackermann
|
||||||
|
SPDX-FileCopyrightText: 2021 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
SPDX-FileCopyrightText: 2022 Jim Myhrberg
|
SPDX-FileCopyrightText: 2022 Jim Myhrberg
|
||||||
SPDX-FileCopyrightText: 2022 Nikita Chernyi
|
SPDX-FileCopyrightText: 2022 Nikita Chernyi
|
||||||
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up MX Puppet Slack bridging (optional)
|
# Setting up MX Puppet Slack bridging (optional, removed)
|
||||||
|
|
||||||
**Note**: bridging to [Slack](https://slack.com) can also happen via the [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) and [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridges supported by the playbook. Note that `matrix-appservice-slack` is not available for new installation unless you have already created a classic Slack application, because the creation of classic Slack applications, which this bridge makes use of, has been discontinued.
|
🪦 The playbook used to be able to install and configure [mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack), but no longer includes this component, as it has been unmaintained for a long time.
|
||||||
|
|
||||||
The playbook can install and configure [mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack) for you.
|
You may wish to use the [Mautrix Slack bridge](https://github.com/mautrix/slack) instead.
|
||||||
|
|
||||||
See the project's [documentation](https://gitlab.com/mx-puppet/slack/mx-puppet-slack/blob/master/README.md) to learn what it does and why it might be useful to you.
|
## Uninstalling the bridge manually
|
||||||
|
|
||||||
## Prerequisite
|
If you still have the MX Puppet Slack bridge installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
|
||||||
|
|
||||||
Follow the [OAuth credentials](https://gitlab.com/mx-puppet/slack/mx-puppet-slack#option-2-oauth) instructions to create a new Slack app, setting the redirect URL to `https://matrix.example.com/slack/oauth`.
|
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
|
||||||
|
|
||||||
To enable the [Slack](https://slack.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_mx_puppet_slack_enabled: true
|
|
||||||
# Client ID must be quoted so YAML does not parse it as a float.
|
|
||||||
matrix_mx_puppet_slack_oauth_client_id: "<SLACK_APP_CLIENT_ID>"
|
|
||||||
matrix_mx_puppet_slack_oauth_client_secret: "<SLACK_APP_CLIENT_SECRET>"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
|
||||||
|
|
||||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
|
||||||
```sh
|
```sh
|
||||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
systemctl disable --now matrix-mx-puppet-slack.service
|
||||||
|
|
||||||
|
rm -rf /matrix/mx-puppet-slack
|
||||||
|
|
||||||
|
/matrix/postgres/bin/cli-non-interactive -c 'DROP DATABASE matrix_mx_puppet_slack;'
|
||||||
```
|
```
|
||||||
|
|
||||||
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
|
||||||
|
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
To use the bridge, you need to start a chat with `Slack Puppet Bridge` with the handle `@_slackpuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
|
|
||||||
|
|
||||||
Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-slack [documentation](https://gitlab.com/mx-puppet/slack/mx-puppet-slack) for more information about how to configure the bridge.
|
|
||||||
|
|
||||||
Once logged in, send `list` to the bot user to list the available rooms.
|
|
||||||
|
|
||||||
Clicking rooms in the list will result in you receiving an invitation to the bridged room.
|
|
||||||
|
|
||||||
Send `help` to the bot to see the available commands.
|
|
||||||
|
|||||||
@@ -7,11 +7,13 @@ SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
|||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up MX Puppet Steam bridging (optional)
|
# Setting up MX Puppet Steam bridging (optional, deprecated)
|
||||||
|
|
||||||
The playbook can install and configure [mx-puppet-steam](https://github.com/icewind1991/mx-puppet-steam) for you.
|
**Note**: This bridge has been deprecated in favor of the [matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge) bridge for Steam, which can be [installed using this playbook](configuring-playbook-bridge-steam.md). Consider using that bridge instead of this one.
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/icewind1991/mx-puppet-steam/blob/master/README.md) to learn what it does and why it might be useful to you.
|
The playbook can install and configure [mx-puppet-steam](https://codeberg.org/icewind/mx-puppet-steam) for you.
|
||||||
|
|
||||||
|
See the project's [documentation](https://codeberg.org/icewind/mx-puppet-steam/blob/master/README.md) to learn what it does and why it might be useful to you.
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
## Adjusting the playbook configuration
|
||||||
|
|
||||||
@@ -38,7 +40,7 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju
|
|||||||
|
|
||||||
To use the bridge, you need to start a chat with `Steam Puppet Bridge` with the handle `@_steampuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
|
To use the bridge, you need to start a chat with `Steam Puppet Bridge` with the handle `@_steampuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
|
||||||
|
|
||||||
Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-steam [documentation](https://github.com/icewind1991/mx-puppet-steam) for more information about how to configure the bridge.
|
Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-steam [documentation](https://codeberg.org/icewind/mx-puppet-steam) for more information about how to configure the bridge.
|
||||||
|
|
||||||
Once logged in, send `list` to the bot user to list the available rooms.
|
Once logged in, send `list` to the bot user to list the available rooms.
|
||||||
|
|
||||||
|
|||||||
@@ -1,57 +1,29 @@
|
|||||||
<!--
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
||||||
SPDX-FileCopyrightText: 2021 Slavi Pantaleev
|
SPDX-FileCopyrightText: 2021 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up MX Puppet Twitter bridging (optional)
|
# Setting up MX Puppet Twitter bridging (optional, removed)
|
||||||
|
|
||||||
**Note**: bridging to [Twitter](https://twitter.com/) can also happen via the [mautrix-twitter](configuring-playbook-bridge-mautrix-twitter.md) bridge supported by the playbook.
|
🪦 The playbook used to be able to install and configure [mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter), but no longer includes this component, as it has been unmaintained for a long time.
|
||||||
|
|
||||||
The playbook can install and configure [mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter) for you.
|
You may wish to use the [Mautrix Twitter bridge](https://github.com/mautrix/twitter) instead.
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/Sorunome/mx-puppet-twitter/blob/master/README.md) to learn what it does and why it might be useful to you.
|
## Uninstalling the bridge manually
|
||||||
|
|
||||||
## Prerequisite
|
If you still have the MX Puppet Twitter bridge installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
|
||||||
|
|
||||||
Make an app on [developer.twitter.com](https://developer.twitter.com/en/apps).
|
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
|
||||||
|
|
||||||
To enable the [Twitter](https://twitter.com) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_mx_puppet_twitter_enabled: true
|
|
||||||
matrix_mx_puppet_twitter_consumer_key: ''
|
|
||||||
matrix_mx_puppet_twitter_consumer_secret: ''
|
|
||||||
matrix_mx_puppet_twitter_access_token: ''
|
|
||||||
matrix_mx_puppet_twitter_access_token_secret: ''
|
|
||||||
matrix_mx_puppet_twitter_environment: ''
|
|
||||||
```
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
|
||||||
|
|
||||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
|
||||||
```sh
|
```sh
|
||||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
systemctl disable --now matrix-mx-puppet-twitter.service
|
||||||
|
|
||||||
|
rm -rf /matrix/mx-puppet-twitter
|
||||||
|
|
||||||
|
/matrix/postgres/bin/cli-non-interactive -c 'DROP DATABASE matrix_mx_puppet_twitter;'
|
||||||
```
|
```
|
||||||
|
|
||||||
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
|
||||||
|
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
To use the bridge, you need to start a chat with `Twitter Puppet Bridge` with the handle `@_twitterpuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
|
|
||||||
|
|
||||||
To log in, use `link` and click the link.
|
|
||||||
|
|
||||||
Once logged in, send `list` to the bot user to list the available rooms.
|
|
||||||
|
|
||||||
Clicking rooms in the list will result in you receiving an invitation to the bridged room.
|
|
||||||
|
|
||||||
Send `help` to the bot to see the available commands.
|
|
||||||
|
|||||||
48
docs/configuring-playbook-bridge-steam.md
Normal file
48
docs/configuring-playbook-bridge-steam.md
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2025 Jason LaGuidice
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
-->
|
||||||
|
|
||||||
|
# Setting up Steam bridging (optional)
|
||||||
|
|
||||||
|
The playbook can install and configure [matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge) for you.
|
||||||
|
|
||||||
|
See the project's [documentation](https://github.com/jasonlaguidice/matrix-steam-bridge/blob/main/README.md) to learn what it does and why it might be useful to you.
|
||||||
|
|
||||||
|
## Adjusting the playbook configuration
|
||||||
|
|
||||||
|
To enable the [Steam](https://steampowered.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
matrix_steam_bridge_enabled: true
|
||||||
|
```
|
||||||
|
|
||||||
|
## Installing
|
||||||
|
|
||||||
|
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
||||||
|
|
||||||
|
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
||||||
|
```sh
|
||||||
|
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
||||||
|
```
|
||||||
|
|
||||||
|
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` and `just setup-all`
|
||||||
|
|
||||||
|
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
||||||
|
|
||||||
|
The tag for `just` commands for this bridge is `matrix-steam-bridge` - for example: `just install-service matrix-steam-bridge`
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
To use the bridge, you need to start a chat with `Steam bridge bot` with the handle `@steambot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
|
||||||
|
|
||||||
|
The bridge supports QR code and password-based login as well as SteamGuard codes via app, SMS, or e-mail. See matrix-steam-bridge [documentation](https://github.com/jasonlaguidice/matrix-steam-bridge) for more information about how to configure the bridge.
|
||||||
|
|
||||||
|
To login, send `login [flow ID]` where possible flow IDs are `password` or `qr`
|
||||||
|
|
||||||
|
Once logged in, send `search [name]` to search through recognized Steam friends. You can send a user name, display name, or all forms of Steam ID. Send `start-chat [identifier]` to request the bridge bot to open a chat room with a user.
|
||||||
|
|
||||||
|
Chat rooms will automatically be opened as new messages are received.
|
||||||
|
|
||||||
|
Send `help` to the bot to see the available commands.
|
||||||
@@ -27,26 +27,26 @@ When setting, replace `example.com` with your own.
|
|||||||
To enable Cinny, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
To enable Cinny, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_client_cinny_enabled: true
|
cinny_enabled: true
|
||||||
```
|
```
|
||||||
|
|
||||||
### Adjusting the Cinny URL (optional)
|
### Adjusting the Cinny URL (optional)
|
||||||
|
|
||||||
By tweaking the `matrix_client_cinny_hostname` variable, you can easily make the service available at a **different hostname** than the default one.
|
By tweaking the `cinny_hostname` variable, you can easily make the service available at a **different hostname** than the default one.
|
||||||
|
|
||||||
Example additional configuration for your `vars.yml` file:
|
Example additional configuration for your `vars.yml` file:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Switch to a different domain (`app.example.com`) than the default one (`cinny.example.com`)
|
# Switch to a different domain (`app.example.com`) than the default one (`cinny.example.com`)
|
||||||
matrix_client_cinny_hostname: "app.{{ matrix_domain }}"
|
cinny_hostname: "app.{{ matrix_domain }}"
|
||||||
|
|
||||||
# Expose under the /cinny subpath
|
# Expose under the /cinny subpath
|
||||||
# matrix_client_cinny_path_prefix: /cinny
|
# cinny_path_prefix: /cinny
|
||||||
```
|
```
|
||||||
|
|
||||||
After changing the domain, **you may need to adjust your DNS** records to point the Cinny domain to the Matrix server.
|
After changing the domain, **you may need to adjust your DNS** records to point the Cinny domain to the Matrix server.
|
||||||
|
|
||||||
**Note**: while there is a `matrix_client_cinny_path_prefix` variable for changing the path where Cinny is served, overriding it is [not possible](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3701), because Cinny requires an application rebuild (with a tweaked build config) to be functional under a custom path. You'd need to serve Cinny at a dedicated subdomain.
|
**Note**: while there is a `cinny_path_prefix` variable for changing the path where Cinny is served, overriding it is [not possible](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3701), because Cinny requires an application rebuild (with a tweaked build config) to be functional under a custom path. You'd need to serve Cinny at a dedicated subdomain.
|
||||||
|
|
||||||
### Extending the configuration
|
### Extending the configuration
|
||||||
|
|
||||||
@@ -54,8 +54,8 @@ There are some additional things you may wish to configure about the component.
|
|||||||
|
|
||||||
Take a look at:
|
Take a look at:
|
||||||
|
|
||||||
- `roles/custom/matrix-client-cinny/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
- `roles/galaxy/cinny/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
||||||
- `roles/custom/matrix-client-cinny/templates/config.json.j2` for the component's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_client_cinny_configuration_extension_json` variable
|
- `roles/galaxy/cinny/templates/config.json.j2` for the component's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `cinny_configuration_extension_json` variable
|
||||||
|
|
||||||
## Installing
|
## Installing
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ FluffyChat Web is a cute cross-platform (web, iOS, Android) messenger for Matrix
|
|||||||
|
|
||||||
💡 **Note**: the latest version of FluffyChat Web is also available on the web, hosted by 3rd parties. If you trust giving your credentials to the following 3rd party Single Page Application, you can consider using it from there:
|
💡 **Note**: the latest version of FluffyChat Web is also available on the web, hosted by 3rd parties. If you trust giving your credentials to the following 3rd party Single Page Application, you can consider using it from there:
|
||||||
|
|
||||||
- [fluffychat.im](https://fluffychat.im/web), hosted by the [FluffyChat](https://fluffychat.im/) developers
|
- [fluffychat.im](https://fluffychat.im/web), hosted by the [FluffyChat](https://fluffy.chat/) developers
|
||||||
|
|
||||||
## Adjusting DNS records
|
## Adjusting DNS records
|
||||||
|
|
||||||
|
|||||||
@@ -24,22 +24,22 @@ When setting, replace `example.com` with your own.
|
|||||||
To enable Hydrogen, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
To enable Hydrogen, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_client_hydrogen_enabled: true
|
hydrogen_enabled: true
|
||||||
```
|
```
|
||||||
|
|
||||||
### Adjusting the Hydrogen URL (optional)
|
### Adjusting the Hydrogen URL (optional)
|
||||||
|
|
||||||
By tweaking the `matrix_client_hydrogen_hostname` and `matrix_client_hydrogen_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
|
By tweaking the `hydrogen_hostname` and `hydrogen_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
|
||||||
|
|
||||||
Example additional configuration for your `vars.yml` file:
|
Example additional configuration for your `vars.yml` file:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Switch to the domain used for Matrix services (`matrix.example.com`),
|
# Switch to the domain used for Matrix services (`matrix.example.com`),
|
||||||
# so we won't need to add additional DNS records for Hydrogen.
|
# so we won't need to add additional DNS records for Hydrogen.
|
||||||
matrix_client_hydrogen_hostname: "{{ matrix_server_fqn_matrix }}"
|
hydrogen_hostname: "{{ matrix_server_fqn_matrix }}"
|
||||||
|
|
||||||
# Expose under the /hydrogen subpath
|
# Expose under the /hydrogen subpath
|
||||||
matrix_client_hydrogen_path_prefix: /hydrogen
|
hydrogen_path_prefix: /hydrogen
|
||||||
```
|
```
|
||||||
|
|
||||||
After changing the domain, **you may need to adjust your DNS** records to point the Hydrogen domain to the Matrix server.
|
After changing the domain, **you may need to adjust your DNS** records to point the Hydrogen domain to the Matrix server.
|
||||||
@@ -52,8 +52,8 @@ There are some additional things you may wish to configure about the client.
|
|||||||
|
|
||||||
Take a look at:
|
Take a look at:
|
||||||
|
|
||||||
- `roles/custom/matrix-client-hydrogen/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
- `roles/galaxy/hydrogen/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
||||||
- `roles/custom/matrix-client-hydrogen/templates/config.json.j2` for the client's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_client_hydrogen_configuration_extension_json` variable
|
- `roles/galaxy/hydrogen/templates/config.json.j2` for the client's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `hydrogen_configuration_extension_json` variable
|
||||||
|
|
||||||
## Installing
|
## Installing
|
||||||
|
|
||||||
|
|||||||
71
docs/configuring-playbook-client-sable.md
Normal file
71
docs/configuring-playbook-client-sable.md
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2022 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
||||||
|
SPDX-FileCopyrightText: 2024 - 2026 Slavi Pantaleev
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
-->
|
||||||
|
|
||||||
|
# Setting up Sable (optional)
|
||||||
|
|
||||||
|
The playbook can install and configure the [Sable](https://github.com/7w1/sable) Matrix web client for you.
|
||||||
|
|
||||||
|
Sable is a web client focusing primarily on simple, elegant and secure interface. It can be installed alongside or instead of [Element Web](./configuring-playbook-client-element-web.md), [Cinny](./configuring-playbook-client-cinny.md) and others.
|
||||||
|
|
||||||
|
## Adjusting DNS records
|
||||||
|
|
||||||
|
By default, this playbook installs Sable on the `sable.` subdomain (`sable.example.com`) and requires you to create a CNAME record for `sable`, which targets `matrix.example.com`.
|
||||||
|
|
||||||
|
When setting, replace `example.com` with your own.
|
||||||
|
|
||||||
|
## Adjusting the playbook configuration
|
||||||
|
|
||||||
|
To enable Sable, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
sable_enabled: true
|
||||||
|
```
|
||||||
|
|
||||||
|
### Adjusting the Sable URL (optional)
|
||||||
|
|
||||||
|
By tweaking the `sable_hostname` variable, you can easily make the service available at a **different hostname** than the default one.
|
||||||
|
|
||||||
|
Example additional configuration for your `vars.yml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Switch to a different domain (`app.example.com`) than the default one (`sable.example.com`)
|
||||||
|
sable_hostname: "app.{{ matrix_domain }}"
|
||||||
|
|
||||||
|
# Expose under the /sable subpath
|
||||||
|
# sable_path_prefix: /sable
|
||||||
|
```
|
||||||
|
|
||||||
|
After changing the domain, **you may need to adjust your DNS** records to point the Sable domain to the Matrix server.
|
||||||
|
|
||||||
|
**Note**: while there is a `sable_path_prefix` variable for changing the path where Sable is served, overriding it is [not possible](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3701), because Sable requires an application rebuild (with a tweaked build config) to be functional under a custom path. You'd need to serve Sable at a dedicated subdomain.
|
||||||
|
|
||||||
|
### Extending the configuration
|
||||||
|
|
||||||
|
There are some additional things you may wish to configure about the component.
|
||||||
|
|
||||||
|
Take a look at:
|
||||||
|
|
||||||
|
- `roles/galaxy/sable/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
||||||
|
- `roles/galaxy/sable/templates/config.json.j2` for the component's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `sable_configuration_extension_json` variable
|
||||||
|
|
||||||
|
## Installing
|
||||||
|
|
||||||
|
After configuring the playbook and [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
|
||||||
|
|
||||||
|
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
||||||
|
```sh
|
||||||
|
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
||||||
|
```
|
||||||
|
|
||||||
|
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
||||||
|
|
||||||
|
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-client-sable`.
|
||||||
@@ -13,8 +13,6 @@ See the project's [documentation](https://docs.conduit.rs/) to learn what it doe
|
|||||||
|
|
||||||
By default, the playbook installs [Synapse](https://github.com/element-hq/synapse) as it's the only full-featured Matrix server at the moment. If that's okay, you can skip this document.
|
By default, the playbook installs [Synapse](https://github.com/element-hq/synapse) as it's the only full-featured Matrix server at the moment. If that's okay, you can skip this document.
|
||||||
|
|
||||||
💡 **Note**: The playbook also supports installing a (currently) faster-moving Conduit fork called [conduwuit](./configuring-playbook-conduwuit.md).
|
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> - **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> Conduit). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet.
|
> - **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> Conduit). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet.
|
||||||
> - **Homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding
|
> - **Homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding
|
||||||
@@ -65,6 +63,7 @@ Find the `registration.yaml` in the `/matrix` directory, for example `/matrix/ma
|
|||||||
```
|
```
|
||||||
as_token: <token>
|
as_token: <token>
|
||||||
de.sorunome.msc2409.push_ephemeral: true
|
de.sorunome.msc2409.push_ephemeral: true
|
||||||
|
receive_ephemeral: true
|
||||||
hs_token: <token>
|
hs_token: <token>
|
||||||
id: signal
|
id: signal
|
||||||
namespaces:
|
namespaces:
|
||||||
|
|||||||
@@ -1,104 +1,45 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2025 Slavi Pantaleev
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
SPDX-FileCopyrightText: 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2019-2025 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
||||||
|
SPDX-FileCopyrightText: 2021, 2024 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
|
SPDX-FileCopyrightText: 2023 Justin Croonenberghs
|
||||||
|
SPDX-FileCopyrightText: 2023 Kuba Orlik
|
||||||
|
SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty
|
||||||
|
SPDX-FileCopyrightText: 2023 Samuel Meenzen
|
||||||
|
SPDX-FileCopyrightText: 2024 Fabio Bonelli
|
||||||
|
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Configuring conduwuit (optional)
|
# Configuring conduwuit (optional, removed)
|
||||||
|
|
||||||
The playbook can install and configure the [conduwuit](https://conduwuit.puppyirl.gay/) Matrix server for you.
|
🪦 The playbook used to be able to install and configure the [conduwuit](https://conduwuit.puppyirl.gay/) Matrix server, but no longer includes this component, as it's been abandoned and unmaintained.
|
||||||
|
|
||||||
See the project's [documentation](https://conduwuit.puppyirl.gay/) to learn what it does and why it might be useful to you.
|
## Uninstalling the service manually
|
||||||
|
|
||||||
By default, the playbook installs [Synapse](https://github.com/element-hq/synapse) as it's the only full-featured Matrix server at the moment. If that's okay, you can skip this document.
|
If you still have conduwuit installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually.
|
||||||
|
|
||||||
💡 **Note**: conduwuit is a fork of [Conduit](./configuring-playbook-conduit.md), which the playbook also supports. See [Differences from upstream Conduit](https://conduwuit.puppyirl.gay/differences.html).
|
To uninstall the service, run the command below on the server:
|
||||||
|
|
||||||
> [!WARNING]
|
```sh
|
||||||
> - **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> conduwuit). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet.
|
systemctl disable --now matrix-conduwuit.service
|
||||||
> - **Homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding
|
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
|
||||||
|
|
||||||
To use conduwuit, you **generally** need to adjust the `matrix_homeserver_implementation: synapse` configuration on your `inventory/host_vars/matrix.example.com/vars.yml` file as below:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_homeserver_implementation: conduwuit
|
|
||||||
|
|
||||||
# Registering users can only happen via the API,
|
|
||||||
# so it makes sense to enable it, at least initially.
|
|
||||||
matrix_conduwuit_config_allow_registration: true
|
|
||||||
|
|
||||||
# Generate a strong registration token to protect the registration endpoint from abuse.
|
|
||||||
# You can create one with a command like `pwgen -s 64 1`.
|
|
||||||
matrix_conduwuit_config_registration_token: ''
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Extending the configuration
|
## Migrating to Continuwuity
|
||||||
|
|
||||||
There are some additional things you may wish to configure about the server.
|
Since [Continuwuity](configuring-playbook-continuwuity.md) is a drop-in replacement for conduwuit, migration is possible. Please refer to [this section](./configuring-playbook-continuwuity.md#migrating-from-conduwuit) for details.
|
||||||
|
|
||||||
Take a look at:
|
## Removing data manually
|
||||||
|
|
||||||
- `roles/custom/matrix-conduwuit/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
If you are not going to migrate to [Continuwuity](configuring-playbook-continuwuity.md), you can remove data by running the command on the server:
|
||||||
- `roles/custom/matrix-conduwuit/templates/conduwuit.toml.j2` for the server's default configuration
|
|
||||||
|
|
||||||
There are various Ansible variables that control settings in the `conduwuit.toml` file.
|
```sh
|
||||||
|
rm -rf /matrix/conduwuit
|
||||||
If a specific setting you'd like to change does not have a dedicated Ansible variable, you can either submit a PR to us to add it, or you can [override the setting using an environment variable](https://conduwuit.puppyirl.gay/configuration.html#environment-variables) using `matrix_conduwuit_environment_variables_extension`. For example:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_conduwuit_environment_variables_extension: |
|
|
||||||
CONDUWUIT_MAX_REQUEST_SIZE=50000000
|
|
||||||
CONDUWUIT_REQUEST_TIMEOUT=60
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Creating the first user account
|
>[!WARNING]
|
||||||
|
> Once you removing the path, there is no going back. Your data on the homeserver (including chat history, rooms, etc.) will be deleted and not be possible to restore them. Please be certain.
|
||||||
Unlike other homeserver implementations (like Synapse and Dendrite), conduwuit does not support creating users via the command line or via the playbook.
|
|
||||||
|
|
||||||
If you followed the instructions above (see [Adjusting the playbook configuration](#adjusting-the-playbook-configuration)), you should have registration enabled and protected by a registration token.
|
|
||||||
|
|
||||||
This should allow you to create the first user account via any client (like [Element Web](./configuring-playbook-client-element-web.md)) which supports creating users.
|
|
||||||
|
|
||||||
The **first user account that you create will be marked as an admin** and **will be automatically invited to an admin room**.
|
|
||||||
|
|
||||||
|
|
||||||
## Configuring bridges / appservices
|
|
||||||
|
|
||||||
For other homeserver implementations (like Synapse and Dendrite), the playbook automatically registers appservices (for bridges, bots, etc.) with the homeserver.
|
|
||||||
|
|
||||||
For conduwuit, you will have to manually register appservices using the [`!admin appservices register` command](https://conduwuit.puppyirl.gay/appservices.html#set-up-the-appservice---general-instructions) sent to the server bot account.
|
|
||||||
|
|
||||||
The server's bot account has a Matrix ID of `@conduit:example.com` (not `@conduwuit:example.com`!) due to conduwuit's historical legacy.
|
|
||||||
Your first user account would already have been invited to an admin room with this bot.
|
|
||||||
|
|
||||||
Find the appservice file you'd like to register. This can be any `registration.yaml` file found in the `/matrix` directory, for example `/matrix/mautrix-signal/bridge/registration.yaml`.
|
|
||||||
|
|
||||||
Then, send its content to the existing admin room:
|
|
||||||
|
|
||||||
!admin appservices register
|
|
||||||
|
|
||||||
```
|
|
||||||
as_token: <token>
|
|
||||||
de.sorunome.msc2409.push_ephemeral: true
|
|
||||||
hs_token: <token>
|
|
||||||
id: signal
|
|
||||||
namespaces:
|
|
||||||
aliases:
|
|
||||||
- exclusive: true
|
|
||||||
regex: ^#signal_.+:example\.org$
|
|
||||||
users:
|
|
||||||
- exclusive: true
|
|
||||||
regex: ^@signal_.+:example\.org$
|
|
||||||
- exclusive: true
|
|
||||||
regex: ^@signalbot:example\.org$
|
|
||||||
rate_limited: false
|
|
||||||
sender_localpart: _bot_signalbot
|
|
||||||
url: http://matrix-mautrix-signal:29328
|
|
||||||
```
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-conduwuit`.
|
|
||||||
|
|||||||
122
docs/configuring-playbook-continuwuity.md
Normal file
122
docs/configuring-playbook-continuwuity.md
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2025 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2025 Suguru Hirahara
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
-->
|
||||||
|
|
||||||
|
# Configuring Continuwuity (optional)
|
||||||
|
|
||||||
|
The playbook can install and configure the [Continuwuity](https://continuwuity.org) Matrix server for you.
|
||||||
|
|
||||||
|
See the project's [documentation](https://continuwuity.org) to learn what it does and why it might be useful to you.
|
||||||
|
|
||||||
|
By default, the playbook installs [Synapse](https://github.com/element-hq/synapse) as it's the only full-featured Matrix server at the moment. If that's okay, you can skip this document.
|
||||||
|
|
||||||
|
💡 **Note**: continuwuity is a fork of [conduwuit](./configuring-playbook-conduwuit.md), which the playbook has supported.
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> - **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> Continuwuity). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet.
|
||||||
|
> - **Homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding
|
||||||
|
|
||||||
|
## Adjusting the playbook configuration
|
||||||
|
|
||||||
|
To use Continuwuity, you **generally** need to adjust the `matrix_homeserver_implementation: synapse` configuration on your `inventory/host_vars/matrix.example.com/vars.yml` file as below:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
matrix_homeserver_implementation: continuwuity
|
||||||
|
|
||||||
|
# Registering users can only happen via the API,
|
||||||
|
# so it makes sense to enable it, at least initially.
|
||||||
|
matrix_continuwuity_config_allow_registration: true
|
||||||
|
|
||||||
|
# Generate a strong registration token to protect the registration endpoint from abuse.
|
||||||
|
# You can create one with a command like `pwgen -s 64 1`.
|
||||||
|
matrix_continuwuity_config_registration_token: ''
|
||||||
|
```
|
||||||
|
|
||||||
|
### Extending the configuration
|
||||||
|
|
||||||
|
There are some additional things you may wish to configure about the server.
|
||||||
|
|
||||||
|
Take a look at:
|
||||||
|
|
||||||
|
- `roles/custom/matrix-continuwuity/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
||||||
|
- `roles/custom/matrix-continuwuity/templates/continuwuity.toml.j2` for the server's default configuration
|
||||||
|
|
||||||
|
There are various Ansible variables that control settings in the `continuwuity.toml` file.
|
||||||
|
|
||||||
|
If a specific setting you'd like to change does not have a dedicated Ansible variable, you can either submit a PR to us to add it, or you can [override the setting using an environment variable](https://continuwuity.org/configuration#environment-variables) using `matrix_continuwuity_environment_variables_extension`. For example:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
matrix_continuwuity_environment_variables_extension: |
|
||||||
|
CONTINUWUITY_MAX_REQUEST_SIZE=50000000
|
||||||
|
CONTINUWUITY_REQUEST_TIMEOUT=60
|
||||||
|
```
|
||||||
|
|
||||||
|
## Creating the first user account
|
||||||
|
|
||||||
|
Unlike other homeserver implementations (like Synapse and Dendrite), continuwuity does not support creating users via the command line or via the playbook.
|
||||||
|
|
||||||
|
On first startup, Continuwuity creates a special one-time-use registration token and logs it to the server's console. To access this, you will need to SSH into the server and run the following command:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Adjust the duration if necessary or remove the whole --since argument
|
||||||
|
journalctl -u matrix-continuwuity.service --since="10 minutes ago"
|
||||||
|
```
|
||||||
|
|
||||||
|
Find the token, highlight it, and copy it (ctrl+shift+C). This token should allow you to create the first user account via any client (like [Element Web](./configuring-playbook-client-element-web.md)) which supports creating users.
|
||||||
|
|
||||||
|
The **first user account that you create will be marked as an admin** and **will be automatically invited to an admin room**.
|
||||||
|
|
||||||
|
|
||||||
|
## Configuring bridges / appservices
|
||||||
|
|
||||||
|
For other homeserver implementations (like Synapse and Dendrite), the playbook automatically registers appservices (for bridges, bots, etc.) with the homeserver.
|
||||||
|
|
||||||
|
For continuwuity, you will have to manually register appservices using the [`!admin appservices register` command](https://continuwuity.org/appservices.html#set-up-the-appservice---general-instructions) sent to the server bot account.
|
||||||
|
|
||||||
|
The server's bot account has a Matrix ID of `@conduit:example.com` (not `@continuwuity:example.com`!) due to continuwuity's historical legacy.
|
||||||
|
Your first user account would already have been invited to an admin room with this bot.
|
||||||
|
|
||||||
|
Find the appservice file you'd like to register. This can be any `registration.yaml` file found in the `/matrix` directory, for example `/matrix/mautrix-signal/bridge/registration.yaml`.
|
||||||
|
|
||||||
|
Then, send its content to the existing admin room:
|
||||||
|
|
||||||
|
!admin appservices register
|
||||||
|
|
||||||
|
```
|
||||||
|
as_token: <token>
|
||||||
|
de.sorunome.msc2409.push_ephemeral: true
|
||||||
|
receive_ephemeral: true
|
||||||
|
hs_token: <token>
|
||||||
|
id: signal
|
||||||
|
namespaces:
|
||||||
|
aliases:
|
||||||
|
- exclusive: true
|
||||||
|
regex: ^#signal_.+:example\.org$
|
||||||
|
users:
|
||||||
|
- exclusive: true
|
||||||
|
regex: ^@signal_.+:example\.org$
|
||||||
|
- exclusive: true
|
||||||
|
regex: ^@signalbot:example\.org$
|
||||||
|
rate_limited: false
|
||||||
|
sender_localpart: _bot_signalbot
|
||||||
|
url: http://matrix-mautrix-signal:29328
|
||||||
|
```
|
||||||
|
|
||||||
|
## Migrating from conduwuit
|
||||||
|
|
||||||
|
Since Continuwuity is a drop-in replacement for [conduwuit](configuring-playbook-conduwuit.md), migration is possible.
|
||||||
|
|
||||||
|
1. Make sure that Continuwuity is properly set up on your `vars.yml` as described above
|
||||||
|
|
||||||
|
2. Make sure that Conduwuit references are removed from your `vars.yml` file
|
||||||
|
|
||||||
|
3. Run the installation in a way that installs new services and uninstalls old ones (e.g. `just setup-all`)
|
||||||
|
|
||||||
|
4. Run the playbook with the `continuwuity-migrate-from-conduwuit` tag (e.g. `just run-tags continuwuity-migrate-from-conduwuit`). This migrates data from `/matrix/conduwuit` to `/matrix/continuwuity`
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-continuwuity`.
|
||||||
@@ -1,144 +1,33 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev
|
|
||||||
SPDX-FileCopyrightText: 2019 - 2025 MDAD project contributors
|
|
||||||
SPDX-FileCopyrightText: 2019 Edgars Voroboks
|
SPDX-FileCopyrightText: 2019 Edgars Voroboks
|
||||||
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
|
SPDX-FileCopyrightText: 2019-2025 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2019-2025 Slavi Pantaleev
|
||||||
SPDX-FileCopyrightText: 2020 Chris van Dijk
|
SPDX-FileCopyrightText: 2020 Chris van Dijk
|
||||||
|
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
||||||
SPDX-FileCopyrightText: 2020 jens quade
|
SPDX-FileCopyrightText: 2020 jens quade
|
||||||
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
SPDX-FileCopyrightText: 2022 Kim Brose
|
SPDX-FileCopyrightText: 2022 Kim Brose
|
||||||
SPDX-FileCopyrightText: 2022 Travis Ralston
|
SPDX-FileCopyrightText: 2022 Travis Ralston
|
||||||
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
SPDX-FileCopyrightText: 2022 Yan Minagawa
|
SPDX-FileCopyrightText: 2022 Yan Minagawa
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up Dimension integration manager (optional, unmaintained)
|
# Setting up Dimension integration manager (optional, removed)
|
||||||
|
|
||||||
**Notes**:
|
🪦 The playbook used to be able to install and configure [Dimension](https://dimension.t2bot.io) integration manager, but no longer includes this component, as it has been unmaintained.
|
||||||
- Dimension is **[officially unmaintained](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2806#issuecomment-1673559299)**. We recommend not bothering with installing it.
|
|
||||||
- This playbook now supports running Dimension in both a federated and [unfederated](https://github.com/turt2live/matrix-dimension/blob/master/docs/unfederated.md) environments. This is handled automatically based on the value of `matrix_homeserver_federation_enabled`.
|
|
||||||
|
|
||||||
The playbook can install and configure the [Dimension](https://dimension.t2bot.io) integration manager for you.
|
## Uninstalling the component manually
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/turt2live/matrix-dimension/blob/master/README.md) to learn what it does and why it might be useful to you.
|
If you still have the Dimension integration manager installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
### Open Matrix Federation port
|
|
||||||
|
|
||||||
Enabling the Dimension service will automatically reconfigure your Synapse homeserver to expose the `openid` API endpoints on the Matrix Federation port (usually `8448`), even if [federation](configuring-playbook-federation.md) is disabled. If you enable the component, make sure that the port is accessible.
|
|
||||||
|
|
||||||
### Install Matrix services
|
|
||||||
|
|
||||||
Dimension can only be installed after Matrix services are installed and running. If you're just installing Matrix services for the first time, please continue with the [Configuration](configuring-playbook.md) / [Installation](installing.md) and come back here later.
|
|
||||||
|
|
||||||
### Register a dedicated Matrix user (optional, recommended)
|
|
||||||
|
|
||||||
We recommend that you create a dedicated Matrix user for Dimension (`dimension` is a good username).
|
|
||||||
|
|
||||||
Generate a strong password for the user. You can create one with a command like `pwgen -s 64 1`.
|
|
||||||
|
|
||||||
You can use the playbook to [register a new user](registering-users.md):
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=dimension password=PASSWORD_FOR_THE_USER admin=no' --tags=register-user
|
systemctl disable --now matrix-dimension.service
|
||||||
|
|
||||||
|
rm -rf /matrix/dimension
|
||||||
|
|
||||||
|
/matrix/postgres/bin/cli-non-interactive -c 'DROP DATABASE matrix_dimension;'
|
||||||
```
|
```
|
||||||
|
|
||||||
### Obtain an access token
|
|
||||||
|
|
||||||
Dimension requires an access token to be able to connect to your homeserver. Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md).
|
|
||||||
|
|
||||||
> [!WARNING]
|
|
||||||
> Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone.
|
|
||||||
|
|
||||||
## Adjusting DNS records
|
|
||||||
|
|
||||||
By default, this playbook installs Dimension on the `dimension.` subdomain (`dimension.example.com`) and requires you to create a CNAME record for `dimension`, which targets `matrix.example.com`.
|
|
||||||
|
|
||||||
When setting, replace `example.com` with your own.
|
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
|
||||||
|
|
||||||
To enable Dimension, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `ACCESS_TOKEN_HERE` with the one created [above](#obtain-an-access-token).
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_dimension_enabled: true
|
|
||||||
|
|
||||||
matrix_dimension_access_token: "ACCESS_TOKEN_HERE"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Define admin users
|
|
||||||
|
|
||||||
To define admin users who can modify the integrations this Dimension supports, add the following configuration to your `vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_dimension_admins:
|
|
||||||
- "@alice:{{ matrix_domain }}"
|
|
||||||
- "@bob:{{ matrix_domain }}"
|
|
||||||
```
|
|
||||||
|
|
||||||
The admin interface is accessible within Element Web by accessing it in any room and clicking the cog wheel/settings icon in the top right. Currently, Dimension can be opened in Element Web by the "Add widgets, bridges, & bots" link in the room information.
|
|
||||||
|
|
||||||
### Adjusting the Dimension URL (optional)
|
|
||||||
|
|
||||||
By tweaking the `matrix_dimension_hostname` and `matrix_dimension_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
|
|
||||||
|
|
||||||
Example additional configuration for your `vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# Switch to the domain used for Matrix services (`matrix.example.com`),
|
|
||||||
# so we won't need to add additional DNS records for Dimension.
|
|
||||||
matrix_dimension_hostname: "{{ matrix_server_fqn_matrix }}"
|
|
||||||
|
|
||||||
# Expose under the /dimension subpath
|
|
||||||
# matrix_dimension_path_prefix: /dimension
|
|
||||||
```
|
|
||||||
|
|
||||||
After changing the domain, **you may need to adjust your DNS** records to point the Dimension domain to the Matrix server.
|
|
||||||
|
|
||||||
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration.
|
|
||||||
|
|
||||||
**Note**: while there is a `matrix_dimension_path_prefix` variable for changing the path where Dimension is served, overriding it is not possible due to [this Dimension issue](https://github.com/turt2live/matrix-dimension/issues/510). You'd need to serve Dimension at a dedicated subdomain.
|
|
||||||
|
|
||||||
### Extending the configuration
|
|
||||||
|
|
||||||
There are some additional things you may wish to configure about the component.
|
|
||||||
|
|
||||||
Take a look at:
|
|
||||||
|
|
||||||
- `roles/custom/matrix-dimension/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
|
||||||
- `roles/custom/matrix-dimension/templates/config.yaml.j2` for the component's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_dimension_configuration_extension_yaml` variable
|
|
||||||
|
|
||||||
You can find all configuration options on [GitHub page of Dimension project](https://github.com/turt2live/matrix-dimension/blob/master/config/default.yaml).
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
|
|
||||||
|
|
||||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
|
||||||
```sh
|
|
||||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
|
||||||
```
|
|
||||||
|
|
||||||
**Notes**:
|
|
||||||
|
|
||||||
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
|
||||||
|
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
After Dimension has been installed you may need to log out and log back in for it to pick up the new integration manager. Then you can access integrations in Element Web by opening a room, clicking the room info button (`i`) on the top right corner, and then clicking the "Add widgets, bridges, & bots" link.
|
|
||||||
|
|
||||||
### Set up a Jitsi widget
|
|
||||||
|
|
||||||
By default Dimension will use [jitsi.riot.im](https://jitsi.riot.im/) as the `conferenceDomain` of [Jitsi](https://jitsi.org/) audio/video conference widgets. For users running [a self-hosted Jitsi instance](configuring-playbook-jitsi.md), you will likely want the widget to use your own Jitsi instance.
|
|
||||||
|
|
||||||
To set up the widget, an admin user needs to configure the domain via the admin UI once Dimension is running. In Element Web, go to *Manage Integrations* → *Settings* → *Widgets* → *Jitsi Conference Settings* and set *Jitsi Domain* and *Jitsi Script URL* appropriately.
|
|
||||||
|
|
||||||
There is unfortunately no way to configure the widget via the playbook. See [this issue](https://github.com/turt2live/matrix-dimension/issues/345) for details.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-dimension`.
|
|
||||||
|
|||||||
@@ -1,7 +1,20 @@
|
|||||||
<!--
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2020 Aaron Raimist
|
||||||
|
SPDX-FileCopyrightText: 2020 Chris van Dijk
|
||||||
|
SPDX-FileCopyrightText: 2020 Dominik Zajac
|
||||||
|
SPDX-FileCopyrightText: 2020 Mickaël Cornière
|
||||||
SPDX-FileCopyrightText: 2020 Scott Crossen
|
SPDX-FileCopyrightText: 2020 Scott Crossen
|
||||||
SPDX-FileCopyrightText: 2020 Slavi Pantaleev
|
SPDX-FileCopyrightText: 2020-2024 MDAD project contributors
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2020-2024 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2022 François Darveau
|
||||||
|
SPDX-FileCopyrightText: 2022 Julian Foad
|
||||||
|
SPDX-FileCopyrightText: 2022 Warren Bailey
|
||||||
|
SPDX-FileCopyrightText: 2023 Antonis Christofides
|
||||||
|
SPDX-FileCopyrightText: 2023 Felix Stupp
|
||||||
|
SPDX-FileCopyrightText: 2023 Julian-Samuel Gebühr
|
||||||
|
SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty
|
||||||
|
SPDX-FileCopyrightText: 2024 Tiz
|
||||||
|
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
@@ -12,6 +25,10 @@ The playbook can configure Dynamic DNS with [ddclient](https://github.com/ddc
|
|||||||
|
|
||||||
Most cloud providers / ISPs will charge you extra for a static IP address. If you're not hosting a highly reliable homeserver you can workaround this via dynamic DNS.
|
Most cloud providers / ISPs will charge you extra for a static IP address. If you're not hosting a highly reliable homeserver you can workaround this via dynamic DNS.
|
||||||
|
|
||||||
|
For details about configuring the [Ansible role for ddclient](https://github.com/mother-of-all-self-hosting/ansible-role-ddclient), you can check them via:
|
||||||
|
- 🌐 [the role's documentation](https://github.com/mother-of-all-self-hosting/ansible-role-ddclient/blob/main/docs/configuring-ddclient.md) online
|
||||||
|
- 📁 `roles/galaxy/ddclient/docs/configuring-ddclient.md` locally, if you have [fetched the Ansible roles](../installing.md)
|
||||||
|
|
||||||
## Prerequisite
|
## Prerequisite
|
||||||
|
|
||||||
You'll need to authenticate with your DNS provider somehow, in most cases this is simply a username and password but can differ from provider to provider. Please consult with your providers documentation and the upstream [ddclient documentation](https://github.com/ddclient/ddclient/blob/main/ddclient.conf.in) to determine what you'll need to provide to authenticate.
|
You'll need to authenticate with your DNS provider somehow, in most cases this is simply a username and password but can differ from provider to provider. Please consult with your providers documentation and the upstream [ddclient documentation](https://github.com/ddclient/ddclient/blob/main/ddclient.conf.in) to determine what you'll need to provide to authenticate.
|
||||||
@@ -21,17 +38,23 @@ You'll need to authenticate with your DNS provider somehow, in most cases this i
|
|||||||
To enable dynamic DNS, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
To enable dynamic DNS, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_dynamic_dns_enabled: true
|
ddclient_enabled: true
|
||||||
|
|
||||||
matrix_dynamic_dns_domain_configurations:
|
ddclient_domain_configurations:
|
||||||
- provider: example.net
|
- provider: example.net
|
||||||
protocol: dyndn2
|
protocol: dyndns2
|
||||||
username: YOUR_USERNAME_HERE
|
username: YOUR_USERNAME_HERE
|
||||||
password: YOUR_PASSWORD_HERE
|
password: YOUR_PASSWORD_HERE
|
||||||
domain: "{{ matrix_domain }}"
|
domain: "{{ matrix_domain }}"
|
||||||
```
|
```
|
||||||
|
|
||||||
Keep in mind that certain providers may require a different configuration of the `matrix_dynamic_dns_domain_configurations` variable, for provider specific examples see the [upstream documentation](https://github.com/ddclient/ddclient/blob/main/ddclient.conf.in).
|
Keep in mind that certain providers may require a different configuration of the `ddclient_domain_configurations` variable, for provider specific examples see the [upstream documentation](https://github.com/ddclient/ddclient/blob/main/ddclient.conf.in).
|
||||||
|
|
||||||
|
### Configuring the endpoint to obtain IP address (optional)
|
||||||
|
|
||||||
|
The playbook sets the default endpoint for obtaining the IP address to `https://cloudflare.com/cdn-cgi/trace`. You can replace it by specifying yours to `ddclient_web` and `ddclient_web_skip` if necessary.
|
||||||
|
|
||||||
|
Refer to [this section](https://github.com/mother-of-all-self-hosting/ansible-role-ddclient/blob/main/docs/configuring-ddclient.md#setting-the-endpoint-to-obtain-ip-address-optional) for more information.
|
||||||
|
|
||||||
### Extending the configuration
|
### Extending the configuration
|
||||||
|
|
||||||
@@ -39,7 +62,7 @@ There are some additional things you may wish to configure about the component.
|
|||||||
|
|
||||||
Take a look at:
|
Take a look at:
|
||||||
|
|
||||||
- `roles/custom/matrix-dynamic-dns/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
- `roles/galaxy/ddclient/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
||||||
|
|
||||||
## Installing
|
## Installing
|
||||||
|
|
||||||
@@ -63,4 +86,4 @@ Additional resources:
|
|||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-dynamic-dns`. However, due to an [upstream issue](https://github.com/linuxserver/docker-ddclient/issues/54#issuecomment-1153143132) the logging output is not always complete. For advanced debugging purposes running the `ddclient` tool outside of the container is useful via the following: `ddclient -file ./ddclient.conf -daemon=0 -debug -verbose -noquiet`.
|
See [this section](https://github.com/mother-of-all-self-hosting/ansible-role-ddclient/blob/main/docs/configuring-ddclient.md#troubleshooting) on the role's documentation for details.
|
||||||
|
|||||||
67
docs/configuring-playbook-element-admin.md
Normal file
67
docs/configuring-playbook-element-admin.md
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2024 wjbeckett
|
||||||
|
SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
-->
|
||||||
|
|
||||||
|
# Setting up Element Admin (optional)
|
||||||
|
|
||||||
|
The playbook can install and configure [Element Admin](https://github.com/element-hq/element-admin) for you.
|
||||||
|
|
||||||
|
Element Admin is a web-based administration panel for Synapse and [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md).
|
||||||
|
|
||||||
|
See the project's [documentation](https://github.com/element-hq/element-admin) to learn more.
|
||||||
|
|
||||||
|
💡 **Note**: This project is still very young and doesn't have many features. For now, it's recommended to use [Synapse Admin](./configuring-playbook-synapse-admin.md) instead. Deployments that use [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) can use Element Admin for user-management (something that Synapse Admin can't do), while continuing to use Synapse Admin for all other purposes.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- A [Synapse](configuring-playbook-synapse.md) homeserver with its Admin API enabled (the playbook automatically enables it for you when you enable Element Admin)
|
||||||
|
- [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) with its Admin API enabled (the playbook automatically enables it for you when you enable Element Admin)
|
||||||
|
|
||||||
|
## Decide on a domain and path
|
||||||
|
|
||||||
|
By default, the Element Admin is configured to be served on the `admin.element.example.com` domain.
|
||||||
|
|
||||||
|
If you'd like to run Element Admin on another hostname, see the [Adjusting the Element Admin URL](#adjusting-the-element-admin-url-optional) section below.
|
||||||
|
|
||||||
|
## Adjusting DNS records (optional)
|
||||||
|
|
||||||
|
By default, this playbook installs Element Admin on the `admin.element.` subdomain (`admin.element.example.com`) and requires you to create a `CNAME` record for `admin.element`, which targets `matrix.example.com`.
|
||||||
|
|
||||||
|
When setting these values, replace `example.com` with your own.
|
||||||
|
|
||||||
|
## Adjusting the playbook configuration
|
||||||
|
|
||||||
|
Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
matrix_element_admin_enabled: true
|
||||||
|
```
|
||||||
|
|
||||||
|
### Adjusting the Element Admin URL (optional)
|
||||||
|
|
||||||
|
By tweaking the `matrix_element_admin_hostname` variable, you can easily make the service available at a **different hostname** than the default one.
|
||||||
|
|
||||||
|
Example additional configuration for your `vars.yml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
matrix_element_admin_hostname: element-admin.example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> A `matrix_element_admin_path_prefix` variable is also available and mean to let you configure a path prefix for the Element Admin service, but **Element Admin does not support running under a sub-path yet**.
|
||||||
|
|
||||||
|
## Installing
|
||||||
|
|
||||||
|
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
|
||||||
|
|
||||||
|
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
||||||
|
```sh
|
||||||
|
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
||||||
|
```
|
||||||
|
|
||||||
|
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
||||||
|
|
||||||
|
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
||||||
@@ -7,7 +7,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
|||||||
|
|
||||||
# Setting up Element Call (optional)
|
# Setting up Element Call (optional)
|
||||||
|
|
||||||
The playbook can install and configure [Element Call](https://github.com/element-hq/element-call) for you.
|
The playbook can install and configure [Element Call](https://github.com/element-hq/element-call) and its supporting components that are part of the [Matrix RTC stack](configuring-playbook-matrix-rtc.md).
|
||||||
|
|
||||||
Element Call is a native Matrix video conferencing application developed by [Element](https://element.io), designed for secure, scalable, privacy-respecting, and decentralized video and voice calls over the Matrix protocol. Built on MatrixRTC ([MSC4143](https://github.com/matrix-org/matrix-spec-proposals/pull/4143)), it utilizes [MSC4195](https://github.com/hughns/matrix-spec-proposals/blob/hughns/matrixrtc-livekit/proposals/4195-matrixrtc-livekit.md) with [LiveKit Server](configuring-playbook-livekit-server.md) as its backend.
|
Element Call is a native Matrix video conferencing application developed by [Element](https://element.io), designed for secure, scalable, privacy-respecting, and decentralized video and voice calls over the Matrix protocol. Built on MatrixRTC ([MSC4143](https://github.com/matrix-org/matrix-spec-proposals/pull/4143)), it utilizes [MSC4195](https://github.com/hughns/matrix-spec-proposals/blob/hughns/matrixrtc-livekit/proposals/4195-matrixrtc-livekit.md) with [LiveKit Server](configuring-playbook-livekit-server.md) as its backend.
|
||||||
|
|
||||||
@@ -16,18 +16,34 @@ See the project's [documentation](https://github.com/element-hq/element-call) to
|
|||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
- A [Synapse](configuring-playbook-synapse.md) homeserver (see the warning below)
|
- A [Synapse](configuring-playbook-synapse.md) homeserver (see the warning below)
|
||||||
- [Federation](configuring-playbook-federation.md) being enabled for your Matrix homeserver (federation is enabled by default, unless you've explicitly disabled it), because [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) currently [requires it](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3562#issuecomment-2725250554) ([relevant source code](https://github.com/element-hq/lk-jwt-service/blob/f5f5374c4bdcc00a4fb13d27c0b28e20e4c62334/main.go#L135-L146))
|
- The [Matrix RTC (Real-Time Communication) stack](configuring-playbook-matrix-rtc.md) (automatically done when Element Call is enabled)
|
||||||
- Various experimental features for the Synapse homeserver which Element Call [requires](https://github.com/element-hq/element-call/blob/93ae2aed9841e0b066d515c56bd4c122d2b591b2/docs/self-hosting.md#a-matrix-homeserver) (automatically done when Element Call is enabled)
|
|
||||||
- A [LiveKit Server](configuring-playbook-livekit-server.md) (automatically installed when Element Call is enabled)
|
|
||||||
- The [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) (automatically installed when Element Call is enabled)
|
|
||||||
- A client compatible with Element Call. As of 2025-03-15, that's just [Element Web](configuring-playbook-client-element-web.md) and the Element X mobile clients (iOS and Android).
|
- A client compatible with Element Call. As of 2025-03-15, that's just [Element Web](configuring-playbook-client-element-web.md) and the Element X mobile clients (iOS and Android).
|
||||||
|
- (Optional) Guest accounts being enabled for your Matrix server, if you'd like guests to be able to use Element Call. See [Allowing guests to use Element Call](#allowing-guests-to-use-element-call-optional)
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> Because Element Call [requires](https://github.com/element-hq/element-call/blob/93ae2aed9841e0b066d515c56bd4c122d2b591b2/docs/self-hosting.md#a-matrix-homeserver) a few experimental features in the Matrix protocol, it's **very likely that it only works with the Synapse homeserver**.
|
> Because Element Call [requires](https://github.com/element-hq/element-call/blob/93ae2aed9841e0b066d515c56bd4c122d2b591b2/docs/self-hosting.md#a-matrix-homeserver) a few experimental features in the Matrix protocol, it's **very likely that it only works with the Synapse homeserver**.
|
||||||
|
|
||||||
|
## Decide between Element Call vs just the Matrix RTC stack
|
||||||
|
|
||||||
|
All clients that can currently use Element Call (Element Web and Element X on mobile) already embed the Element Call frontend within them.
|
||||||
|
These **clients will use their own embedded Element Call frontend**, so **self-hosting the Element Call frontend by the playbook is largely unnecessary**.
|
||||||
|
|
||||||
|
💡 A reason you may wish to continue installing the Element Call frontend (despite Matrix clients not making use of it), is if you need to use it standalone - directly via a browser (without a Matrix client). Note that unless you [allow guest accounts to use Element Call](#allowing-guests-to-use-element-call-optional), you will still need a Matrix user account **on the same homeserver** to be able to use Element Call.
|
||||||
|
|
||||||
|
The playbook makes a distinction between enabling Element Call (`matrix_element_call_enabled`) and enabling the Matrix RTC Stack (`matrix_rtc_enabled`). Enabling Element Call automatically enables the Matrix RTC stack. Because installing the Element Call frontend is now unnecessary, **we recommend only installing the Matrix RTC stack, without the Element Call frontend**.
|
||||||
|
|
||||||
|
| Description / Variable | Element Call frontend | [LiveKit Server](configuring-playbook-livekit-server.md) | [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) |
|
||||||
|
|------------------------|-----------------------|----------------|---------------------|
|
||||||
|
| Description | Static website that provides the Element Call UI (but often embedded by clients) | Scalable, multi-user conferencing solution based on WebRTC | A helper component that allows Element Call to integrate with LiveKit Server |
|
||||||
|
| Required for Element Call to function | No | Yes | Yes |
|
||||||
|
| `matrix_element_call_enabled` | ✅ Installed | ✅ Installed | ✅ Installed |
|
||||||
|
| `matrix_rtc_enabled` | ❌ Not Installed, but usually unnecessary | ✅ Installed | ✅ Installed |
|
||||||
|
|
||||||
|
All documentation below assumes that you've decided to install Element Call and not just the Matrix RTC stack.
|
||||||
|
|
||||||
## Decide on a domain and path
|
## Decide on a domain and path
|
||||||
|
|
||||||
By default, Element Call is configured to be served on the `call.element.example.com` domain.
|
By default, the Element Call frontend is configured to be served on the `call.element.example.com` domain.
|
||||||
|
|
||||||
If you'd like to run Element Call on another hostname, see the [Adjusting the Element Call URL](#adjusting-the-element-call-url-optional) section below.
|
If you'd like to run Element Call on another hostname, see the [Adjusting the Element Call URL](#adjusting-the-element-call-url-optional) section below.
|
||||||
|
|
||||||
@@ -48,6 +64,8 @@ In addition to the HTTP/HTTPS ports (which you've already exposed as per the [pr
|
|||||||
Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
# Enable the Element Call frontend UI to allow standalone use of Element Call.
|
||||||
|
# Enabling this also auto-enables the Matrix RTC stack.
|
||||||
matrix_element_call_enabled: true
|
matrix_element_call_enabled: true
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -64,6 +82,28 @@ matrix_element_call_hostname: element-call.example.com
|
|||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> A `matrix_element_call_path_prefix` variable is also available and mean to let you configure a path prefix for the Element Call service, but [Element Call does not support running under a sub-path yet](https://github.com/element-hq/element-call/issues/3084).
|
> A `matrix_element_call_path_prefix` variable is also available and mean to let you configure a path prefix for the Element Call service, but [Element Call does not support running under a sub-path yet](https://github.com/element-hq/element-call/issues/3084).
|
||||||
|
|
||||||
|
### Allowing guests to use Element Call (optional)
|
||||||
|
|
||||||
|
By default, Element Call can only be used by people having accounts on your Matrix server.
|
||||||
|
|
||||||
|
If you'd like guests to be able to use Element Call as well, you need to enable guest accounts support for your homeserver.
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Enabling guest accounts means that your homeserver's user database may get polluted with guest account signups (potentially made by bots).
|
||||||
|
> Guest accounts should be limited in what (damage) they can do to your server and the rest of the Matrix ecosystem, but it's better to not enable them unless necessary.
|
||||||
|
|
||||||
|
For [Synapse](configuring-playbook-synapse.md) (the default homeserver implementation), the configuration is like this:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
matrix_synapse_allow_guest_access: true
|
||||||
|
```
|
||||||
|
|
||||||
|
For [Dendrite](configuring-playbook-dendrite.md), the configuration is like this:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
matrix_dendrite_guests_disabled: false
|
||||||
|
```
|
||||||
|
|
||||||
## Installing
|
## Installing
|
||||||
|
|
||||||
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records) and [adjusting firewall rules](#adjusting-firewall-rules), run the playbook with [playbook tags](playbook-tags.md) as below:
|
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records) and [adjusting firewall rules](#adjusting-firewall-rules), run the playbook with [playbook tags](playbook-tags.md) as below:
|
||||||
|
|||||||
@@ -17,6 +17,16 @@ The [Ansible role for exim-relay](https://github.com/mother-of-all-self-hosting/
|
|||||||
- 🌐 [the role's documentation at the MASH project](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay/blob/main/docs/configuring-exim-relay.md) online
|
- 🌐 [the role's documentation at the MASH project](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay/blob/main/docs/configuring-exim-relay.md) online
|
||||||
- 📁 `roles/galaxy/exim_relay/docs/configuring-exim-relay.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)
|
- 📁 `roles/galaxy/exim_relay/docs/configuring-exim-relay.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)
|
||||||
|
|
||||||
|
## Why use exim-relay?
|
||||||
|
|
||||||
|
**Benefits of using exim-relay** instead of configuring SMTP directly in each service:
|
||||||
|
|
||||||
|
1. **Final delivery capability**: Can deliver emails directly if you don't have an SMTP server
|
||||||
|
|
||||||
|
2. **Centralized configuration**: Configure your upstream SMTP server once in exim-relay, then point all services ([Synapse](configuring-playbook-synapse.md), [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md), etc.) there—no need to configure SMTP in each component
|
||||||
|
|
||||||
|
3. **Local spooling**: Stores messages locally and retries delivery if your upstream SMTP server is temporarily unavailable
|
||||||
|
|
||||||
## Firewall settings
|
## Firewall settings
|
||||||
|
|
||||||
No matter whether you send email directly (the default) or you relay email through another host, you'll probably need to allow outgoing traffic for TCP ports 25/587 (depending on configuration).
|
No matter whether you send email directly (the default) or you relay email through another host, you'll probably need to allow outgoing traffic for TCP ports 25/587 (depending on configuration).
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ matrix_homeserver_federation_enabled: false
|
|||||||
|
|
||||||
With that, your server's users will only be able to talk among themselves, but not to anyone who is on another server.
|
With that, your server's users will only be able to talk among themselves, but not to anyone who is on another server.
|
||||||
|
|
||||||
**Disabling federation does not necessarily disable the federation port** (`8448`). Services like [Dimension](configuring-playbook-dimension.md) and [ma1sd](configuring-playbook-ma1sd.md) normally rely on `openid` APIs exposed on that port. Even if you disable federation and only if necessary, we may still be exposing the federation port and serving the `openid` APIs there. To override this and completely disable Synapse's federation port use:
|
**Disabling federation does not necessarily disable the federation port** (`8448`). Even if you disable federation and only if necessary, we may still be exposing the federation port and serving the `openid` APIs there. To override this and completely disable Synapse's federation port use:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_homeserver_federation_enabled: false
|
matrix_homeserver_federation_enabled: false
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
|||||||
|
|
||||||
The playbook can install and configure the [Jitsi](https://jitsi.org/) video-conferencing platform for you.
|
The playbook can install and configure the [Jitsi](https://jitsi.org/) video-conferencing platform for you.
|
||||||
|
|
||||||
|
Because Jitsi still requires a TURN server, enabling Jitsi
|
||||||
|
automatically enables coturn (`coturn_enabled: true`) unless you explicitly disable it.
|
||||||
|
|
||||||
Jitsi is an open source video-conferencing platform. It can not only be integrated with Element clients ([Element Web](configuring-playbook-client-element-web.md)/Desktop, Android and iOS) as a widget, but also be used as standalone web app.
|
Jitsi is an open source video-conferencing platform. It can not only be integrated with Element clients ([Element Web](configuring-playbook-client-element-web.md)/Desktop, Android and iOS) as a widget, but also be used as standalone web app.
|
||||||
|
|
||||||
💡 If you're into experimental technology, you may also be interested in trying out [Element Call](configuring-playbook-element-call.md) - a native Matrix video conferencing application.
|
💡 If you're into experimental technology, you may also be interested in trying out [Element Call](configuring-playbook-element-call.md) - a native Matrix video conferencing application.
|
||||||
@@ -70,7 +73,7 @@ By default the Jitsi Meet instance **does not require for anyone to log in, and
|
|||||||
|
|
||||||
If you would like to control who is allowed to start meetings on your instance, you'd need to enable Jitsi's authentication and optionally guests mode.
|
If you would like to control who is allowed to start meetings on your instance, you'd need to enable Jitsi's authentication and optionally guests mode.
|
||||||
|
|
||||||
See [this section](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#configure-jitsi-authentication-and-guests-mode-optional) on the role's documentation for details about how to configure the authentication and guests mode. The recommended authentication method is `internal` as it also works in federated rooms. If you want to enable authentication with Matrix OpenID making use of [Matrix User Verification Service (UVS)](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook-user-verification-service.md), see [here](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#authenticate-using-matrix-openid-auth-type-matrix) for details about how to set it up.
|
See [this section](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#configure-jitsi-authentication-and-guests-mode-optional) on the role's documentation for details about how to configure the authentication and guests mode. The recommended authentication method is `internal` as it also works in federated rooms. If you want to enable authentication with Matrix OpenID making use of [Matrix User Verification Service (UVS)](configuring-playbook-user-verification-service.md), see [here](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#authenticate-using-matrix-openid-auth-type-matrix) for details about how to set it up.
|
||||||
|
|
||||||
### Enable Gravatar (optional)
|
### Enable Gravatar (optional)
|
||||||
|
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
|||||||
|
|
||||||
The playbook can install and configure [LiveKit JWT Service](https://github.com/element-hq/lk-jwt-service/) for you.
|
The playbook can install and configure [LiveKit JWT Service](https://github.com/element-hq/lk-jwt-service/) for you.
|
||||||
|
|
||||||
This is a helper component that allows [Element Call](configuring-playbook-element-call.md) to integrate with [LiveKit Server](configuring-playbook-livekit-server.md).
|
This is a helper component which is part of the [Matrix RTC stack](configuring-playbook-matrix-rtc.md) that allows [Element Call](configuring-playbook-element-call.md) to integrate with [LiveKit Server](configuring-playbook-livekit-server.md).
|
||||||
|
|
||||||
💡 LiveKit JWT Service is automatically installed and configured when [Element Call](configuring-playbook-element-call.md) is enabled, so you don't need to do anything extra.
|
💡 LiveKit JWT Service is automatically installed and configured when either [Element Call](configuring-playbook-element-call.md) or the [Matrix RTC stack](configuring-playbook-matrix-rtc.md) is enabled, so you don't need to do anything extra.
|
||||||
|
|
||||||
Take a look at:
|
Take a look at:
|
||||||
|
|
||||||
- `roles/custom/matrix-livekit-jwt-service/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
- `roles/custom/matrix-livekit-jwt-service/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
||||||
- `roles/custom/matrix-livekit-jwt-service/templates/env.j2` for the component's default configuration.
|
- `roles/custom/matrix-livekit-jwt-service/templates/env.j2` for the component's default configuration.
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ The playbook can install and configure [LiveKit Server](https://github.com/livek
|
|||||||
|
|
||||||
LiveKit Server is an open source project that provides scalable, multi-user conferencing based on WebRTC. It's designed to provide everything you need to build real-time video audio data capabilities in your applications.
|
LiveKit Server is an open source project that provides scalable, multi-user conferencing based on WebRTC. It's designed to provide everything you need to build real-time video audio data capabilities in your applications.
|
||||||
|
|
||||||
💡 LiveKit Server is automatically installed and configured when [Element Call](configuring-playbook-element-call.md) is enabled, so you don't need to do anything extra.
|
💡 LiveKit Server is automatically installed and configured when either [Element Call](configuring-playbook-element-call.md) or the [Matrix RTC stack](configuring-playbook-matrix-rtc.md) is enabled, so you don't need to do anything extra.
|
||||||
|
|
||||||
The [Ansible role for LiveKit Server](https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server) is developed and maintained by [the MASH (mother-of-all-self-hosting) project](https://github.com/mother-of-all-self-hosting). For details about configuring LiveKit Server, you can check them via:
|
The [Ansible role for LiveKit Server](https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server) is developed and maintained by [the MASH (mother-of-all-self-hosting) project](https://github.com/mother-of-all-self-hosting). For details about configuring LiveKit Server, you can check them via:
|
||||||
- 🌐 [the role's documentation at the MASH project](https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server/blob/main/docs/configuring-livekit-server.md) online
|
- 🌐 [the role's documentation at the MASH project](https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server/blob/main/docs/configuring-livekit-server.md) online
|
||||||
- 📁 `roles/galaxy/livekit-server/docs/configuring-livekit-server.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)
|
- 📁 `roles/galaxy/livekit_server/docs/configuring-livekit-server.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)
|
||||||
|
|
||||||
## Adjusting firewall rules
|
## Adjusting firewall rules
|
||||||
|
|
||||||
@@ -29,10 +29,43 @@ To ensure LiveKit Server functions correctly, the following firewall rules and p
|
|||||||
|
|
||||||
- `5350/tcp`: TURN/TCP. Also see the [Limitations](#limitations) section below.
|
- `5350/tcp`: TURN/TCP. Also see the [Limitations](#limitations) section below.
|
||||||
|
|
||||||
💡 The suggestions above are inspired by the upstream [Ports and Firewall](https://docs.livekit.io/home/self-hosting/ports-firewall/) documentation based on how LiveKit is configured in the playbook. If you've using custom configuration for the LiveKit Server role, you may need to adjust the firewall rules accordingly.
|
- `30000-30020/udp`: TURN relay range used by LiveKit's embedded TURN server.
|
||||||
|
|
||||||
|
💡 The suggestions above are inspired by the upstream [Ports and Firewall](https://docs.livekit.io/home/self-hosting/ports-firewall/) documentation based on how LiveKit is configured in the playbook. If you're using custom configuration for the LiveKit Server role, you may need to adjust firewall rules accordingly.
|
||||||
|
|
||||||
|
## TURN TLS handling
|
||||||
|
|
||||||
|
When `matrix_playbook_reverse_proxy_type` is `playbook-managed-traefik` (which is the default for this playbook), TURN over TCP is terminated by Traefik and forwarded to LiveKit with `turn.external_tls = true`. In this playbook default, this mode is enabled automatically when SSL is enabled and TURN is enabled.
|
||||||
|
|
||||||
|
- The playbook installs a dedicated Traefik TCP entrypoint for TURN (`matrix-livekit-turn`) by default and binds it to `tcp/5350`.
|
||||||
|
- `livekit_server_config_turn_external_tls` is automatically enabled for this setup.
|
||||||
|
- Because Traefik handles TLS, LiveKit no longer needs certificate-file paths for TURN in this mode.
|
||||||
|
|
||||||
|
To opt out and keep TURN TLS termination in LiveKit itself, set:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
livekit_server_config_turn_external_tls: false
|
||||||
|
```
|
||||||
|
|
||||||
|
In this playbook, certificate paths are managed automatically via `group_vars/matrix_servers` when certificate dumping is enabled.
|
||||||
|
|
||||||
|
If your setup uses `other-traefik-container` or [another reverse-proxy](./configuring-playbook-own-webserver.md), behavior is unchanged by default and still relies on certificates being available inside the container as before.
|
||||||
|
|
||||||
|
Deployments using `other-traefik-container` can opt into the same Traefik-terminated mode there, by setting:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
livekit_server_config_turn_external_tls: true
|
||||||
|
livekit_server_container_labels_turn_traefik_enabled: true
|
||||||
|
livekit_server_container_labels_turn_traefik_entrypoints: "<your-livekit-turn-traffic-entrypoint>"
|
||||||
|
```
|
||||||
|
|
||||||
|
and configuring their own Traefik TCP entrypoint dedicated to LiveKit TURN traffic.
|
||||||
|
|
||||||
## Limitations
|
## Limitations
|
||||||
|
|
||||||
For some reason, LiveKit Server's TURN ports (`3479/udp` and `5350/tcp`) are not reachable over IPv6 regardless of whether you've [enabled IPv6](./configuring-ipv6.md) for your server.
|
LiveKit Server's TURN listener behavior depends on where TLS is terminated:
|
||||||
|
|
||||||
It seems like LiveKit Server intentionally only listens on `udp4` and `tcp4` as seen [here](https://github.com/livekit/livekit/blob/154b4d26b769c68a03c096124094b97bf61a996f/pkg/service/turn.go#L128) and [here](https://github.com/livekit/livekit/blob/154b4d26b769c68a03c096124094b97bf61a996f/pkg/service/turn.go#L92).
|
- Direct LiveKit TURN listeners (`livekit_server_config_turn_external_tls: false`) still use IPv4-only sockets for `3479/udp` and `5350/tcp`, so IPv6 connectivity to these endpoints is not possible.
|
||||||
|
- With [TURN TLS handling](#turn-tls-handling) (`livekit_server_config_turn_external_tls: true`), the playbook's dedicated `matrix-livekit-turn` TCP entrypoint can still listen on both IPv4 and IPv6. Traefik then forwards TURN/TCP to LiveKit.
|
||||||
|
|
||||||
|
It appears that LiveKit Server intentionally only listens on `udp4` and `tcp4` in direct mode, as seen [here](https://github.com/livekit/livekit/blob/154b4d26b769c68a03c096124094b97bf61a996f/pkg/service/turn.go#L128) and [here](https://github.com/livekit/livekit/blob/154b4d26b769c68a03c096124094b97bf61a996f/pkg/service/turn.go#L92).
|
||||||
|
|||||||
@@ -1,176 +1,37 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2018 - 2024 Slavi Pantaleev
|
SPDX-FileCopyrightText: 2018-2025 Slavi Pantaleev
|
||||||
SPDX-FileCopyrightText: 2019 - 2020 MDAD project contributors
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
SPDX-FileCopyrightText: 2019 Noah Fleischmann
|
SPDX-FileCopyrightText: 2019 Noah Fleischmann
|
||||||
SPDX-FileCopyrightText: 2020 Justin Croonenberghs
|
SPDX-FileCopyrightText: 2019-2022, 2024 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2020 Hugues Morisset
|
||||||
SPDX-FileCopyrightText: 2020 Marcel Partap
|
SPDX-FileCopyrightText: 2020 Marcel Partap
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
||||||
|
SPDX-FileCopyrightText: 2020, 2023 Justin Croonenberghs
|
||||||
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
|
SPDX-FileCopyrightText: 2023 Kuba Orlik
|
||||||
|
SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty
|
||||||
|
SPDX-FileCopyrightText: 2023 Samuel Meenzen
|
||||||
|
SPDX-FileCopyrightText: 2024 Fabio Bonelli
|
||||||
|
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up ma1sd Identity Server (optional)
|
# Setting up ma1sd Identity Server (optional, removed)
|
||||||
|
|
||||||
> [!WARNING]
|
🪦 The playbook used to be able to install and configure the [ma1sd](https://github.com/ma1uta/ma1sd) Identity Server, but no longer includes this component, as it has been unmaintained for a long time.
|
||||||
> Since ma1sd has been unmaintained for years (the latest commit and release being from 2021) and the future of identity server's role in the Matrix specification is uncertain, **we recommend not bothering with installing it unless it's the only way you can do what you need to do**.
|
|
||||||
>
|
|
||||||
> Please note that certain things can be achieved with other components. For example, if you wish to implement LDAP integration, you might as well check out [the LDAP provider module for Synapse](./configuring-playbook-ldap-auth.md) instead.
|
|
||||||
|
|
||||||
The playbook can configure the [ma1sd](https://github.com/ma1uta/ma1sd) Identity Server for you. It is a fork of [mxisd](https://github.com/kamax-io/mxisd) which was pronounced end of life 2019-06-21.
|
Please note that some of the functions can be achieved with other components. For example, if you wish to implement LDAP integration, you might as well check out [the LDAP provider module for Synapse](./configuring-playbook-ldap-auth.md) instead.
|
||||||
|
|
||||||
ma1sd is used for 3PIDs (3rd party identifiers like E-mail and phone numbers) and some [enhanced features](https://github.com/ma1uta/ma1sd/#features). It is private by default, potentially at the expense of user discoverability.
|
## Uninstalling the component manually
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/ma1uta/ma1sd/blob/master/README.md) to learn what it does and why it might be useful to you.
|
If you still have the ma1sd Identity Server installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
### Open Matrix Federation port
|
|
||||||
|
|
||||||
Enabling the ma1sd service will automatically reconfigure your Synapse homeserver to expose the `openid` API endpoints on the Matrix Federation port (usually `8448`), even if [federation](configuring-playbook-federation.md) is disabled. If you enable the component, make sure that the port is accessible.
|
|
||||||
|
|
||||||
## Adjusting DNS records
|
|
||||||
|
|
||||||
To make the ma1sd Identity Server enable its federation features, set up a SRV record that looks like this:
|
|
||||||
|
|
||||||
- Name: `_matrix-identity._tcp` (use this text as-is)
|
|
||||||
- Content: `10 0 443 matrix.example.com` (replace `example.com` with your own)
|
|
||||||
|
|
||||||
See [ma1sd's documentation](https://github.com/ma1uta/ma1sd/wiki/mxisd-and-your-privacy#choices-are-never-easy) for information on the privacy implications of setting up this SRV record.
|
|
||||||
|
|
||||||
When setting up a SRV record, if you are asked for a service and protocol instead of a hostname split the host value from the table where the period is. For example use service as `_matrix-identity` and protocol as `_tcp`.
|
|
||||||
|
|
||||||
**Note**: This `_matrix-identity._tcp` SRV record for the identity server is different from the `_matrix._tcp` that can be used for Synapse delegation. See [howto-server-delegation.md](howto-server-delegation.md) for more information about delegation.
|
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
|
||||||
|
|
||||||
To enable ma1sd, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_ma1sd_enabled: true
|
|
||||||
```
|
|
||||||
|
|
||||||
### Matrix.org lookup forwarding
|
|
||||||
|
|
||||||
To ensure maximum discovery, you can make your identity server also forward lookups to the central matrix.org Identity server (at the cost of potentially leaking all your contacts information).
|
|
||||||
|
|
||||||
Enabling this is discouraged and you'd better [learn more](https://github.com/ma1uta/ma1sd/blob/master/docs/features/identity.md#lookups) before proceeding.
|
|
||||||
|
|
||||||
To enable matrix.org forwarding, add the following configuration to your `vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_ma1sd_matrixorg_forwarding_enabled: true
|
|
||||||
```
|
|
||||||
|
|
||||||
### Extending the configuration
|
|
||||||
|
|
||||||
There are some additional things you may wish to configure about the component.
|
|
||||||
|
|
||||||
Take a look at:
|
|
||||||
|
|
||||||
- `roles/custom/matrix-ma1sd/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_ma1sd_configuration_extension_yaml` variable
|
|
||||||
|
|
||||||
You can refer to the [ma1sd website](https://github.com/ma1uta/ma1sd) for more details and configuration options.
|
|
||||||
|
|
||||||
#### Customizing email templates
|
|
||||||
|
|
||||||
If you'd like to change the default email templates used by ma1sd, take a look at the `matrix_ma1sd_threepid_medium_email_custom_` variables (in the `roles/custom/matrix-ma1sd/defaults/main.yml` file.
|
|
||||||
|
|
||||||
#### ma1sd-controlled Registration
|
|
||||||
|
|
||||||
To use the [Registration](https://github.com/ma1uta/ma1sd/blob/master/docs/features/registration.md) feature of ma1sd, you can make use of the following variables:
|
|
||||||
|
|
||||||
- `matrix_synapse_enable_registration` — to enable user-initiated registration in Synapse
|
|
||||||
|
|
||||||
- `matrix_synapse_enable_registration_captcha` — to validate registering users using reCAPTCHA, as described in the [enabling reCAPTCHA](configuring-captcha.md) documentation.
|
|
||||||
|
|
||||||
- `matrix_synapse_registrations_require_3pid` — a list of 3pid types (among `'email'`, `'msisdn'`) required by the Synapse server for registering
|
|
||||||
|
|
||||||
- variables prefixed with `matrix_ma1sd_container_labels_` (e.g. `matrix_ma1sd_container_labels_matrix_client_3pid_registration_enabled`) — to configure the Traefik reverse-proxy to capture and send registration requests to ma1sd (instead of Synapse), so it can apply its additional functionality
|
|
||||||
|
|
||||||
- `matrix_ma1sd_configuration_extension_yaml` — to configure ma1sd as required. See the [Registration feature's docs](https://github.com/ma1uta/ma1sd/blob/master/docs/features/registration.md) for inspiration. Also see the [Additional features](#additional-features) section below to learn more about how to use `matrix_ma1sd_configuration_extension_yaml`.
|
|
||||||
|
|
||||||
**Note**: For this to work, either the homeserver needs to [federate](configuring-playbook-federation.md) or the `openid` APIs need to exposed on the federation port. When federation is disabled and ma1sd is enabled, we automatically expose the `openid` APIs (only!) on the federation port. Make sure the federation port (usually `https://matrix.example.com:8448`) is whitelisted in your firewall (even if you don't actually use/need federation).
|
|
||||||
|
|
||||||
#### Authentication
|
|
||||||
|
|
||||||
[Authentication](https://github.com/ma1uta/ma1sd/blob/master/docs/features/authentication.md) provides the possibility to use your own [Identity Stores](https://github.com/ma1uta/ma1sd/blob/master/docs/stores/README.md) (for example LDAP) to authenticate users on your Homeserver.
|
|
||||||
|
|
||||||
To enable authentication against an LDAP server, add the following configuration to your `vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_synapse_ext_password_provider_rest_auth_enabled: true
|
|
||||||
|
|
||||||
# matrix-ma1sd is the hostname of the ma1sd Docker container
|
|
||||||
matrix_synapse_ext_password_provider_rest_auth_endpoint: "http://matrix-ma1sd:8090"
|
|
||||||
|
|
||||||
matrix_ma1sd_configuration_extension_yaml: |
|
|
||||||
ldap:
|
|
||||||
enabled: true
|
|
||||||
connection:
|
|
||||||
host: ldapHostnameOrIp
|
|
||||||
tls: false
|
|
||||||
port: 389
|
|
||||||
baseDNs: ['OU=Users,DC=example,DC=org']
|
|
||||||
bindDn: CN=My ma1sd User,OU=Users,DC=example,DC=org
|
|
||||||
bindPassword: TheUserPassword
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Example: SMS verification
|
|
||||||
|
|
||||||
If your use case requires mobile verification, it is quite simple to integrate ma1sd with [Twilio](https://www.twilio.com/), an online telephony services gateway. Their prices are reasonable for low-volume projects and integration can be done with the following configuration:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_ma1sd_configuration_extension_yaml: |
|
|
||||||
threepid:
|
|
||||||
medium:
|
|
||||||
msisdn:
|
|
||||||
connectors:
|
|
||||||
twilio:
|
|
||||||
account_sid: '<secret-SID>'
|
|
||||||
auth_token: '<secret-token>'
|
|
||||||
number: '+<msisdn-number>'
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Example: Open Registration for every Domain
|
|
||||||
|
|
||||||
If you want to open registration for any domain, you have to setup the allowed domains with ma1sd's `blacklist` and `whitelist`. The default behavior when neither the `blacklist`, nor the `whitelist` match, is to allow registration. Beware: you can't block toplevel domains (aka `.xy`) because the internal architecture of ma1sd doesn't allow that.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_ma1sd_configuration_extension_yaml: |
|
|
||||||
register:
|
|
||||||
policy:
|
|
||||||
allowed: true
|
|
||||||
threepid:
|
|
||||||
email:
|
|
||||||
domain:
|
|
||||||
blacklist: ~
|
|
||||||
whitelist: ~
|
|
||||||
```
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
|
||||||
|
|
||||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
|
||||||
```sh
|
```sh
|
||||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
systemctl disable --now matrix-ma1sd.service
|
||||||
```
|
|
||||||
|
rm -rf /matrix/ma1sd
|
||||||
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
|
||||||
|
/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_ma1sd;'
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
If email address validation emails sent by ma1sd are not reaching you, you should look into [Adjusting email-sending settings](configuring-playbook-email.md).
|
|
||||||
|
|
||||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-ma1sd`.
|
|
||||||
|
|
||||||
### Increase logging verbosity
|
|
||||||
|
|
||||||
If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# See: https://github.com/ma1uta/ma1sd/blob/master/docs/troubleshooting.md#increase-verbosity
|
|
||||||
matrix_ma1sd_verbose_logging: true
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ Below, we'll try to **highlight some potential reasons for switching** to Matrix
|
|||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
- ⚠️ the [Synapse](configuring-playbook-synapse.md) homeserver implementation (which is the default for this playbook). Other homeserver implementations ([Dendrite](./configuring-playbook-dendrite.md), [Conduit](./configuring-playbook-conduit.md), etc.) do not support integrating wtih Matrix Authentication Service yet.
|
- ⚠️ the [Synapse](configuring-playbook-synapse.md) homeserver implementation (which is the default for this playbook). Other homeserver implementations ([Dendrite](./configuring-playbook-dendrite.md), [Conduit](./configuring-playbook-conduit.md), etc.) do not support integrating with Matrix Authentication Service yet.
|
||||||
|
|
||||||
- ❌ **disabling all password providers** for Synapse (things like [shared-secret-auth](./configuring-playbook-shared-secret-auth.md), [rest-auth](./configuring-playbook-rest-auth.md), [LDAP auth](./configuring-playbook-ldap-auth.md), etc.) More details about this are available in the [Expectations](#expectations) section below.
|
- ❌ **disabling all password providers** for Synapse (things like [shared-secret-auth](./configuring-playbook-shared-secret-auth.md), [rest-auth](./configuring-playbook-rest-auth.md), [LDAP auth](./configuring-playbook-ldap-auth.md), etc.) More details about this are available in the [Expectations](#expectations) section below.
|
||||||
|
|
||||||
@@ -51,10 +51,12 @@ This section details what you can expect when switching to the Matrix Authentica
|
|||||||
|
|
||||||
- ❌ **Synapse password providers will need to be disabled**. You can no longer use [shared-secret-auth](./configuring-playbook-shared-secret-auth.md), [rest-auth](./configuring-playbook-rest-auth.md), [LDAP auth](./configuring-playbook-ldap-auth.md), etc. When the authentication flow is handled by MAS (not by Synapse anymore), it doesn't make sense to extend the Synapse authentication flow with additional modules. Many bridges used to rely on shared-secret-auth for doing double-puppeting (impersonating other users), but most (at least the mautrix bridges) nowadays use [Appservice Double Puppet](./configuring-playbook-appservice-double-puppet.md) as a better alternative. Older/maintained bridges may still rely on shared-secret-auth, as do other services like [matrix-corporal](./configuring-playbook-matrix-corporal.md).
|
- ❌ **Synapse password providers will need to be disabled**. You can no longer use [shared-secret-auth](./configuring-playbook-shared-secret-auth.md), [rest-auth](./configuring-playbook-rest-auth.md), [LDAP auth](./configuring-playbook-ldap-auth.md), etc. When the authentication flow is handled by MAS (not by Synapse anymore), it doesn't make sense to extend the Synapse authentication flow with additional modules. Many bridges used to rely on shared-secret-auth for doing double-puppeting (impersonating other users), but most (at least the mautrix bridges) nowadays use [Appservice Double Puppet](./configuring-playbook-appservice-double-puppet.md) as a better alternative. Older/maintained bridges may still rely on shared-secret-auth, as do other services like [matrix-corporal](./configuring-playbook-matrix-corporal.md).
|
||||||
|
|
||||||
- ❌ Certain **tools like [synapse-admin](./configuring-playbook-synapse-admin.md) do not have full compatibility with MAS yet**. synapse-admin already supports [login with access token](https://github.com/etkecc/synapse-admin/pull/58), browsing users (which Synapse will internally fetch from MAS) and updating user avatars. However, editing users (passwords, etc.) now needs to happen directly against MAS using the [MAS Admin API](https://element-hq.github.io/matrix-authentication-service/api/index.html), which synapse-admin cannot interact with yet.
|
- ❌ Certain **tools like [Synapse Admin](./configuring-playbook-synapse-admin.md) do not have full compatibility with MAS yet**. Synapse Admin already supports OIDC auth, browsing users (which Synapse will internally fetch from MAS) and updating user avatars. However, editing users (passwords, etc.) now needs to happen directly against MAS using the [MAS Admin API](https://element-hq.github.io/matrix-authentication-service/api/index.html), which Synapse Admin cannot interact with yet. You may be interested in using [Element Admin](./configuring-playbook-element-admin.md) for these purposes.
|
||||||
|
|
||||||
- ❌ **Some services experience issues when authenticating via MAS**:
|
- ❌ **Some services experience issues when authenticating via MAS**:
|
||||||
|
|
||||||
|
- [Reminder bot](configuring-playbook-bot-matrix-reminder-bot.md) seems to be losing some of its state on each restart and may reschedule old reminders once again
|
||||||
|
|
||||||
- [Postmoogle](./configuring-playbook-bridge-postmoogle.md) works the first time around, but it consistently fails after restarting:
|
- [Postmoogle](./configuring-playbook-bridge-postmoogle.md) works the first time around, but it consistently fails after restarting:
|
||||||
|
|
||||||
> cannot initialize matrix bot error="olm account is marked as shared, keys seem to have disappeared from the server"
|
> cannot initialize matrix bot error="olm account is marked as shared, keys seem to have disappeared from the server"
|
||||||
@@ -63,7 +65,7 @@ This section details what you can expect when switching to the Matrix Authentica
|
|||||||
|
|
||||||
- ⚠️ [Migrating an existing Synapse homeserver to Matrix Authentication Service](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) is **possible**, but requires **some playbook-assisted manual work**. Migration is **reversible with no or minor issues if done quickly enough**, but as users start logging in (creating new login sessions) via the new MAS setup, disabling MAS and reverting back to the Synapse user database will cause these new sessions to break.
|
- ⚠️ [Migrating an existing Synapse homeserver to Matrix Authentication Service](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) is **possible**, but requires **some playbook-assisted manual work**. Migration is **reversible with no or minor issues if done quickly enough**, but as users start logging in (creating new login sessions) via the new MAS setup, disabling MAS and reverting back to the Synapse user database will cause these new sessions to break.
|
||||||
|
|
||||||
- ⚠️ Delegating user authentication to MAS causes **your Synapse server to be completely dependant on one more service** for its operations. MAS is quick & lightweight and should be stable enough already, but this is something to keep in mind when making the switch.
|
- ⚠️ Delegating user authentication to MAS causes **your Synapse server to be completely dependent on one more service** for its operations. MAS is quick & lightweight and should be stable enough already, but this is something to keep in mind when making the switch.
|
||||||
|
|
||||||
- ⚠️ If you've got [OIDC configured in Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on), you will need to migrate your OIDC configuration to MAS by adding an [Upstream OAuth2 configuration](#upstream-oauth2-configuration).
|
- ⚠️ If you've got [OIDC configured in Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on), you will need to migrate your OIDC configuration to MAS by adding an [Upstream OAuth2 configuration](#upstream-oauth2-configuration).
|
||||||
|
|
||||||
@@ -87,7 +89,7 @@ For new homeservers (which don't have any users in their Synapse database yet),
|
|||||||
|
|
||||||
### Existing homeserver
|
### Existing homeserver
|
||||||
|
|
||||||
Other homeserver implementations ([Dendrite](./configuring-playbook-dendrite.md), [Conduit](./configuring-playbook-conduit.md), etc.) do not support integrating wtih Matrix Authentication Service yet.
|
Other homeserver implementations ([Dendrite](./configuring-playbook-dendrite.md), [Conduit](./configuring-playbook-conduit.md), etc.) do not support integrating with Matrix Authentication Service yet.
|
||||||
|
|
||||||
For existing Synapse homeservers:
|
For existing Synapse homeservers:
|
||||||
|
|
||||||
@@ -159,6 +161,10 @@ matrix_authentication_service_config_upstream_oauth2_providers:
|
|||||||
- # A unique identifier for the provider
|
- # A unique identifier for the provider
|
||||||
# Must be a valid ULID
|
# Must be a valid ULID
|
||||||
id: 01HFVBY12TMNTYTBV8W921M5FA
|
id: 01HFVBY12TMNTYTBV8W921M5FA
|
||||||
|
# This can be set if you're migrating an existing (legacy) Synapse OIDC configuration.
|
||||||
|
# The value used here would most likely be "oidc" or "oidc-provider".
|
||||||
|
# See: https://element-hq.github.io/matrix-authentication-service/setup/migration.html#map-any-upstream-sso-providers
|
||||||
|
synapse_idp_id: null
|
||||||
# The issuer URL, which will be used to discover the provider's configuration.
|
# The issuer URL, which will be used to discover the provider's configuration.
|
||||||
# If discovery is enabled, this *must* exactly match the `issuer` field
|
# If discovery is enabled, this *must* exactly match the `issuer` field
|
||||||
# advertised in `<issuer>/.well-known/openid-configuration`.
|
# advertised in `<issuer>/.well-known/openid-configuration`.
|
||||||
@@ -306,7 +312,7 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
|||||||
|
|
||||||
Our migration guide is loosely based on the upstream [Migrating an existing homeserver](https://element-hq.github.io/matrix-authentication-service/setup/migration.html) guide.
|
Our migration guide is loosely based on the upstream [Migrating an existing homeserver](https://element-hq.github.io/matrix-authentication-service/setup/migration.html) guide.
|
||||||
|
|
||||||
Migration is done via a tool called `syn2mas`, which the playbook could run for you (in a container).
|
Migration is done via a sub-command called `syn2mas`, which the playbook could run for you (in a container).
|
||||||
|
|
||||||
The installation + migration steps are like this:
|
The installation + migration steps are like this:
|
||||||
|
|
||||||
@@ -322,7 +328,7 @@ The installation + migration steps are like this:
|
|||||||
|
|
||||||
- The `matrix-user-creator` role would be suppressed, so that it doesn't automatically attempt to create users (for bots, etc.) in the MAS database. These user accounts likely already exist in Synapse's user database and could be migrated over (via syn2mas, as per the steps below), so creating them in the MAS database would have been unnecessary and potentially problematic (conflicts during the syn2mas migration).
|
- The `matrix-user-creator` role would be suppressed, so that it doesn't automatically attempt to create users (for bots, etc.) in the MAS database. These user accounts likely already exist in Synapse's user database and could be migrated over (via syn2mas, as per the steps below), so creating them in the MAS database would have been unnecessary and potentially problematic (conflicts during the syn2mas migration).
|
||||||
|
|
||||||
3. Consider taking a full [backup of your Postgres database](./maintenance-postgres.md#backing-up-postgresql). This is done just in case. The **syn2mas migration tool does not delete any data**, so it should be possible to revert to your previous setup by merely disabling MAS and re-running the playbook (no need to restore a Postgres backup). However, do note that as users start logging in (creating new login sessions) via the new MAS setup, disabling MAS and reverting back to the Synapse user database will cause these new sessions to break.
|
3. Consider taking a full [backup of your Postgres database](./maintenance-postgres.md#backing-up-postgresql). This is done just in case. The **syn2mas migration command does not delete any data**, so it should be possible to revert to your previous setup by merely disabling MAS and re-running the playbook (no need to restore a Postgres backup). However, do note that as users start logging in (creating new login sessions) via the new MAS setup, disabling MAS and reverting back to the Synapse user database will cause these new sessions to break.
|
||||||
|
|
||||||
4. [Migrate your data from Synapse to Matrix Authentication Service using syn2mas](#migrate-your-data-from-synapse-to-matrix-authentication-service-using-syn2mas)
|
4. [Migrate your data from Synapse to Matrix Authentication Service using syn2mas](#migrate-your-data-from-synapse-to-matrix-authentication-service-using-syn2mas)
|
||||||
|
|
||||||
@@ -342,9 +348,7 @@ The installation + migration steps are like this:
|
|||||||
|
|
||||||
### Migrate your data from Synapse to Matrix Authentication Service using syn2mas
|
### Migrate your data from Synapse to Matrix Authentication Service using syn2mas
|
||||||
|
|
||||||
We **don't** ask you to [run the `syn2mas` migration advisor command](https://element-hq.github.io/matrix-authentication-service/setup/migration.html#run-the-migration-advisor), because it only gives you the green light if your Synapse configuration (`homeserver.yaml`) is configured in a way that's compatible with MAS (delegating authentication to MAS; disabling Synapse's password config; etc.). Until we migrate your data with the `syn2mas` tool, we intentionally avoid doing these changes to allow existing user sessions to work.
|
You can invoke the `syn2mas` tool via the playbook by running the playbook's `matrix-authentication-service-mas-cli-syn2mas` tag. We recommend first doing a [dry-run](#performing-a-syn2mas-dry-run) and then a [real migration](#performing-a-real-syn2mas-migration).
|
||||||
|
|
||||||
You can invoke the `syn2mas` tool via the playbook by running the playbook's `matrix-authentication-service-syn2mas` tag. We recommend first doing a [dry-run](#performing-a-syn2mas-dry-run) and then a [real migration](#performing-a-real-syn2mas-migration).
|
|
||||||
|
|
||||||
#### Configuring syn2mas
|
#### Configuring syn2mas
|
||||||
|
|
||||||
@@ -356,26 +360,9 @@ When you're done with potentially configuring `syn2mas`, proceed to doing a [dry
|
|||||||
|
|
||||||
##### Configuring upstream OIDC provider mapping for syn2mas
|
##### Configuring upstream OIDC provider mapping for syn2mas
|
||||||
|
|
||||||
If you have existing OIDC users in your Synapse user database (which will be the case if when using [OIDC with Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on)), you may need to pass an additional `--upstreamProviderMapping` argument to the `syn2mas` tool to tell it which provider (on the Synapse side) maps to which other provider on the MAS side.
|
Since Matrix Authentication Service v0.16.0 (which replaced the standalone `syn2mas` tool with a `mas-cli syn2mas` sub-command), OIDC configuration (mapping from your old OIDC configuration to your new one, etc) is meant to be configured in the Matrix Authentication Service configuration (via `matrix_authentication_service_config_upstream_oauth2_providers`) as a `synapse_idp_id` property for each provider.
|
||||||
|
|
||||||
If you don't do this, `syn2mas` would report errors like this one:
|
You can refer to the [Map any upstream SSO providers](https://element-hq.github.io/matrix-authentication-service/setup/migration.html#map-any-upstream-sso-providers) section of the MAS documentation for figuring out how to set the `synapse_idp_id` value in `matrix_authentication_service_config_upstream_oauth2_providers` correctly.
|
||||||
|
|
||||||
> [FATAL] migrate - [Failed to import external id 4264b0f0-4f11-4ddd-aedb-b500e4d07c25 with oidc-keycloak for user @alice:example.com: Error: Unknown upstream provider oidc-keycloak]
|
|
||||||
|
|
||||||
Below is an example situation and a guide for how to solve it.
|
|
||||||
|
|
||||||
If in `matrix_synapse_oidc_providers` your provider `idp_id` is (was) named `keycloak`, in the Synapse database users would be associated with the `oidc-keycloak` provider (note the `oidc-` prefix that was added automatically by Synapse to your `idp_id` value).
|
|
||||||
|
|
||||||
The same OIDC provider may have an `id` of `01HFVBY12TMNTYTBV8W921M5FA` on the MAS side, as defined in `matrix_authentication_service_config_upstream_oauth2_providers` (see the [Upstream OAuth2 configuration](#upstream-oauth2-configuration) section above).
|
|
||||||
|
|
||||||
To tell `syn2mas` how the Synapse-configured OIDC provider maps to the new MAS-configured OIDC provider, add this additional configuration to your `vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# Adjust the mapping below to match your provider IDs on the Synapse side and the MAS side.
|
|
||||||
# Don't forget that Synapse automatically adds an `oidc-` prefix to provider ids defined in its configuration.
|
|
||||||
matrix_authentication_service_syn2mas_process_extra_arguments:
|
|
||||||
- "--upstreamProviderMapping oidc-keycloak:01HFVBY12TMNTYTBV8W921M5FA"
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Performing a syn2mas dry-run
|
#### Performing a syn2mas dry-run
|
||||||
|
|
||||||
@@ -386,7 +373,7 @@ A dry-run would not cause downtime, because it avoids stopping Synapse.
|
|||||||
To perform a dry-run, run:
|
To perform a dry-run, run:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
just run-tags matrix-authentication-service-syn2mas -e matrix_authentication_service_syn2mas_dry_run=true
|
just run-tags matrix-authentication-service-mas-cli-syn2mas -e matrix_authentication_service_syn2mas_migrate_dry_run=true
|
||||||
```
|
```
|
||||||
|
|
||||||
Observe the command output (especially the last line of the the syn2mas output). If you are confident that the migration will work out as expected, you can proceed with a [real migration](#performing-a-real-syn2mas-migration).
|
Observe the command output (especially the last line of the the syn2mas output). If you are confident that the migration will work out as expected, you can proceed with a [real migration](#performing-a-real-syn2mas-migration).
|
||||||
@@ -405,13 +392,13 @@ Before performing a real migration make sure:
|
|||||||
|
|
||||||
- you've performed a [syn2mas dry-run](#performing-a-syn2mas-dry-run) and don't see any issues in its output
|
- you've performed a [syn2mas dry-run](#performing-a-syn2mas-dry-run) and don't see any issues in its output
|
||||||
|
|
||||||
To perform a real migration, run the `matrix-authentication-service-syn2mas` tag **without** the `matrix_authentication_service_syn2mas_dry_run` variable:
|
To perform a real migration, run the `matrix-authentication-service-mas-cli-syn2mas` tag **without** the `matrix_authentication_service_syn2mas_migrate_dry_run` variable:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
just run-tags matrix-authentication-service-syn2mas
|
just run-tags matrix-authentication-service-mas-cli-syn2mas
|
||||||
```
|
```
|
||||||
|
|
||||||
Having performed a `syn2mas` migration once, trying to do it again will report errors for users that were already migrated (e.g. "Error: Unknown upstream provider oauth-delegated").
|
Having performed a `syn2mas` migration once, trying to do it again will report errors (e.g. "Error: The MAS database is not empty: rows found in at least `users`. Please drop and recreate the database, then try again.").
|
||||||
|
|
||||||
## Verify that Matrix Authentication Service is installed correctly
|
## Verify that Matrix Authentication Service is installed correctly
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
|||||||
|
|
||||||
The playbook can install and configure [matrix-corporal](https://github.com/devture/matrix-corporal) for you.
|
The playbook can install and configure [matrix-corporal](https://github.com/devture/matrix-corporal) for you.
|
||||||
|
|
||||||
In short, it's a sort of automation and firewalling service, which is helpful if you're instaling Matrix services in a controlled corporate environment.
|
In short, it's a sort of automation and firewalling service, which is helpful if you're installing Matrix services in a controlled corporate environment.
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/devture/matrix-corporal/blob/main/README.md) to learn what it does and why it might be useful to you.
|
See the project's [documentation](https://github.com/devture/matrix-corporal/blob/main/README.md) to learn what it does and why it might be useful to you.
|
||||||
|
|
||||||
|
|||||||
@@ -24,8 +24,21 @@ To enable matrix-media-repo, add the following configuration to your `inventory/
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_media_repo_enabled: true
|
matrix_media_repo_enabled: true
|
||||||
|
|
||||||
|
# Any unique alphanumeric string. Cannot be changed after first use.
|
||||||
|
# For new installations, generate one with: pwgen -s 64 1
|
||||||
|
# For existing installations, see below.
|
||||||
|
matrix_media_repo_datastore_file_id: "CHANGE_ME_TO_A_UNIQUE_VALUE"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**For existing installations**: retrieve the current datastore ID from the server's config file before proceeding:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
grep 'id:' /matrix/media-repo/config/media-repo.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
Then use that value for `matrix_media_repo_datastore_file_id`. This is not a secret — it is a plain identifier used by matrix-media-repo to link media files to their storage backend.
|
||||||
|
|
||||||
By default, the media-repo will use the local filesystem for data storage. You can alternatively use a `s3` cloud backend as well. Access token caching is also enabled by default since the logout endpoints are proxied through the media repo.
|
By default, the media-repo will use the local filesystem for data storage. You can alternatively use a `s3` cloud backend as well. Access token caching is also enabled by default since the logout endpoints are proxied through the media repo.
|
||||||
|
|
||||||
### Enable metrics
|
### Enable metrics
|
||||||
@@ -60,7 +73,7 @@ To `matrix_media_repo_container_labels_traefik_metrics_middleware_basic_auth_use
|
|||||||
|
|
||||||
#### Enable Grafana (optional)
|
#### Enable Grafana (optional)
|
||||||
|
|
||||||
Probably you wish to enable Grafana along with Prometheus for generating graphs of the metics.
|
Probably you wish to enable Grafana along with Prometheus for generating graphs of the metrics.
|
||||||
|
|
||||||
To enable Grafana, see [this section](configuring-playbook-prometheus-grafana.md#adjusting-the-playbook-configuration-grafana) for instructions.
|
To enable Grafana, see [this section](configuring-playbook-prometheus-grafana.md#adjusting-the-playbook-configuration-grafana) for instructions.
|
||||||
|
|
||||||
@@ -109,6 +122,11 @@ matrix_media_repo_admins: []
|
|||||||
matrix_media_repo_datastore_file_for_kinds: ["thumbnails", "remote_media", "local_media", "archives"]
|
matrix_media_repo_datastore_file_for_kinds: ["thumbnails", "remote_media", "local_media", "archives"]
|
||||||
matrix_media_repo_datastore_s3_for_kinds: []
|
matrix_media_repo_datastore_s3_for_kinds: []
|
||||||
|
|
||||||
|
# Required when S3 storage is enabled (matrix_media_repo_datastore_s3_for_kinds is non-empty).
|
||||||
|
# Any unique alphanumeric string. Cannot be changed after first use.
|
||||||
|
# For new installations, generate one with: pwgen -s 64 1
|
||||||
|
# matrix_media_repo_datastore_s3_id: ""
|
||||||
|
|
||||||
# The s3 uploader needs a temporary location to buffer files to reduce memory usage on
|
# The s3 uploader needs a temporary location to buffer files to reduce memory usage on
|
||||||
# small file uploads. If the file size is unknown, the file is written to this location
|
# small file uploads. If the file size is unknown, the file is written to this location
|
||||||
# before being uploaded to s3 (then the file is deleted). If you aren't concerned about
|
# before being uploaded to s3 (then the file is deleted). If you aren't concerned about
|
||||||
|
|||||||
58
docs/configuring-playbook-matrix-rtc.md
Normal file
58
docs/configuring-playbook-matrix-rtc.md
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2024 wjbeckett
|
||||||
|
SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
-->
|
||||||
|
|
||||||
|
# Setting up the Matrix RTC stack (optional)
|
||||||
|
|
||||||
|
The playbook can install and configure the Matrix RTC (Real-Time Communication) stack.
|
||||||
|
|
||||||
|
The Matrix RTC stack is a set of supporting components ([LiveKit Server](configuring-playbook-livekit-server.md) and [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md)) that allow the new [Element Call](configuring-playbook-element-call.md) audio/video calls to function.
|
||||||
|
|
||||||
|
💡 If you only plan on doing audio/video calls via Matrix client (which typically embed the Element Call frontend UI within them), you only need to install the Matrix RTC stack and don't necessarily need to install [Element Call](configuring-playbook-element-call.md). See the [Decide between Element Call vs just the Matrix RTC stack](configuring-playbook-element-call.md#decide-between-element-call-vs-just-the-matrix-rtc-stack) section of the [Element Call documentation](configuring-playbook-element-call.md) for more details.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- A [Synapse](configuring-playbook-synapse.md) homeserver (see the warning below)
|
||||||
|
- Various experimental features for the Synapse homeserver which Element Call [requires](https://github.com/element-hq/element-call/blob/93ae2aed9841e0b066d515c56bd4c122d2b591b2/docs/self-hosting.md#a-matrix-homeserver) (automatically done when Element Call is enabled)
|
||||||
|
- A [LiveKit Server](configuring-playbook-livekit-server.md) (automatically installed when [Element Call or the Matrix RTC stack is enabled](configuring-playbook-element-call.md#decide-between-element-call-vs-just-the-matrix-rtc-stack))
|
||||||
|
- The [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) (automatically installed when [Element Call or the Matrix RTC stack is enabled](configuring-playbook-element-call.md#decide-between-element-call-vs-just-the-matrix-rtc-stack))
|
||||||
|
- A client compatible with Element Call. As of 2025-03-15, that's just [Element Web](configuring-playbook-client-element-web.md) and the Element X mobile clients (iOS and Android).
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Because Element Call [requires](https://github.com/element-hq/element-call/blob/93ae2aed9841e0b066d515c56bd4c122d2b591b2/docs/self-hosting.md#a-matrix-homeserver) a few experimental features in the Matrix protocol, it's **very likely that it only works with the Synapse homeserver**.
|
||||||
|
|
||||||
|
## Adjusting the playbook configuration
|
||||||
|
|
||||||
|
Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Enable the Matrix RTC stack.
|
||||||
|
# This provides all supporting services for Element Call, without the Element Call frontend.
|
||||||
|
matrix_rtc_enabled: true
|
||||||
|
```
|
||||||
|
|
||||||
|
## Adjusting firewall rules
|
||||||
|
|
||||||
|
In addition to the HTTP/HTTPS ports (which you've already exposed as per the [prerequisites](prerequisites.md) document), you'll also need to open ports required by [LiveKit Server](configuring-playbook-livekit-server.md) as described in its own [Adjusting firewall rules](configuring-playbook-livekit-server.md#adjusting-firewall-rules) section.
|
||||||
|
|
||||||
|
## Installing
|
||||||
|
|
||||||
|
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records) and [adjusting firewall rules](#adjusting-firewall-rules), run the playbook with [playbook tags](playbook-tags.md) as below:
|
||||||
|
|
||||||
|
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
||||||
|
```sh
|
||||||
|
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
||||||
|
```
|
||||||
|
|
||||||
|
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
||||||
|
|
||||||
|
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Once installed, Matrix clients which support Element Call (like [Element Web](configuring-playbook-client-element-web.md) and Element X on mobile (iOS and Android)) will automatically use the Matrix RTC stack.
|
||||||
|
|
||||||
|
These clients typically embed the Element Call frontend UI within them, so installing [Element Call](configuring-playbook-element-call.md) is only necessary if you'd like to use it standalone - directly via a browser.
|
||||||
68
docs/configuring-playbook-matrixto.md
Normal file
68
docs/configuring-playbook-matrixto.md
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
-->
|
||||||
|
|
||||||
|
# Setting up Matrix.to (optional)
|
||||||
|
|
||||||
|
The playbook can install and configure the [Matrix.to](https://github.com/matrix-org/matrix.to) URL redirection service for you.
|
||||||
|
|
||||||
|
See the project's [documentation](https://github.com/matrix-org/matrix.to/blob/main/README.md) to learn what it does and why it might be useful to you.
|
||||||
|
|
||||||
|
## Adjusting DNS records
|
||||||
|
|
||||||
|
By default, this playbook installs Matrix.to on the `mt.` subdomain (`mt.example.com`) and requires you to create a CNAME record for `mt`, which targets `matrix.example.com`.
|
||||||
|
|
||||||
|
When setting, replace `example.com` with your own.
|
||||||
|
|
||||||
|
## Adjusting the playbook configuration
|
||||||
|
|
||||||
|
To enable Matrix.to, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
matrix_matrixto_enabled: true
|
||||||
|
```
|
||||||
|
|
||||||
|
### Adjusting the Matrix.to URL (optional)
|
||||||
|
|
||||||
|
By tweaking the `matrix_matrixto_hostname` variable, you can easily make the service available at a **different hostname** than the default one.
|
||||||
|
|
||||||
|
Example additional configuration for your `vars.yml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Change the default hostname
|
||||||
|
matrix_matrixto_hostname: t.example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
After changing the domain, **you may need to adjust your DNS** records to point the Matrix.to domain to the Matrix server.
|
||||||
|
|
||||||
|
### Extending the configuration
|
||||||
|
|
||||||
|
There are some additional things you may wish to configure about the server.
|
||||||
|
|
||||||
|
Take a look at:
|
||||||
|
|
||||||
|
- `roles/custom/matrix-matrixto/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
||||||
|
|
||||||
|
## Installing
|
||||||
|
|
||||||
|
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
|
||||||
|
|
||||||
|
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
||||||
|
```sh
|
||||||
|
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
||||||
|
```
|
||||||
|
|
||||||
|
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
||||||
|
|
||||||
|
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Refer to the project's [documentation](https://github.com/matrix-org/matrix.to/blob/main/README.md) for available parameters, etc.
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-matrixto`.
|
||||||
@@ -115,7 +115,7 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
To receive push notifications with UnifiedPush from the ntfy server, you need to **install [the ntfy Android app](https://docs.ntfy.sh/subscribe/phone/)** which works as the Distrubutor, **log in to the account on the ntfy app** if you have enabled the access control, and then **configure a UnifiedPush-compatible Matrix client**. After setting up the ntfy Android app, the Matrix client listens to it, and push notitications are "distributed" from it.
|
To receive push notifications with UnifiedPush from the ntfy server, you need to **install [the ntfy Android app](https://docs.ntfy.sh/subscribe/phone/)** which works as the Distributor, **log in to the account on the ntfy app** if you have enabled the access control, and then **configure a UnifiedPush-compatible Matrix client**. After setting up the ntfy Android app, the Matrix client listens to it, and push notifications are "distributed" from it.
|
||||||
|
|
||||||
For details about installing and configuring the ntfy Android app, take a look at [this section](https://github.com/mother-of-all-self-hosting/ansible-role-ntfy/blob/main/docs/configuring-ntfy.md#install-the-ntfy-androidios-app) on the role's documentation.
|
For details about installing and configuring the ntfy Android app, take a look at [this section](https://github.com/mother-of-all-self-hosting/ansible-role-ntfy/blob/main/docs/configuring-ntfy.md#install-the-ntfy-androidios-app) on the role's documentation.
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ matrix_playbook_reverse_proxy_type: other-traefik-container
|
|||||||
# Adjust to point to your Traefik container
|
# Adjust to point to your Traefik container
|
||||||
matrix_playbook_reverse_proxy_hostname: name-of-your-traefik-container
|
matrix_playbook_reverse_proxy_hostname: name-of-your-traefik-container
|
||||||
|
|
||||||
traefik_certs_dumper_ssl_dir_path: "/path/to/your/traefiks/acme.json/directory"
|
traefik_certs_dumper_ssl_path: "/path/to/your/traefiks/acme.json/directory"
|
||||||
|
|
||||||
# Uncomment and adjust the variable below if the name of your federation entrypoint is different
|
# Uncomment and adjust the variable below if the name of your federation entrypoint is different
|
||||||
# than the default value (matrix-federation).
|
# than the default value (matrix-federation).
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ See the project's [documentation](https://github.com/martin-helmich/prometheus-n
|
|||||||
To enable it, add the following configuration to your `vars.yml` file:
|
To enable it, add the following configuration to your `vars.yml` file:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_prometheus_nginxlog_exporter_enabled: true
|
prometheus_nginxlog_exporter_enabled: true
|
||||||
```
|
```
|
||||||
|
|
||||||
If you enable Grafana, a dedicated `NGINX PROXY` Grafana dashboard will be created.
|
If you enable Grafana, a dedicated `NGINX PROXY` Grafana dashboard will be created.
|
||||||
@@ -95,8 +95,8 @@ If you enable Grafana, a dedicated `NGINX PROXY` Grafana dashboard will be creat
|
|||||||
At the moment of writing only images for `amd64` and `arm64` architectures are available. The playbook currently does not support [self-building](./self-building.md) a container image on other architectures. You can however use a custom-build image by setting:
|
At the moment of writing only images for `amd64` and `arm64` architectures are available. The playbook currently does not support [self-building](./self-building.md) a container image on other architectures. You can however use a custom-build image by setting:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_prometheus_nginxlog_exporter_docker_image_arch_check_enabled: false
|
prometheus_nginxlog_exporter_container_image_arch_check_enabled: false
|
||||||
matrix_prometheus_nginxlog_exporter_docker_image: path/to/docker/image:tag
|
prometheus_nginxlog_exporter_container_image: path/to/docker/image:tag
|
||||||
```
|
```
|
||||||
|
|
||||||
### Extending the configuration
|
### Extending the configuration
|
||||||
@@ -106,7 +106,7 @@ There are some additional things you may wish to configure about Prometheus and
|
|||||||
Take a look at:
|
Take a look at:
|
||||||
|
|
||||||
- [Prometheus role](https://github.com/mother-of-all-self-hosting/ansible-role-prometheus)'s [`defaults/main.yml`](https://github.com/mother-of-all-self-hosting/ansible-role-prometheus/blob/main/defaults/main.yml) for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `prometheus_configuration_extension_yaml` variable
|
- [Prometheus role](https://github.com/mother-of-all-self-hosting/ansible-role-prometheus)'s [`defaults/main.yml`](https://github.com/mother-of-all-self-hosting/ansible-role-prometheus/blob/main/defaults/main.yml) for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `prometheus_configuration_extension_yaml` variable
|
||||||
- `roles/custom/matrix-prometheus-nginxlog-exporter/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
- `roles/galaxy/prometheus_nginxlog_exporter/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
||||||
|
|
||||||
## Adjusting the playbook configuration — Grafana
|
## Adjusting the playbook configuration — Grafana
|
||||||
|
|
||||||
@@ -178,11 +178,11 @@ Name | Description
|
|||||||
`matrix_metrics_exposure_http_basic_auth_enabled`|Set this to `true` to protect all `https://matrix.example.com/metrics/*` endpoints with [Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) (see the other variables below for supplying the actual credentials).
|
`matrix_metrics_exposure_http_basic_auth_enabled`|Set this to `true` to protect all `https://matrix.example.com/metrics/*` endpoints with [Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) (see the other variables below for supplying the actual credentials).
|
||||||
`matrix_metrics_exposure_http_basic_auth_users`|Set this to the Basic Authentication credentials (raw `htpasswd` file content) used to protect `/metrics/*`. This htpasswd-file needs to be generated with the `htpasswd` tool and can include multiple username/password pairs.
|
`matrix_metrics_exposure_http_basic_auth_users`|Set this to the Basic Authentication credentials (raw `htpasswd` file content) used to protect `/metrics/*`. This htpasswd-file needs to be generated with the `htpasswd` tool and can include multiple username/password pairs.
|
||||||
`prometheus_node_exporter_enabled`|Set this to `true` to enable the node (general system stats) exporter (locally, on the container network).
|
`prometheus_node_exporter_enabled`|Set this to `true` to enable the node (general system stats) exporter (locally, on the container network).
|
||||||
`prometheus_node_exporter_container_labels_traefik_enabled`|Set this to `true` to expose the node (general system stats) metrics on `https://matrix.example.com/metrics/node-exporter`.
|
`prometheus_node_exporter_container_labels_metrics_enabled`|Set this to `true` to expose the node (general system stats) metrics on `https://matrix.example.com/metrics/node-exporter`.
|
||||||
`prometheus_postgres_exporter_enabled`|Set this to `true` to enable the [Postgres exporter](#enable-metrics-and-graphs-for-postgres-optional) (locally, on the container network).
|
`prometheus_postgres_exporter_enabled`|Set this to `true` to enable the [Postgres exporter](#enable-metrics-and-graphs-for-postgres-optional) (locally, on the container network).
|
||||||
`prometheus_postgres_exporter_container_labels_traefik_enabled`|Set this to `true` to expose the [Postgres exporter](#enable-metrics-and-graphs-for-postgres-optional) metrics on `https://matrix.example.com/metrics/postgres-exporter`.
|
`prometheus_postgres_exporter_container_labels_metrics_enabled`|Set this to `true` to expose the [Postgres exporter](#enable-metrics-and-graphs-for-postgres-optional) metrics on `https://matrix.example.com/metrics/postgres-exporter`.
|
||||||
`matrix_prometheus_nginxlog_exporter_enabled`|Set this to `true` to enable the [nginx Log exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) (locally, on the container network).
|
`prometheus_nginxlog_exporter_enabled`|Set this to `true` to enable the [prometheus-nginxlog-exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) (locally, on the container network).
|
||||||
`matrix_prometheus_nginxlog_exporter_metrics_proxying_enabled`|Set this to `true` to expose the [nginx Log exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) metrics on `https://matrix.example.com/metrics/nginxlog`.
|
`prometheus_nginxlog_exporter_container_labels_metrics_enabled`|Set this to `true` to expose the [prometheus-nginxlog-exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) metrics on `https://matrix.example.com/metrics/nginxlog`.
|
||||||
|
|
||||||
### Expose metrics of other services/roles
|
### Expose metrics of other services/roles
|
||||||
|
|
||||||
@@ -258,4 +258,4 @@ As with all other services, you can find the logs in [systemd-journald](https://
|
|||||||
- [The Prometheus scraping rules](https://github.com/element-hq/synapse/tree/master/contrib/prometheus) (we use v2)
|
- [The Prometheus scraping rules](https://github.com/element-hq/synapse/tree/master/contrib/prometheus) (we use v2)
|
||||||
- [The Synapse Grafana dashboard](https://github.com/element-hq/synapse/tree/master/contrib/grafana)
|
- [The Synapse Grafana dashboard](https://github.com/element-hq/synapse/tree/master/contrib/grafana)
|
||||||
- [The Node Exporter dashboard](https://github.com/rfrail3/grafana-dashboards) (for generic non-synapse performance graphs)
|
- [The Node Exporter dashboard](https://github.com/rfrail3/grafana-dashboards) (for generic non-synapse performance graphs)
|
||||||
- [The PostgresSQL dashboard](https://grafana.com/grafana/dashboards/9628) (generic Postgres dashboard)
|
- [The PostgreSQL dashboard](https://grafana.com/grafana/dashboards/9628) (generic Postgres dashboard)
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ Add the following configuration to your `inventory/host_vars/matrix.example.com/
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_synapse_ext_password_provider_rest_auth_enabled: true
|
matrix_synapse_ext_password_provider_rest_auth_enabled: true
|
||||||
matrix_synapse_ext_password_provider_rest_auth_endpoint: "http://matrix-ma1sd:8090"
|
matrix_synapse_ext_password_provider_rest_auth_endpoint: SET_YOUR_ENDPOINT_HERE
|
||||||
matrix_synapse_ext_password_provider_rest_auth_registration_enforce_lowercase: false
|
matrix_synapse_ext_password_provider_rest_auth_registration_enforce_lowercase: false
|
||||||
matrix_synapse_ext_password_provider_rest_auth_registration_profile_name_autofill: true
|
matrix_synapse_ext_password_provider_rest_auth_registration_profile_name_autofill: true
|
||||||
matrix_synapse_ext_password_provider_rest_auth_login_profile_name_autofill: false
|
matrix_synapse_ext_password_provider_rest_auth_login_profile_name_autofill: false
|
||||||
@@ -47,9 +47,4 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
### Use ma1sd Identity Server for the backend (not recommended)
|
This module does not provide direct integration with any backend. Please prepare one by yourself for it.
|
||||||
|
|
||||||
This module does not provide direct integration with any backend. For the backend you can use [ma1sd](https://github.com/ma1uta/ma1sd) Identity Server, which can be configured with the playbook.
|
|
||||||
|
|
||||||
> [!WARNING]
|
|
||||||
> We recommend not bothering with installing ma1sd as it has been unmaintained for years. If you wish to install it anyway, consult the [ma1sd Identity Server configuration](configuring-playbook-ma1sd.md).
|
|
||||||
|
|||||||
@@ -22,13 +22,11 @@ Finally, [set up S3 storage for Synapse](#setting-up) (with [Goofys](configuring
|
|||||||
|
|
||||||
## Choosing an Object Storage provider
|
## Choosing an Object Storage provider
|
||||||
|
|
||||||
You can create [Amazon S3](https://aws.amazon.com/s3/) or another S3-compatible object storage like [Backblaze B2](https://www.backblaze.com/b2/cloud-storage.html), [Storj](https://storj.io), [Wasabi](https://wasabi.com), [Digital Ocean Spaces](https://www.digitalocean.com/products/spaces), etc.
|
You can create [Amazon S3](https://aws.amazon.com/s3/) or another S3-compatible object storage like [Backblaze B2](https://www.backblaze.com/b2/cloud-storage.html), [Wasabi](https://wasabi.com), [Digital Ocean Spaces](https://www.digitalocean.com/products/spaces), [Storj](https://storj.io), etc.
|
||||||
|
|
||||||
Amazon S3, Backblaze B2, and Storj are pay-as-you with no minimum charges for storing too little data.
|
Amazon S3 and Backblaze B2 are pay-as-you with no minimum charges for storing too little data. Note that Backblaze egress is free, but for only certain users for up to 3x the amount of data stored. Beyond that you will pay $0.01/GB of egress.
|
||||||
|
|
||||||
All these providers have different prices, with Storj appearing to be the cheapest (as of 2024-10, storage fee is $0.004 per GB/month, and egress fee is $0.007 per GB; check actual pricing [here](https://storj.dev/dcs/pricing)). Backblaze egress is free, but for only certain users for up to 3x the amount of data stored. Beyond that you will pay $0.01/GB of egress.
|
Wasabi has a minimum charge of 1TB if you're storing less than 1TB, which becomes expensive if you need to store less data than that. Likewise, Digital Ocean Spaces has also a minimum charge of 250GB ($5/month as of 2022-10). Though Storj does not set minimum amount of data to be stored, it also charges $5 minimum monthly usage fee since July 1, 2025, if your monthly usage (storage, bandwidth, and segments) totals less than $5.
|
||||||
|
|
||||||
Wasabi has a minimum charge of 1TB if you're storing less than 1TB, which becomes expensive if you need to store less data than that. Likewise, Digital Ocean Spaces has also a minimum charge of 250GB ($5/month as of 2022-10).
|
|
||||||
|
|
||||||
Here are some of the important aspects of choosing the right provider:
|
Here are some of the important aspects of choosing the right provider:
|
||||||
|
|
||||||
|
|||||||
@@ -1,95 +1,32 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
|
SPDX-FileCopyrightText: 2019-2025 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
||||||
|
SPDX-FileCopyrightText: 2021, 2024 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
SPDX-FileCopyrightText: 2023 Justin Croonenberghs
|
SPDX-FileCopyrightText: 2023 Justin Croonenberghs
|
||||||
SPDX-FileCopyrightText: 2023 Kuba Orlik
|
SPDX-FileCopyrightText: 2023 Kuba Orlik
|
||||||
SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty
|
SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty
|
||||||
SPDX-FileCopyrightText: 2023 Samuel Meenzen
|
SPDX-FileCopyrightText: 2023 Samuel Meenzen
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
|
||||||
SPDX-FileCopyrightText: 2024 Fabio Bonelli
|
SPDX-FileCopyrightText: 2024 Fabio Bonelli
|
||||||
SPDX-FileCopyrightText: 2024 MDAD project contributors
|
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up the Sliding Sync proxy (optional)
|
# Setting up the Sliding Sync proxy (optional, removed)
|
||||||
|
|
||||||
**Note**: The sliding-sync proxy is **not required** anymore as it's been replaced with a different method (called Simplified Sliding Sync) which is integrated into newer homeservers by default (**Conduit** homeserver from version `0.6.0` or **Synapse** from version `1.114`). This component and documentation remain here for historical purposes, but **installing this old sliding-sync proxy is generally not recommended anymore**.
|
🪦 The playbook used to be able to install and configure the [sliding-sync](https://github.com/matrix-org/sliding-sync) proxy, but no longer includes this component, as it's been replaced with a different method (called Simplified Sliding Sync) integrated to newer homeservers by default (**Conduit** homeserver from version `0.6.0` or **Synapse** from version `1.114`).
|
||||||
|
|
||||||
The playbook can install and configure [sliding-sync](https://github.com/matrix-org/sliding-sync) proxy for you.
|
## Uninstalling the proxy manually
|
||||||
|
|
||||||
Sliding Sync is an implementation of [MSC3575](https://github.com/matrix-org/matrix-spec-proposals/blob/kegan/sync-v3/proposals/3575-sync.md) and a prerequisite for running Element X clients ([Element X iOS](https://github.com/element-hq/element-x-ios) and [Element X Android](https://github.com/element-hq/element-x-android)). See the project's [documentation](https://github.com/matrix-org/sliding-sync) to learn more.
|
If you still have the Sliding Sync proxy installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
|
||||||
|
|
||||||
## Adjusting DNS records (optional)
|
|
||||||
|
|
||||||
By default, this playbook installs the Sliding Sync proxy on the `matrix.` subdomain, at the `/sliding-sync` path (https://matrix.example.com/sliding-sync). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section.
|
|
||||||
|
|
||||||
If you wish to adjust it, see the section [below](#adjusting-the-sliding-sync-proxy-url-optional) for details about DNS configuration.
|
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
|
||||||
|
|
||||||
To enable Sliding Sync proxy, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_sliding_sync_enabled: true
|
|
||||||
```
|
|
||||||
|
|
||||||
### Adjusting the Sliding Sync proxy URL (optional)
|
|
||||||
|
|
||||||
By tweaking the `matrix_sliding_sync_hostname` and `matrix_sliding_sync_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
|
|
||||||
|
|
||||||
Example additional configuration for your `vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# Change the default hostname and path prefix
|
|
||||||
matrix_sliding_sync_hostname: ss.example.com
|
|
||||||
matrix_sliding_sync_path_prefix: /
|
|
||||||
```
|
|
||||||
|
|
||||||
If you've changed the default hostname, you may need to create a CNAME record for the Sliding Sync proxy domain (`ss.example.com`), which targets `matrix.example.com`.
|
|
||||||
|
|
||||||
When setting, replace `example.com` with your own.
|
|
||||||
|
|
||||||
### Extending the configuration
|
|
||||||
|
|
||||||
There are some additional things you may wish to configure about the component.
|
|
||||||
|
|
||||||
Take a look at:
|
|
||||||
|
|
||||||
- `roles/custom/matrix-sliding-sync/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
|
|
||||||
|
|
||||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
|
||||||
```sh
|
```sh
|
||||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
systemctl disable --now matrix-sliding-sync.service
|
||||||
|
|
||||||
|
rm -rf /matrix/sliding-sync
|
||||||
|
|
||||||
|
/matrix/postgres/bin/cli-non-interactive -c 'DROP DATABASE matrix_sliding_sync;'
|
||||||
```
|
```
|
||||||
|
|
||||||
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
|
||||||
|
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
|
||||||
|
|
||||||
### External databases
|
|
||||||
|
|
||||||
Please note that, if your setup utilizes an external database, you must also establish configuration for the sliding sync proxy. Alter the defaults below to suit your configuration:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_sliding_sync_database_username: 'matrix_sliding_sync'
|
|
||||||
matrix_sliding_sync_database_password: ''
|
|
||||||
matrix_sliding_sync_database_hostname: ''
|
|
||||||
matrix_sliding_sync_database_port: 5432
|
|
||||||
matrix_sliding_sync_database_name: 'matrix_sliding_sync'
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
You **don't need to do anything special** to make use of the Sliding Sync proxy. Simply open your client which supports Sliding Sync (like Element X) and log in.
|
|
||||||
|
|
||||||
When the Sliding Sync proxy is [installed](#installing), your `/.well-known/matrix/client` file is also updated. A new `org.matrix.msc3575.proxy` section and `url` property are added there and made to point to your Sliding Sync proxy's base URL (e.g. `https://matrix.example.com/sliding-sync`).
|
|
||||||
|
|
||||||
This allows clients which support Sliding Sync to detect the Sliding Sync proxy's URL and make use of it.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-sliding-sync`.
|
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ By default, the playbook retrieves and automatically renews free SSL certificate
|
|||||||
|
|
||||||
**Notes**:
|
**Notes**:
|
||||||
- This guide is intended to be referred for configuring the integrated Traefik server with regard to SSL certificates retrieval. If you're using [your own webserver](configuring-playbook-own-webserver.md), consult its documentation about how to configure it.
|
- This guide is intended to be referred for configuring the integrated Traefik server with regard to SSL certificates retrieval. If you're using [your own webserver](configuring-playbook-own-webserver.md), consult its documentation about how to configure it.
|
||||||
- Let's Encrypt ends the expiration notification email service on June 4, 2025 (see: [the official announcement](https://letsencrypt.org/2025/01/22/ending-expiration-emails/)), and it recommends using a third party service for those who want to receive expiriation notifications. If you are looking for a self-hosting service, you may be interested in a monitoring tool such as [Update Kuma](https://github.com/louislam/uptime-kuma/).
|
- Let's Encrypt ends the expiration notification email service on June 4, 2025 (see: [the official announcement](https://letsencrypt.org/2025/01/22/ending-expiration-emails/)), and it recommends using a third party service for those who want to receive expiration notifications. If you are looking for a self-hosting service, you may be interested in a monitoring tool such as [Update Kuma](https://github.com/louislam/uptime-kuma/).
|
||||||
|
|
||||||
The [Mother-of-All-Self-Hosting (MASH)](https://github.com/mother-of-all-self-hosting/mash-playbook) Ansible playbook can be used to install and manage an Uptime Kuma instance. See [this page](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/uptime-kuma.md) for the instruction to install it with the MASH playbook. If you are wondering how to use the MASH playbook for your Matrix server, refer [this page](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/setting-up-services-on-mdad-server.md).
|
The [Mother-of-All-Self-Hosting (MASH)](https://github.com/mother-of-all-self-hosting/mash-playbook) Ansible playbook can be used to install and manage an Uptime Kuma instance. See [this page](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/uptime-kuma.md) for the instruction to install it with the playbook. If you are wondering how to use it for your Matrix server, refer to [this page](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/setting-up-services-on-mdad-server.md) for the overview.
|
||||||
|
|
||||||
## Use staging Let's Encrypt certificates
|
## Use staging Let's Encrypt certificates
|
||||||
|
|
||||||
|
|||||||
@@ -49,8 +49,8 @@ aux_file_definitions:
|
|||||||
content
|
content
|
||||||
here
|
here
|
||||||
mode: '0600'
|
mode: '0600'
|
||||||
owner: "{{ matrix_user_username }}"
|
owner: "{{ matrix_user_name }}"
|
||||||
group: "{{ matrix_user_groupname }}"
|
group: "{{ matrix_group_name }}"
|
||||||
```
|
```
|
||||||
|
|
||||||
Configuring [GCM/FCM](https://firebase.google.com/docs/cloud-messaging/) is easier, as it only requires that you provide some config values.
|
Configuring [GCM/FCM](https://firebase.google.com/docs/cloud-messaging/) is easier, as it only requires that you provide some config values.
|
||||||
|
|||||||
@@ -1,22 +1,26 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2020 - 2024 MDAD project contributors
|
SPDX-FileCopyrightText: 2020-2024 MDAD project contributors
|
||||||
SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
|
SPDX-FileCopyrightText: 2020-2024 Slavi Pantaleev
|
||||||
SPDX-FileCopyrightText: 2021 Aaron Raimist
|
SPDX-FileCopyrightText: 2021 Aaron Raimist
|
||||||
SPDX-FileCopyrightText: 2023 Christian González
|
SPDX-FileCopyrightText: 2023 Christian González
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
|
||||||
SPDX-FileCopyrightText: 2024 Nikita Chernyi
|
SPDX-FileCopyrightText: 2024 Nikita Chernyi
|
||||||
SPDX-FileCopyrightText: 2024 Uğur İLTER
|
SPDX-FileCopyrightText: 2024 Uğur İLTER
|
||||||
|
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up Synapse Admin (optional)
|
# Setting up Synapse Admin (optional)
|
||||||
|
|
||||||
The playbook can install and configure [etkecc/synapse-admin](https://github.com/etkecc/synapse-admin) (a [feature-rich](https://github.com/etkecc/synapse-admin#fork-differences) fork of [Awesome-Technologies/synapse-admin](https://github.com/Awesome-Technologies/synapse-admin), community room: [#synapse-admin:etke.cc](https://matrix.to/#/#synapse-admin:etke.cc)) for you.
|
The playbook can install and configure Synapse Admin for you.
|
||||||
|
|
||||||
synapse-admin is a web UI tool you can use to **administrate users, rooms, media, etc. on your Matrix server**. It's designed to work with the Synapse homeserver implementation and WON'T work with Dendrite because [Dendrite Admin API](https://element-hq.github.io/dendrite/administration/adminapi) differs from [Synapse Admin API](https://element-hq.github.io/synapse/latest/usage/administration/admin_api/).
|
Synapse Admin is a web UI tool you can use to **administrate users, rooms, media, etc. on your Matrix homeserver**. This playbook is configured to install [etkecc/synapse-admin](https://github.com/etkecc/synapse-admin), which is a [feature-rich](https://github.com/etkecc/synapse-admin#fork-differences) fork of [Awesome-Technologies/synapse-admin](https://github.com/Awesome-Technologies/synapse-admin).
|
||||||
|
|
||||||
💡 **Note**: the latest version of synapse-admin is hosted by [etke.cc](https://etke.cc/) at [admin.etke.cc](https://admin.etke.cc/). If you only need this service occasionally and trust giving your admin credentials to a 3rd party Single Page Application, you can consider using it from there and avoiding the (small) overhead of self-hosting.
|
>[!NOTE]
|
||||||
|
>
|
||||||
|
> - Synapse Admin does not work with other homeserver implementations than Synapse due to API's incompatibility.
|
||||||
|
> - The latest version of Synapse Admin is hosted by [etke.cc](https://etke.cc/) at [admin.etke.cc](https://admin.etke.cc/). If you only need this service occasionally and trust giving your admin credentials to a 3rd party Single Page Application, you can consider using it from there and avoiding the (small) overhead of self-hosting.
|
||||||
|
> - This playbook also supports an alternative management UI in the shape of [Element Admin](./configuring-playbook-element-admin.md). Please note that it's currently less feature-rich than Synapse Admin and requires [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md).
|
||||||
|
|
||||||
## Adjusting DNS records (optional)
|
## Adjusting DNS records (optional)
|
||||||
|
|
||||||
@@ -39,9 +43,6 @@ matrix_synapse_admin_enabled: true
|
|||||||
|
|
||||||
By default, synapse-admin installation will be [restricted to only work with one homeserver](https://github.com/etkecc/synapse-admin/blob/e21e44362c879ac41f47c580b04210842b6ff3d7/README.md#restricting-available-homeserver) — the one managed by the playbook. To adjust these restrictions, tweak the `matrix_synapse_admin_config_restrictBaseUrl` variable.
|
By default, synapse-admin installation will be [restricted to only work with one homeserver](https://github.com/etkecc/synapse-admin/blob/e21e44362c879ac41f47c580b04210842b6ff3d7/README.md#restricting-available-homeserver) — the one managed by the playbook. To adjust these restrictions, tweak the `matrix_synapse_admin_config_restrictBaseUrl` variable.
|
||||||
|
|
||||||
> [!WARNING]
|
|
||||||
> If you're using [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) (MAS) for authentication, you will be able to [log into synapse-admin with an access token](https://github.com/etkecc/synapse-admin/pull/58), but certain synapse-admin features (especially those around user management) will be limited or not work at all.
|
|
||||||
|
|
||||||
### Adjusting the Synapse Admin URL (optional)
|
### Adjusting the Synapse Admin URL (optional)
|
||||||
|
|
||||||
By tweaking the `matrix_synapse_admin_hostname` and `matrix_synapse_admin_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
|
By tweaking the `matrix_synapse_admin_hostname` and `matrix_synapse_admin_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
|
||||||
@@ -88,3 +89,5 @@ To use Synapse Admin, you need to have [registered at least one administrator ac
|
|||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-synapse-admin`.
|
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-synapse-admin`.
|
||||||
|
|
||||||
|
If you have questions, you can join this community room and feel free to ask: [#synapse-admin:etke.cc](https://matrix.to/#/#synapse-admin:etke.cc)
|
||||||
|
|||||||
@@ -1,45 +1,26 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2024 MDAD project contributors
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
SPDX-FileCopyrightText: 2024 Slavi Pantaleev
|
SPDX-FileCopyrightText: 2019-2025 Slavi Pantaleev
|
||||||
SPDX-FileCopyrightText: 2024 Suguru Hirahara
|
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
||||||
|
SPDX-FileCopyrightText: 2021, 2024 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
|
SPDX-FileCopyrightText: 2023 Justin Croonenberghs
|
||||||
|
SPDX-FileCopyrightText: 2023 Kuba Orlik
|
||||||
|
SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty
|
||||||
|
SPDX-FileCopyrightText: 2023 Samuel Meenzen
|
||||||
|
SPDX-FileCopyrightText: 2024 Fabio Bonelli
|
||||||
|
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up Synapse Auto Invite Accept (optional)
|
# Setting up Synapse Auto Invite Accept (optional, removed)
|
||||||
|
|
||||||
The playbook can install and configure [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite) for you.
|
🪦 The playbook used to be able to install and configure [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite), but no longer includes this component, as the same functionality [has been integrated](https://github.com/element-hq/synapse/pull/17147) to Synapse since [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0).
|
||||||
|
|
||||||
In short, it automatically accepts room invites. You can specify that only 1:1 room invites are auto-accepted. Defaults to false if not specified.
|
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/matrix-org/synapse-auto-accept-invite/blob/main/README.md) to learn what it does and why it might be useful to you.
|
|
||||||
|
|
||||||
**Note**: Synapse [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0), the same feature [has been merged](https://github.com/element-hq/synapse/pull/17147) into Synapse (see the [Native alternative](#native-alternative) section below). You'd better use the native feature, instead of the [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite) 3rd party module.
|
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
|
||||||
|
|
||||||
If you decide that you'd like to let this playbook install the [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite module for you, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_synapse_ext_synapse_auto_accept_invite_enabled: true
|
|
||||||
|
|
||||||
matrix_synapse_ext_synapse_auto_accept_invite_accept_invites_only_direct_messages: true
|
|
||||||
```
|
|
||||||
|
|
||||||
### Synapse worker deployments
|
|
||||||
|
|
||||||
In a [workerized Synapse deployment](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/c9a842147e09647c355799ca024d65a5de66b099/docs/configuring-playbook-synapse.md#load-balancing-with-workers) it is possible to run this module on a worker to reduce the load on the main process (Default is `null`). For example, add this to your configuration:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_synapse_ext_synapse_auto_accept_invite_worker_to_run_on: 'matrix-synapse-worker-generic-0'
|
|
||||||
```
|
|
||||||
|
|
||||||
There might be an [issue with federation](https://github.com/matrix-org/synapse-auto-accept-invite/issues/18).
|
|
||||||
|
|
||||||
## Native alternative
|
## Native alternative
|
||||||
|
|
||||||
Since Synapse [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0), the functionality provided by the [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite) 3rd party module [has been made](https://github.com/element-hq/synapse/pull/17147) part of Synapse.
|
|
||||||
|
|
||||||
Here's example configuration for using the **native** Synapse feature:
|
Here's example configuration for using the **native** Synapse feature:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|||||||
@@ -177,6 +177,8 @@ By default, we periodically ensure that all local files are uploaded to S3 and a
|
|||||||
- … invoked via the `matrix-synapse-s3-storage-provider-migrate.service` service
|
- … invoked via the `matrix-synapse-s3-storage-provider-migrate.service` service
|
||||||
- … triggered by the `matrix-synapse-s3-storage-provider-migrate.timer` timer, every day at 05:00
|
- … triggered by the `matrix-synapse-s3-storage-provider-migrate.timer` timer, every day at 05:00
|
||||||
|
|
||||||
|
The same `migrate` script also prunes empty directories in the local media repository (`remote_content` and `remote_thumbnail`) after upload/delete operations.
|
||||||
|
|
||||||
So… you don't need to perform any maintenance yourself.
|
So… you don't need to perform any maintenance yourself.
|
||||||
|
|
||||||
The schedule is defined in the format of systemd timer calendar. To edit the schedule, add the following configuration to your `vars.yml` file (adapt to your needs):
|
The schedule is defined in the format of systemd timer calendar. To edit the schedule, add the following configuration to your `vars.yml` file (adapt to your needs):
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
|||||||
|
|
||||||
The playbook can install and configure [synapse-simple-antispam](https://github.com/t2bot/synapse-simple-antispam) for you.
|
The playbook can install and configure [synapse-simple-antispam](https://github.com/t2bot/synapse-simple-antispam) for you.
|
||||||
|
|
||||||
It lets you fight invite-spam by automatically blocking invitiations from a list of servers specified by you (blacklisting).
|
It lets you fight invite-spam by automatically blocking invitations from a list of servers specified by you (blacklisting).
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/t2bot/synapse-simple-antispam/blob/master/README.md) to learn what it does and why it might be useful to you.
|
See the project's [documentation](https://github.com/t2bot/synapse-simple-antispam/blob/master/README.md) to learn what it does and why it might be useful to you.
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ You may also consider [tweaking the number of workers of each type](#controlling
|
|||||||
|
|
||||||
##### Specialized workers
|
##### Specialized workers
|
||||||
|
|
||||||
The playbook now supports a smarter **specialized load-balancing** inspired by [Tom Foster](https://github.com/tcpipuk)'s [Synapse homeserver guide](https://tcpipuk.github.io/synapse/index.html). Instead of routing requests to one or more [generic workers](#generic-workers) based only on the requestor's IP adddress, specialized load-balancing routes to **4 different types of specialized workers** based on **smarter criteria** — the access token (username) of the requestor and/or on the resource (room, etc.) being requested.
|
The playbook now supports a smarter **specialized load-balancing** inspired by [Tom Foster](https://github.com/tcpipuk)'s [Synapse homeserver guide](https://tcpipuk.github.io/synapse/index.html). Instead of routing requests to one or more [generic workers](#generic-workers) based only on the requester's IP address, specialized load-balancing routes to **4 different types of specialized workers** based on **smarter criteria** — the access token (username) of the requester and/or on the resource (room, etc.) being requested.
|
||||||
|
|
||||||
The playbook supports these **4 types** of specialized workers:
|
The playbook supports these **4 types** of specialized workers:
|
||||||
|
|
||||||
@@ -76,10 +76,33 @@ The only thing you **cannot** do is mix [generic workers](#generic-workers) and
|
|||||||
|
|
||||||
When Synapse workers are enabled, the integrated [Postgres database is tuned](maintenance-postgres.md#tuning-postgresql), so that the maximum number of Postgres connections are increased from `200` to `500`. If you need to decrease or increase the number of maximum Postgres connections further, use the `postgres_max_connections` variable.
|
When Synapse workers are enabled, the integrated [Postgres database is tuned](maintenance-postgres.md#tuning-postgresql), so that the maximum number of Postgres connections are increased from `200` to `500`. If you need to decrease or increase the number of maximum Postgres connections further, use the `postgres_max_connections` variable.
|
||||||
|
|
||||||
A separate Ansible role (`matrix-synapse-reverse-proxy-companion`) and component handles load-balancing for workers. This role/component is automatically enabled when you enable workers. Make sure to use the `setup-all` tag (not `install-all`!) during the playbook's [installation](./installing.md) process, especially if you're disabling workers, so that components may be installed/uninstalled correctly.
|
The `matrix-synapse` role also manages the `matrix-synapse-reverse-proxy-companion` component for load-balancing with workers. This component is automatically enabled when you enable workers. Make sure to use the `setup-all` tag (not `install-all`!) during the playbook's [installation](./installing.md) process, especially if you're disabling workers, so that components may be installed/uninstalled correctly.
|
||||||
|
|
||||||
In case any problems occur, make sure to have a look at the [list of synapse issues about workers](https://github.com/element-hq/synapse/issues?q=workers+in%3Atitle) and your `journalctl --unit 'matrix-*'`.
|
In case any problems occur, make sure to have a look at the [list of synapse issues about workers](https://github.com/element-hq/synapse/issues?q=workers+in%3Atitle) and your `journalctl --unit 'matrix-*'`.
|
||||||
|
|
||||||
|
### Limit joining heavy rooms on constrained hosts
|
||||||
|
|
||||||
|
If your server is underpowered, joining heavy rooms can cause Synapse to consume a lot of resources and be unavailable for long (while it catches up).
|
||||||
|
|
||||||
|
To avoid this, Synapse can be configured to reject joins for remote rooms that are too complex before users enter them.
|
||||||
|
|
||||||
|
Complexity is computed as `current_state_events / 500` (Synapse state event count for current room state). When the resulting value is higher than `matrix_synapse_limit_remote_rooms_complexity` and `matrix_synapse_limit_remote_rooms_enabled` is `true`, Synapse blocks joining the room.
|
||||||
|
|
||||||
|
We recommend using this as a guardrail on low-resource servers:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
matrix_synapse_limit_remote_rooms_enabled: true
|
||||||
|
|
||||||
|
# Tweak as necessary
|
||||||
|
matrix_synapse_limit_remote_rooms_complexity: 1.0
|
||||||
|
|
||||||
|
# Uncomment and tweak if necessary
|
||||||
|
# matrix_synapse_limit_remote_rooms_complexity_error: "Your homeserver is unable to join rooms this large or complex. Please speak to your server administrator, or upgrade your instance to join this room."
|
||||||
|
|
||||||
|
# If you'd like your admins to be exempt from this limit, uncomment the line below
|
||||||
|
# matrix_synapse_limit_remote_rooms_admins_can_join: true
|
||||||
|
```
|
||||||
|
|
||||||
### Synapse + OpenID Connect for Single-Sign-On
|
### Synapse + OpenID Connect for Single-Sign-On
|
||||||
|
|
||||||
💡 An alternative to setting up OIDC in Synapse is to use [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) (MAS). Newer clients (like Element X) only support SSO-based authentication via MAS and not via the legacy Synapse OIDC setup described below. That said, MAS is still a new experimental service which comes with its own downsides. Consult its documentation to learn if it will be a good fit for your deployment.
|
💡 An alternative to setting up OIDC in Synapse is to use [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) (MAS). Newer clients (like Element X) only support SSO-based authentication via MAS and not via the legacy Synapse OIDC setup described below. That said, MAS is still a new experimental service which comes with its own downsides. Consult its documentation to learn if it will be a good fit for your deployment.
|
||||||
|
|||||||
@@ -1,39 +1,61 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev
|
SPDX-FileCopyrightText: 2018-2024 Slavi Pantaleev
|
||||||
|
SPDX-FileCopyrightText: 2020 Aaron Raimist
|
||||||
SPDX-FileCopyrightText: 2020 Christian Wolf
|
SPDX-FileCopyrightText: 2020 Christian Wolf
|
||||||
SPDX-FileCopyrightText: 2020 MDAD project contributors
|
|
||||||
SPDX-FileCopyrightText: 2020 Marcel Partap
|
SPDX-FileCopyrightText: 2020 Marcel Partap
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2020-2024 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2022 Alejo Diaz
|
||||||
|
SPDX-FileCopyrightText: 2022 Julian Foad
|
||||||
|
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Configuring a TURN server (optional, advanced)
|
# Configuring a TURN server (optional, advanced)
|
||||||
|
|
||||||
By default, this playbook installs and configures the [coturn](https://github.com/coturn/coturn) as a TURN server, through which clients can make audio/video calls even from [NAT](https://en.wikipedia.org/wiki/Network_address_translation)-ed networks. It also configures the Synapse chat server by default, so that it points to the coturn TURN server installed by the playbook. If that's okay, you can skip this document.
|
By default, the [coturn](https://github.com/coturn/coturn) TURN server component is enabled automatically only when [Jitsi](configuring-playbook-jitsi.md) is enabled. If you're not using Jitsi, coturn is not enabled by default.
|
||||||
|
|
||||||
If you'd like to stop the playbook installing the server, see the section [below](#disabling-coturn) to check the configuration for disabling it.
|
If you explicitly need coturn while not using Jitsi, enable it with:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
coturn_enabled: true
|
||||||
|
```
|
||||||
|
|
||||||
|
and configure its IP-related settings in the section below.
|
||||||
|
|
||||||
|
If you'd like coturn to stay disabled even when Jitsi is enabled, or if you prefer to use an external TURN provider, see [disabling coturn](#disabling-coturn) section below.
|
||||||
|
|
||||||
|
When Coturn is not enabled, homeservers (like Synapse) would not point to TURN servers and *legacy* audio/video call functionality may fail. If you're using [Matrix RTC](configuring-playbook-matrix-rtc.md) (for [Element Call](configuring-playbook-element-call.md)), you likely don't have a need to enable coturn.
|
||||||
|
|
||||||
|
## Adjusting firewall rules
|
||||||
|
|
||||||
|
To ensure Coturn functions correctly, the following firewall rules and port forwarding settings are required when coturn is enabled:
|
||||||
|
|
||||||
|
- `3478/tcp`: STUN/TURN over TCP
|
||||||
|
- `3478/udp`: STUN/TURN over UDP
|
||||||
|
- `5349/tcp`: TURN over TCP
|
||||||
|
- `5349/udp`: TURN over UDP
|
||||||
|
- `49152-49172/udp`: TURN/UDP relay range
|
||||||
|
|
||||||
|
If LiveKit's embedded TURN is enabled at the same time (for MatrixRTC/Element Call), keep the Coturn relay range distinct from LiveKit's relay range (`livekit_server_config_turn_relay_range_start`/`livekit_server_config_turn_relay_range_end`).
|
||||||
|
|
||||||
|
💡 Docker configures the server's internal firewall for you. In most cases, you don't need to do anything special on the host itself.
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
## Adjusting the playbook configuration
|
||||||
|
|
||||||
### Define public IP manually (optional)
|
### Define public IP manually (optional)
|
||||||
|
|
||||||
In the `hosts` file we explicitly ask for your server's external IP address when defining `ansible_host`, because the same value is used for configuring coturn.
|
If you enable coturn (either via Jitsi or manually), we recommend that you configure the public IP addresses of your server in the `vars.yml` file:
|
||||||
|
|
||||||
If you'd rather use a local IP for `ansible_host`, add the following configuration to your `vars.yml` file. Make sure to replace `YOUR_PUBLIC_IP` with the pubic IP used by the server.
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_coturn_turn_external_ip_address: "YOUR_PUBLIC_IP"
|
# You can define multiple IP addresses if your server has multiple external IP addresses
|
||||||
|
coturn_turn_external_ip_addresses: ["YOUR_PUBLIC_IP"]
|
||||||
```
|
```
|
||||||
|
|
||||||
If you'd like to rely on external IP address auto-detection (not recommended unless you need it), set an empty value to the variable. The playbook will automatically contact an [EchoIP](https://github.com/mpolden/echoip)-compatible service (`https://ifconfig.co/json` by default) to determine your server's IP address. This API endpoint is configurable via the `matrix_coturn_turn_external_ip_address_auto_detection_echoip_service_url` variable.
|
If you'd like to rely on external IP address auto-detection (not recommended unless you need it), avoid configuring this variable. The playbook will automatically contact an [echoip](https://github.com/mpolden/echoip)-compatible service (`https://ifconfig.co/json` by default) to determine your server's IP address. This API endpoint is configurable via the `coturn_turn_external_ip_address_auto_detection_echoip_service_url` variable.
|
||||||
|
|
||||||
If your server has multiple external IP addresses, the coturn role offers a different variable for specifying them:
|
>[!NOTE]
|
||||||
|
> You can self-host the echoip service by using the [Mother-of-All-Self-Hosting (MASH)](https://github.com/mother-of-all-self-hosting/mash-playbook) Ansible playbook. See [this page](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/echoip.md) for the instruction to install it with the playbook. If you are wondering how to use it for your Matrix server, refer to [this page](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/setting-up-services-on-mdad-server.md) for the overview.
|
||||||
```yaml
|
|
||||||
# Note: matrix_coturn_turn_external_ip_addresses is different than matrix_coturn_turn_external_ip_address
|
|
||||||
matrix_coturn_turn_external_ip_addresses: ['1.2.3.4', '4.5.6.7']
|
|
||||||
```
|
|
||||||
|
|
||||||
### Change the authentication mechanism (optional)
|
### Change the authentication mechanism (optional)
|
||||||
|
|
||||||
@@ -42,20 +64,37 @@ The playbook uses the [`auth-secret` authentication method](https://github.com/c
|
|||||||
To do so, add the following configuration to your `vars.yml` file:
|
To do so, add the following configuration to your `vars.yml` file:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_coturn_authentication_method: lt-cred-mech
|
coturn_authentication_method: lt-cred-mech
|
||||||
```
|
```
|
||||||
|
|
||||||
Regardless of the selected authentication method, the playbook generates secrets automatically and passes them to the homeserver and coturn.
|
Regardless of the selected authentication method, the playbook generates secrets automatically and passes them to the homeserver and coturn.
|
||||||
|
|
||||||
If [Jitsi](configuring-playbook-jitsi.md) is installed, note that switching to `lt-cred-mech` will disable the integration between Jitsi and your coturn server, as Jitsi seems to support the `auth-secret` authentication method only.
|
If [Jitsi](configuring-playbook-jitsi.md) is installed, note that switching to `lt-cred-mech` will disable the integration between Jitsi and your coturn server, as Jitsi seems to support the `auth-secret` authentication method only.
|
||||||
|
|
||||||
|
### Customize the Coturn hostname (optional)
|
||||||
|
|
||||||
|
By default, Coturn uses the same hostname as your Matrix homeserver (the value of `matrix_server_fqn_matrix`, which is typically `matrix.example.com`).
|
||||||
|
|
||||||
|
If you'd like to use a custom subdomain for Coturn (e.g., `turn.example.com` or `t.matrix.example.com`), add the following configuration to your `vars.yml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
coturn_hostname: turn.example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
The playbook will automatically:
|
||||||
|
- Configure Coturn to use this hostname
|
||||||
|
- Obtain an SSL certificate for the custom domain via Traefik
|
||||||
|
- Update all TURN URIs to point to the custom domain
|
||||||
|
|
||||||
|
**Note**: Make sure the custom hostname resolves to your server's IP address via DNS before running the playbook.
|
||||||
|
|
||||||
### Use your own external coturn server (optional)
|
### Use your own external coturn server (optional)
|
||||||
|
|
||||||
If you'd like to use another TURN server (be it coturn or some other one), add the following configuration to your `vars.yml` file. Make sure to replace `HOSTNAME_OR_IP` with your own.
|
If you'd like to use another TURN server (be it coturn or some other one), add the following configuration to your `vars.yml` file. Make sure to replace `HOSTNAME_OR_IP` with your own.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Disable integrated coturn server
|
# Disable integrated coturn server
|
||||||
matrix_coturn_enabled: false
|
coturn_enabled: false
|
||||||
|
|
||||||
# Point Synapse to your other coturn server
|
# Point Synapse to your other coturn server
|
||||||
matrix_synapse_turn_uris:
|
matrix_synapse_turn_uris:
|
||||||
@@ -76,15 +115,15 @@ You can put multiple host/port combinations if you'd like to.
|
|||||||
|
|
||||||
### Edit the reloading schedule (optional)
|
### Edit the reloading schedule (optional)
|
||||||
|
|
||||||
By default the service is reloaded on 6:30 a.m. every day based on the `matrix_coturn_reload_schedule` variable so that new SSL certificates can kick in. It is defined in the format of systemd timer calendar.
|
By default the service is reloaded on 6:30 a.m. every day based on the `coturn_reload_schedule` variable so that new SSL certificates can kick in. It is defined in the format of systemd timer calendar.
|
||||||
|
|
||||||
To edit the schedule, add the following configuration to your `vars.yml` file (adapt to your needs):
|
To edit the schedule, add the following configuration to your `vars.yml` file (adapt to your needs):
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_coturn_reload_schedule: "*-*-* 06:30:00"
|
coturn_reload_schedule: "*-*-* 06:30:00"
|
||||||
```
|
```
|
||||||
|
|
||||||
**Note**: the actual job may run with a delay. See `matrix_coturn_reload_schedule_randomized_delay_sec` for its default value.
|
**Note**: the actual job may run with a delay. See `coturn_reload_schedule_randomized_delay_sec` for its default value.
|
||||||
|
|
||||||
### Extending the configuration
|
### Extending the configuration
|
||||||
|
|
||||||
@@ -92,18 +131,18 @@ There are some additional things you may wish to configure about the TURN server
|
|||||||
|
|
||||||
Take a look at:
|
Take a look at:
|
||||||
|
|
||||||
- `roles/custom/matrix-coturn/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
- `roles/galaxy/coturn/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
||||||
|
|
||||||
## Disabling coturn
|
## Disabling coturn
|
||||||
|
|
||||||
If, for some reason, you'd like for the playbook to not install coturn (or to uninstall it if it was previously installed), add the following configuration to your `vars.yml` file:
|
Coturn is only enabled by default when [Jitsi](configuring-playbook-jitsi.md) is enabled. In most instances, you don't need to explicitly disable it.
|
||||||
|
|
||||||
|
To force the playbook to not install Coturn (even when Jitsi is enabled), add the following configuration to your `vars.yml` file:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_coturn_enabled: false
|
coturn_enabled: false
|
||||||
```
|
```
|
||||||
|
|
||||||
In that case, Synapse would not point to any coturn servers and audio/video call functionality may fail.
|
|
||||||
|
|
||||||
## Installing
|
## Installing
|
||||||
|
|
||||||
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ For a more custom setup, see the [Other configuration options](#other-configurat
|
|||||||
|
|
||||||
- [Configuring Conduit](configuring-playbook-conduit.md), if you've switched to the [Conduit](https://conduit.rs) homeserver implementation
|
- [Configuring Conduit](configuring-playbook-conduit.md), if you've switched to the [Conduit](https://conduit.rs) homeserver implementation
|
||||||
|
|
||||||
- [Configuring conduwuit](configuring-playbook-conduwuit.md), if you've switched to the [conduwuit](https://conduwuit.puppyirl.gay/) homeserver implementation
|
- [Configuring continuwuity](configuring-playbook-continuwuity.md), if you've switched to the [continuwuity](https://continuwuity.org) homeserver implementation
|
||||||
|
|
||||||
- [Configuring Dendrite](configuring-playbook-dendrite.md), if you've switched to the [Dendrite](https://matrix-org.github.io/dendrite) homeserver implementation
|
- [Configuring Dendrite](configuring-playbook-dendrite.md), if you've switched to the [Dendrite](https://matrix-org.github.io/dendrite) homeserver implementation
|
||||||
|
|
||||||
@@ -68,8 +68,6 @@ For a more custom setup, see the [Other configuration options](#other-configurat
|
|||||||
|
|
||||||
- [Adjusting email-sending settings](configuring-playbook-email.md)
|
- [Adjusting email-sending settings](configuring-playbook-email.md)
|
||||||
|
|
||||||
- [Setting up ma1sd Identity Server](configuring-playbook-ma1sd.md)
|
|
||||||
|
|
||||||
- [Setting up Dynamic DNS](configuring-playbook-dynamic-dns.md)
|
- [Setting up Dynamic DNS](configuring-playbook-dynamic-dns.md)
|
||||||
|
|
||||||
- Server connectivity:
|
- Server connectivity:
|
||||||
@@ -89,6 +87,8 @@ Web clients for Matrix that you can host on your own domains.
|
|||||||
|
|
||||||
- [Setting up Cinny](configuring-playbook-client-cinny.md), if you've enabled [Cinny](https://github.com/ajbura/cinny), a web client focusing primarily on simple, elegant and secure interface
|
- [Setting up Cinny](configuring-playbook-client-cinny.md), if you've enabled [Cinny](https://github.com/ajbura/cinny), a web client focusing primarily on simple, elegant and secure interface
|
||||||
|
|
||||||
|
- [Setting up Sable](configuring-playbook-client-sable.md), if you've enabled [Sable](https://github.com/7w1/sable), a web client focusing primarily on simple, elegant and secure interface
|
||||||
|
|
||||||
- [Setting up SchildiChat Web](configuring-playbook-client-schildichat-web.md), if you've enabled [SchildiChat Web](https://schildi.chat/), a web client based on [Element Web](https://element.io/) with some extras and tweaks
|
- [Setting up SchildiChat Web](configuring-playbook-client-schildichat-web.md), if you've enabled [SchildiChat Web](https://schildi.chat/), a web client based on [Element Web](https://element.io/) with some extras and tweaks
|
||||||
|
|
||||||
- [Setting up FluffyChat Web](configuring-playbook-client-fluffychat-web.md), if you've enabled [FluffyChat Web](https://github.com/krille-chan/fluffychat), a cute cross-platform messenger (web, iOS, Android) for Matrix written in [Flutter](https://flutter.dev/)
|
- [Setting up FluffyChat Web](configuring-playbook-client-fluffychat-web.md), if you've enabled [FluffyChat Web](https://github.com/krille-chan/fluffychat), a cute cross-platform messenger (web, iOS, Android) for Matrix written in [Flutter](https://flutter.dev/)
|
||||||
@@ -164,27 +164,17 @@ Bridges can be used to connect your Matrix installation with third-party communi
|
|||||||
|
|
||||||
- [Setting up Appservice Discord bridging](configuring-playbook-bridge-appservice-discord.md)
|
- [Setting up Appservice Discord bridging](configuring-playbook-bridge-appservice-discord.md)
|
||||||
|
|
||||||
- [Setting up Appservice Slack bridging](configuring-playbook-bridge-appservice-slack.md)
|
|
||||||
|
|
||||||
- [Setting up Appservice Kakaotalk bridging](configuring-playbook-bridge-appservice-kakaotalk.md)
|
- [Setting up Appservice Kakaotalk bridging](configuring-playbook-bridge-appservice-kakaotalk.md)
|
||||||
|
|
||||||
- [Setting up Beeper LinkedIn bridging](configuring-playbook-bridge-beeper-linkedin.md)
|
- [Setting up Beeper LinkedIn bridging](configuring-playbook-bridge-beeper-linkedin.md)
|
||||||
|
|
||||||
- [Setting up matrix-hookshot](configuring-playbook-bridge-hookshot.md) — a bridge between Matrix and multiple project management services, such as [GitHub](https://github.com), [GitLab](https://about.gitlab.com) and [JIRA](https://www.atlassian.com/software/jira).
|
- [Setting up matrix-hookshot](configuring-playbook-bridge-hookshot.md) — a bridge between Matrix and multiple project management services, such as [GitHub](https://github.com), [GitLab](https://about.gitlab.com) and [JIRA](https://www.atlassian.com/software/jira).
|
||||||
|
|
||||||
- [Setting up MX Puppet Slack bridging](configuring-playbook-bridge-mx-puppet-slack.md)
|
|
||||||
|
|
||||||
- [Setting up MX Puppet Instagram bridging](configuring-playbook-bridge-mx-puppet-instagram.md)
|
|
||||||
|
|
||||||
- [Setting up MX Puppet Twitter bridging](configuring-playbook-bridge-mx-puppet-twitter.md)
|
|
||||||
|
|
||||||
- [Setting up MX Puppet Discord bridging](configuring-playbook-bridge-mx-puppet-discord.md)
|
|
||||||
|
|
||||||
- [Setting up MX Puppet GroupMe bridging](configuring-playbook-bridge-mx-puppet-groupme.md)
|
- [Setting up MX Puppet GroupMe bridging](configuring-playbook-bridge-mx-puppet-groupme.md)
|
||||||
|
|
||||||
- [Setting up MX Puppet Steam bridging](configuring-playbook-bridge-mx-puppet-steam.md)
|
- [Setting up Steam bridging](configuring-playbook-bridge-steam.md)
|
||||||
|
|
||||||
- [Setting up Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md)
|
- [Setting up MX Puppet Steam bridging](configuring-playbook-bridge-mx-puppet-steam.md)
|
||||||
|
|
||||||
- [Setting up Postmoogle email bridging](configuring-playbook-bridge-postmoogle.md)
|
- [Setting up Postmoogle email bridging](configuring-playbook-bridge-postmoogle.md)
|
||||||
|
|
||||||
@@ -237,18 +227,20 @@ Services that help you in administrating and monitoring your Matrix installation
|
|||||||
|
|
||||||
Various services that don't fit any other categories.
|
Various services that don't fit any other categories.
|
||||||
|
|
||||||
- [Setting up Element Call](configuring-playbook-element-call.md) — a native Matrix video conferencing application (optional)
|
- [Setting up Element Call](configuring-playbook-element-call.md) — a native Matrix video conferencing application, built on top of the [Matrix RTC stack](configuring-playbook-matrix-rtc.md) (optional)
|
||||||
|
|
||||||
- [Setting up LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) (optional)
|
- [Setting up LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) - a component of the [Matrix RTC stack](configuring-playbook-matrix-rtc.md) (optional)
|
||||||
|
|
||||||
- [Setting up LiveKit Server](configuring-playbook-livekit-server.md) (optional)
|
- [Setting up LiveKit Server](configuring-playbook-livekit-server.md) - a component of the [Matrix RTC stack](configuring-playbook-matrix-rtc.md) (optional)
|
||||||
|
|
||||||
- [Setting up Synapse Auto Invite Accept](configuring-playbook-synapse-auto-accept-invite.md)
|
- [Setting up Matrix RTC](configuring-playbook-matrix-rtc.md) (optional)
|
||||||
|
|
||||||
- [Setting up synapse-auto-compressor](configuring-playbook-synapse-auto-compressor.md) for compressing the database on Synapse homeservers
|
- [Setting up synapse-auto-compressor](configuring-playbook-synapse-auto-compressor.md) for compressing the database on Synapse homeservers
|
||||||
|
|
||||||
- [Setting up Matrix Corporal](configuring-playbook-matrix-corporal.md) (advanced)
|
- [Setting up Matrix Corporal](configuring-playbook-matrix-corporal.md) (advanced)
|
||||||
|
|
||||||
|
- [Setting up Matrix.to](configuring-playbook-matrixto.md)
|
||||||
|
|
||||||
- [Setting up Etherpad](configuring-playbook-etherpad.md)
|
- [Setting up Etherpad](configuring-playbook-etherpad.md)
|
||||||
|
|
||||||
- [Setting up the Jitsi video-conferencing platform](configuring-playbook-jitsi.md)
|
- [Setting up the Jitsi video-conferencing platform](configuring-playbook-jitsi.md)
|
||||||
@@ -265,8 +257,12 @@ Various services that don't fit any other categories.
|
|||||||
|
|
||||||
**Note**: since a deprecated or unmaintained service will not be updated, its bug or vulnerability will be unlikely to get patched. It is recommended to migrate from the service to an alternative if any, and make sure to do your own research before you decide to keep it running nonetheless.
|
**Note**: since a deprecated or unmaintained service will not be updated, its bug or vulnerability will be unlikely to get patched. It is recommended to migrate from the service to an alternative if any, and make sure to do your own research before you decide to keep it running nonetheless.
|
||||||
|
|
||||||
|
- [Configuring conduwuit](configuring-playbook-conduwuit.md) (removed; this component has been abandoned and unmaintained)
|
||||||
|
|
||||||
- [Setting up the Sliding Sync proxy](configuring-playbook-sliding-sync-proxy.md) for clients which require Sliding Sync support (like old Element X versions, before it got switched to Simplified Sliding Sync)
|
- [Setting up the Sliding Sync proxy](configuring-playbook-sliding-sync-proxy.md) for clients which require Sliding Sync support (like old Element X versions, before it got switched to Simplified Sliding Sync)
|
||||||
|
|
||||||
|
- [Setting up Appservice Slack bridging](configuring-playbook-bridge-appservice-slack.md) (removed; this component has been discontinued)
|
||||||
|
|
||||||
- [Setting up Appservice Webhooks bridging](configuring-playbook-bridge-appservice-webhooks.md) (deprecated; the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bridge-hookshot.md))
|
- [Setting up Appservice Webhooks bridging](configuring-playbook-bridge-appservice-webhooks.md) (deprecated; the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bridge-hookshot.md))
|
||||||
|
|
||||||
- [Setting up the Dimension integration manager](configuring-playbook-dimension.md) ([unmaintained](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2806#issuecomment-1673559299); after [installing](installing.md))
|
- [Setting up the Dimension integration manager](configuring-playbook-dimension.md) ([unmaintained](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2806#issuecomment-1673559299); after [installing](installing.md))
|
||||||
@@ -275,10 +271,24 @@ Various services that don't fit any other categories.
|
|||||||
|
|
||||||
- [Setting up Go-NEB](configuring-playbook-bot-go-neb.md) (unmaintained; the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bridge-hookshot.md))
|
- [Setting up Go-NEB](configuring-playbook-bot-go-neb.md) (unmaintained; the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bridge-hookshot.md))
|
||||||
|
|
||||||
|
- [Setting up Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md) (removed; Skype has been discontinued since May 2025)
|
||||||
|
|
||||||
|
- [Setting up ma1sd Identity Server](configuring-playbook-ma1sd.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook.)
|
||||||
|
|
||||||
- [Setting up matrix-bot-chatgpt](configuring-playbook-bot-chatgpt.md) (unmaintained; the bridge's author suggests taking a look at [baibot](https://github.com/etkecc/baibot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bot-baibot.md))
|
- [Setting up matrix-bot-chatgpt](configuring-playbook-bot-chatgpt.md) (unmaintained; the bridge's author suggests taking a look at [baibot](https://github.com/etkecc/baibot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bot-baibot.md))
|
||||||
|
|
||||||
- [Setting up Mautrix Facebook bridging](configuring-playbook-bridge-mautrix-facebook.md) (deprecated in favor of the Messenger/Instagram bridge with [mautrix-meta-messenger](configuring-playbook-bridge-mautrix-meta-messenger.md))
|
- [Setting up Mautrix Facebook bridging](configuring-playbook-bridge-mautrix-facebook.md) (deprecated in favor of the Messenger/Instagram bridge with [mautrix-meta-messenger](configuring-playbook-bridge-mautrix-meta-messenger.md))
|
||||||
|
|
||||||
- [Setting up Mautrix Instagram bridging](configuring-playbook-bridge-mautrix-instagram.md) (deprecated in favor of the Messenger/Instagram bridge with [mautrix-meta-instagram](configuring-playbook-bridge-mautrix-meta-instagram.md))
|
- [Setting up Mautrix Instagram bridging](configuring-playbook-bridge-mautrix-instagram.md) (deprecated in favor of the Messenger/Instagram bridge with [mautrix-meta-instagram](configuring-playbook-bridge-mautrix-meta-instagram.md))
|
||||||
|
|
||||||
|
- [Setting up MX Puppet Discord bridging](configuring-playbook-bridge-mx-puppet-discord.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Discord bridging](configuring-playbook-bridge-mautrix-discord.md))
|
||||||
|
|
||||||
|
- [Setting up MX Puppet Instagram bridging](configuring-playbook-bridge-mx-puppet-instagram.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Instagram bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-instagram.md))
|
||||||
|
|
||||||
- [Setting up MX Puppet Skype bridging](configuring-playbook-bridge-mx-puppet-skype.md) (removed; this component has been broken for a long time, so it has been removed from the playbook. Consider [setting up Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md))
|
- [Setting up MX Puppet Skype bridging](configuring-playbook-bridge-mx-puppet-skype.md) (removed; this component has been broken for a long time, so it has been removed from the playbook. Consider [setting up Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md))
|
||||||
|
|
||||||
|
- [Setting up MX Puppet Slack bridging](configuring-playbook-bridge-mx-puppet-slack.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Slack bridging](configuring-playbook-bridge-mautrix-slack.md))
|
||||||
|
|
||||||
|
- [Setting up MX Puppet Twitter bridging](configuring-playbook-bridge-mx-puppet-twitter.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Twitter bridging](configuring-playbook-bridge-mautrix-twitter.md))
|
||||||
|
|
||||||
|
- [Setting up Synapse Auto Invite Accept](configuring-playbook-synapse-auto-accept-invite.md) (removed; since Synapse [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0) the same feature is available natively.)
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ We try to stick to official images (provided by their respective projects) as mu
|
|||||||
| ------- | --------------- | -------- | ----------- |
|
| ------- | --------------- | -------- | ----------- |
|
||||||
| [Synapse](configuring-playbook-synapse.md) | [element-hq/synapse](https://ghcr.io/element-hq/synapse) | ✅ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network |
|
| [Synapse](configuring-playbook-synapse.md) | [element-hq/synapse](https://ghcr.io/element-hq/synapse) | ✅ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network |
|
||||||
| [Conduit](configuring-playbook-conduit.md) | [matrixconduit/matrix-conduit](https://hub.docker.com/r/matrixconduit/matrix-conduit) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Conduit is a lightweight open-source server implementation of the Matrix Specification with a focus on easy setup and low system requirements |
|
| [Conduit](configuring-playbook-conduit.md) | [matrixconduit/matrix-conduit](https://hub.docker.com/r/matrixconduit/matrix-conduit) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Conduit is a lightweight open-source server implementation of the Matrix Specification with a focus on easy setup and low system requirements |
|
||||||
| [conduwuit](configuring-playbook-conduwuit.md) | [girlbossceo/conduwuit](https://ghcr.io/girlbossceo/conduwuit) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. conduwuit is a fork of Conduit. |
|
| [continuwuity](configuring-playbook-continuwuity.md) | [continuwuation/continuwuity](https://forgejo.ellis.link/continuwuation/continuwuity) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. continuwuity is a continuation of conduwuit. |
|
||||||
| [Dendrite](configuring-playbook-dendrite.md) | [matrixdotorg/dendrite-monolith](https://hub.docker.com/r/matrixdotorg/dendrite-monolith/) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Dendrite is a second-generation Matrix homeserver written in Go, an alternative to Synapse. |
|
| [Dendrite](configuring-playbook-dendrite.md) | [matrixdotorg/dendrite-monolith](https://hub.docker.com/r/matrixdotorg/dendrite-monolith/) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Dendrite is a second-generation Matrix homeserver written in Go, an alternative to Synapse. |
|
||||||
|
|
||||||
## Clients
|
## Clients
|
||||||
@@ -39,6 +39,7 @@ Web clients for Matrix that you can host on your own domains.
|
|||||||
| [Element Web](configuring-playbook-client-element-web.md) | [vectorim/element-web](https://hub.docker.com/r/vectorim/element-web/) | ✅ | Default Matrix web client, configured to connect to your own Synapse server |
|
| [Element Web](configuring-playbook-client-element-web.md) | [vectorim/element-web](https://hub.docker.com/r/vectorim/element-web/) | ✅ | Default Matrix web client, configured to connect to your own Synapse server |
|
||||||
| [Hydrogen](configuring-playbook-client-hydrogen.md) | [element-hq/hydrogen-web](https://ghcr.io/element-hq/hydrogen-web) | ❌ | Lightweight Matrix client with legacy and mobile browser support |
|
| [Hydrogen](configuring-playbook-client-hydrogen.md) | [element-hq/hydrogen-web](https://ghcr.io/element-hq/hydrogen-web) | ❌ | Lightweight Matrix client with legacy and mobile browser support |
|
||||||
| [Cinny](configuring-playbook-client-cinny.md) | [ajbura/cinny](https://hub.docker.com/r/ajbura/cinny) | ❌ | Simple, elegant and secure web client |
|
| [Cinny](configuring-playbook-client-cinny.md) | [ajbura/cinny](https://hub.docker.com/r/ajbura/cinny) | ❌ | Simple, elegant and secure web client |
|
||||||
|
| [Sable](configuring-playbook-client-sable.md) | [7w1/sable](https://ghcr.io/7w1/sable) | ❌ | Simple, elegant and secure web client |
|
||||||
| [SchildiChat Web](configuring-playbook-client-schildichat-web.md) | [etke.cc/schildichat-web](https://ghcr.io/etkecc/schildichat-web) | ❌ | Based on Element Web, with a more traditional instant messaging experience |
|
| [SchildiChat Web](configuring-playbook-client-schildichat-web.md) | [etke.cc/schildichat-web](https://ghcr.io/etkecc/schildichat-web) | ❌ | Based on Element Web, with a more traditional instant messaging experience |
|
||||||
|
|
||||||
## Server Components
|
## Server Components
|
||||||
@@ -52,7 +53,6 @@ Services that run on the server to make the various parts of your installation w
|
|||||||
| [Traefik](configuring-playbook-traefik.md) | [Traefik](https://hub.docker.com/_/traefik/) | ✅ | Web server, listening on ports 80, 443 and 8448 — standing in front of all the other services. [Using your own webserver](configuring-playbook-own-webserver.md) is also possible. |
|
| [Traefik](configuring-playbook-traefik.md) | [Traefik](https://hub.docker.com/_/traefik/) | ✅ | Web server, listening on ports 80, 443 and 8448 — standing in front of all the other services. [Using your own webserver](configuring-playbook-own-webserver.md) is also possible. |
|
||||||
| [Let's Encrypt](configuring-playbook-ssl-certificates.md) | [certbot/certbot](https://hub.docker.com/r/certbot/certbot/) | ✅ | [Certbot](https://certbot.eff.org/) tool for obtaining SSL certificates from [Let's Encrypt](https://letsencrypt.org/) |
|
| [Let's Encrypt](configuring-playbook-ssl-certificates.md) | [certbot/certbot](https://hub.docker.com/r/certbot/certbot/) | ✅ | [Certbot](https://certbot.eff.org/) tool for obtaining SSL certificates from [Let's Encrypt](https://letsencrypt.org/) |
|
||||||
| [Exim](configuring-playbook-email.md) | [devture/exim-relay](https://hub.docker.com/r/devture/exim-relay/) | ✅ | Mail server, through which all Matrix services send outgoing email (can be configured to relay through another SMTP server) |
|
| [Exim](configuring-playbook-email.md) | [devture/exim-relay](https://hub.docker.com/r/devture/exim-relay/) | ✅ | Mail server, through which all Matrix services send outgoing email (can be configured to relay through another SMTP server) |
|
||||||
| [ma1sd](configuring-playbook-ma1sd.md) | [ma1uta/ma1sd](https://hub.docker.com/r/ma1uta/ma1sd/) | ❌ | Matrix Identity Server |
|
|
||||||
| [ddclient](configuring-playbook-dynamic-dns.md) | [linuxserver/ddclient](https://hub.docker.com/r/linuxserver/ddclient) | ❌ | Update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider |
|
| [ddclient](configuring-playbook-dynamic-dns.md) | [linuxserver/ddclient](https://hub.docker.com/r/linuxserver/ddclient) | ❌ | Update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider |
|
||||||
| [LiveKit Server](configuring-playbook-livekit-server.md) | [livekit/livekit-server](https://hub.docker.com/r/livekit/livekit-server/) | ❌ | WebRTC server for audio/video calls |
|
| [LiveKit Server](configuring-playbook-livekit-server.md) | [livekit/livekit-server](https://hub.docker.com/r/livekit/livekit-server/) | ❌ | WebRTC server for audio/video calls |
|
||||||
| [Livekit JWT Service](configuring-playbook-livekit-jwt-service.md) | [element-hq/lk-jwt-service](https://ghcr.io/element-hq/lk-jwt-service) | ❌ | JWT service for integrating [Element Call](./configuring-playbook-element-call.md) with [LiveKit Server](./configuring-playbook-livekit-server.md) |
|
| [Livekit JWT Service](configuring-playbook-livekit-jwt-service.md) | [element-hq/lk-jwt-service](https://ghcr.io/element-hq/lk-jwt-service) | ❌ | JWT service for integrating [Element Call](./configuring-playbook-element-call.md) with [LiveKit Server](./configuring-playbook-livekit-server.md) |
|
||||||
@@ -102,17 +102,12 @@ Bridges can be used to connect your Matrix installation with third-party communi
|
|||||||
| [matrix-appservice-irc](configuring-playbook-bridge-appservice-irc.md) | [matrixdotorg/matrix-appservice-irc](https://hub.docker.com/r/matrixdotorg/matrix-appservice-irc) | ❌ | Bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) |
|
| [matrix-appservice-irc](configuring-playbook-bridge-appservice-irc.md) | [matrixdotorg/matrix-appservice-irc](https://hub.docker.com/r/matrixdotorg/matrix-appservice-irc) | ❌ | Bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) |
|
||||||
| [matrix-appservice-kakaotalk](configuring-playbook-bridge-appservice-kakaotalk.md) | Self-building | ❌ | Bridge to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG) |
|
| [matrix-appservice-kakaotalk](configuring-playbook-bridge-appservice-kakaotalk.md) | Self-building | ❌ | Bridge to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG) |
|
||||||
| [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md) | [matrix-org/matrix-appservice-discord](https://ghcr.io/matrix-org/matrix-appservice-discord) | ❌ | Bridge to [Discord](https://discordapp.com/) |
|
| [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md) | [matrix-org/matrix-appservice-discord](https://ghcr.io/matrix-org/matrix-appservice-discord) | ❌ | Bridge to [Discord](https://discordapp.com/) |
|
||||||
| [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) | [matrixdotorg/matrix-appservice-slack](https://hub.docker.com/r/matrixdotorg/matrix-appservice-slack) | ❌ | Bridge to [Slack](https://slack.com/) |
|
|
||||||
| [matrix-hookshot](configuring-playbook-bridge-hookshot.md) | [halfshot/matrix-hookshot](https://hub.docker.com/r/halfshot/matrix-hookshot) | ❌ | Bridge for generic webhooks and multiple project management services, such as GitHub, GitLab, Figma, and Jira in particular |
|
| [matrix-hookshot](configuring-playbook-bridge-hookshot.md) | [halfshot/matrix-hookshot](https://hub.docker.com/r/halfshot/matrix-hookshot) | ❌ | Bridge for generic webhooks and multiple project management services, such as GitHub, GitLab, Figma, and Jira in particular |
|
||||||
| [matrix-sms-bridge](configuring-playbook-bridge-matrix-bridge-sms.md) | [folivonet/matrix-sms-bridge](https://hub.docker.com/repository/docker/folivonet/matrix-sms-bridge) | ❌ | Bridge to SMS |
|
| [matrix-sms-bridge](configuring-playbook-bridge-matrix-bridge-sms.md) | [folivonet/matrix-sms-bridge](https://hub.docker.com/repository/docker/folivonet/matrix-sms-bridge) | ❌ | Bridge to SMS |
|
||||||
| [matrix-wechat](configuring-playbook-bridge-wechat.md) | [lxduo/matrix-wechat](https://hub.docker.com/r/lxduo/matrix-wechat) | ❌ | Bridge to [WeChat](https://www.wechat.com/) |
|
| [matrix-wechat](configuring-playbook-bridge-wechat.md) | [lxduo/matrix-wechat](https://hub.docker.com/r/lxduo/matrix-wechat) | ❌ | Bridge to [WeChat](https://www.wechat.com/) |
|
||||||
| [Heisenbridge](configuring-playbook-bridge-heisenbridge.md) | [hif1/heisenbridge](https://hub.docker.com/r/hif1/heisenbridge) | ❌ | Bouncer-style bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) |
|
| [Heisenbridge](configuring-playbook-bridge-heisenbridge.md) | [hif1/heisenbridge](https://hub.docker.com/r/hif1/heisenbridge) | ❌ | Bouncer-style bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) |
|
||||||
| [go-skype-bridge](configuring-playbook-bridge-go-skype-bridge.md) | [nodefyme/go-skype-bridge](https://hub.docker.com/r/nodefyme/go-skype-bridge) | ❌ | Bridge to [Skype](https://www.skype.com) |
|
|
||||||
| [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) | [mx-puppet/slack/mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack/container_registry) | ❌ | Bridge to [Slack](https://slack.com) |
|
|
||||||
| [mx-puppet-instagram](configuring-playbook-bridge-mx-puppet-instagram.md) | [sorunome/mx-puppet-instagram](https://hub.docker.com/r/sorunome/mx-puppet-instagram) | ❌ | Bridge for Instagram-DMs ([Instagram](https://www.instagram.com/)) |
|
|
||||||
| [mx-puppet-twitter](configuring-playbook-bridge-mx-puppet-twitter.md) | [sorunome/mx-puppet-twitter](https://hub.docker.com/r/sorunome/mx-puppet-twitter) | ❌ | Bridge for Twitter-DMs ([Twitter](https://twitter.com/)) |
|
|
||||||
| [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) | [mx-puppet/discord/mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord/container_registry) | ❌ | Bridge to [Discord](https://discordapp.com/) |
|
|
||||||
| [mx-puppet-groupme](configuring-playbook-bridge-mx-puppet-groupme.md) | [xangelix/mx-puppet-groupme](https://hub.docker.com/r/xangelix/mx-puppet-groupme) | ❌ | Bridge to [GroupMe](https://groupme.com/) |
|
| [mx-puppet-groupme](configuring-playbook-bridge-mx-puppet-groupme.md) | [xangelix/mx-puppet-groupme](https://hub.docker.com/r/xangelix/mx-puppet-groupme) | ❌ | Bridge to [GroupMe](https://groupme.com/) |
|
||||||
|
| [matrix-steam-bridge](configuring-playbook-bridge-steam.md) | [jasonlaguidice/matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge/pkgs/container/matrix-steam-bridge) | ❌ | Bridge to [Steam](https://steampowered.com/) |
|
||||||
| [mx-puppet-steam](configuring-playbook-bridge-mx-puppet-steam.md) | [icewind1991/mx-puppet-steam](https://hub.docker.com/r/icewind1991/mx-puppet-steam) | ❌ | Bridge to [Steam](https://steamapp.com/) |
|
| [mx-puppet-steam](configuring-playbook-bridge-mx-puppet-steam.md) | [icewind1991/mx-puppet-steam](https://hub.docker.com/r/icewind1991/mx-puppet-steam) | ❌ | Bridge to [Steam](https://steamapp.com/) |
|
||||||
| [Postmoogle](configuring-playbook-bridge-postmoogle.md) | [etke.cc/postmoogle](https://github.com/etkecc/postmoogle/container_registry) | ❌ | Email to Matrix bridge |
|
| [Postmoogle](configuring-playbook-bridge-postmoogle.md) | [etke.cc/postmoogle](https://github.com/etkecc/postmoogle/container_registry) | ❌ | Email to Matrix bridge |
|
||||||
|
|
||||||
@@ -155,9 +150,7 @@ Various services that don't fit any other categories.
|
|||||||
|
|
||||||
| Service | Container image | Default? | Description |
|
| Service | Container image | Default? | Description |
|
||||||
| ------- | --------------- | -------- | ----------- |
|
| ------- | --------------- | -------- | ----------- |
|
||||||
| [sliding-sync](configuring-playbook-sliding-sync-proxy.md) | [matrix-org/sliding-sync](https://ghcr.io/matrix-org/sliding-sync) | ❌ | Sliding Sync support for clients which require it (like old Element X versions, before it got switched to Simplified Sliding Sync) |
|
| [synapse_auto_compressor](configuring-playbook-synapse-auto-compressor.md) | [mb-saces/rust-synapse-tools](https://gitlab.com/mb-saces/rust-synapse-tools/container_registry) | ❌ | Cli tool that automatically compresses Synapse's `state_groups` database table in background |
|
||||||
| [synapse_auto_accept_invite](configuring-playbook-synapse-auto-accept-invite.md) | (N/A) | ❌ | Synapse module to automatically accept invites |
|
|
||||||
| [synapse_auto_compressor](configuring-playbook-synapse-auto-compressor.md) | [etke.cc/rust-synapse-compress-state](https://gitlab.com/etke.cc/rust-synapse-compress-state/container_registry) | ❌ | Cli tool that automatically compresses `state_groups` database table in background |
|
|
||||||
| [Matrix Corporal](configuring-playbook-matrix-corporal.md) (advanced) | [devture/matrix-corporal](https://hub.docker.com/r/devture/matrix-corporal/) | ❌ | Reconciliator and gateway for a managed Matrix server |
|
| [Matrix Corporal](configuring-playbook-matrix-corporal.md) (advanced) | [devture/matrix-corporal](https://hub.docker.com/r/devture/matrix-corporal/) | ❌ | Reconciliator and gateway for a managed Matrix server |
|
||||||
| [Etherpad](configuring-playbook-etherpad.md) | [etherpad/etherpad](https://hub.docker.com/r/etherpad/etherpad/) | ❌ | Open source collaborative text editor |
|
| [Etherpad](configuring-playbook-etherpad.md) | [etherpad/etherpad](https://hub.docker.com/r/etherpad/etherpad/) | ❌ | Open source collaborative text editor |
|
||||||
| [Jitsi](configuring-playbook-jitsi.md) | [jitsi/web](https://hub.docker.com/r/jitsi/web) | ❌ | [Jitsi](https://jitsi.org/) web UI |
|
| [Jitsi](configuring-playbook-jitsi.md) | [jitsi/web](https://hub.docker.com/r/jitsi/web) | ❌ | [Jitsi](https://jitsi.org/) web UI |
|
||||||
@@ -177,10 +170,19 @@ The list of the deprecated or unmaintained services is available [here](configur
|
|||||||
|
|
||||||
| Service | Container image | Default? | Description |
|
| Service | Container image | Default? | Description |
|
||||||
| ------- | --------------- | -------- | ----------- |
|
| ------- | --------------- | -------- | ----------- |
|
||||||
| [matrix-appservice-webhooks](configuring-playbook-bridge-appservice-webhooks.md) | [turt2live/matrix-appservice-webhooks](https://hub.docker.com/r/turt2live/matrix-appservice-webhooks) | ❌ | Bridge for slack compatible webhooks ([ConcourseCI](https://concourse-ci.org/), [Slack](https://slack.com/) etc. pp.) |
|
| [conduwuit](configuring-playbook-conduwuit.md) | [girlbossceo/conduwuit](https://ghcr.io/girlbossceo/conduwuit) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. conduwuit was a fork of Conduit. |
|
||||||
| [Dimension](configuring-playbook-dimension.md) | [turt2live/matrix-dimension](https://hub.docker.com/r/turt2live/matrix-dimension) | ❌ | Open source integration manager for Matrix clients |
|
| [Dimension](configuring-playbook-dimension.md) | [turt2live/matrix-dimension](https://hub.docker.com/r/turt2live/matrix-dimension) | ❌ | Open source integration manager for Matrix clients |
|
||||||
| [Email2Matrix](configuring-playbook-email2matrix.md) | [devture/email2matrix](https://hub.docker.com/r/devture/email2matrix/) | ❌ | Bridge for relaying emails to Matrix rooms |
|
| [Email2Matrix](configuring-playbook-email2matrix.md) | [devture/email2matrix](https://hub.docker.com/r/devture/email2matrix/) | ❌ | Bridge for relaying emails to Matrix rooms |
|
||||||
| [Go-NEB](configuring-playbook-bot-go-neb.md) | [matrixdotorg/go-neb](https://hub.docker.com/r/matrixdotorg/go-neb) | ❌ | Multi functional bot written in Go |
|
| [Go-NEB](configuring-playbook-bot-go-neb.md) | [matrixdotorg/go-neb](https://hub.docker.com/r/matrixdotorg/go-neb) | ❌ | Multi functional bot written in Go |
|
||||||
|
| [ma1sd](configuring-playbook-ma1sd.md) | [ma1uta/ma1sd](https://hub.docker.com/r/ma1uta/ma1sd/) | ❌ | Matrix Identity Server |
|
||||||
|
| [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) | [matrixdotorg/matrix-appservice-slack](https://hub.docker.com/r/matrixdotorg/matrix-appservice-slack) | ❌ | Bridge to [Slack](https://slack.com/) |
|
||||||
|
| [matrix-appservice-webhooks](configuring-playbook-bridge-appservice-webhooks.md) | [turt2live/matrix-appservice-webhooks](https://hub.docker.com/r/turt2live/matrix-appservice-webhooks) | ❌ | Bridge for slack compatible webhooks ([ConcourseCI](https://concourse-ci.org/), [Slack](https://slack.com/) etc. pp.) |
|
||||||
| [matrix-chatgpt-bot](configuring-playbook-bot-chatgpt.md) | [matrixgpt/matrix-chatgpt-bot](https://ghcr.io/matrixgpt/matrix-chatgpt-bot) | ❌ | Accessing ChatGPT via your favourite Matrix client |
|
| [matrix-chatgpt-bot](configuring-playbook-bot-chatgpt.md) | [matrixgpt/matrix-chatgpt-bot](https://ghcr.io/matrixgpt/matrix-chatgpt-bot) | ❌ | Accessing ChatGPT via your favourite Matrix client |
|
||||||
| [mautrix-facebook](configuring-playbook-bridge-mautrix-facebook.md) | [mautrix/facebook](https://mau.dev/mautrix/facebook/container_registry) | ❌ | Bridge to [Facebook](https://facebook.com/) |
|
| [mautrix-facebook](configuring-playbook-bridge-mautrix-facebook.md) | [mautrix/facebook](https://mau.dev/mautrix/facebook/container_registry) | ❌ | Bridge to [Facebook](https://facebook.com/) |
|
||||||
| [mautrix-instagram](configuring-playbook-bridge-mautrix-instagram.md) | [mautrix/instagram](https://mau.dev/mautrix/instagram/container_registry) | ❌ | Bridge to [Instagram](https://instagram.com/) |
|
| [mautrix-instagram](configuring-playbook-bridge-mautrix-instagram.md) | [mautrix/instagram](https://mau.dev/mautrix/instagram/container_registry) | ❌ | Bridge to [Instagram](https://instagram.com/) |
|
||||||
|
| [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) | [mx-puppet/discord/mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord/container_registry) | ❌ | Bridge to [Discord](https://discordapp.com/) |
|
||||||
|
| [mx-puppet-instagram](configuring-playbook-bridge-mx-puppet-instagram.md) | [sorunome/mx-puppet-instagram](https://hub.docker.com/r/sorunome/mx-puppet-instagram) | ❌ | Bridge for Instagram-DMs ([Instagram](https://www.instagram.com/)) |
|
||||||
|
| [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) | [mx-puppet/slack/mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack/container_registry) | ❌ | Bridge to [Slack](https://slack.com) |
|
||||||
|
| [mx-puppet-twitter](configuring-playbook-bridge-mx-puppet-twitter.md) | [sorunome/mx-puppet-twitter](https://hub.docker.com/r/sorunome/mx-puppet-twitter) | ❌ | Bridge for Twitter-DMs ([Twitter](https://twitter.com/)) |
|
||||||
|
| [sliding-sync](configuring-playbook-sliding-sync-proxy.md) | [matrix-org/sliding-sync](https://ghcr.io/matrix-org/sliding-sync) | ❌ | Sliding Sync support for clients which require it (like old Element X versions, before it got switched to Simplified Sliding Sync) |
|
||||||
|
| [synapse_auto_accept_invite](configuring-playbook-synapse-auto-accept-invite.md) | (N/A) | ❌ | Synapse module to automatically accept invites |
|
||||||
|
|||||||
44
docs/faq.md
44
docs/faq.md
@@ -235,7 +235,7 @@ Running Matrix on a server with 1GB of memory is possible (especially if you dis
|
|||||||
|
|
||||||
**We recommend starting with a server having at least 2GB of memory** and even then using it sparingly. If you know for sure you'll be joining various large rooms, etc., then going for 4GB of memory or more is a good idea.
|
**We recommend starting with a server having at least 2GB of memory** and even then using it sparingly. If you know for sure you'll be joining various large rooms, etc., then going for 4GB of memory or more is a good idea.
|
||||||
|
|
||||||
Besides the regular Matrix stuff, we also support things like video-conferencing using [Jitsi](configuring-playbook-jitsi.md) and other additional services which (when installed) may use up a lot of memory. Things do add up. Besides the Synapse Matrix server, Jitsi is especially notorious for consuming a lot of resources. If you plan on running Jitsi, we recommend a server with at least 2GB of memory (preferrably more). See our [Jitsi documentation page](configuring-playbook-jitsi.md) to learn how to optimize its memory/CPU usage.
|
Besides the regular Matrix stuff, we also support things like video-conferencing using [Jitsi](configuring-playbook-jitsi.md) and other additional services which (when installed) may use up a lot of memory. Things do add up. Besides the Synapse Matrix server, Jitsi is especially notorious for consuming a lot of resources. If you plan on running Jitsi, we recommend a server with at least 2GB of memory (preferably more). See our [Jitsi documentation page](configuring-playbook-jitsi.md) to learn how to optimize its memory/CPU usage.
|
||||||
|
|
||||||
### Can I run this in an LXC container?
|
### Can I run this in an LXC container?
|
||||||
|
|
||||||
@@ -305,18 +305,23 @@ See [Serving the base domain](configuring-playbook-base-domain-serving.md).
|
|||||||
|
|
||||||
### How do I optimize this setup for a low-power server?
|
### How do I optimize this setup for a low-power server?
|
||||||
|
|
||||||
|
For a low-power server, it's best to use an alternative homeserver implementation (other than [Synapse](configuring-playbook-synapse.md)).
|
||||||
|
|
||||||
You can disable some not-so-important services to save on memory.
|
You can disable some not-so-important services to save on memory.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Disabling this will prevent email-notifications and other such things from working.
|
# Disabling this will prevent email-notifications and other such things from working.
|
||||||
exim_relay_enabled: false
|
exim_relay_enabled: false
|
||||||
|
```
|
||||||
|
|
||||||
# You can also disable this to save more RAM,
|
If you've installed [Jitsi](configuring-playbook-jitsi.md) (not installed by default), there are additional optimizations listed on its documentation page that you can perform.
|
||||||
# at the expense of audio/video calls being unreliable.
|
|
||||||
matrix_coturn_enabled: false
|
|
||||||
|
|
||||||
# This makes Synapse not keep track of who is online/offline.
|
|
||||||
#
|
#### Synapse-specific optimizations
|
||||||
|
|
||||||
|
If you're using [Synapse](configuring-playbook-synapse.md), you can also consider the following optimizations:
|
||||||
|
|
||||||
|
```yaml
|
||||||
# Keeping track of this and announcing such online-status in federated rooms with
|
# Keeping track of this and announcing such online-status in federated rooms with
|
||||||
# hundreds of servers inside is insanely heavy (https://github.com/matrix-org/synapse/issues/3971).
|
# hundreds of servers inside is insanely heavy (https://github.com/matrix-org/synapse/issues/3971).
|
||||||
#
|
#
|
||||||
@@ -324,18 +329,14 @@ matrix_coturn_enabled: false
|
|||||||
matrix_synapse_presence_enabled: false
|
matrix_synapse_presence_enabled: false
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also consider implementing a restriction on room complexity, in order to prevent users from joining very heavy rooms:
|
You can also consider [implementing a restriction on room complexity](configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts), in order to prevent users from joining very heavy rooms:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_synapse_configuration_extension_yaml: |
|
# See: docs/configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts
|
||||||
limit_remote_rooms:
|
matrix_synapse_limit_remote_rooms_enabled: true
|
||||||
enabled: true
|
matrix_synapse_limit_remote_rooms_complexity: 1.0
|
||||||
complexity: 1.0 # this limits joining complex (~large) rooms, can be
|
|
||||||
# increased, but larger values can require more RAM
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If you've installed [Jitsi](configuring-playbook-jitsi.md) (not installed by default), there are additional optimizations listed on its documentation page that you can perform.
|
|
||||||
|
|
||||||
### I already have Docker on my server. Can you stop installing Docker via the playbook?
|
### I already have Docker on my server. Can you stop installing Docker via the playbook?
|
||||||
|
|
||||||
Yes, we can stop installing Docker ourselves. Just use this in your `vars.yml` file:
|
Yes, we can stop installing Docker ourselves. Just use this in your `vars.yml` file:
|
||||||
@@ -362,7 +363,7 @@ Configuration variables are defined in multiple places in this playbook and are
|
|||||||
|
|
||||||
You can discover the variables you can override in each role (`roles/*/*/defaults/main.yml`).
|
You can discover the variables you can override in each role (`roles/*/*/defaults/main.yml`).
|
||||||
|
|
||||||
As described in [How is the effective configuration determined?](#how-is-the-effective-configuration-determined), these role-defaults may be overriden by values defined in `group_vars/matrix_servers`.
|
As described in [How is the effective configuration determined?](#how-is-the-effective-configuration-determined), these role-defaults may be overridden by values defined in `group_vars/matrix_servers`.
|
||||||
|
|
||||||
Refer to both of these for inspiration. Still, as mentioned in [Configuring the playbook](configuring-playbook.md), you're only ever supposed to edit your own `inventory/host_vars/matrix.example.com/vars.yml` file and nothing else inside the playbook (unless you're meaning to contribute new features).
|
Refer to both of these for inspiration. Still, as mentioned in [Configuring the playbook](configuring-playbook.md), you're only ever supposed to edit your own `inventory/host_vars/matrix.example.com/vars.yml` file and nothing else inside the playbook (unless you're meaning to contribute new features).
|
||||||
|
|
||||||
@@ -440,6 +441,19 @@ To prevent double-logging, Docker logging is disabled by explicitly passing `--l
|
|||||||
|
|
||||||
See [this section](maintenance-and-troubleshooting.md#how-to-see-the-logs) on the page for maintenance and troubleshooting for more details to see the logs.
|
See [this section](maintenance-and-troubleshooting.md#how-to-see-the-logs) on the page for maintenance and troubleshooting for more details to see the logs.
|
||||||
|
|
||||||
|
### The server fails to start due to the `Unable to start service matrix-coturn.service` error. Why and how to solve it?
|
||||||
|
|
||||||
|
The error is most likely because Traefik cannot obtain SSL certificates due to certain reasons such as wrong domain name configuration or port 80 being unavailable due to other services.
|
||||||
|
|
||||||
|
If Traefik fails to obtain an SSL certificate for domain names such as `matrix.`, Traefik Certs Dumper cannot extract the SSL certificate out of there, and coturn cannot be started and the error occurs. Refer to these comments for details:
|
||||||
|
|
||||||
|
- <https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3957#issuecomment-2599590441>
|
||||||
|
- <https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4570#issuecomment-3364111466>
|
||||||
|
|
||||||
|
If you are not sure what the problem is, at first make sure that you have set the "base domain" (`example.com`, **not `matrix.example.com`**) to `matrix_domain`. You should be able to find it at the top of your `vars.yml`.
|
||||||
|
|
||||||
|
If it is correctly specified, look Traefik's logs (`journalctl -fu matrix-traefik.service`) for errors by Let's Encrypt for troubleshooting.
|
||||||
|
|
||||||
## Miscellaneous
|
## Miscellaneous
|
||||||
|
|
||||||
### I would like to see this favorite service of mine integrated and become available on my Matrix server. How can I request it?
|
### I would like to see this favorite service of mine integrated and become available on my Matrix server. How can I request it?
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ The up-to-date list can be accessed on [traefik's documentation](https://doc.tra
|
|||||||
|
|
||||||
**Note**: the changes below instruct you how to do this for a basic Synapse installation. You will need to adapt the variable name and the content of the labels:
|
**Note**: the changes below instruct you how to do this for a basic Synapse installation. You will need to adapt the variable name and the content of the labels:
|
||||||
|
|
||||||
- if you're using another homeserver implementation (e.g. [Conduit](./configuring-playbook-conduit.md), [conduwuit](./configuring-playbook-conduwuit.md) or [Dendrite](./configuring-playbook-dendrite.md))
|
- if you're using another homeserver implementation (e.g. [Conduit](./configuring-playbook-conduit.md), [continuwuity](./configuring-playbook-continuwuity.md) or [Dendrite](./configuring-playbook-dendrite.md))
|
||||||
- if you're using [Synapse with workers enabled](./configuring-playbook-synapse.md#load-balancing-with-workers) (`matrix_synapse_workers_enabled: true`). In that case, it's actually the `matrix-synapse-reverse-proxy-companion` service which has Traefik labels attached
|
- if you're using [Synapse with workers enabled](./configuring-playbook-synapse.md#load-balancing-with-workers) (`matrix_synapse_workers_enabled: true`). In that case, it's actually the `matrix-synapse-reverse-proxy-companion` service which has Traefik labels attached
|
||||||
|
|
||||||
Also, all instructions below are from an older version of the playbook and may not work anymore.
|
Also, all instructions below are from an older version of the playbook and may not work anymore.
|
||||||
@@ -42,7 +42,7 @@ This is because with SRV federation, some servers / tools (one of which being th
|
|||||||
|
|
||||||
### Tell Traefik which certificate to serve for the federation endpoint
|
### Tell Traefik which certificate to serve for the federation endpoint
|
||||||
|
|
||||||
Now that the federation endpoint is not bound to a domain anymore we need to explicitely tell Traefik to use a wildcard certificate in addition to one containing the base name.
|
Now that the federation endpoint is not bound to a domain anymore we need to explicitly tell Traefik to use a wildcard certificate in addition to one containing the base name.
|
||||||
|
|
||||||
This is because the Matrix specification expects the federation endpoint to be served using a certificate compatible with the base domain, however, the other resources on the endpoint still need a valid certificate to work.
|
This is because the Matrix specification expects the federation endpoint to be served using a certificate compatible with the base domain, however, the other resources on the endpoint still need a valid certificate to work.
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ traefik_configuration_extension_yaml: |
|
|||||||
- "8.8.8.8:53"
|
- "8.8.8.8:53"
|
||||||
storage: {{ traefik_config_certificatesResolvers_acme_storage | to_json }}
|
storage: {{ traefik_config_certificatesResolvers_acme_storage | to_json }}
|
||||||
|
|
||||||
# 2. Configure the environment variables needed by Rraefik to automate the ACME DNS Challenge (example for Cloudflare)
|
# 2. Configure the environment variables needed by Traefik to automate the ACME DNS Challenge (example for Cloudflare)
|
||||||
traefik_environment_variables: |
|
traefik_environment_variables: |
|
||||||
CF_API_EMAIL=redacted
|
CF_API_EMAIL=redacted
|
||||||
CF_ZONE_API_TOKEN=redacted
|
CF_ZONE_API_TOKEN=redacted
|
||||||
@@ -104,24 +104,24 @@ This should not happen again afterwards as Traefik will renew certificates well
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Only depend on docker.service, this removes the dependency on the certificate exporter, might imply the need to manually restart coturn on the first installation once the certificates are obtained, afterwards, the reload service should handle things
|
# Only depend on docker.service, this removes the dependency on the certificate exporter, might imply the need to manually restart coturn on the first installation once the certificates are obtained, afterwards, the reload service should handle things
|
||||||
matrix_coturn_systemd_required_services_list: ['docker.service']
|
coturn_systemd_required_services_list: ['docker.service']
|
||||||
|
|
||||||
# This changes the path of the loaded certificate, while maintaining the original functionality, we're now loading the wildcard certificate.
|
# This changes the path of the loaded certificate, while maintaining the original functionality, we're now loading the wildcard certificate.
|
||||||
matrix_coturn_container_additional_volumes: |
|
coturn_container_additional_volumes: |
|
||||||
{{
|
{{
|
||||||
(
|
(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/*.' + matrix_domain + '/certificate.crt'),
|
'src': (traefik_certs_dumper_dumped_certificates_path + '/*.' + matrix_domain + '/certificate.crt'),
|
||||||
'dst': '/certificate.crt',
|
'dst': '/certificate.crt',
|
||||||
'options': 'ro',
|
'options': 'ro',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/*.' + matrix_domain + '/privatekey.key'),
|
'src': (traefik_certs_dumper_dumped_certificates_path + '/*.' + matrix_domain + '/privatekey.key'),
|
||||||
'dst': '/privatekey.key',
|
'dst': '/privatekey.key',
|
||||||
'options': 'ro',
|
'options': 'ro',
|
||||||
},
|
},
|
||||||
] if matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and traefik_certs_dumper_enabled and matrix_coturn_tls_enabled else []
|
] if matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and traefik_certs_dumper_enabled and coturn_tls_enabled else []
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
```
|
```
|
||||||
@@ -165,24 +165,24 @@ traefik_environment_variables: |
|
|||||||
LEGO_DISABLE_CNAME_SUPPORT=true
|
LEGO_DISABLE_CNAME_SUPPORT=true
|
||||||
|
|
||||||
# Only depend on docker.service, this removes the dependency on the certificate exporter, might imply the need to manually restart coturn on the first installation once the certificates are obtained, afterwards, the reload service should handle things
|
# Only depend on docker.service, this removes the dependency on the certificate exporter, might imply the need to manually restart coturn on the first installation once the certificates are obtained, afterwards, the reload service should handle things
|
||||||
matrix_coturn_systemd_required_services_list: ['docker.service']
|
coturn_systemd_required_services_list: ['docker.service']
|
||||||
|
|
||||||
# This changes the path of the loaded certificate, while maintaining the original functionality, we're now loading the wildcard certificate.
|
# This changes the path of the loaded certificate, while maintaining the original functionality, we're now loading the wildcard certificate.
|
||||||
matrix_coturn_container_additional_volumes: |
|
coturn_container_additional_volumes: |
|
||||||
{{
|
{{
|
||||||
(
|
(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/*.' + matrix_domain + '/certificate.crt'),
|
'src': (traefik_certs_dumper_dumped_certificates_path + '/*.' + matrix_domain + '/certificate.crt'),
|
||||||
'dst': '/certificate.crt',
|
'dst': '/certificate.crt',
|
||||||
'options': 'ro',
|
'options': 'ro',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/*.' + matrix_domain + '/privatekey.key'),
|
'src': (traefik_certs_dumper_dumped_certificates_path + '/*.' + matrix_domain + '/privatekey.key'),
|
||||||
'dst': '/privatekey.key',
|
'dst': '/privatekey.key',
|
||||||
'options': 'ro',
|
'options': 'ro',
|
||||||
},
|
},
|
||||||
] if matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and traefik_certs_dumper_enabled and matrix_coturn_tls_enabled else []
|
] if matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and traefik_certs_dumper_enabled and coturn_tls_enabled else []
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -146,6 +146,7 @@ After completing the installation, you can:
|
|||||||
- or learn how to [maintain your server](faq.md#maintenance)
|
- or learn how to [maintain your server](faq.md#maintenance)
|
||||||
- or join some Matrix rooms:
|
- or join some Matrix rooms:
|
||||||
* via the *Explore rooms* feature in Element Web or some other clients, or by discovering them using this [matrix-static list](https://view.matrix.org). **Note**: joining large rooms may overload small servers.
|
* via the *Explore rooms* feature in Element Web or some other clients, or by discovering them using this [matrix-static list](https://view.matrix.org). **Note**: joining large rooms may overload small servers.
|
||||||
|
For tuning guidance on constrained hosts, see [Limit joining heavy rooms on constrained hosts](configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts).
|
||||||
* or come say Hi in our support room — [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com). You might learn something or get to help someone else new to Matrix hosting.
|
* or come say Hi in our support room — [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com). You might learn something or get to help someone else new to Matrix hosting.
|
||||||
- or help make this playbook better by contributing (code, documentation, or [coffee/beer](https://liberapay.com/s.pantaleev/donate))
|
- or help make this playbook better by contributing (code, documentation, or [coffee/beer](https://liberapay.com/s.pantaleev/donate))
|
||||||
|
|
||||||
@@ -157,6 +158,8 @@ The upstream projects, which this playbook makes use of, occasionally if not oft
|
|||||||
|
|
||||||
Since it is unsafe to keep outdated services running on the server connected to the internet, please consider to update the playbook and re-run it periodically, in order to keep the services up-to-date.
|
Since it is unsafe to keep outdated services running on the server connected to the internet, please consider to update the playbook and re-run it periodically, in order to keep the services up-to-date.
|
||||||
|
|
||||||
|
Also, do not forget to update your system regularly. While this playbook may install basic services, such as Docker, it will not interfere further with system maintenance. Keeping the system itself up-to-date is out of scope for this playbook.
|
||||||
|
|
||||||
For more information about upgrading or maintaining services with the playbook, take a look at this page: [Upgrading the Matrix services](maintenance-upgrading-services.md)
|
For more information about upgrading or maintaining services with the playbook, take a look at this page: [Upgrading the Matrix services](maintenance-upgrading-services.md)
|
||||||
|
|
||||||
Feel free to **re-run the setup command any time** you think something is wrong with the server configuration. Ansible will take your configuration and update your server to match.
|
Feel free to **re-run the setup command any time** you think something is wrong with the server configuration. Ansible will take your configuration and update your server to match.
|
||||||
|
|||||||
10
docs/just.md
10
docs/just.md
@@ -43,3 +43,13 @@ For example, these two commands are different:
|
|||||||
The just recipe runs `ensure-matrix-users-created` and `start` tags after `install-all`, while the latter runs only `install-all` tag. The correct shortcut of the latter is `just run-tags install-all`.
|
The just recipe runs `ensure-matrix-users-created` and `start` tags after `install-all`, while the latter runs only `install-all` tag. The correct shortcut of the latter is `just run-tags install-all`.
|
||||||
|
|
||||||
Such kind of difference sometimes matters. For example, when you install a Matrix server into which you will import old data (see [here](installing.md#installing-a-server-into-which-youll-import-old-data)), you are not supposed to run `just install-all` or `just setup-all`, because these commands start services immediately after installing components, which may prevent you from importing the data.
|
Such kind of difference sometimes matters. For example, when you install a Matrix server into which you will import old data (see [here](installing.md#installing-a-server-into-which-youll-import-old-data)), you are not supposed to run `just install-all` or `just setup-all`, because these commands start services immediately after installing components, which may prevent you from importing the data.
|
||||||
|
|
||||||
|
## Conditional service restart
|
||||||
|
|
||||||
|
When running `install-all` or `install-service` (whether via `just` or raw `ansible-playbook`), only services whose configuration or container image actually changed during the playbook run will be restarted. Unchanged services are left running (or get started if they were stopped). This reduces unnecessary downtime.
|
||||||
|
|
||||||
|
When running with `setup-*` tags (e.g. `setup-all`, `setup-synapse`), all services are unconditionally restarted regardless of whether changes were detected. This is appropriate for setup's thorough "full setup" semantics.
|
||||||
|
|
||||||
|
`start-all` and `start-group` always restart all targeted services, since no installation tasks run during these commands.
|
||||||
|
|
||||||
|
This behavior is automatically determined based on the playbook tags in use. It can be overridden with the `devture_systemd_service_manager_conditional_restart_enabled` variable. For example, to force unconditional restarts during installation: `just install-all --extra-vars='devture_systemd_service_manager_conditional_restart_enabled=false'`
|
||||||
|
|||||||
@@ -104,12 +104,12 @@ To save disk space in `/tmp`, the dump file is gzipped on the fly at the expense
|
|||||||
|
|
||||||
PostgreSQL can be [tuned](https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server) to make it run faster. This is done by passing extra arguments to the Postgres process.
|
PostgreSQL can be [tuned](https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server) to make it run faster. This is done by passing extra arguments to the Postgres process.
|
||||||
|
|
||||||
The [Postgres Ansible role](https://github.com/mother-of-all-self-hosting/ansible-role-postgres) **already does some tuning by default**, which matches the [tuning logic](https://github.com/le0pard/pgtune/blob/master/src/features/configuration/configurationSlice.js) done by websites like https://pgtune.leopard.in.ua/. You can manually influence some of the tuning variables. These parameters (variables) are injected via the `postgres_postgres_process_extra_arguments_auto` variable.
|
The [Postgres Ansible role](https://github.com/mother-of-all-self-hosting/ansible-role-postgres) **already does some tuning by default**, which matches the [tuning logic](https://github.com/le0pard/pgtune/blob/master/src/features/configuration/configurationSlice.js) done by websites like https://pgtune.leopard.in.ua/. You can manually influence some of the tuning variables. These parameters (variables) are injected via the `postgres_postgres_process_extra_arguments_default` variable.
|
||||||
|
|
||||||
Most users should be fine with the automatically-done tuning. However, you may wish to:
|
Most users should be fine with the automatically-done tuning. However, you may wish to:
|
||||||
|
|
||||||
- **adjust the automatically-determined tuning parameters manually**: change the values for the tuning variables defined in the Postgres role's [default configuration file](https://github.com/mother-of-all-self-hosting/ansible-role-postgres/blob/main/defaults/main.yml) (see `postgres_max_connections`, `postgres_data_storage` etc). These variables are ultimately passed to Postgres via a `postgres_postgres_process_extra_arguments_auto` variable
|
- **adjust the automatically-determined tuning parameters manually**: change the values for the tuning variables defined in the Postgres role's [default configuration file](https://github.com/mother-of-all-self-hosting/ansible-role-postgres/blob/main/defaults/main.yml) (see `postgres_max_connections`, `postgres_data_storage` etc). These variables are ultimately passed to Postgres via a `postgres_postgres_process_extra_arguments_default` variable
|
||||||
|
|
||||||
- **turn automatically-performed tuning off**: override it like this: `postgres_postgres_process_extra_arguments_auto: []`
|
- **turn automatically-performed tuning off**: override it like this: `postgres_postgres_process_extra_arguments_default: []`
|
||||||
|
|
||||||
- **add additional tuning parameters**: define your additional Postgres configuration parameters in `postgres_postgres_process_extra_arguments_custom`. See `postgres_postgres_process_extra_arguments_auto` defined in the Postgres role's [default configuration file](https://github.com/mother-of-all-self-hosting/ansible-role-postgres/blob/main/defaults/main.yml) for inspiration
|
- **add additional tuning parameters**: define your additional Postgres configuration parameters in `postgres_postgres_process_extra_arguments_custom`. See `postgres_postgres_process_extra_arguments_default` defined in the Postgres role's [default configuration file](https://github.com/mother-of-all-self-hosting/ansible-role-postgres/blob/main/defaults/main.yml) for inspiration
|
||||||
|
|||||||
@@ -83,6 +83,8 @@ You should then be able to browse the adminer database administration GUI at htt
|
|||||||
|
|
||||||
Synapse's presence feature which tracks which users are online and which are offline can use a lot of processing power. You can disable presence by adding `matrix_synapse_presence_enabled: false` to your `vars.yml` file.
|
Synapse's presence feature which tracks which users are online and which are offline can use a lot of processing power. You can disable presence by adding `matrix_synapse_presence_enabled: false` to your `vars.yml` file.
|
||||||
|
|
||||||
|
On smaller servers, consider limiting joins to very complex rooms with [the room complexity guard](configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts).
|
||||||
|
|
||||||
If you have enough compute resources (CPU & RAM), you can make Synapse better use of them by [enabling load-balancing with workers](configuring-playbook-synapse.md#load-balancing-with-workers).
|
If you have enough compute resources (CPU & RAM), you can make Synapse better use of them by [enabling load-balancing with workers](configuring-playbook-synapse.md#load-balancing-with-workers).
|
||||||
|
|
||||||
[Tuning your PostgreSQL database](maintenance-postgres.md#tuning-postgresql) could also improve Synapse performance. The playbook tunes the integrated Postgres database automatically, but based on your needs you may wish to adjust tuning variables manually. If you're using an [external Postgres database](configuring-playbook-external-postgres.md), you will also need to tune Postgres manually.
|
[Tuning your PostgreSQL database](maintenance-postgres.md#tuning-postgresql) could also improve Synapse performance. The playbook tunes the integrated Postgres database automatically, but based on your needs you may wish to adjust tuning variables manually. If you're using an [external Postgres database](configuring-playbook-external-postgres.md), you will also need to tune Postgres manually.
|
||||||
|
|||||||
@@ -23,8 +23,6 @@ We will be using `example.com` as the domain in the following instruction. Pleas
|
|||||||
|
|
||||||
- [Ansible](http://ansible.com/) program. It's used to run this playbook and configures your server for you. Take a look at [our guide about Ansible](ansible.md) for more information, as well as [version requirements](ansible.md#supported-ansible-versions) and alternative ways to run Ansible.
|
- [Ansible](http://ansible.com/) program. It's used to run this playbook and configures your server for you. Take a look at [our guide about Ansible](ansible.md) for more information, as well as [version requirements](ansible.md#supported-ansible-versions) and alternative ways to run Ansible.
|
||||||
|
|
||||||
- [passlib](https://passlib.readthedocs.io/en/stable/index.html) Python library. See [this official documentation](https://passlib.readthedocs.io/en/stable/install.html#installation-instructions) for an instruction to install it. On most distros, you need to install some `python-passlib` or `py3-passlib` package, etc.
|
|
||||||
|
|
||||||
- [`git`](https://git-scm.com/) as the recommended way to download the playbook. `git` may also be required on the server if you will be [self-building](self-building.md) components.
|
- [`git`](https://git-scm.com/) as the recommended way to download the playbook. `git` may also be required on the server if you will be [self-building](self-building.md) components.
|
||||||
|
|
||||||
- [`just`](https://github.com/casey/just) for running `just roles`, `just update`, etc. (see [`justfile`](../justfile)), although you can also run these commands manually. Take a look at this documentation for more information: [Running `just` commands](just.md).
|
- [`just`](https://github.com/casey/just) for running `just roles`, `just update`, etc. (see [`justfile`](../justfile)), although you can also run these commands manually. Take a look at this documentation for more information: [Running `just` commands](just.md).
|
||||||
@@ -49,7 +47,7 @@ We will be using `example.com` as the domain in the following instruction. Pleas
|
|||||||
|
|
||||||
- [Python](https://www.python.org/). Most distributions install Python by default, but some don't (e.g. Ubuntu 18.04) and require manual installation (something like `apt-get install python3`). On some distros, Ansible may incorrectly [detect the Python version](https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html) (2 vs 3) and you may need to explicitly specify the interpreter path in `inventory/hosts` during installation (e.g. `ansible_python_interpreter=/usr/bin/python3`)
|
- [Python](https://www.python.org/). Most distributions install Python by default, but some don't (e.g. Ubuntu 18.04) and require manual installation (something like `apt-get install python3`). On some distros, Ansible may incorrectly [detect the Python version](https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html) (2 vs 3) and you may need to explicitly specify the interpreter path in `inventory/hosts` during installation (e.g. `ansible_python_interpreter=/usr/bin/python3`)
|
||||||
|
|
||||||
- [sudo](https://www.sudo.ws/), even when you've configured Ansible to log in as `root`. Some distributions, like a minimal Debian net install, do not include the `sudo` package by default.
|
- [sudo](https://www.sudo.ws/), even when you've configured Ansible to log in as `root`, because this Ansible playbook sometimes uses the Ansible [become](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_privilege_escalation.html) module to perform tasks as another user (e.g. `matrix`) and the `become` module's default implementation uses `sudo`. Some distributions, like a minimal Debian net install, do not include the `sudo` package by default.
|
||||||
|
|
||||||
- An HTTPS-capable web server at the base domain name (`example.com`) which is capable of serving static files. Unless you decide to [Serve the base domain from the Matrix server](configuring-playbook-base-domain-serving.md) or alternatively, to use DNS SRV records for [Server Delegation](howto-server-delegation.md).
|
- An HTTPS-capable web server at the base domain name (`example.com`) which is capable of serving static files. Unless you decide to [Serve the base domain from the Matrix server](configuring-playbook-base-domain-serving.md) or alternatively, to use DNS SRV records for [Server Delegation](howto-server-delegation.md).
|
||||||
|
|
||||||
@@ -59,12 +57,7 @@ We will be using `example.com` as the domain in the following instruction. Pleas
|
|||||||
|
|
||||||
- `80/tcp`: HTTP webserver
|
- `80/tcp`: HTTP webserver
|
||||||
- `443/tcp` and `443/udp`: HTTPS webserver
|
- `443/tcp` and `443/udp`: HTTPS webserver
|
||||||
- `3478/tcp`: STUN/TURN over TCP (used by [coturn](./configuring-playbook-turn.md))
|
|
||||||
- `3478/udp`: STUN/TURN over TCP (used by [coturn](./configuring-playbook-turn.md))
|
|
||||||
- `5349/tcp`: TURN over TCP (used by [coturn](./configuring-playbook-turn.md))
|
|
||||||
- `5349/udp`: TURN over UDP (used by [coturn](./configuring-playbook-turn.md))
|
|
||||||
- `8448/tcp` and `8448/udp`: Matrix Federation API HTTPS webserver. Some components like [Matrix User Verification Service](configuring-playbook-user-verification-service.md#open-matrix-federation-port) require this port to be opened **even with federation disabled**.
|
- `8448/tcp` and `8448/udp`: Matrix Federation API HTTPS webserver. Some components like [Matrix User Verification Service](configuring-playbook-user-verification-service.md#open-matrix-federation-port) require this port to be opened **even with federation disabled**.
|
||||||
- the range `49152-49172/udp`: TURN over UDP
|
|
||||||
- potentially some other ports, depending on the additional (non-default) services that you enable in the **configuring the playbook** step (later on). Consult each service's documentation page in `docs/` for that.
|
- potentially some other ports, depending on the additional (non-default) services that you enable in the **configuring the playbook** step (later on). Consult each service's documentation page in `docs/` for that.
|
||||||
|
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
|||||||
@@ -161,6 +161,6 @@ You can then proceed to run the query above.
|
|||||||
|
|
||||||
### Adding/Removing Administrator privileges to an existing user in Matrix Authentication Service
|
### Adding/Removing Administrator privileges to an existing user in Matrix Authentication Service
|
||||||
|
|
||||||
Promoting/demoting a user in Matrix Authentication Service cannot currently (2024-10-19) be done via the [`mas-cli` Management tool](./configuring-playbook-matrix-authentication-service.md#management).
|
Promoting/demoting a user in Matrix Authentication Service can be done using the [`mas-cli`](./configuring-playbook-matrix-authentication-service.md#management) management tool's [`manage promote-admin`](https://element-hq.github.io/matrix-authentication-service/reference/cli/manage.html#manage-promote-admin) and [`manage demote-admin`](https://element-hq.github.io/matrix-authentication-service/reference/cli/manage.html#manage-demote-admin) commands. For example: `/matrix/matrix-authentication-service/bin/mas-cli manage promote-admin some.username`.
|
||||||
|
|
||||||
You can do it via the [MAS Admin API](https://element-hq.github.io/matrix-authentication-service/api/index.html)'s `POST /api/admin/v1/users/{id}/set-admin` endpoint.
|
You can also do it via the [MAS Admin API](https://element-hq.github.io/matrix-authentication-service/api/index.html)'s `POST /api/admin/v1/users/{id}/set-admin` endpoint.
|
||||||
|
|||||||
@@ -28,20 +28,16 @@ Possibly outdated list of roles where self-building the Docker image is currentl
|
|||||||
- `matrix-synapse`
|
- `matrix-synapse`
|
||||||
- `matrix-synapse-admin`
|
- `matrix-synapse-admin`
|
||||||
- `matrix-client-element`
|
- `matrix-client-element`
|
||||||
- `matrix-client-hydrogen`
|
- `hydrogen`
|
||||||
- `matrix-client-cinny`
|
- `cinny`
|
||||||
|
- `sable`
|
||||||
- `matrix-registration`
|
- `matrix-registration`
|
||||||
- `matrix-coturn`
|
- `coturn`
|
||||||
- `matrix-corporal`
|
- `matrix-corporal`
|
||||||
- `matrix-dimension`
|
|
||||||
- `matrix-ma1sd`
|
|
||||||
- `exim-relay`
|
- `exim-relay`
|
||||||
- `matrix-bridge-hookshot`
|
- `matrix-bridge-hookshot`
|
||||||
- `matrix-bridge-appservice-irc`
|
- `matrix-bridge-appservice-irc`
|
||||||
- `matrix-bridge-appservice-slack`
|
|
||||||
- `matrix-bridge-appservice-webhooks`
|
|
||||||
- `matrix-bridge-beeper-linkedin`
|
- `matrix-bridge-beeper-linkedin`
|
||||||
- `matrix-bridge-mautrix-facebook`
|
|
||||||
- `matrix-bridge-mautrix-googlechat`
|
- `matrix-bridge-mautrix-googlechat`
|
||||||
- `matrix-bridge-mautrix-telegram`
|
- `matrix-bridge-mautrix-telegram`
|
||||||
- `matrix-bridge-mautrix-signal`
|
- `matrix-bridge-mautrix-signal`
|
||||||
|
|||||||
@@ -1,6 +1,3 @@
|
|||||||
# We explicitly ask for your server's external IP address, because the same value is used for configuring coturn.
|
|
||||||
# If you'd rather use a local IP here, make sure to set up `matrix_coturn_turn_external_ip_address`.
|
|
||||||
#
|
|
||||||
# To connect using a non-root user (and elevate to root with sudo later),
|
# To connect using a non-root user (and elevate to root with sudo later),
|
||||||
# replace `ansible_ssh_user=root` with something like this: `ansible_ssh_user=username ansible_become=true ansible_become_user=root`.
|
# replace `ansible_ssh_user=root` with something like this: `ansible_ssh_user=username ansible_become=true ansible_become_user=root`.
|
||||||
# If sudo requires a password, either add `ansible_become_password=PASSWORD_HERE` to the host line
|
# If sudo requires a password, either add `ansible_become_password=PASSWORD_HERE` to the host line
|
||||||
@@ -18,4 +15,4 @@
|
|||||||
# to the host line below.
|
# to the host line below.
|
||||||
|
|
||||||
[matrix_servers]
|
[matrix_servers]
|
||||||
matrix.example.com ansible_host=<your-server's external IP address> ansible_ssh_user=root
|
matrix.example.com ansible_host=<your-server's domain name or IP address> ansible_ssh_user=root
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ To get started, first follow the [front the integrated reverse-proxy webserver w
|
|||||||
`matrix-domain.conf` contains configuration for the Matrix domain, which handles both the Client-Server API (port `443`) and the Matrix Federation API (port `8448`).
|
`matrix-domain.conf` contains configuration for the Matrix domain, which handles both the Client-Server API (port `443`) and the Matrix Federation API (port `8448`).
|
||||||
|
|
||||||
`matrix-client-element.conf` is an example for when you're hosting Element Web at `element.example.com`.
|
`matrix-client-element.conf` is an example for when you're hosting Element Web at `element.example.com`.
|
||||||
This configuration can also be used as an example for handling other domains, depending on the services you enable with the playbook (e.g. `dimension.example.com`, etc).
|
This configuration can also be used as an example for handling other domains, depending on the services you enable with the playbook (e.g. `etherpad.example.com`, etc).
|
||||||
|
|||||||
@@ -33,6 +33,12 @@
|
|||||||
ProxyRequests Off
|
ProxyRequests Off
|
||||||
ProxyVia On
|
ProxyVia On
|
||||||
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
|
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
|
||||||
|
ProxyTimeout 86400
|
||||||
|
|
||||||
|
RewriteEngine On
|
||||||
|
RewriteCond %{HTTP:Connection} Upgrade [NC]
|
||||||
|
RewriteCond %{HTTP:Upgrade} websocket [NC]
|
||||||
|
RewriteRule /(.*) ws://127.0.0.1:81/$1 [P,L]
|
||||||
|
|
||||||
AllowEncodedSlashes NoDecode
|
AllowEncodedSlashes NoDecode
|
||||||
ProxyPass / http://127.0.0.1:81/ retry=0 nocanon
|
ProxyPass / http://127.0.0.1:81/ retry=0 nocanon
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ If Matrix federation is enabled, then you will need to make changes to [NPM's Do
|
|||||||
|
|
||||||
You'll need to create two proxy hosts in NPM for Matrix web and federation traffic.
|
You'll need to create two proxy hosts in NPM for Matrix web and federation traffic.
|
||||||
|
|
||||||
Open the 'Proxy Hosts' page in the NPM web interface and select `Add Proxy Host`, the first being for Matrix web traffic. Apply the proxys configuration like this:
|
Open the 'Proxy Hosts' page in the NPM web interface and select `Add Proxy Host`, the first being for Matrix web traffic. Apply the proxy's configuration like this:
|
||||||
|
|
||||||
```md
|
```md
|
||||||
# Details
|
# Details
|
||||||
@@ -44,7 +44,7 @@ Custom Nginx Configuration:
|
|||||||
client_max_body_size 50M;
|
client_max_body_size 50M;
|
||||||
```
|
```
|
||||||
|
|
||||||
Again, under the 'Proxy Hosts' page select `Add Proxy Host`, this time for your federation traffic. Apply the proxys configuration like this:
|
Again, under the 'Proxy Hosts' page select `Add Proxy Host`, this time for your federation traffic. Apply the proxy's configuration like this:
|
||||||
|
|
||||||
```md
|
```md
|
||||||
# Details
|
# Details
|
||||||
|
|||||||
@@ -22,4 +22,4 @@ Copy the [matrix.conf](matrix.conf) file to your nginx server's filesystem, modi
|
|||||||
|
|
||||||
This configuration **disables SSL certificate retrieval**, so you will **need to obtain SSL certificates manually** (e.g. by using [certbot](https://certbot.eff.org/)) and set the appropriate path in `matrix.conf`. In the example nginx configuration, a single certificate is used for all subdomains (`matrix.example.com`, `element.example.com`, etc.). For your setup, may wish to change this and use separate `server` blocks and separate certificate files for each host.
|
This configuration **disables SSL certificate retrieval**, so you will **need to obtain SSL certificates manually** (e.g. by using [certbot](https://certbot.eff.org/)) and set the appropriate path in `matrix.conf`. In the example nginx configuration, a single certificate is used for all subdomains (`matrix.example.com`, `element.example.com`, etc.). For your setup, may wish to change this and use separate `server` blocks and separate certificate files for each host.
|
||||||
|
|
||||||
Also note that your copy of the `matrix.conf` file has to be adapted to whatever services you are using. For example, remove `element.example.com` from the `server_name` list if you don't use [Element Web](../../../docs/configuring-playbook-client-element-web.md) client or add `dimension.example.com` to it if you do use the [Dimension](../../../docs/configuring-playbook-dimension.md) integration manager.
|
Also note that your copy of the `matrix.conf` file has to be adapted to whatever services you are using. For example, remove `element.example.com` from the `server_name` list if you don't use [Element Web](../../../docs/configuring-playbook-client-element-web.md) client or add `etherpad.example.com` to it if you do use [Etherpad](../../../docs/configuring-playbook-etherpad.md).
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ server {
|
|||||||
# TODO: add/remove services and their subdomains if you use/don't use them
|
# TODO: add/remove services and their subdomains if you use/don't use them
|
||||||
# this example is using hosting something on the base domain and an Element Web client, so example.com and element.example.com are listed in addition to matrix.example.com
|
# this example is using hosting something on the base domain and an Element Web client, so example.com and element.example.com are listed in addition to matrix.example.com
|
||||||
# if you don't use those, you can remove them
|
# if you don't use those, you can remove them
|
||||||
# if you use e.g. Dimension on dimension.example.com, add dimension.example.com to the server_name list
|
# if you use e.g. Etherpad on etherpad.example.com, add etherpad.example.com to the server_name list
|
||||||
server_name example.com matrix.example.com element.example.com;
|
server_name example.com matrix.example.com element.example.com;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
---
|
---
|
||||||
|
# This variable acknowledges that you've reviewed breaking changes up to this version.
|
||||||
|
# The playbook will fail if this is outdated, guiding you through what changed.
|
||||||
|
# See the changelog: https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/CHANGELOG.md
|
||||||
|
matrix_playbook_migration_validated_version: v2026.03.23.0
|
||||||
|
|
||||||
# The bare domain name which represents your Matrix identity.
|
# The bare domain name which represents your Matrix identity.
|
||||||
# Matrix user IDs for your server will be of the form (`@alice:example.com`).
|
# Matrix user IDs for your server will be of the form (`@alice:example.com`).
|
||||||
#
|
#
|
||||||
@@ -53,18 +58,10 @@ devture_systemd_docker_base_ipv6_enabled: true
|
|||||||
# The value used here must be shorter than 100 characters.
|
# The value used here must be shorter than 100 characters.
|
||||||
postgres_connection_password: ''
|
postgres_connection_password: ''
|
||||||
|
|
||||||
# By default, we configure coturn's external IP address using the value specified for `ansible_host` in your `inventory/hosts` file.
|
# You can limit heavy room joins on constrained hosts.
|
||||||
# If this value is an external IP address, you can skip this section.
|
# See:
|
||||||
|
# docs/configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts
|
||||||
#
|
#
|
||||||
# If `ansible_host` is not the server's external IP address, you have 2 choices:
|
# matrix_synapse_limit_remote_rooms_enabled: true
|
||||||
# 1. Uncomment the line below, to allow IP address auto-detection to happen (more on this below)
|
# matrix_synapse_limit_remote_rooms_complexity: 1.0
|
||||||
# 2. Uncomment and adjust the line below to specify an IP address manually
|
# matrix_synapse_limit_remote_rooms_admins_can_join: false
|
||||||
#
|
|
||||||
# By default, auto-detection will be attempted using the `https://ifconfig.co/json` API.
|
|
||||||
# Default values for this are specified in `matrix_coturn_turn_external_ip_address_auto_detection_*` variables in the coturn role
|
|
||||||
# (see `roles/custom/matrix-coturn/defaults/main.yml`).
|
|
||||||
#
|
|
||||||
# If your server has multiple IP addresses, you may define them in another variable which allows a list of addresses.
|
|
||||||
# Example: `matrix_coturn_turn_external_ip_addresses: ['1.2.3.4', '4.5.6.7']`
|
|
||||||
#
|
|
||||||
# matrix_coturn_turn_external_ip_address: ''
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
devShells.default = mkShell {
|
devShells.default = mkShell {
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
just
|
just
|
||||||
|
mise
|
||||||
ansible
|
ansible
|
||||||
];
|
];
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -20,7 +20,7 @@ Currently, we support translation of:
|
|||||||
Organization of this `i18n` directory is as follows:
|
Organization of this `i18n` directory is as follows:
|
||||||
|
|
||||||
- [PUBLISHED_LANGUAGES](PUBLISHED_LANGUAGES): a list of languages that we publish translations for (in the [translations/](translations/) directory)
|
- [PUBLISHED_LANGUAGES](PUBLISHED_LANGUAGES): a list of languages that we publish translations for (in the [translations/](translations/) directory)
|
||||||
- [.gitignore](.gitignore): a list of files and directories to ignore in the `i18n` directory. We intentionaly ignore translated results (`translations/<language>` directories) for languages taht are still in progress. We only [publish translations in a new language](#publish-translations-in-a-new-language) when the translation progresses beyond a certain threshold.
|
- [.gitignore](.gitignore): a list of files and directories to ignore in the `i18n` directory. We intentionally ignore translated results (`translations/<language>` directories) for languages that are still in progress. We only [publish translations in a new language](#publish-translations-in-a-new-language) when the translation progresses beyond a certain threshold.
|
||||||
- [justfile](justfile): a list of recipes for [just](https://github.com/casey/just) command runner
|
- [justfile](justfile): a list of recipes for [just](https://github.com/casey/just) command runner
|
||||||
- [requirements.txt](requirements.txt): a list of Python packages required to work with translations
|
- [requirements.txt](requirements.txt): a list of Python packages required to work with translations
|
||||||
- [translation-templates/](translation-templates/): a list of English translation templates - strings extracted from Markdown files
|
- [translation-templates/](translation-templates/): a list of English translation templates - strings extracted from Markdown files
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user