Prosody: Difference between revisions
add link to dns set up |
rm redundant config |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 8: | Line 8: | ||
See official Prosody documentation here [https://prosody.im/doc/dns]. | See official Prosody documentation here [https://prosody.im/doc/dns]. | ||
* Domain of the xmpp address is the bare top level domain example.org. The bare top level domain has SRV records pointing to XMPP server xmpp.example.org. | |||
* XMPP server is hosted on xmpp.example.org. | |||
* XMPP services, such as STUN/TURN server, Multi-User Chat and HTTP upload are hosted at *.xmpp.example.org. As *.xmpp.example.org is not a direct subdomain of example.org, we need to set mod_disco to let XMPP client to discover the services. | |||
<syntaxhighlight lang="nix"> | |||
services.prosody.disco_items = [ | |||
{ | |||
description = "http upload"; | |||
url = "upload.xmpp.${domainName}"; | |||
} | |||
]; | |||
</syntaxhighlight> | |||
* STUN/TURN server is hosted on turn.xmpp.example.org. | |||
* Multi-User Chat is hosted on muc.xmpp.example.org. | |||
* HTTP upload server is hosted on upload.xmpp.example.org. | |||
= SSL Certificate with ACME = | = SSL Certificate with ACME = | ||
| Line 77: | Line 94: | ||
{ | { | ||
domain = "muc.xmpp.${domainName}"; | domain = "muc.xmpp.${domainName}"; | ||
restrictRoomCreation = false; | |||
restrictRoomCreation = | |||
} | } | ||
]; | ]; | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 96: | Line 111: | ||
# xmpp server for "@example.org" is hosted on "xmpp.example.org" | # xmpp server for "@example.org" is hosted on "xmpp.example.org" | ||
# use SRV records. | # use SRV records. | ||
" | "myvhost0" = { | ||
domain = "${domainName}"; | domain = "${domainName}"; | ||
enabled = true; | enabled = true; | ||
| Line 175: | Line 190: | ||
== Connect to prosody == | == Connect to prosody == | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
services.prosody.virtualHosts." | services.prosody.virtualHosts."myvhost0".extraConfig = '' | ||
turn_external_host = "turn.xmpp.${domainName}" | turn_external_host = "turn.xmpp.${domainName}" | ||
turn_external_secret = "unfortunately this is a inline password" | turn_external_secret = "unfortunately this is a inline password" | ||
| Line 257: | Line 272: | ||
http_upload_external_base_url = "https://upload.xmpp.${domainName}/upload/" | http_upload_external_base_url = "https://upload.xmpp.${domainName}/upload/" | ||
http_upload_external_file_size_limit = 52428800 | http_upload_external_file_size_limit = 52428800 | ||
''; | ''; | ||
services.prosody. | services.prosody.disco_items = [ | ||
{ | |||
description = "http upload"; | |||
url = "upload.xmpp.${domainName}"; | |||
} | } | ||
]; | |||
# mod_http_upload_external is a community module | # mod_http_upload_external is a community module | ||