snapshot of https://github.com/jitsi/jitsi-videobridge.git @ fcbf741c646bc237d2ed85a1e86910532532b831 (2026-09-15)
Some checks failed
Java CI with Maven / Java 17 (push) Failing after 7m2s
Java CI with Maven / Java 21 (push) Failing after 5m0s

This commit is contained in:
upstream-mirror
2026-09-15 16:12:38 +05:00
commit e1257b7a05
647 changed files with 110946 additions and 0 deletions

2
debian/README vendored Normal file
View File

@@ -0,0 +1,2 @@
Jitsi Videobridge - WebRTC compatible Selective Forwarding Unit
(SFU) for multiuser video communication

8
debian/README.Debian vendored Normal file
View File

@@ -0,0 +1,8 @@
jitsi-videobridge for Debian
---------------------
If you want a WebRTC videoconferencing solution you have to install
jitsi-meet package which uses Jitsi Videobridge as a SFU (Selective
Forwarding Unit)
-- Yasen Pramatarov <yasen@bluejimp.com> Tue, 22 Apr 2014 21:40:37 +0300

6
debian/changelog vendored Normal file
View File

@@ -0,0 +1,6 @@
jitsi-videobridge2 (2.1-0-g676fb3d-1) unstable; urgency=low
* Initial release.
-- Damian Minkov <damencho@jitsi.org> Fri, 17 Jan 2020 15:51:09 +0000

1
debian/compat vendored Normal file
View File

@@ -0,0 +1 @@
12

8
debian/config vendored Normal file
View File

@@ -0,0 +1,8 @@
#!/bin/sh -e
# Source debconf library.
. /usr/share/debconf/confmodule
# server hostname
db_input critical jitsi-videobridge/jvb-hostname || true
db_go

20
debian/control vendored Normal file
View File

@@ -0,0 +1,20 @@
Source: jitsi-videobridge2
Section: net
Priority: extra
Maintainer: Jitsi Team <dev@jitsi.org>
Uploaders: Emil Ivov <emcho@jitsi.org>, Damian Minkov <damencho@jitsi.org>
Build-Depends: debhelper (>= 9), dh-systemd, openjdk-17-jdk | openjdk-21-jdk, maven
Standards-Version: 3.9.3
Homepage: https://jitsi.org/videobridge
Package: jitsi-videobridge2
Replaces: jitsi-videobridge
Conflicts: jitsi-videobridge (<= 1400-1)
Architecture: all
Pre-Depends: openjdk-17-jre-headless | openjdk-17-jre | openjdk-21-jre-headless | openjdk-21-jre, libssl3 | libssl1.1
Depends: ${misc:Depends}, procps, uuid-runtime, ruby-hocon
Recommends: libpcap0.8
Description: WebRTC compatible Selective Forwarding Unit (SFU)
Jitsi Videobridge is a WebRTC compatible Selective Forwarding Unit
(SFU) for multiuser video communication. It is an essential part
of Jitsi Meet

13
debian/copyright vendored Normal file
View File

@@ -0,0 +1,13 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: Jitsi Videobridge
Upstream-Contact: Emil Ivov <emcho@jitsi.org>
Source: https://github.com/jitsi/jitsi-videobridge
Files: *
Copyright: 2015-present Atlassian Pty Ltd
License: Apache-2.0
License: Apache-2.0
On Debian systems, the full text of the Apache
License version 2 can be found in the file
'/usr/share/common-licenses/Apache-2.0'.

0
debian/docs vendored Normal file
View File

118
debian/init.d vendored Normal file
View File

