<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hi,</p>
<p>I tried to setup a jitsi server on my DragonFlyBSD machine. I've
encountered a few problems, some of them fatal as far as I
understand. Could anyone help? I understand that this is not a
"top priority" problem but anyway :) FYI we have a lot of free
bandwidth and capacity in our servers and we do a lot of virtual
conferences lately for well known reasons.<br>
</p>
<p>I found two quite useful guides, easy to follow:</p>
<p><a class="moz-txt-link-freetext" href="https://honeyguide.eu/posts/jitsi-freebsd/?utm_source=discoverbsd">https://honeyguide.eu/posts/jitsi-freebsd/?utm_source=discoverbsd</a></p>
<p><a class="moz-txt-link-freetext" href="https://www.bobeager.uk/jitsi.html">https://www.bobeager.uk/jitsi.html</a> (Warning! the jitsi-meet
config.js doesn't work the way he described!)<br>
</p>
<p>Of course these are for FreeBSD, but they are very helpful
anyway. It's also evident that the relevant DragonFly packages are
actually mechanically produced from the corresponding FreeBSD
ones.<br>
</p>
<p>1. <tt>net-im/jitsi-videobridge</tt> and <tt>net-im/jicofo</tt>
both use the <tt>${name}_env_file</tt> mechanism in the
corresponding <tt>rc</tt> files. This is quite new in FreeBSD
(available from 12.x), and evidently it's not ported to DragonFly.
I ended up hand modifying the rc script and sourcing the env file,
an easy fix.</p>
<p><tt>/usr/local/etc/rc.d/jicofo</tt>:</p>
<p><tt>...</tt></p>
<p><tt>{</tt><tt><br>
</tt><b><tt> . $jicofo_env_file</tt></b><tt><br>
</tt><tt> daemon -p ${pidfile} -o /var/log/${name}.log \</tt><tt><br>
</tt><tt> ${command} -Xmx${MAX_MEMORY} \</tt><tt><br>
</tt><tt>...</tt></p>
<p><br>
</p>
<p>2. jitsi-videobridge is throwing java exceptions (log excerpt
below). I found the <font color="#ff0034"><b>bold, red</b></font>
parts especially "disturbing". This component should work smoothly
after a very minimal configuration:<br>
</p>
<p><tt>/usr/local/etc/jitsi/videobridge/jitsi-videobridge.conf</tt>:<br>
</p>
<p><tt>JVB_XMPP_HOST=localhost</tt><tt><br>
</tt><tt>JVB_XMPP_DOMAIN=meet.somedomain.hu</tt><tt><br>
</tt><tt>JVB_XMPP_PORT=5347</tt><tt><br>
</tt><tt>JVB_XMPP_SECRET=SomeSecret</tt></p>
<p><tt>VIDEOBRIDGE_MAX_MEMORY=3072m</tt><tt><br>
</tt>
</p>
<tt>
</tt>
<p><tt>/usr/local/etc/jitsi/videobridge/sip-communicator.properties</tt>:<br>
</p>
<tt>org.jitsi.videobridge.TCP_HARVESTER_PORT=4443</tt><tt><br>
</tt>
<p>I'm quite sure my jitsi-videobridge doesn't work but I'm not even
sure. It should listen on the tcp port 4443 and the udp port 10000
but according to <tt>netstat -na</tt> it does not, so it's very
likely not working.<br>
</p>
<p>Thanks for any help in advance,<br>
</p>
<p>Regards:</p>
<pre class="moz-signature" cols="72">Balázs
</pre>
<p><tt><br>
</tt></p>
<p><tt>2021-01-27 18:09:45.271 INFO: [1] NewConfig$1.invoke#88:
Loaded NewConfig with origin: merge of system properties,system
properties,reference.conf @
<a class="moz-txt-link-freetext" href="jar:file:/usr/local/share/java/classes/jitsi-videobridge.jar!/reference.conf">jar:file:/usr/local/share/java/classes/jitsi-videobridge.jar!/reference.conf</a>:
1</tt></p>
<tt>2021-01-27 18:09:45.276 INFO: [1]
LegacyConfigFileLoader$Companion.load#40: Attempting to load
legacy config file at path /usr/local/etc/jitsi, videobridge,
sip-communicator.properties</tt><tt><br>
</tt><tt>2021-01-27 18:09:45.473 INFO: [1]
LegacyConfigFileLoader$Companion.load#40: Attempting to load
legacy config file at path /usr/local/etc/jitsi, videobridge,
sip-communicator.properties</tt><tt><br>
</tt><tt>2021-01-27 18:09:45.474 INFO: [1]
JitsiConfig$Companion.reload#40: Reloading.</tt><tt><br>
</tt><tt>2021-01-27 18:09:45.483 INFO: [1] NewConfig$1.invoke#88:
Loaded NewConfig with origin: merge of system properties,system
properties,reference.conf @
<a class="moz-txt-link-freetext" href="jar:file:/usr/local/share/java/classes/jitsi-videobridge.jar!/reference.conf">jar:file:/usr/local/share/java/classes/jitsi-videobridge.jar!/reference.conf</a>:
1</tt><tt><br>
</tt><tt>2021-01-27 18:09:45.483 INFO: [1]
LegacyConfigFileLoader$Companion.load#40: Attempting to load
legacy config file at path /usr/local/etc/jitsi, videobridge,
sip-communicator.properties</tt><tt><br>
</tt><tt>2021-01-27 18:09:45.484 INFO: [1]
LegacyConfigFileLoader$Companion.load#40: Attempting to load
legacy config file at path /usr/local/etc/jitsi, videobridge,
sip-communicator.properties</tt><tt><br>
</tt><tt>2021-01-27 18:09:45.523 INFO: [13]
ConfigurationActivator.start#45: Registered the
LegacyConfigurationServiceShim in OSGi.</tt><tt><br>
</tt><tt>2021-01-27 18:09:45.526 INFO: [13]
AbstractVersionActivator.start#91: VersionService registered: JVB
2.1.SNAPSHOT</tt><tt><br>
</tt><tt>2021-01-27 18:09:45.542 INFO: [13]
org.eclipse.jetty.util.log.Log.initialized: Logging initialized
@648ms to org.eclipse.jetty.util.log.JavaUtilLog</tt><tt><br>
</tt><tt>2021-01-27 18:09:45.641 INFO: [13]
org.eclipse.jetty.server.Server.doStart: jetty-9.4.z-SNAPSHOT;
built: 2019-02-15T16:53:49.381Z; git:
eb70b240169fcf1abbd86af36482d1c49826fa0b; jvm 1.8.0_181-b13</tt><tt><br>
</tt><tt>2021-01-27 18:09:47.488 INFO: [13]
org.eclipse.jetty.server.handler.ContextHandler.doStart: Started
o.e.j.s.ServletContextHandler@1f475259{/,null,AVAILABLE}</tt><tt><br>
</tt><tt>2021-01-27 18:09:47.501 INFO: [13]
org.eclipse.jetty.server.AbstractConnector.doStart: Started
ServerConnector@14a826bd{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}</tt><tt><br>
</tt><tt>2021-01-27 18:09:47.501 INFO: [13]
org.eclipse.jetty.server.Server.doStart: Started @2608ms</tt><tt><br>
</tt><tt>2021-01-27 18:09:47.512 INFO: [13]
AbstractJettyBundleActivator.start#613: Not starting the Jetty
service for
org.jitsi.videobridge.websocket.WebSocketBundleActivator(port=-1)</tt><tt><br>
</tt><font color="#ff0034"><tt><b>2021-01-27 18:09:47.525 WARNING:
[13] UlimitCheck.printUlimits#111: Running with open files
limit null (hard null), thread limit null (hard null). These
values are too low and they will limit the number of
participants that the bridge can serve simultaneously.</b></tt><tt><b><br>
</b></tt></font><tt>2021-01-27 18:09:47.528 INFO: [13]
VideobridgeExpireThread.start#92: Starting with 60 second
interval.</tt><tt><br>
</tt><tt>2021-01-27 18:09:47.529 WARNING: [13]
Videobridge.start#909: No authorized source regexp configured.
Will accept requests from any source.</tt><tt><br>
</tt><tt>2021-01-27 18:09:47.632 INFO: [13]
JitsiConfig$Companion.reload#40: Reloading.</tt><tt><br>
</tt><tt>2021-01-27 18:09:47.638 INFO: [13] NewConfig$1.invoke#88:
Loaded NewConfig with origin: merge of system properties,system
properties,reference.conf @
<a class="moz-txt-link-freetext" href="jar:file:/usr/local/share/java/classes/jitsi-videobridge.jar!/reference.conf">jar:file:/usr/local/share/java/classes/jitsi-videobridge.jar!/reference.conf</a>:
1</tt><tt><br>
</tt><tt>2021-01-27 18:09:47.638 INFO: [13]
LegacyConfigFileLoader$Companion.load#40: Attempting to load
legacy config file at path /usr/local/etc/jitsi, videobridge,
sip-communicator.properties</tt><tt><br>
</tt><tt>2021-01-27 18:09:47.639 INFO: [13]
LegacyConfigFileLoader$Companion.load#40: Attempting to load
legacy config file at path /usr/local/etc/jitsi, videobridge,
sip-communicator.properties</tt><tt><br>
</tt><tt>2021-01-27 18:09:47.648 INFO: [13]
AbstractHealthCheckService.start#96: Started with interval=10000,
timeout=PT30S, maxDuration=PT3S, stickyFailures=false.</tt><tt><br>
</tt><tt>2021-01-27 18:09:47.660 INFO: [13]
OctoRelayService.start#62: Octo relay is disabled.</tt><tt><br>
</tt><tt>2021-01-27 18:09:47.723 INFO: [28]
ComponentBase.loadConfig#202: Component org.jitsi.videobridge.
config: </tt><tt><br>
</tt><tt>2021-01-27 18:09:47.723 INFO: [28]
ComponentBase.loadConfig#203: ping interval: 10000 ms</tt><tt><br>
</tt><tt>2021-01-27 18:09:47.724 INFO: [28]
ComponentBase.loadConfig#204: ping timeout: 5000 ms</tt><tt><br>
</tt><tt>2021-01-27 18:09:47.724 INFO: [28]
ComponentBase.loadConfig#205: ping threshold: 3</tt><tt><br>
</tt><tt>2021-01-27 18:09:48.157 INFO: [24]
org.ice4j.ice.harvest.MappingCandidateHarvesters.initialize:
Initialized mapping harvesters (delay=513ms).
stunDiscoveryFailed=false</tt><tt><br>
</tt><tt>2021-01-27 18:09:57.675 INFO: [25]
Videobridge.createConference#319: create_conf, id=c552d97d6078c229
gid=null logging=false</tt><tt><br>
</tt><tt>2021-01-27 18:09:57.690 INFO: [25]
TaskPools.<clinit>#81: TaskPools detected 8 processors,
creating the CPU pool with that many threads</tt><tt><br>
</tt><tt>2021-01-27 18:09:57.831 INFO: [25]
org.ice4j.ice.harvest.AbstractUdpListener.<init>:
Initialized AbstractUdpListener with address
217.116.43.47:10000/udp. Receive buffer size 419430 (asked for
1048 5760)</tt><tt><br>
</tt><tt>2021-01-27 18:09:57.832 INFO: [25]
org.ice4j.ice.harvest.SinglePortUdpHarvester.<init>:
Initialized SinglePortUdpHarvester with address
217.116.43.47:10000/udp</tt><tt><br>
</tt><font color="#ff0034"><b><tt>Error loading native library:
java.lang.Exception: Unsupported OS: DragonFlyBSD</tt></b><b><tt><br>
</tt></b></font><tt>2021-01-27 18:09:58.607 SEVERE: [25]
RecurringRunnableExecutor.run#230: The invocation of the method
org.jitsi.videobridge.health.Health.run() threw an exception.</tt><tt><br>
</tt><tt>java.lang.UnsatisfiedLinkError:
org.jitsi_modified.sctp4j.SctpJni.usrsctp_init(I)Z</tt><tt><br>
</tt><tt> at
org.jitsi_modified.sctp4j.SctpJni.usrsctp_init(Native Method)</tt><tt><br>
</tt><tt> at
org.jitsi_modified.sctp4j.Sctp4j.init(Sctp4j.java:40)</tt><tt><br>
</tt><tt> at
org.jitsi.videobridge.sctp.SctpManager.<clinit>(SctpManager.java:54)</tt><tt><br>
</tt><tt> at
org.jitsi.videobridge.Endpoint.createSctpConnection(Endpoint.java:860)</tt><tt><br>
</tt><tt> at
org.jitsi.videobridge.health.Health.check(Health.java:77)</tt><tt><br>
</tt><tt> at
org.jitsi.videobridge.health.Health.performCheck(Health.java:211)</tt><tt><br>
</tt><tt> at
org.jitsi.health.AbstractHealthCheckService.run(AbstractHealthCheckService.kt:144)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor.run(RecurringRunnableExecutor.java:216)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor.runInThread(RecurringRunnableExecutor.java:292)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor.access$000(RecurringRunnableExecutor.java:36)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor$1.run(RecurringRunnableExecutor.java:328)</tt><tt><br>
</tt><tt>2021-01-27 18:10:07.677 INFO: [25]
Videobridge.createConference#319: create_conf, id=2cf3fa4f00c2ff3a
gid=null logging=false</tt><tt><br>
</tt><tt>2021-01-27 18:10:07.683 SEVERE: [25]
RecurringRunnableExecutor.run#230: The invocation of the method
org.jitsi.videobridge.health.Health.run() threw an exception.</tt><tt><br>
</tt><tt>java.lang.NoClassDefFoundError: Could not initialize class
org.jitsi.videobridge.sctp.SctpManager</tt><tt><br>
</tt><tt> at
org.jitsi.videobridge.Endpoint.createSctpConnection(Endpoint.java:860)</tt><tt><br>
</tt><tt> at
org.jitsi.videobridge.health.Health.check(Health.java:77)</tt><tt><br>
</tt><tt> at
org.jitsi.videobridge.health.Health.performCheck(Health.java:211)</tt><tt><br>
</tt><tt> at
org.jitsi.health.AbstractHealthCheckService.run(AbstractHealthCheckService.kt:144)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor.run(RecurringRunnableExecutor.java:216)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor.runInThread(RecurringRunnableExecutor.java:292)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor.access$000(RecurringRunnableExecutor.java:36)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor$1.run(RecurringRunnableExecutor.java:328)</tt><tt><br>
</tt><tt>2021-01-27 18:10:17.677 INFO: [25]
Videobridge.createConference#319: create_conf, id=cd809d65b2aa732a
gid=null logging=false</tt><tt><br>
</tt><tt>2021-01-27 18:10:17.683 SEVERE: [25]
RecurringRunnableExecutor.run#230: The invocation of the method
org.jitsi.videobridge.health.Health.run() threw an exception.</tt><tt><br>
</tt><tt>java.lang.NoClassDefFoundError: Could not initialize class
org.jitsi.videobridge.sctp.SctpManager</tt><tt><br>
</tt><tt> at
org.jitsi.videobridge.Endpoint.createSctpConnection(Endpoint.java:860)</tt><tt><br>
</tt><tt> at
org.jitsi.videobridge.health.Health.check(Health.java:77)</tt><tt><br>
</tt><tt> at
org.jitsi.videobridge.health.Health.performCheck(Health.java:211)</tt><tt><br>
</tt><tt> at
org.jitsi.health.AbstractHealthCheckService.run(AbstractHealthCheckService.kt:144)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor.run(RecurringRunnableExecutor.java:216)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor.runInThread(RecurringRunnableExecutor.java:292)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor.access$000(RecurringRunnableExecutor.java:36)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor$1.run(RecurringRunnableExecutor.java:328)</tt><tt><br>
</tt><tt>2021-01-27 18:10:27.697 INFO: [25]
Videobridge.createConference#319: create_conf, id=4bb74965720a56d9
gid=null logging=false</tt><tt><br>
</tt><tt>2021-01-27 18:10:27.702 SEVERE: [25]
RecurringRunnableExecutor.run#230: The invocation of the method
org.jitsi.videobridge.health.Health.run() threw an exception.</tt><tt><br>
</tt><tt>java.lang.NoClassDefFoundError: Could not initialize class
org.jitsi.videobridge.sctp.SctpManager</tt><tt><br>
</tt><tt> at
org.jitsi.videobridge.Endpoint.createSctpConnection(Endpoint.java:860)</tt><tt><br>
</tt><tt> at
org.jitsi.videobridge.health.Health.check(Health.java:77)</tt><tt><br>
</tt><tt> at
org.jitsi.videobridge.health.Health.performCheck(Health.java:211)</tt><tt><br>
</tt><tt> at
org.jitsi.health.AbstractHealthCheckService.run(AbstractHealthCheckService.kt:144)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor.run(RecurringRunnableExecutor.java:216)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor.runInThread(RecurringRunnableExecutor.java:292)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor.access$000(RecurringRunnableExecutor.java:36)</tt><tt><br>
</tt><tt> at
org.jitsi.utils.concurrent.RecurringRunnableExecutor$1.run(RecurringRunnableExecutor.java:328)</tt><tt><br>
</tt><br>
</body>
</html>