
Tengo problemas para configurar un servidor xmpp externo para nextcloud con mi servidor ejabberd en combinación con jsxc/xmpp-cloud-auth.
En la configuración del servidor externo de nextcloud se mostró el error: Dominio XMPP:https://nube.XXX.com:5280 URL de BOSH: /http-bind/ Se recibió XML no válido. Tal vezhttps://cloud.XXX.com/http-bind/fue redirigido. Deberías utilizar una URL absoluta.
Si navego con el navegador, aparece un 404 No encontrado en /http-bind, además mi panel de administración se muestra un poco extraño y no muestra todo (como se puede ver en la foto).
Estoy 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
Utilicé este artículo para configurar el sistema:https://github.com/jsxc/xmpp-cloud-auth/wiki/raspberry-pi-en
¿Alguien tiene una idea de por qué sucede esto? ¿Cuál podría ser el motivo de un error 404? ¿Quién solicita http-bind para obtener una respuesta? ¿Y cuál debería ser el resultado deseado?
La configuración del firewall parece estar bien. No hay ninguna configuración de DNS establecida en este momento porque solo se ejecuta localmente. Hay un servidor DNS de Windows ejecutándose en la red que le da al servidor el nombre de host cloud.XXX.com
Pasos para reproducir el comportamiento.
- mecanografíahttps://cloud.XXX.com:5280/http-binden el navegador
- obteniendo el error 404
Ambiente
- Versión JSXC: JavaScript XMPP Chat 4.2.0 xmpp-cloud-auth v2.0.4
- Sistema host y versión: Nextcloud 20.0.4 ubuntu 20.04.1 Apache2 2.4.41
- Proveedor y versión del navegador: Firefox 84.0.1
- ¿Algún complemento del navegador habilitado? No
- Proveedor y versión del servidor XMPP: ejabberd 20.12
- ¿Su servidor XMPP funciona con otros clientes como se esperaba?
No...
apache2 vhost está 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>
mi 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 dice:
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
¿¿algunas ideas?? ¡Estaría muy agradecido! Llevo 2 dias intentando y no consigo solucionarlo
MUCHAS GRACIAS !!
y feliz navidad :-)
Respuesta1
Comprueba cómo lo configuras. Si le dice a ejabberd que escuche en la ruta /bosh
, entonces esa es la URL que debe usar. Por ejemplo:
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
Esto 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 {
...