@@ -0,0 +1,118 @@
#! /bin/sh
#
# INIT script for Jitsi Videobridge
# Version: 1.0 01-May-2014 yasen@bluejimp.com
#
### BEGIN INIT INFO
# Provides: jitsi-videobridge
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Jitsi Videobridge
# Description: WebRTC compatible Selective Forwarding Unit (SFU)
### END INIT INFO
. /lib/lsb/init-functions
# Include videobridge defaults if available
if [ -f /etc/jitsi/videobridge/config ]; then
. /etc/jitsi/videobridge/config
fi
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/share/jitsi-videobridge/jvb.sh
NAME=jvb
USER=jvb
# A tmpfs backed directory just for the JVB process. This is introduced
# to hold packet arrival times, but it may be otherwise useful in the future.
TMPPATH=/var/run/jitsi-videobridge
PIDFILE=/var/run/jitsi-videobridge.pid
LOGFILE=/var/log/jitsi/jvb.log
DESC=jitsi-videobridge
if [ ! -d "$TMPPATH" ]; then
mkdir "$TMPPATH"
chown $USER:adm "$TMPPATH"
fi
if [ ! $JVB_HOST ]; then
JVB_HOST=localhost
fi
# TODO: remove this when support for --apis is removed
DAEMON_OPTS="$JVB_OPTS"
if [ ! -x $DAEMON ] ;then
echo "Daemon not executable: $DAEMON"
exit 1
fi
set -e
stop() {
if [ -f $PIDFILE ]; then
PID=$(cat $PIDFILE)
fi
echo -n "Stopping $DESC: "
if [ $PID ]; then
kill $PID || true
rm $PIDFILE || true
echo "$NAME stopped."
else
echo "$NAME doesn't seem to be running."
fi
}
start() {
if [ -f $PIDFILE ]; then
echo "$DESC seems to be already running, we found pidfile $PIDFILE."
exit 1
fi
echo -n "Starting $DESC: "
DAEMON_START_CMD="JAVA_SYS_PROPS=\"$JAVA_SYS_PROPS\" exec $DAEMON $DAEMON_OPTS < /dev/null >> $LOGFILE 2>&1"
AUTHBIND_CMD=""
if [ "$AUTHBIND" = "yes" ]; then
AUTHBIND_CMD="/usr/bin/authbind --deep /bin/bash -c "
DAEMON_START_CMD="'$DAEMON_START_CMD'"
fi
start-stop-daemon --start --quiet --background --chuid $USER --make-pidfile --pidfile $PIDFILE \
--exec /bin/bash -- -c "$AUTHBIND_CMD $DAEMON_START_CMD"
echo "$NAME started."
}
reload() {
echo 'Not yet implemented.'
}
status() {
status_of_proc -p $PIDFILE java "$NAME" && exit 0 || exit $?
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
reload)
reload
;;
force-reload)
reload
;;
status)
status
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|status}" >&2
exit 1
;;
esac
exit 0

10
debian/install vendored Normal file
View File

