README.md
· 471 B · Markdown
Исходник
References:
- [Slidge Docs](https://slidge.im/docs/slidge/main/)
- [Snikket Quickstart](https://snikket.org/service/quickstart/)
- [Snikket patch guide for reverse proxy](https://github.com/snikket-im/snikket-web-proxy/pull/26#issue-2836247230)
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
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
· 3.3 KiB · YAML
Исходник
version: "3.3"
networks:
www:
name: www
external: true
services:
snikket_proxy:
container_name: snikket-proxy
image: snikket/snikket-web-proxy:dev
env_file: ./conf/snikket.conf
network_mode: host
volumes:
- ./data:/snikket
- /srv/snikket/entrypoint.sh:/entrypoint.sh
- /srv/snikket/etc/nginx/templates/proxy:/etc/nginx/templates/proxy
restart: "unless-stopped"
snikket_portal:
container_name: snikket-portal
image: snikket/snikket-web-portal:dev
network_mode: host
env_file: ./conf/snikket.conf
restart: "unless-stopped"
snikket_server:
container_name: snikket
image: snikket/snikket-server:dev
network_mode: host
volumes:
- ./data:/snikket
- /srv/snikket/etc/prosody/certs/domain.tld.key:/etc/prosody/certs/domain.tld.key
- /srv/snikket/etc/prosody/certs/domain.tld.crt:/etc/prosody/certs/domain.tld.crt
- /srv/snikket/etc/sv/prosody/wait-for-certs:/etc/sv/prosody/wait-for-certs:ro
env_file: ./conf/snikket.conf
restart: "unless-stopped"
conversejs:
image: sebp/lighttpd
container_name: conversejs
volumes:
- ./conversejs:/var/www/localhost/htdocs
networks:
- www
restart: unless-stopped
tty: true
matteridge:
#image: codeberg.org/slidge/matteridge:token-expiry-investigation
image: codeberg.org/slidge/matteridge:main
command:
- "--admins=me@domain.tld"
- "--jid=mattermost.domain.tld"
- "--secret=redacted"
- "--user-jid-validator=.*@domain.tld"
volumes:
- ./slidge_data:/var/lib/slidge
network_mode: host
depends_on:
snikket_server:
condition: service_started
restart: "unless-stopped"
slidge-whatsapp:
image: codeberg.org/slidge/slidge-whatsapp:main-amd64
command:
- "--admins=me@domain.tld"
- "--jid=whatsapp.domain.tld"
- "--secret=redacted"
#- "--upload-requester=me@domain.tld"
- "--user-jid-validator=.*@domain.tld"
volumes:
- ./slidge_data:/var/lib/slidge
network_mode: host
depends_on:
snikket_server:
condition: service_started
restart: "unless-stopped"
matridge:
image: codeberg.org/slidge/matridge
command:
- "--admins=me@domain.tld"
- "--jid=matrix.domain.tld"
- "--secret=redacted"
- "--user-jid-validator=.*@domain.tld"
volumes:
- ./slidge_data:/var/lib/slidge
network_mode: host
depends_on:
snikket_server:
condition: service_started
restart: "unless-stopped"
slidgram:
image: codeberg.org/slidge/slidgram:main
command:
- "--admins=me@domain.tld"
- "--jid=telegram.domain.tld"
- "--secret=redacted"
- "--user-jid-validator=.*@domain.tld"
volumes:
- ./slidge_data:/var/lib/slidge
network_mode: host
depends_on:
snikket_server:
condition: service_started
restart: "unless-stopped"
slidgnal:
image: codeberg.org/slidge/slidgnal:main-amd64
command:
- "--admins=me@domain.tld"
- "--jid=signal.domain.tld"
- "--secret=redacted"
- "--user-jid-validator=.*@domain.tld"
volumes:
- ./slidge_data:/var/lib/slidge
network_mode: host
depends_on:
snikket_server:
condition: service_started
restart: "unless-stopped"
| 1 | version: "3.3" |
| 2 | |
| 3 | networks: |
| 4 | www: |
| 5 | name: www |
| 6 | external: true |
| 7 | |
| 8 | services: |
| 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
· 1.2 KiB · Lua
Исходник
local DOMAIN = Lua.assert(ENV_SNIKKET_DOMAIN, "Please set the SNIKKET_DOMAIN environment variable")
modules_enabled: append {
"privilege";
}
local _privileges = {
roster = "both";
message = "outgoing";
iq = {
["http://jabber.org/protocol/pubsub"] = "both";
["http://jabber.org/protocol/pubsub#owner"] = "set";
};
}
VirtualHost (DOMAIN)
-- for roster sync and 'legacy carbons'
privileged_entities = {
["mattermost.domain.tld"] = _privileges,
["whatsapp.domain.tld"] = _privileges,
["matrix.domain.tld"] = _privileges,
["telegram.domain.tld"] = _privileges,
["signal.domain.tld"] = _privileges,
}
Component ("share."..DOMAIN) "http_file_share"
server_user_role = "prosody:registered"
Component ("mattermost."..DOMAIN)
component_secret = "redacted"
modules_enabled = {"privilege"}
Component ("whatsapp."..DOMAIN)
component_secret = "redacted"
modules_enabled = {"privilege"}
Component ("matrix."..DOMAIN)
component_secret = "redacted"
modules_enabled = {"privilege"}
Component ("telegram."..DOMAIN)
component_secret = "redacted"
modules_enabled = {"privilege"}
Component ("signal."..DOMAIN)
component_secret = "redacted"
modules_enabled = {"privilege"}
| 1 | local DOMAIN = Lua.assert(ENV_SNIKKET_DOMAIN, "Please set the SNIKKET_DOMAIN environment variable") |
| 2 | |
| 3 | modules_enabled: append { |
| 4 | "privilege"; |
| 5 | } |
| 6 | |
| 7 | local _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 | |
| 16 | VirtualHost (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 | |
| 26 | Component ("share."..DOMAIN) "http_file_share" |
| 27 | server_user_role = "prosody:registered" |
| 28 | |
| 29 | Component ("mattermost."..DOMAIN) |
| 30 | component_secret = "redacted" |
| 31 | modules_enabled = {"privilege"} |
| 32 | |
| 33 | Component ("whatsapp."..DOMAIN) |
| 34 | component_secret = "redacted" |
| 35 | modules_enabled = {"privilege"} |
| 36 | |
| 37 | Component ("matrix."..DOMAIN) |
| 38 | component_secret = "redacted" |
| 39 | modules_enabled = {"privilege"} |
| 40 | |
| 41 | Component ("telegram."..DOMAIN) |
| 42 | component_secret = "redacted" |
| 43 | modules_enabled = {"privilege"} |
| 44 | |
| 45 | Component ("signal."..DOMAIN) |
| 46 | component_secret = "redacted" |
| 47 | modules_enabled = {"privilege"} |