From 5994e41ad1fdba931ae488d8e0efb13f3e505c18 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Tue, 23 Aug 2022 18:00:07 +0200 Subject: Add jitsi --- ...oken-command-line-args-parameters-setting.patch | 91 ++++++++++++++++++++++ app/jitsi/build/jitsi-conference-focus/Dockerfile | 26 +++++++ app/jitsi/build/jitsi-conference-focus/jicofo | 11 +++ app/jitsi/build/jitsi-meet/Dockerfile | 23 ++++++ .../0001-Remove-deprecated-argument.patch | 40 ++++++++++ app/jitsi/build/jitsi-videobridge/Dockerfile | 24 ++++++ app/jitsi/build/jitsi-videobridge/jvb_run | 22 ++++++ app/jitsi/build/jitsi-xmpp/Dockerfile | 35 +++++++++ app/jitsi/build/jitsi-xmpp/xmpp_prosody | 9 +++ 9 files changed, 281 insertions(+) create mode 100644 app/jitsi/build/jitsi-conference-focus/0001-Remove-broken-command-line-args-parameters-setting.patch create mode 100644 app/jitsi/build/jitsi-conference-focus/Dockerfile create mode 100755 app/jitsi/build/jitsi-conference-focus/jicofo create mode 100644 app/jitsi/build/jitsi-meet/Dockerfile create mode 100644 app/jitsi/build/jitsi-videobridge/0001-Remove-deprecated-argument.patch create mode 100644 app/jitsi/build/jitsi-videobridge/Dockerfile create mode 100755 app/jitsi/build/jitsi-videobridge/jvb_run create mode 100644 app/jitsi/build/jitsi-xmpp/Dockerfile create mode 100755 app/jitsi/build/jitsi-xmpp/xmpp_prosody (limited to 'app/jitsi/build') diff --git a/app/jitsi/build/jitsi-conference-focus/0001-Remove-broken-command-line-args-parameters-setting.patch b/app/jitsi/build/jitsi-conference-focus/0001-Remove-broken-command-line-args-parameters-setting.patch new file mode 100644 index 0000000..14d48c5 --- /dev/null +++ b/app/jitsi/build/jitsi-conference-focus/0001-Remove-broken-command-line-args-parameters-setting.patch @@ -0,0 +1,91 @@ +From 3da458fc04560e8ddd597f7910c4f53b714d58ab Mon Sep 17 00:00:00 2001 +From: Quentin Dufour +Date: Mon, 1 Feb 2021 06:53:21 +0100 +Subject: [PATCH] Remove broken command line args parameters setting + +--- + src/main/java/org/jitsi/jicofo/Main.java | 61 ------------------------ + 1 file changed, 61 deletions(-) + +diff --git a/src/main/java/org/jitsi/jicofo/Main.java b/src/main/java/org/jitsi/jicofo/Main.java +index 558d1b3..59e04bb 100644 +--- a/src/main/java/org/jitsi/jicofo/Main.java ++++ b/src/main/java/org/jitsi/jicofo/Main.java +@@ -50,7 +50,6 @@ public static void main(String[] args) + logger.error("An uncaught exception occurred in thread=" + t, e)); + + setupMetaconfigLogger(); +- setSystemProperties(args); + JitsiConfig.Companion.reloadNewConfig(); + + // Make sure that passwords are not printed by ConfigurationService +@@ -80,66 +79,6 @@ public static void main(String[] args) + JicofoServices.jicofoServicesSingleton = null; + } + +- /** +- * Read the command line arguments and env variables, and set the corresponding system properties used for +- * configuration of the XMPP component and client connections. +- */ +- private static void setSystemProperties(String[] args) +- throws ParseException +- { +- CmdLine cmdLine = new CmdLine(); +- +- // We may end execution here if one of required arguments is missing +- cmdLine.parse(args); +- +- // XMPP host/domain +- String host; +- String componentDomain; +- // Try to get domain, can be null after this call(we'll fix that later) +- componentDomain = cmdLine.getOptionValue("domain"); +- // Host name +- host = cmdLine.getOptionValue("--host", componentDomain == null ? "localhost" : componentDomain); +- // Try to fix component domain +- if (isBlank(componentDomain)) +- { +- componentDomain = host; +- } +- if (componentDomain != null) +- { +- // For backward compat, the "--domain" command line argument controls the domain for the XMPP component +- // as well as XMPP client connection. +- System.setProperty(XmppClientConnectionConfig.legacyXmppDomainPropertyName, componentDomain); +- } +- if (host != null) +- { +- // For backward compat, the "--host" command line argument controls the hostname for the XMPP component +- // as well as XMPP client connection. +- System.setProperty(XmppClientConnectionConfig.legacyHostnamePropertyName, host); +- } +- +- // XMPP client connection +- String focusDomain = cmdLine.getOptionValue("--user_domain"); +- String focusUserName = cmdLine.getOptionValue("--user_name"); +- String focusPassword = cmdLine.getOptionValue("--user_password"); +- if (isBlank(focusPassword)) +- { +- focusPassword = System.getenv("JICOFO_AUTH_PASSWORD"); +- } +- +- if (focusDomain != null) +- { +- System.setProperty(XmppClientConnectionConfig.legacyDomainPropertyName, focusDomain); +- } +- if (focusUserName != null) +- { +- System.setProperty(XmppClientConnectionConfig.legacyUsernamePropertyName, focusUserName); +- } +- if (isNotBlank(focusPassword)) +- { +- System.setProperty(XmppClientConnectionConfig.legacyPasswordPropertyName, focusPassword); +- } +- } +- + private static void setupMetaconfigLogger() + { + org.jitsi.utils.logging2.Logger configLogger = new org.jitsi.utils.logging2.LoggerImpl("org.jitsi.config"); +-- +2.25.1 + diff --git a/app/jitsi/build/jitsi-conference-focus/Dockerfile b/app/jitsi/build/jitsi-conference-focus/Dockerfile new file mode 100644 index 0000000..241c61b --- /dev/null +++ b/app/jitsi/build/jitsi-conference-focus/Dockerfile @@ -0,0 +1,26 @@ +FROM debian:bookworm AS builder + +# unzip is required when executing the mvn package command +RUN apt-get update && \ + apt-get install -y openjdk-11-jdk-headless maven git unzip + +ARG JICOFO_TAG +RUN git clone --depth 1 --branch $JICOFO_TAG https://github.com/jitsi/jicofo + +WORKDIR jicofo +COPY *.patch . +RUN git apply 0001-Remove-broken-command-line-args-parameters-setting.patch +RUN mvn package -DskipTests -Dassembly.skipAssembly=false + +RUN unzip target/jicofo-1.1-SNAPSHOT-archive.zip && \ + mv jicofo-1.1-SNAPSHOT /srv/build + +FROM debian:bookworm + +RUN apt-get update && \ + apt-get install -y openjdk-11-jre-headless ca-certificates + +COPY --from=builder /srv/build /usr/share/jicofo +COPY jicofo /usr/local/bin + +CMD ["/usr/local/bin/jicofo"] diff --git a/app/jitsi/build/jitsi-conference-focus/jicofo b/app/jitsi/build/jitsi-conference-focus/jicofo new file mode 100755 index 0000000..8fc8fce --- /dev/null +++ b/app/jitsi/build/jitsi-conference-focus/jicofo @@ -0,0 +1,11 @@ +#!/bin/bash + +update-ca-certificates -f + +exec java \ + -Dlog4j2.formatMsgNoLookups=true \ + -Djdk.tls.ephemeralDHKeySize=2048 \ + -Djava.util.logging.config.file=/usr/share/jicofo/lib/logging.properties \ + -Dconfig.file=/etc/jitsi/jicofo.conf \ + -cp "/usr/share/jicofo/*:/usr/share/jicofo/lib/*" \ + org.jitsi.jicofo.Main diff --git a/app/jitsi/build/jitsi-meet/Dockerfile b/app/jitsi/build/jitsi-meet/Dockerfile new file mode 100644 index 0000000..d8c7cf8 --- /dev/null +++ b/app/jitsi/build/jitsi-meet/Dockerfile @@ -0,0 +1,23 @@ +FROM debian:bookworm AS builder + +RUN apt-get update && \ + apt-get install -y curl && \ + curl -sL https://deb.nodesource.com/setup_16.x | bash - && \ + apt-get install -y git nodejs make git unzip + +ARG MEET_TAG +RUN git clone --depth 1 --branch ${MEET_TAG} https://github.com/jitsi/jitsi-meet + +WORKDIR jitsi-meet +RUN npm install && \ + make + +FROM debian:bookworm + +COPY --from=builder /jitsi-meet /srv/jitsi-meet +RUN apt-get update && \ + apt-get install -y nginx && \ + rm /etc/nginx/sites-enabled/* && \ + rm /etc/nginx/nginx.conf + +CMD ["/usr/sbin/nginx", "-g", "daemon off;"] diff --git a/app/jitsi/build/jitsi-videobridge/0001-Remove-deprecated-argument.patch b/app/jitsi/build/jitsi-videobridge/0001-Remove-deprecated-argument.patch new file mode 100644 index 0000000..575d93f --- /dev/null +++ b/app/jitsi/build/jitsi-videobridge/0001-Remove-deprecated-argument.patch @@ -0,0 +1,40 @@ +From 01507442620e5a57624c921b508eac7d572440d0 Mon Sep 17 00:00:00 2001 +From: Quentin Dufour +Date: Tue, 25 Jan 2022 14:46:22 +0100 +Subject: [PATCH] Remove deprecated argument + +--- + .../main/kotlin/org/jitsi/videobridge/Main.kt | 17 ----------------- + 1 file changed, 17 deletions(-) + +diff --git a/jvb/src/main/kotlin/org/jitsi/videobridge/Main.kt b/jvb/src/main/kotlin/org/jitsi/videobridge/Main.kt +index 4f6cb78..3db00f2 100644 +--- a/jvb/src/main/kotlin/org/jitsi/videobridge/Main.kt ++++ b/jvb/src/main/kotlin/org/jitsi/videobridge/Main.kt +@@ -52,23 +52,6 @@ import org.jitsi.videobridge.websocket.singleton as webSocketServiceSingleton + fun main(args: Array) { + val logger = LoggerImpl("org.jitsi.videobridge.Main") + +- // We only support command line arguments for backward compatibility. The --apis options is the last one supported, +- // and it is only used to enable/disable the REST API (XMPP is only controlled through the config files). +- // TODO: fully remove support for --apis +- CmdLine().apply { +- parse(args) +- getOptionValue("--apis")?.let { +- logger.warn( +- "A deprecated command line argument (--apis) is present. Please use the config file to control the " + +- "REST API instead (see rest.md). Support for --apis will be removed in a future version." +- ) +- System.setProperty( +- Videobridge.REST_API_PNAME, +- it.contains(Videobridge.REST_API).toString() +- ) +- } +- } +- + setupMetaconfigLogger() + + setSystemPropertyDefaults() +-- +2.33.1 + diff --git a/app/jitsi/build/jitsi-videobridge/Dockerfile b/app/jitsi/build/jitsi-videobridge/Dockerfile new file mode 100644 index 0000000..1f2509b --- /dev/null +++ b/app/jitsi/build/jitsi-videobridge/Dockerfile @@ -0,0 +1,24 @@ +FROM debian:bookworm AS builder + +RUN apt-get update && \ + apt-get install -y git unzip maven openjdk-11-jdk-headless + +ARG JVB_TAG +RUN git clone --depth 1 --branch ${JVB_TAG} https://github.com/jitsi/jitsi-videobridge + +WORKDIR jitsi-videobridge +COPY *.patch . +RUN git apply 0001-Remove-deprecated-argument.patch +RUN mvn package -DskipTests +RUN unzip jvb/target/jitsi-videobridge*.zip && \ + mv jitsi-videobridge-*-SNAPSHOT build + +FROM debian:bookworm + +RUN apt-get update && \ + apt-get install -y openjdk-11-jre-headless curl iproute2 + +COPY --from=builder /jitsi-videobridge/build /usr/share/jvb +COPY jvb_run /usr/local/bin/jvb_run + +CMD ["/usr/local/bin/jvb_run"] diff --git a/app/jitsi/build/jitsi-videobridge/jvb_run b/app/jitsi/build/jitsi-videobridge/jvb_run new file mode 100755 index 0000000..8d595e6 --- /dev/null +++ b/app/jitsi/build/jitsi-videobridge/jvb_run @@ -0,0 +1,22 @@ +#!/bin/bash +update-ca-certificates -f + +if [ -z "${JITSI_NAT_LOCAL_IP}" ]; then + JITSI_NAT_LOCAL_IP=$(ip route get $(ip route show 0.0.0.0/0 | grep -oP 'via \K\S+') | grep -oP 'src \K\S+') +fi + +if [ -z "${JITSI_NAT_PUBLIC_IP}" ]; then + JITSI_NAT_PUBLIC_IP=$(curl https://ifconfig.me) +fi + +echo "NAT config: ${JITSI_NAT_LOCAL_IP} -> ${JITSI_NAT_PUBLIC_IP}" + +exec java \ + -Dlog4j2.formatMsgNoLookups=true \ + -Djdk.tls.ephemeralDHKeySize=2048 \ + -Djava.util.logging.config.file=/usr/share/jvb/lib/logging.properties \ + -Dconfig.file=/etc/jitsi/videobridge.conf \ + -Dorg.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=${JITSI_NAT_LOCAL_IP} \ + -Dorg.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=${JITSI_NAT_PUBLIC_IP} \ + -cp '/usr/share/jvb/jitsi-videobridge.jar:/usr/share/jvb/lib/*' \ + org.jitsi.videobridge.MainKt diff --git a/app/jitsi/build/jitsi-xmpp/Dockerfile b/app/jitsi/build/jitsi-xmpp/Dockerfile new file mode 100644 index 0000000..a060fda --- /dev/null +++ b/app/jitsi/build/jitsi-xmpp/Dockerfile @@ -0,0 +1,35 @@ +FROM debian:bookworm as builder + +RUN apt-get update && \ + apt-get install -y git unzip + +ARG MEET_TAG +RUN git clone --depth 1 --branch ${MEET_TAG} https://github.com/jitsi/jitsi-meet/ + +FROM debian:bookworm + +ARG PROSODY_VERSION +RUN apt-get update && \ + apt-get install -y wget gnupg2 && \ + echo deb http://packages.prosody.im/debian buster main \ + | tee -a /etc/apt/sources.list && \ + wget https://prosody.im/files/prosody-debian-packages.key -O - \ + | apt-key add - && \ + apt-get update && \ + apt-get install -y prosody=${PROSODY_VERSION} lua-event + +RUN mkdir -p /usr/local/share/ca-certificates/ && \ + ln -sf \ + /var/lib/prosody/certs/auth.jitsi.crt \ + /usr/local/share/ca-certificates/auth.jitsi.crt && \ + mkdir /run/prosody && \ + touch /run/prosody/prosody.pid && \ + mkdir -p /var/lib/prosody && \ + chown -R prosody:prosody /var/lib/prosody /run/prosody + +COPY --from=builder /jitsi-meet/resources/prosody-plugins /usr/share/jitsi-meet/prosody-plugins/ +COPY xmpp_prosody /usr/local/bin/xmpp_prosody + +WORKDIR /var/lib/prosody +USER prosody +CMD ["/usr/local/bin/xmpp_prosody"] diff --git a/app/jitsi/build/jitsi-xmpp/xmpp_prosody b/app/jitsi/build/jitsi-xmpp/xmpp_prosody new file mode 100755 index 0000000..af179e5 --- /dev/null +++ b/app/jitsi/build/jitsi-xmpp/xmpp_prosody @@ -0,0 +1,9 @@ +#!/bin/bash +prosodyctl register focus auth.jitsi ${JICOFO_AUTH_PASSWORD} +prosodyctl register jvb auth.jitsi ${JVB_AUTH_PASSWORD} + +# copied from jitsi-meet.postinst +# Make sure the focus@auth user's roster includes the proxy component (this is idempotent) +prosodyctl mod_roster_command subscribe focus.jitsi focus@auth.jitsi + +exec prosody -- cgit v1.2.3