@@ -0,0 +1,10 @@
jvb/target/dependency/* usr/share/jitsi-videobridge/lib
jvb/lib/videobridge.rc usr/share/jitsi-videobridge/lib
jvb/lib/logging.properties etc/jitsi/videobridge
jitsi-videobridge.jar usr/share/jitsi-videobridge
jvb/resources/jvb.sh usr/share/jitsi-videobridge
resources/graceful_shutdown.sh usr/share/jitsi-videobridge
resources/collect-dump-logs.sh usr/share/jitsi-videobridge
jitsi-videobridge etc/logrotate.d
config/20-jvb-udp-buffers.conf etc/sysctl.d

29
debian/jitsi-videobridge2.service vendored Normal file
View File

@@ -0,0 +1,29 @@
[Unit]
Description=Jitsi Videobridge
After=network-online.target
Wants=network-online.target
[Service]
SuccessExitStatus=143
# configuration error prevents restart loops
RestartPreventExitStatus=78
# allow bind to 80 and 443
AmbientCapabilities=CAP_NET_BIND_SERVICE
EnvironmentFile=/etc/jitsi/videobridge/config
Environment=LOGFILE=/var/log/jitsi/jvb.log
User=jvb
RuntimeDirectory=jitsi-videobridge
RuntimeDirectoryMode=0750
PIDFile=/var/run/jitsi-videobridge/jitsi-videobridge.pid
# more threads for this process
TasksMax=65000
# allow more open files for this process
LimitNPROC=65000
LimitNOFILE=65000
ExecStart=/bin/bash -c "exec /usr/share/jitsi-videobridge/jvb.sh ${JVB_OPTS} < /dev/null >> ${LOGFILE} 2>&1"
ExecStartPost=/bin/bash -c "echo $MAINPID > /var/run/jitsi-videobridge/jitsi-videobridge.pid"
Restart=on-failure
RestartSec=2
[Install]
WantedBy=multi-user.target

40
debian/manpage.1 vendored Normal file
View File

@@ -0,0 +1,40 @@
.\" Hey, EMACS: -*- nroff -*-
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH JITSI-VIDEOBRIDGE SECTION "April 09, 2014"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
.\" .nh disable hyphenation
.\" .hy enable hyphenation
.\" .ad l left justify
.\" .ad b justify to both left and right margins
.\" .nf disable filling
.\" .fi enable filling
.\" .br insert line break
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
jitsi-videobridge \- WebRTC compatible Selective Forwarding Unit
(SFU) for multiuser video communication
.SH SYNOPSIS
.B /usr/share/jitsi-videobridge/jvb.sh
.RI [ options ] ...
.br
.B /etc/init.d/jitsi-videobridge (start|stop|restart)
.SH DESCRIPTION
This manual page documents briefly the
.B jitsi-videobridge
service.
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \fI<whatever>\fP escape sequences to invoke bold face and italics,
.\" respectively.
\fBjitsi-videobridge\fP is a Selective Forwarding Unit (SFU) for
building applications for WebRTC compatible video conferences.
.SH AUTHOR
jitsi-videobridge was written by Jitsi.org and Bluejimp.com.
.PP
This manual page was written by Yasen Pramatarov <yasen@bluejimp.com>,
for the Debian project (and may be used by others).

1
debian/po/POTFILES.in vendored Normal file
View File

@@ -0,0 +1 @@
[type: gettext/rfc822deb] templates

30
debian/po/templates.pot vendored Normal file
View File

@@ -0,0 +1,30 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: jitsi-videobridge\n"
"Report-Msgid-Bugs-To: jitsi-videobridge@packages.debian.org\n"
"POT-Creation-Date: 2014-08-11 10:41+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: string
#. Description
#: ../templates:1001
msgid "Hostname:"
msgstr ""
#. Type: string
#. Description
#: ../templates:1001
msgid "The jitsi-videobridge package needs the DNS hostname of your instance."
msgstr ""

184
debian/postinst vendored Normal file
View File

@@ -0,0 +1,184 @@
#!/bin/bash
# postinst script for jitsi-videobridge
set -e
case "$1" in
configure)
CONFIG="/etc/jitsi/videobridge/config"
# we don't want to regenerate config on upgrade
OLDCONFIG="false"
# migrate any old config found
if [ -f "/etc/default/jitsi-videobridge" ]; then
mv /etc/default/jitsi-videobridge $CONFIG
fi
if [ -f $CONFIG ]; then
. $CONFIG
if [ -n "$JVB_HOSTNAME" ] && [ -n "$JVB_SECRET" ]; then
OLDCONFIG="true"
fi
fi
# debconf hostname question
. /usr/share/debconf/confmodule
# the default vars
db_get jitsi-videobridge/jvb-hostname
JVB_HOSTNAME_IN=$(echo "$RET" | xargs echo -n)
# generate config on new install or when we are reconfiguring
# and all install is different than current one
if [ "$OLDCONFIG" = "false" ] || [ "$JVB_HOSTNAME" != "$JVB_HOSTNAME_IN" ]; then
JVB_HOSTNAME="$JVB_HOSTNAME_IN"
if [ "$OLDCONFIG" = "false" ]; then
# 8-chars random secret, alternative to pwgen 8
db_get jitsi-videobridge/jvbsecret
if [ -n "$RET" ]; then
JVB_SECRET="$RET"
else
JVB_SECRET=`head -c 8 /dev/urandom | tr '\0-\377' 'a-zA-Z0-9a-zA-Z0-9a-zA-Z0-9a-zA-Z0-9@@@@####'`
fi
fi
fi
# Store it, so we can use it if xmpp server is on same machine
# we are currently doing this on every upgrade in order to be able to successfully upgrade
# from old packages, otherwise we can do it only when secret is first time generated
db_set jitsi-videobridge/jvbsecret $JVB_SECRET
# and we're done with debconf
db_stop
HOCON_CONFIG="/etc/jitsi/videobridge/jvb.conf"
# let's check whether there is a setting in the $CONFIG
# for home folder and logging props file, if missing add it
if ! grep -q "JAVA_SYS_PROPS" "$CONFIG"; then
echo >> $CONFIG
echo '# adds java system props that are passed to jvb (default are for home and logging config file)' >> $CONFIG
echo "JAVA_SYS_PROPS=\"-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi\
-Dnet.java.sip.communicator.SC_HOME_DIR_NAME=videobridge\
-Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi\
-Djava.util.logging.config.file=/etc/jitsi/videobridge/logging.properties\"" >> $CONFIG
fi
# Updates config so new and old installs will start using the new config file
if ! grep -q "\-Dconfig.file" "$CONFIG"; then
sed -i 's|JAVA_SYS_PROPS="|JAVA_SYS_PROPS="-Dconfig.file='"$HOCON_CONFIG"' |g' $CONFIG
fi
# unused old parameter, systemd unit files does not resolve bash variables,
# and this breaks startup script
sed -i 's/\$JVB_EXTRA_JVM_PARAMS//g' $CONFIG
if [ ! -f $HOCON_CONFIG ]; then
echo "Generating a default hocon config"
echo "videobridge {
apis.xmpp-client.configs {
shard {
HOSTNAME=localhost
DOMAIN=\"auth.$JVB_HOSTNAME\"
USERNAME=jvb
PASSWORD=\"$JVB_SECRET\"
MUC_JIDS=\"jvbbrewery@internal.auth.$JVB_HOSTNAME\"
MUC_NICKNAME=$(uuidgen)
}
}
}
ice4j {
harvest {
mapping {
aws {
enabled = false
}
stun {
addresses = [\"meet-jit-si-turnrelay.jitsi.net:443\"]
}
}
}
}" >> $HOCON_CONFIG
fi
# The REST API is disabled by default. It it was previously enabled via --apis, enable it in jvb.conf
if grep -v '^\s*#' /etc/jitsi/videobridge/config | grep -- '--apis=' | grep -i rest >/dev/null 2>&1 ;then
if ! hocon -f $HOCON_CONFIG get "videobridge.apis.rest.enabled" > /dev/null 2>&1 ;then
hocon -f $HOCON_CONFIG set "videobridge.apis.rest.enabled" "true"
fi
# Remove it from /etc/jitsi/videobridge/config to prevent it perpetually updating jvb.conf
sed -i 's/.*--apis.*//' $CONFIG
fi
# we don't want to start the daemon as root
if ! getent group jitsi > /dev/null ; then
groupadd jitsi
fi
if ! getent passwd jvb > /dev/null ; then
useradd -r -g jitsi --shell /bin/bash --create-home -d /usr/share/jitsi-videobridge jvb
fi
if ! groups jvb | grep '\bjitsi\b' > /dev/null ; then
usermod -g jitsi jvb
fi
mkdir -p /usr/share/jitsi-videobridge
# we claim the home folder of jvb in case it is owned by someone else
OWNER=$(stat -c '%U' /usr/share/jitsi-videobridge)
GROUP=$(stat -c '%G' /usr/share/jitsi-videobridge)
if ! dpkg-statoverride --list /usr/share/jitsi-videobridge/* >/dev/null && [ "$OWNER:$GROUP" != "jvb:jitsi" ]; then
chown -R jvb:jitsi /usr/share/jitsi-videobridge
OWNER=jvb
GROUP=jitsi
fi
CONFIG_DIR=$(dirname $CONFIG)
if ! dpkg-statoverride --list "$CONFIG_DIR" >/dev/null; then
chown -R jvb:jitsi "$CONFIG_DIR"
chmod 750 "$CONFIG_DIR"
fi
# die logz
if [ ! -d /var/log/jitsi ]; then
mkdir -p /var/log/jitsi
fi
chown $OWNER:$GROUP /var/log/jitsi
chmod 770 /var/log/jitsi
ls /var/log/jitsi/jvb* 1>/dev/null 2>&1 && chown -f -R $OWNER:$GROUP /var/log/jitsi/jvb*
ls /var/log/jitsi/jvb* 1>/dev/null 2>&1 && chmod -f -R 640 /var/log/jitsi/jvb*
# ensure videobridge is not running - it will be started at the end
if [ -d /run/systemd/system ]; then
systemctl stop jitsi-videobridge2.service >/dev/null || true
fi
# clean up old jvb group
if getent group jvb > /dev/null; then
groupdel jvb
fi
# load the UDP buffer sizes required by the JVB. As reported in
# https://github.com/jitsi/jitsi-videobridge/issues/461
# OpenVZ containers do not typically allow permission to modify the
# kernel with sysctl config values.
sysctl --system || true
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

53
debian/postrm vendored Normal file
View File

@@ -0,0 +1,53 @@
#!/bin/bash
# postrm script for jitsi-videobridge
set -e
# Load debconf
. /usr/share/debconf/confmodule
case "$1" in
purge)
# Clear the debconf variable
db_purge
# and then remove the user
if getent passwd jvb > /dev/null ; then
deluser jvb || true
fi
# clear logs
if [ -d "/var/log/jitsi" ]; then
rm -rf "/var/log/jitsi"
fi
rm -f /etc/jitsi/videobridge/config
rm -f /etc/jitsi/videobridge/jvb.conf
rm -f /etc/jitsi/videobridge/sip-communicator.properties
rm -f /etc/jitsi/videobridge/logging.properties
rm -rf /usr/share/jitsi-videobridge/.java
rm -rf /usr/share/jitsi-videobridge/.sip-communicator
# make sure we remove keys we used ('jitsi-videobridge/jvb-hostname')
db_unregister jitsi-videobridge/jvb-hostname || true
;;
remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
db_stop
exit 0

34
debian/rules vendored Executable file
View File

@@ -0,0 +1,34 @@
#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
#export DEB_VERBOSE_ALL=true
%:
dh $@
override_dh_auto_clean:
mvn -Dmaven.repo.local=${HOME}/.m2/repository clean
override_dh_auto_configure:
# do nothing
override_dh_auto_test:
# do nothing
override_dh_auto_build:
mvn -Dmaven.repo.local=${HOME}/.m2/repository -DskipTests -Dassembly.skipAssembly=true install
mvn -Dmaven.repo.local=${HOME}/.m2/repository dependency:copy-dependencies -DincludeScope=runtime
override_dh_install:
mkdir debian/tmp
cp config/logrotate debian/tmp/jitsi-videobridge
cp jvb/target/jitsi-videobridge*.jar debian/tmp/jitsi-videobridge.jar
dh_install
override_dh_installinit:
dh_installinit --noscripts
override_dh_auto_install:
dh_auto_install
dh_installsystemd --restart-after-upgrade

1
debian/source/format vendored Normal file
View File

@@ -0,0 +1 @@
3.0 (quilt)

10
debian/templates vendored Normal file
View File

@@ -0,0 +1,10 @@
Template: jitsi-videobridge/jvb-hostname
Type: string
Default: localhost
_Description: Hostname:
The jitsi-videobridge package needs the DNS hostname of your instance.
Template: jitsi-videobridge/jvbsecret
Type: password
_Description: The secret used to connect to xmpp server as component
Component secret: