Последняя активность 1 day ago

README.md Исходник

References:

redactions/replacements:

  • component_secret in each Slidge gateway should match been cfg.lua and --secret in docker-compose
  • me@domain.tld should be replaced with your jid
  • domain.tld should be replaced by your own hostname
docker-compose.yml Исходник
1version: "3.3"
2
3networks:
4 www:
5 name: www
6 external: true
7
8services:
9 snikket_proxy:
10 container_name: snikket-proxy
11 image: snikket/snikket-web-proxy:dev
12 env_file: ./conf/snikket.conf
13 network_mode: host
14 volumes:
15 - ./data:/snikket
16 - /srv/snikket/entrypoint.sh:/entrypoint.sh
17 - /srv/snikket/etc/nginx/templates/proxy:/etc/nginx/templates/proxy
18 restart: "unless-stopped"
19 snikket_portal:
20 container_name: snikket-portal
21 image: snikket/snikket-web-portal:dev
22 network_mode: host
23 env_file: ./conf/snikket.conf
24 restart: "unless-stopped"
25
26 snikket_server:
27 container_name: snikket
28 image: snikket/snikket-server:dev
29 network_mode: host
30 volumes:
31 - ./data:/snikket
32 - /srv/snikket/etc/prosody/certs/domain.tld.key:/etc/prosody/certs/domain.tld.key
33 - /srv/snikket/etc/prosody/certs/domain.tld.crt:/etc/prosody/certs/domain.tld.crt
34 - /srv/snikket/etc/sv/prosody/wait-for-certs:/etc/sv/prosody/wait-for-certs:ro
35 env_file: ./conf/snikket.conf
36 restart: "unless-stopped"
37
38 conversejs:
39 image: sebp/lighttpd
40 container_name: conversejs
41 volumes:
42 - ./conversejs:/var/www/localhost/htdocs
43 networks:
44 - www
45 restart: unless-stopped
46 tty: true
47
48 matteridge:
49 #image: codeberg.org/slidge/matteridge:token-expiry-investigation
50 image: codeberg.org/slidge/matteridge:main
51 command:
52 - "--admins=me@domain.tld"
53 - "--jid=mattermost.domain.tld"
54 - "--secret=redacted"
55 - "--user-jid-validator=.*@domain.tld"
56 volumes:
57 - ./slidge_data:/var/lib/slidge
58 network_mode: host
59 depends_on:
60 snikket_server:
61 condition: service_started
62 restart: "unless-stopped"
63
64 slidge-whatsapp:
65 image: codeberg.org/slidge/slidge-whatsapp:main-amd64
66 command:
67 - "--admins=me@domain.tld"
68 - "--jid=whatsapp.domain.tld"
69 - "--secret=redacted"
70 #- "--upload-requester=me@domain.tld"
71 - "--user-jid-validator=.*@domain.tld"
72 volumes:
73 - ./slidge_data:/var/lib/slidge
74 network_mode: host
75 depends_on:
76 snikket_server:
77 condition: service_started
78 restart: "unless-stopped"
79
80 matridge:
81 image: codeberg.org/slidge/matridge
82 command:
83 - "--admins=me@domain.tld"
84 - "--jid=matrix.domain.tld"
85 - "--secret=redacted"
86 - "--user-jid-validator=.*@domain.tld"
87 volumes:
88 - ./slidge_data:/var/lib/slidge
89 network_mode: host
90 depends_on:
91 snikket_server:
92 condition: service_started
93 restart: "unless-stopped"
94
95 slidgram:
96 image: codeberg.org/slidge/slidgram:main
97 command:
98 - "--admins=me@domain.tld"
99 - "--jid=telegram.domain.tld"
100 - "--secret=redacted"
101 - "--user-jid-validator=.*@domain.tld"
102 volumes:
103 - ./slidge_data:/var/lib/slidge
104 network_mode: host
105 depends_on:
106 snikket_server:
107 condition: service_started
108 restart: "unless-stopped"
109
110 slidgnal:
111 image: codeberg.org/slidge/slidgnal:main-amd64
112 command:
113 - "--admins=me@domain.tld"
114 - "--jid=signal.domain.tld"
115 - "--secret=redacted"
116 - "--user-jid-validator=.*@domain.tld"
117 volumes:
118 - ./slidge_data:/var/lib/slidge
119 network_mode: host
120 depends_on:
121 snikket_server:
122 condition: service_started
123 restart: "unless-stopped"
slidge.cfg.lua Исходник
1local DOMAIN = Lua.assert(ENV_SNIKKET_DOMAIN, "Please set the SNIKKET_DOMAIN environment variable")
2
3modules_enabled: append {
4 "privilege";
5}
6
7local _privileges = {
8 roster = "both";
9 message = "outgoing";
10 iq = {
11 ["http://jabber.org/protocol/pubsub"] = "both";
12 ["http://jabber.org/protocol/pubsub#owner"] = "set";
13 };
14}
15
16VirtualHost (DOMAIN)
17 -- for roster sync and 'legacy carbons'
18 privileged_entities = {
19 ["mattermost.domain.tld"] = _privileges,
20 ["whatsapp.domain.tld"] = _privileges,
21 ["matrix.domain.tld"] = _privileges,
22 ["telegram.domain.tld"] = _privileges,
23 ["signal.domain.tld"] = _privileges,
24 }
25
26Component ("share."..DOMAIN) "http_file_share"
27 server_user_role = "prosody:registered"
28
29Component ("mattermost."..DOMAIN)
30 component_secret = "redacted"
31 modules_enabled = {"privilege"}
32
33Component ("whatsapp."..DOMAIN)
34 component_secret = "redacted"
35 modules_enabled = {"privilege"}
36
37Component ("matrix."..DOMAIN)
38 component_secret = "redacted"
39 modules_enabled = {"privilege"}
40
41Component ("telegram."..DOMAIN)
42 component_secret = "redacted"
43 modules_enabled = {"privilege"}
44
45Component ("signal."..DOMAIN)
46 component_secret = "redacted"
47 modules_enabled = {"privilege"}