aboutsummaryrefslogtreecommitdiff
path: root/app/jitsi/build
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2022-08-23 18:00:07 +0200
committerAlex Auvolat <alex@adnab.me>2022-08-23 18:00:07 +0200
commit5994e41ad1fdba931ae488d8e0efb13f3e505c18 (patch)
tree342f432cc0a4598570672f7f8d66d7fa400aa693 /app/jitsi/build
parent02b1e6200c6f2acf85e4471ea341adde8e93ec9c (diff)
downloadnixcfg-5994e41ad1fdba931ae488d8e0efb13f3e505c18.tar.gz
nixcfg-5994e41ad1fdba931ae488d8e0efb13f3e505c18.zip
Add jitsi
Diffstat (limited to 'app/jitsi/build')
-rw-r--r--app/jitsi/build/jitsi-conference-focus/0001-Remove-broken-command-line-args-parameters-setting.patch91
-rw-r--r--app/jitsi/build/jitsi-conference-focus/Dockerfile26
-rwxr-xr-xapp/jitsi/build/jitsi-conference-focus/jicofo11
-rw-r--r--app/jitsi/build/jitsi-meet/Dockerfile23
-rw-r--r--app/jitsi/build/jitsi-videobridge/0001-Remove-deprecated-argument.patch40
-rw-r--r--app/jitsi/build/jitsi-videobridge/Dockerfile24
-rwxr-xr-xapp/jitsi/build/jitsi-videobridge/jvb_run22
-rw-r--r--app/jitsi/build/jitsi-xmpp/Dockerfile35
-rwxr-xr-xapp/jitsi/build/jitsi-xmpp/xmpp_prosody9
9 files changed, 281 insertions, 0 deletions
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 <quentin@dufour.io>
+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 <quentin@deuxfleurs.fr>
+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<String>) {
+ 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