[jitsi-dev] [jitsi/jitsi-videobridge] Error: SEVERE: [28] 278 host-unknown, host:localhost, port:5347 (#334)


#1

I tried the jitsi stable and unstable release but facing a big problem: When the host is set to ```localhost``` on ```apt-get``` installation with the ```jitsi-videobridge``` I do always get the following error:

JVB 2016-10-20 17:06:13.066 SEVERE: [28] org.jitsi.meet.ComponentMain.call().278 host-unknown, host:localhost, port:5347
org.xmpp.component.ComponentException: host-unknown
	at org.jivesoftware.whack.ExternalComponent.connect(ExternalComponent.java:219)
	at org.jivesoftware.whack.ExternalComponentManager.addComponent(ExternalComponentManager.java:221)
	at org.jivesoftware.whack.ExternalComponentManager.addComponent(ExternalComponentManager.java:201)
	at org.jitsi.meet.ComponentMain$3.call(ComponentMain.java:270)
	at org.jitsi.meet.ComponentMain$3.call(ComponentMain.java:255)
	at org.jitsi.retry.RetryStrategy$TaskRunner.run(RetryStrategy.java:193)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

However, this should normally work out of the box - which also the jitsi quickinstall says. What I'm actually doing is installing this within a docker image/container and maybe that causes the trouble, but I would not see why.

Or do you think this is something else? How can it be that ```localhost``` is unknown when I can ping and telnet localhost ```prosody``` on port 5347 just fine?

thank you very much in advance

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334


#2

Closed #334.

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334#event-830749124


#3

Please use the mailinglist for questions and problems before opening issues.

This means that prosody doesn't know about a component localhost, its not a physical address or anything its just prosody config. It maybe your config is not included in prosody (missing Include "conf.d/*.cfg.lua" in main prosody config), or it maybe that prosody has a default virtual host and stuff configured for localhost and they are conflicting.

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334#issuecomment-255135523


#4

Ok sorry @damencho next time I'll use the list.

I have the following default file in ```/etc/prosody/conf.d/localhost.cfg.lua```

-- Section for localhost

-- This allows clients to connect to localhost. No harm in it.
VirtualHost "localhost"

VirtualHost "auth.localhost"
        authentication = "internal_plain"

Component "focus.localhost"
    component_secret="Secret"

When I ```dpkg-reconfigure``` the ```jitsi-videochat``` it asks me for the DNS hostname of my instance. There I chose ```localhost```. Here is the dialogue:

```
Configuring jitsi-videobridge

···

-----------------------------

The jisti-videobridge package needs the DNS hostname of your instance.

Hostname:
```

I'm not exactly sure what might be wrong with this default file as it should be working out of the box with this. What else can I try to make this work? Do you maybe have an idea?

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334#issuecomment-255145283


#5

I mean that there is a default file with localhost configs, coming from prosody package by default. Did you check the prosody main config, did it include the files from conf.d.

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334#issuecomment-255147767


#6

Yes the man config file ```/etc/prosody/prosody.cfg.lua``` includes the files with ```Include "conf.d/*.cfg.lua"```

So these are all default settings and basically I do not more then it is described here: https://github.com/turint/jitsi-meet/blob/master/doc/quick-install.md

For "dockerization" I use this example:

https://github.com/robertoandrade/docker-jitsi-meet

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334#issuecomment-255151480


#7

So having the domain as localhost is corner case and not a default installation. I also think reconfiguration is also a problem, I think there is a bug that we need to fix. But check whether there are localhost references inside prosody configs, other than jitsi one.

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334#issuecomment-255155502


#8

@damencho where do I have to look that up exactly? in ```/etc/prosody/conf.d/``` by default there is only one file namely ```localhost.cfg.lua``` which content I posted above. I'll post the whole default prosody config as well:

```
-- Prosody Example Configuration File

···

--
-- Information on configuring Prosody can be found on our
-- website at http://prosody.im/doc/configure
--
-- Tip: You can check that the syntax of this file is correct
-- when you have finished by running: luac -p prosody.cfg.lua
-- If there are any errors, it will let you know what and where
-- they are, otherwise it will keep quiet.
--
-- The only thing left to do is rename this file to remove the .dist ending, and fill in the
-- blanks. Good luck, and happy Jabbering!

---------- Server-wide settings ----------
-- Settings in this section apply to the whole server and are the default settings
-- for any virtual hosts

-- This is a (by default, empty) list of accounts that are admins
-- for the server. Note that you must create the accounts separately
-- (see http://prosody.im/doc/creating_accounts for info)
-- Example: admins = { "user1@example.com", "user2@example.net" }
admins = { }

-- Enable use of libevent for better performance under high load
-- For more information see: http://prosody.im/doc/libevent
--use_libevent = true;

-- This is the list of modules Prosody will load on startup.
-- It looks for mod_modulename.lua in the plugins folder, so make sure that exists too.
-- Documentation on modules can be found at: http://prosody.im/doc/modules
modules_enabled = {

  -- Generally required
    "roster"; -- Allow users to have a roster. Recommended :wink:
    "saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
    "tls"; -- Add support for secure TLS on c2s/s2s connections
    "dialback"; -- s2s dialback support
    "disco"; -- Service discovery

  -- Not essential, but recommended
    "private"; -- Private XML storage (for room bookmarks, etc.)
    "vcard"; -- Allow users to set vCards
  
  -- These are commented by default as they have a performance impact
    --"privacy"; -- Support privacy lists
    --"compression"; -- Stream compression (Debian: requires lua-zlib module to work)

  -- Nice to have
    "version"; -- Replies to server version requests
    "uptime"; -- Report how long server has been running
    "time"; -- Let others know the time here on this server
    "ping"; -- Replies to XMPP pings with pongs
    "pep"; -- Enables users to publish their mood, activity, playing music and more
    "register"; -- Allow users to register on this server using a client and change passwords

  -- Admin interfaces
    "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands
    --"admin_telnet"; -- Opens telnet console interface on localhost port 5582
  
  -- HTTP modules
    --"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
    --"http_files"; -- Serve static files from a directory over HTTP

  -- Other specific functionality
    "posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
    --"groups"; -- Shared roster support
    --"announce"; -- Send announcement to all online users
    --"welcome"; -- Welcome users who register accounts
    --"watchregistrations"; -- Alert admins of registrations
    --"motd"; -- Send a message to users when they log in
    --"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
};

-- These modules are auto-loaded, but should you want
-- to disable them then uncomment them here:
modules_disabled = {
  -- "offline"; -- Store offline messages
  -- "c2s"; -- Handle client connections
  -- "s2s"; -- Handle server-to-server connections
};

-- Disable account creation by default, for security
-- For more information see http://prosody.im/doc/creating_accounts
allow_registration = false;

-- Debian:
-- send the server to background.
--
daemonize = true;

-- Debian:
-- Please, don't change this option since /var/run/prosody/
-- is one of the few directories Prosody is allowed to write to
--
pidfile = "/var/run/prosody/prosody.pid";

-- These are the SSL/TLS-related settings. If you don't want
-- to use SSL/TLS, you may comment or remove this
ssl = {
  key = "/etc/prosody/certs/localhost.key";
  certificate = "/etc/prosody/certs/localhost.crt";
}

-- Force clients to use encrypted connections? This option will
-- prevent clients from authenticating unless they are using encryption.

c2s_require_encryption = false

-- Force certificate authentication for server-to-server connections?
-- This provides ideal security, but requires servers you communicate
-- with to support encryption AND present valid, trusted certificates.
-- NOTE: Your version of LuaSec must support certificate verification!
-- For more information see http://prosody.im/doc/s2s#security

s2s_secure_auth = false

-- Many servers don't support encryption or have invalid or self-signed
-- certificates. You can list domains here that will not be required to
-- authenticate using certificates. They will be authenticated using DNS.

--s2s_insecure_domains = { "gmail.com" }

-- Even if you leave s2s_secure_auth disabled, you can still require valid
-- certificates for some domains by specifying a list here.

--s2s_secure_domains = { "jabber.org" }

-- Select the authentication backend to use. The 'internal' providers
-- use Prosody's configured data storage to store the authentication data.
-- To allow Prosody to offer secure authentication mechanisms to clients, the
-- default provider stores passwords in plaintext. If you do not trust your
-- server please see http://prosody.im/doc/modules/mod_auth_internal_hashed
-- for information about using the hashed backend.

authentication = "internal_plain"

-- Select the storage backend to use. By default Prosody uses flat files
-- in its configured data directory, but it also supports more backends
-- through modules. An "sql" backend is included by default, but requires
-- additional dependencies. See http://prosody.im/doc/storage for more info.

--storage = "sql" -- Default is "internal" (Debian: "sql" requires one of the
-- lua-dbi-sqlite3, lua-dbi-mysql or lua-dbi-postgresql packages to work)

-- For the "sql" backend, you can uncomment *one* of the below to configure:
--sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename.
--sql = { driver = "MySQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }
--sql = { driver = "PostgreSQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }

-- Logging configuration
-- For advanced logging see http://prosody.im/doc/logging
--
-- Debian:
-- Logs info and higher to /var/log
-- Logs errors to syslog also
log = {
  -- Log files (change 'info' to 'debug' for debug logs):
  info = "/var/log/prosody/prosody.log";
  error = "/var/log/prosody/prosody.err";
  -- Syslog:
  { levels = { "error" }; to = "syslog"; };
}

----------- Virtual hosts -----------
-- You need to add a VirtualHost entry for each domain you wish Prosody to serve.
-- Settings under each VirtualHost entry apply *only* to that host.

VirtualHost "example.com"
  enabled = false -- Remove this line to enable this host

  -- Assign this host a certificate for TLS, otherwise it would use the one
  -- set in the global section (if any).
  -- Note that old-style SSL on port 5223 only supports one certificate, and will always
  -- use the global one.
  ssl = {
    key = "/etc/prosody/certs/example.com.key";
    certificate = "/etc/prosody/certs/example.com.crt";
  }

------ Components ------
-- You can specify components to add hosts that provide special services,
-- like multi-user conferences, and transports.
-- For more information on components, see http://prosody.im/doc/components

---Set up a MUC (multi-user chat) room server on conference.example.com:
--Component "conference.example.com" "muc"

-- Set up a SOCKS5 bytestream proxy for server-proxied file transfers:
--Component "proxy.example.com" "proxy65"

---Set up an external component (default component port is 5347)
--
-- External components allow adding various services, such as gateways/
-- transports to other networks like ICQ, MSN and Yahoo. For more info
-- see: http://prosody.im/doc/components#adding_an_external_component
--
--Component "gateway.example.com"
-- component_secret = "password"

------ Additional config files ------
-- For organizational purposes you may prefer to add VirtualHost and
-- Component definitions in their own config files. This line includes
-- all config files in /etc/prosody/conf.d/

Include "conf.d/*.cfg.lua"
```

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334#issuecomment-255310895


#9

I think what is indeed wrong (bug) on the setup/configure/reconfigure as you mentioned you need to fix, is that when I set a FQDN there like i.e. ```jitsi.example.com``` then the config file ```/etc/jitsi/videobridge/config``` is updated indeed, but a restart of the ```jitsi-videobridge``` still uses ```localhost```

Here is the generated config file:

# Jitsi Videobridge settings

# sets the XMPP domain (default: none)
JVB_HOSTNAME=jitsi.example.com

# sets the hostname of the XMPP server (default: domain if set, localhost otherwise)
JVB_HOST=

# sets the port of the XMPP server (default: 5275)
JVB_PORT=5347

# sets the shared secret used to authenticate to the XMPP server
JVB_SECRET=QX2cDaEP

# extra options to pass to the JVB daemon
JVB_OPTS=""

# extra jvm params
#JVB_EXTRA_JVM_PARAMS="-javaagent:/usr/share/newrelic/newrelic.jar -Dnewrelic.config.file=/etc/jitsi/videobridge/newrelic.yml"

So when it is in the config file it should use this value that is set in the config file as a default, right?

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334#issuecomment-255314331


#10

So in prosody main config I see their default virtual host is -> VirtualHost "example.com", apparently I was wrong thinking they have localhost by default.

About re-configuring: so if yo re-configure jvb, you do not have this setting in prosody, so you need to reconfigure jitsi-meet (as its package jitsi-meet-prosody is doing the prosody config, or you need to reconfigure jitsi-meet-prosody, not sure). So this reconfigures are not well tested and may have bugs, I know for one in jvb and I see it in your config file after re-configuration, it is missing the variable JAVA_SYS_PROPS which is very important, setting home/config folder. I will try to fix the jvb reconfigure these days.

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334#issuecomment-255381929


#11

@damencho Hi there! Did you had already some time to fix it? I still do not make any progress here unfortunatly. :frowning:

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334#issuecomment-258426941


#12

I didn't have time to work on that fix, it is an easy change but needs testing the debian package.
We need to change this line:
https://github.com/jitsi/jitsi-videobridge/blob/master/resources/install/debian/postinst#L95
Here the check should be not whether a variable exist (as it is from the old file before reconfiguring), but whether we have a line containing the variable in the config file, this way we will avoid duplicating code(variable generation) in the logic.

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334#issuecomment-258494557


#13

We made some changes to the packages, I think I've also fixed reconfiguring. Now using echo "jitsi-videobridge jitsi-videobridge/jvb-hostname string jitsi-meet.example.com" | debconf-set-selections, should also work before installing packages.
If you have questions, send them to the mailinglist. Maybe it is a good idea to write a page explaining how people can install packages separately, cause this is now possible. I'll work on similar page these days.

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334#issuecomment-263662888


#14

@damencho Forgot to write you that your bugfixes and the possibility to pre-configre the hostname with ```echo "jitsi-videobridge jitsi-videobridge/jvb-hostname string jitsi-meet.example.com" | debconf-set-selections``` solved all the problems and jitsi is up and running. Thanks a lot!

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334#issuecomment-269038882


#15

Cool glad to hear that. Thanks for the feedback.

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/334#issuecomment-269039063