
estou tendo problemas para configurar o servidor xmpp externo para nextcloud com meu servidor ejabberd em combinação com jsxc/xmpp-cloud-auth.
Na configuração do servidor externo nextcloud mostrou o erro: Domínio XMPP:https://cloud.XXX.com:5280 URL BOSH: /http-bind/ XML inválido recebido. Talvezhttps://cloud.XXX.com/http-bind/foi redirecionado. Você deve usar um URL absoluto.
Se eu navegar com o navegador, recebo um 404 Not Found em /http-bind, meu painel de administração também fica um pouco estranho e não mostra tudo (como você pode ver na foto).
Estou usando: ubuntu 20.04.1 Apache2 2.4.41 ejabberd 20.12 Nextcloud JavaScript XMPP Chat 4.2.0 xmpp-cloud-auth v2.0.4
Usei este artigo para configurar o sistema:https://github.com/jsxc/xmpp-cloud-auth/wiki/raspberry-pi-en
Alguém tem uma idéia de por que isso acontece? Qual poderia ser o motivo de um erro 404? Quem pede ao http-bind para obter uma resposta? E qual deve ser a saída desejada?
as configurações do firewall parecem estar ok. Nenhuma configuração de DNS está definida no momento porque está sendo executada apenas localmente. Existe um servidor DNS do Windows em execução na rede que fornece ao servidor o nome de host cloud.XXX.com
Etapas para reproduzir o comportamento
- digitandohttps://cloud.XXX.com:5280/http-bindno navegador
- recebendo erro 404
Ambiente
- Versão JSXC: JavaScript XMPP Chat 4.2.0 xmpp-cloud-auth v2.0.4
- Sistema host e versão: Nextcloud 20.0.4 Ubuntu 20.04.1 Apache2 2.4.41
- Fornecedor e versão do navegador: Firefox 84.0.1
- Algum plug-in de navegador ativado? não
- Fornecedor e versão do servidor XMPP: ejabberd 20.12
- O seu servidor XMPP está funcionando com outros clientes conforme esperado?
não...
Apache2 vhost é personalizado para:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<FilesMatch ".php$">
<If "-f %{SCRIPT_FILENAME}">
SetHandler "proxy:unix:/run/php/php7.4-fpm.nextcloud.sock|fcgi://localhost"
</If>
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPass /http-bind/ http://localhost:5280/http-bind/
ProxyPassReverse /http-bind/ http://localhost:5280/http-bind/
ProxyPreserveHost On
RewriteEngine on
RewriteCond %{SERVER_NAME} =cloud.XXX.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
meu ejabberd.yml:
---
loglevel: 4
log_rotate_count: 0
log_rotate_date: ""
hosts:
- "cloud.spacyal.com"
certfiles:
- "/etc/ejabberd/ejabberd.pem"
## TLS configuration
define_macro:
'TLS_CIPHERS': "HIGH:!aNULL:!eNULL:!3DES:@STRENGTH"
'TLS_OPTIONS':
- "no_sslv3"
- "no_tlsv1"
- "no_tlsv1_1"
- "cipher_server_preference"
- "no_compression"
## 'DH_FILE': "/path/to/dhparams.pem"
## generated with: openssl dhparam -out dhparams.pem 2048
c2s_ciphers: 'TLS_CIPHERS'
s2s_ciphers: 'TLS_CIPHERS'
c2s_protocol_options: 'TLS_OPTIONS'
s2s_protocol_options: 'TLS_OPTIONS'
## c2s_dhfile: 'DH_FILE'
## s2s_dhfile: 'DH_FILE'
listen:
-
port: 5222
ip: "::"
module: ejabberd_c2s
max_stanza_size: 262144
shaper: c2s_shaper
access: c2s
starttls_required: true
protocol_options: 'TLS_OPTIONS'
-
port: 5223
ip: "::"
module: ejabberd_c2s
max_stanza_size: 262144
shaper: c2s_shaper
access: c2s
tls: true
protocol_options: 'TLS_OPTIONS'
-
port: 5269
ip: "::"
module: ejabberd_s2s_in
max_stanza_size: 524288
-
port: 5443
ip: "::"
module: ejabberd_http
tls: true
protocol_options: 'TLS_OPTIONS'
request_handlers:
/api: mod_http_api
/bosh: mod_bosh
## /captcha: ejabberd_captcha
## /upload: mod_http_upload
/ws: ejabberd_http_ws
-
port: 5280
ip: "::"
module: ejabberd_http
tls: true
protocol_options: 'TLS_OPTIONS'
request_handlers:
/admin: ejabberd_web_admin
/.well-known/acme-challenge: ejabberd_acme
-
port: 1883
ip: "::"
module: mod_mqtt
backlog: 1000
## Disabling digest-md5 SASL authentication. digest-md5 requires plain-text
## password storage (see auth_password_format option).
disable_sasl_mechanisms:
- "digest-md5"
- "X-OAUTH2"
s2s_use_starttls: required
## Store the plain passwords or hashed for SCRAM:
auth_password_format: scram
auth_method: external
extauth_program: "/usr/bin/socket localhost 23662"
auth_use_cache: false
## Full path to a script that generates the image.
## captcha_cmd: "/usr/share/ejabberd/captcha.sh"
acl:
admin:
user:
- "admin"
local:
user_regexp: ""
loopback:
ip:
- 127.0.0.0/8
- ::1/128
access_rules:
local:
allow: local
c2s:
deny: blocked
allow: all
announce:
allow: admin
configure:
allow: admin
muc_create:
allow: local
pubsub_createnode:
allow: local
trusted_network:
allow: loopback
api_permissions:
"console commands":
from:
- ejabberd_ctl
who: all
what: "*"
"admin access":
who:
access:
allow:
acl: loopback
acl: admin
oauth:
scope: "ejabberd:admin"
access:
allow:
acl: loopback
acl: admin
what:
- "*"
- "!stop"
- "!start"
"public commands":
who:
ip: 127.0.0.1/8
what:
- status
- connected_users_number
shaper:
normal: 1000
fast: 50000
shaper_rules:
max_user_sessions: 10
max_user_offline_messages:
5000: admin
100: all
c2s_shaper:
none: admin
normal: all
s2s_shaper: fast
modules:
mod_adhoc: {}
mod_admin_extra: {}
mod_announce:
access: announce
mod_avatar: {}
mod_blocking: {}
mod_bosh: {}
mod_caps: {}
mod_carboncopy: {}
mod_client_state: {}
mod_configure: {}
## mod_delegation: {} # for xep0356
mod_disco: {}
mod_echo: {}
mod_fail2ban: {}
mod_http_api: {}
## mod_http_upload:
## put_url: https://@HOST@:5443/upload
mod_last: {}
## mod_mam:
## ## Mnesia is limited to 2GB, better to use an SQL backend
## ## For small servers SQLite is a good fit and is very easy
## ## to configure. Uncomment this when you have SQL configured:
## ## db_type: sql
## assume_mam_usage: true
## default: always
mod_mqtt: {}
mod_muc:
access:
- allow
access_admin:
- allow: admin
access_create: muc_create
access_persistent: muc_create
access_mam:
- allow
default_room_options:
mam: true
mod_muc_admin: {}
mod_offline:
access_max_user_messages: max_user_offline_messages
mod_ping: {}
mod_pres_counter:
count: 5
interval: 60
mod_privacy: {}
mod_private: {}
mod_proxy65:
access: local
max_connections: 5
mod_pubsub:
access_createnode: pubsub_createnode
plugins:
- flat
- pep
force_node_config:
"eu.siacs.conversations.axolotl.*":
access_model: open
## Avoid buggy clients to make their bookmarks public
storage:bookmarks:
access_model: whitelist
mod_push: {}
mod_push_keepalive: {}
## mod_register:
## ## Only accept registration requests from the "trusted"
## ## network (see access_rules section above).
## ## Think twice before enabling registration from any
## ## address. See the Jabber SPAM Manifesto for details:
## ## https://github.com/ge0rg/jabber-spam-fighting-manifesto
## ip_access: trusted_network
mod_roster:
versioning: true
mod_s2s_dialback: {}
mod_shared_roster: {}
mod_sic: {}
mod_stream_mgmt:
resend_on_timeout: if_offline
mod_vcard:
search: false
mod_vcard_xupdate: {}
mod_version: {}
ejabberd.log diz:
2020-12-25 22:03:38.847 [notice] <0.128.0>@lager_file_backend:154 Changed loghwm of /var/log/ejabberd/error.log to 100
2020-12-25 22:03:38.847 [notice] <0.128.0>@lager_file_backend:154 Changed loghwm of /var/log/ejabberd/ejabberd.log to 100
2020-12-25 22:03:38.908 [info] <0.114.0>@ejabberd_config:load:80 Loading configuration from /etc/ejabberd/ejabberd.yml
2020-12-25 22:03:38.919 [warning] <0.114.0>@ejabberd_config_transformer:warn_removed_module:514 Module mod_echo is deprecated and was automatically removed from the configuration. Please adjust your configuration file accordingly. Hint: run `ejabberdctl dump-config` command to view current configuration as it is seen by ejabberd.
2020-12-25 22:03:39.010 [warning] <0.114.0>@gen_mod:warn_soft_dep_fail:576 Module mod_mam is recommended for module mod_muc but is not found in the config
2020-12-25 22:03:39.023 [info] <0.114.0>@ejabberd_config:load:87 Configuration loaded successfully
2020-12-25 22:03:39.262 [info] <0.359.0>@gen_mod:start_modules:124 Loading modules for cloud.spacyal.com
2020-12-25 22:03:39.431 [info] <0.473.0>@mod_mqtt:init_topic_cache:523 Building MQTT cache for cloud.spacyal.com, this may take a while
2020-12-25 22:03:39.490 [info] <0.114.0>@ejabberd_cluster_mnesia:wait_for_sync:123 Waiting for Mnesia synchronization to complete
2020-12-25 22:03:39.629 [info] <0.114.0>@ejabberd_app:start:62 ejabberd 20.01-1 is started in the node ejabberd@localhost in 0.91s
2020-12-25 22:03:39.629 [info] <0.380.0>@ejabberd_listener:init:151 Start accepting TCP connections at [::]:5222 for ejabberd_c2s
2020-12-25 22:03:39.629 [info] <0.381.0>@ejabberd_listener:init:151 Start accepting TLS connections at [::]:5223 for ejabberd_c2s
2020-12-25 22:03:39.629 [info] <0.382.0>@ejabberd_listener:init:151 Start accepting TCP connections at [::]:5269 for ejabberd_s2s_in
2020-12-25 22:03:39.631 [info] <0.383.0>@ejabberd_listener:init:151 Start accepting TLS connections at [::]:5443 for ejabberd_http
2020-12-25 22:03:39.631 [info] <0.384.0>@ejabberd_listener:init:151 Start accepting TLS connections at [::]:5280 for ejabberd_http
2020-12-25 22:03:39.632 [info] <0.385.0>@ejabberd_listener:init:151 Start accepting TCP connections at [::]:1883 for mod_mqtt
2020-12-25 22:03:39.632 [info] <0.477.0>@ejabberd_listener:init:151 Start accepting TCP connections at 10.0.0.4:7777 for mod_proxy65_stream
2020-12-25 22:03:59.226 [info] <0.384.0>@ejabberd_listener:accept:256 (<0.531.0>) Accepted connection [::ffff:10.0.0.3]:60338 -> [::ffff:10.0.0.4]:5280
alguma ideia?? Eu ficaria muito agradecido! Estou tentando há 2 dias e não consigo resolver
MUITO OBRIGADO !!
e feliz natal :-)
Responder1
Verifique como você configura. Se você disser ao ejabberd para escutar path /bosh
, então esse é o URL que você deve usar. Por exemplo:
listen:
...
-
port: 5280
ip: "::"
module: ejabberd_http
tls: false
request_handlers:
/bosh: mod_bosh
-
port: 5443
ip: "::"
module: ejabberd_http
tls: true
request_handlers:
/bosh: mod_bosh
Isso funciona:
$ curl http://localhost:5280/bosh/
<?xml version='1.0'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns='http://www.w3.org/1999/xhtml'><head><title>ejabberd mod_bosh</title><style>body {
...
$ curl -k https://localhost:5443/bosh/
<?xml version='1.0'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns='http://www.w3.org/1999/xhtml'><head><title>ejabberd mod_bosh</title><style>body {
...