Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117747075
D2161.1775174772.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
35 KB
Referenced Files
None
Subscribers
None
D2161.1775174772.diff
View Options
diff --git a/bin/quickstart.sh b/bin/quickstart.sh
--- a/bin/quickstart.sh
+++ b/bin/quickstart.sh
@@ -38,11 +38,14 @@
docker pull docker.io/kolab/centos7:latest
-docker-compose down
+docker-compose down --remove-orphans
docker-compose build
pushd ${base_dir}/src/
-cp .env.example .env
+
+if [ ! -f ".env" ]; then
+ cp .env.example .env
+fi
if [ -f ".env.local" ]; then
# Ensure there's a line ending
@@ -54,7 +57,7 @@
bin/regen-certs
-docker-compose up -d coturn kolab mariadb openvidu proxy redis
+docker-compose up -d coturn kolab mariadb openvidu kurento-media-server proxy redis
pushd ${base_dir}/src/
diff --git a/docker-compose.openvidu.yml b/docker-compose.openvidu.yml
new file mode 100644
--- /dev/null
+++ b/docker-compose.openvidu.yml
@@ -0,0 +1,22 @@
+version: '3'
+services:
+ kurento-media-server2:
+ build:
+ context: ./docker/kurento-media-server/
+ container_name: kolab-kurento-media-server2
+ environment:
+ - GST_DEBUG=3,Kurento*:4,kms*:4,sdp*:4,webrtc*:4,*rtpendpoint:4,rtp*handler:4,rtpsynchronizer:4,agnosticbin:4
+ - KMS_PORT=8889
+ hostname: kurento-media-server.hosted.com
+ image: apheleia/kurento-media-server:6.15.0
+ network_mode: host
+ openvidu:
+ build:
+ context: ./docker/openvidu-dev/
+ depends_on:
+ - kurento-media-server
+ - kurento-media-server2
+ volumes:
+ - /etc/letsencrypt/:/etc/letsencrypt/:ro
+ - ~/src/openvidu:/src/openvidu/
+ - ./docker/openvidu-dev/build/.m2:/root/.m2/
diff --git a/docker-compose.yml b/docker-compose.yml
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -46,6 +46,15 @@
- ./docker/kolab/utils:/root/utils:ro
- ./src/.env:/.dockerenv:ro
- /sys/fs/cgroup:/sys/fs/cgroup:ro
+ kurento-media-server:
+ build:
+ context: ./docker/kurento-media-server/
+ container_name: kolab-kurento-media-server
+ environment:
+ - GST_DEBUG=3,Kurento*:4,kms*:4,sdp*:4,webrtc*:4,*rtpendpoint:4,rtp*handler:4,rtpsynchronizer:4,agnosticbin:4
+ hostname: kurento-media-server.hosted.com
+ image: apheleia/kurento-media-server:6.15.0
+ network_mode: host
mariadb:
container_name: kolab-mariadb
environment:
@@ -58,7 +67,11 @@
image: mariadb
network_mode: host
openvidu:
+ build:
+ context: ./docker/openvidu/
container_name: kolab-openvidu
+ depends_on:
+ - kurento-media-server
environment:
- APP_DOMAIN=${APP_DOMAIN}
- CERTIFICATE_TYPE=letsencrypt
@@ -67,17 +80,16 @@
- COTURN_REDIS_PASSWORD=${OPENVIDU_COTURN_REDIS_PASSWORD}
- COTURN_REDIS_IP=${OPENVIDU_COTURN_REDIS_IP}
- DOMAIN_OR_PUBLIC_IP=${OPENVIDU_PUBLIC_IP}
- - HTTP_PORT=8080
- - HTTPS_PORT=443
+ - SERVER_PORT=${OPENVIDU_SERVER_PORT}
- KMS_STUN_IP=${OPENVIDU_COTURN_IP}
- KMS_STUN_PORT=3478
- - KMS_URIS=["ws://localhost:8888/kurento"]
+ - KMS_URIS=["ws://localhost:8888/kurento", "ws://localhost:8889/kurento"]
- OPENVIDU_SECRET=${OPENVIDU_API_PASSWORD}
- OPENVIDU_WEBHOOK=${OPENVIDU_WEBHOOK}
- OPENVIDU_WEBHOOK_ENDPOINT=${OPENVIDU_WEBHOOK_ENDPOINT}
- - SERVER_PORT=8443
+ - SERVER_SSL_ENABLED=false
hostname: openvidu.hosted.com
- image: openvidu/openvidu-server-kms:2.15.0
+ image: apheleia/openvidu:2.16.0
network_mode: host
tmpfs:
- /run
diff --git a/docker/coturn/Dockerfile b/docker/coturn/Dockerfile
--- a/docker/coturn/Dockerfile
+++ b/docker/coturn/Dockerfile
@@ -23,6 +23,7 @@
openssh-clients \
openssh-server \
procps-ng \
+ redis \
strace \
systemd-udev \
tcpdump \
diff --git a/docker/kurento-media-server/Dockerfile b/docker/kurento-media-server/Dockerfile
--- a/docker/kurento-media-server/Dockerfile
+++ b/docker/kurento-media-server/Dockerfile
@@ -2,77 +2,254 @@
MAINTAINER Jeroen van Meeuwen <vanmeeuwen@kolabsys.com>
-# From https://github.com/Kurento/kurento-media-server/blob/master/debian/control
-#
-# build-essential,
-# cmake,
-# gstreamer1.5-plugins-good,
-# kms-cmake-utils (>= 6.7.0),
-# kms-core-dev (>= 6.7.0),
-# kms-elements-dev (>= 6.7.0),
-# kms-filters-dev (>= 6.7.0),
-# kurento-module-creator (>= 6.7.0),
-# libboost-dev,
-# libboost-filesystem-dev,
-# libboost-log-dev,
-# libboost-program-options-dev,
-# libboost-system-dev,
-# libboost-test-dev,
-# libboost-thread-dev,
-# libevent-dev,
-# libglibmm-2.4-dev,
-# libgstreamer-plugins-base1.5-dev,
-# libsigc++-2.0-dev,
-# libwebsocketpp-dev
-
ENV CFLAGS="-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -fasynchronous-unwind-tables -fstack-clash-protection -flto"
-ENV CXXFLAGS=${CFLAGS}
-ENV LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin'
-ENV CC=gcc
-ENV CXX=g++
-ENV AR=/bin/gcc-ar
-ENV RANLIB=/bin/gcc-ranlib
-ENV NM=/bin/gcc-nm
+ENV CXXFLAGS="${CFLAGS}"
+ENV LDFLAGS="-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin"
+ENV CC="gcc"
+ENV CXX="g++"
+ENV AR="/bin/gcc-ar"
+ENV RANLIB="/bin/gcc-ranlib"
+ENV NM="/bin/gcc-nm"
ENV CMAKE_CXX_ARCHIVE_CREATE="<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>"
+ENV OPENSSL_CONF=''
+ENV GST_DEBUG="*:3,Kurento*:5,kms*:5,sdp*:4,webrtc*:5,*rtpendpoint:5,rtp*handler:5,rtpsynchronizer:5,agnosticbin:4,GST_ELEMENT_FACTORY:7"
+
+ARG CLEAN=1
ARG CMAKEOPTS="-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/ -DCMAKE_INSTALL_SYSCONFDIR=/etc/ -DCMAKE_MODULES_INSTALL_DIR=/usr/share/cmake/Modules/ -DBUILD_SHARED_LIBS=ON -DCMAKE_AR=${AR} -DCMAKE_CXX_ARCHIVE_FINISH=true -DCMAKE_MODULES_INSTALL_DIR=/usr/share/cmake/Modules/ -DGENERATE_TESTS=FALSE -DDISABLE_TESTS=TRUE"
-ARG KURENTO_VERSION="6.14.0"
+ARG GST_BASE_VERSION="1.8.1-1kurento2"
+ARG GST_VERSION="1.8.1"
+ARG KURENTO_MEDIA_SERVER_VERSION="6.15.0"
+ARG KURENTO_CMAKE_VERSION="6.15.0"
+ARG KURENTO_CORE_VERSION="6.15.0"
+ARG KURENTO_ELEMENTS_VERSION="6.15.0"
+ARG KURENTO_FILTERS_VERSION="6.15.0"
+ARG KURENTO_MODULE_CREATOR_VERSION="6.15.0"
ARG KURENTO_JSONCPP_VERSION="1.6.4"
+ARG KURENTO_JSONRPC_VERSION="6.15.0"
+ARG OPENCV_VERSION="3.4.10"
RUN rpm -Uvh https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-31.noarch.rpm && \
rpm -Uvh https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-31.noarch.rpm && \
dnf -y install \
+ autoconf \
+ automake \
+ bison \
boost-devel \
cmake \
coreutils \
+ dnf-plugins-core \
ffmpeg \
+ ffmpeg-devel \
+ flac-devel \
+ flex \
gcc-c++ \
+ gettext-devel \
git \
glibmm24-devel \
- gstreamer1-devel \
- gstreamer1-plugins-base-devel \
- gstreamer1-plugins-bad-free-devel \
- gstreamer1-plugins-bad-freeworld \
- gstreamer1-plugins-good \
- gstreamer1-plugins-ugly \
+ gsl-devel \
+ gtk-doc \
libevent-devel \
- libnice-devel \
+ libjpeg-devel \
+ libmicrodns-devel \
+ libpng-devel \
libsigc++20-devel \
libsoup-devel \
+ libsrtp-devel \
+ libtool \
+ libunwind-devel \
libuuid-devel \
+ libvisual-devel \
libvpx-devel \
make \
maven \
+ meson \
net-tools \
+ opencl-headers \
opencv-devel \
+ # not available on ppc64le? \
+ #openni-devel \
openssl-devel \
+ opus-devel \
+ patch \
redhat-rpm-config \
+ spandsp-devel \
+ usrsctp-devel \
vim-enhanced \
- websocketpp-devel && \
+ webrtc-audio-processing-devel \
+ websocketpp-devel \
+ x264-devel \
+ x265-devel && \
+ # meson in module older than meson in updates \
+ dnf module -y disable meson && \
+ dnf -y update meson && \
+ rpm -e --nodeps gstreamer1 gstreamer1-plugins-base && \
+ dnf -y clean all && \
mkdir -p /src/ && \
- git clone https://github.com/Kurento/kms-cmake-utils.git /src/kms-cmake-utils.git && \
+ if [ "${GST_BASE_VERSION}" == "1.8.1-1kurento2" ]; then \
+ git clone https://github.com/Kurento/gstreamer.git /src/gstreamer.git && \
+ cd /src/gstreamer.git/ && \
+ sed -i \
+ -e 's|git://anongit.freedesktop.org/gstreamer/common.*$|https://anongit.freedesktop.org/git/gstreamer/common.git/|g' \
+ .gitmodules && \
+ git submodule init && \
+ git submodule update && \
+ #sed -r -i \
+ # -e 's/^GST_API_VERSION=.*$/GST_API_VERSION=1.0/g' \
+ # configure.ac && \
+ autopoint --force && \
+ autoreconf -vi && \
+ ./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib64 --disable-failing-tests --disable-static --disable-static-plugins --enable-shared && \
+ make -j $(nproc) VERBOSE=1 && \
+ make install VERBOSE=1 ; \
+ else \
+ git clone -b ${GST_BASE_VERSION} https://gitlab.freedesktop.org/gstreamer/gstreamer.git /src/gstreamer.git && \
+ cd /src/gstreamer.git/ && \
+ if [ -f 'meson.build' ]; then \
+ meson build --prefix=/usr && \
+ ninja -C build install ; \
+ else \
+ sed -i \
+ -e 's|git://anongit.freedesktop.org/gstreamer/common.*$|https://anongit.freedesktop.org/git/gstreamer/common.git/|g' \
+ .gitmodules && \
+ git submodule init && \
+ git submodule update && \
+ autopoint --force && \
+ autoreconf -vi && \
+ ./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib64 --disable-failing-tests --disable-static --disable-static-plugins --enable-shared && \
+ make -j $(nproc) VERBOSE=1 && \
+ make install VERBOSE=1 ; \
+ fi ; \
+ fi && \
+ git clone https://gitlab.freedesktop.org/libnice/libnice.git /src/libnice.git && \
+ cd /src/libnice.git && \
+ sed -r -i \
+ -e 's/-(base|check)-1\.0/-\1-1.5/g' \
+ -e 's/gstreamer-1\.0/gstreamer-1.5/g' \
+ meson.build \
+ gst/meson.build \
+ tests/meson.build && \
+ meson build --prefix=/usr && \
+ ninja -C build install && \
+ git clone -b ${GST_VERSION} https://gitlab.freedesktop.org/gstreamer/gst-plugins-base.git /src/gst-plugins-base.git && \
+ cd /src/gst-plugins-base.git/ && \
+ if [ -f 'meson.build' ]; then \
+ meson build --prefix=/usr && \
+ ninja -C build install ; \
+ else \
+ sed -i \
+ -e 's|git://anongit.freedesktop.org/gstreamer/common.*$|https://anongit.freedesktop.org/git/gstreamer/common.git/|g' \
+ .gitmodules && \
+ git submodule init && \
+ git submodule update && \
+ sed -r -i \
+ -e 's/^GST_API_VERSION.*$/GST_API_VERSION=1.5/g' \
+ configure.ac && \
+ sed -r -i \
+ -e 's/^DOMAIN.*$/DOMAIN = gst-plugins-base-1.5/g' \
+ po/Makevars && \
+ autopoint --force && \
+ autoreconf -vi && \
+ sed -r -i \
+ -e 's/@GST_API_VERSION@\.1/@GST_API_VERSION@/g' \
+ tools/Makefile.in && \
+ ./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib64 --disable-failing-tests --disable-static --disable-static-plugins --enable-shared && \
+ make -j $(nproc) VERBOSE=1 && \
+ make install VERBOSE=1 ; \
+ fi && \
+ git clone -b ${GST_VERSION} https://gitlab.freedesktop.org/gstreamer/gst-plugins-good.git /src/gst-plugins-good.git && \
+ cd /src/gst-plugins-good.git/ && \
+ if [ -f 'meson.build' ]; then \
+ meson build --prefix=/usr && \
+ ninja -C build install ; \
+ else \
+ sed -i \
+ -e 's|git://anongit.freedesktop.org/gstreamer/common.*$|https://anongit.freedesktop.org/git/gstreamer/common.git/|g' \
+ .gitmodules && \
+ git submodule init && \
+ git submodule update && \
+ sed -r -i \
+ -e 's/^GST_API_VERSION.*$/GST_API_VERSION=1.5/g' \
+ configure.ac && \
+ sed -r -i \
+ -e 's/^DOMAIN.*$/DOMAIN = gst-plugins-good-1.5/g' \
+ po/Makevars && \
+ autopoint --force && \
+ autoreconf -vi && \
+ sed -i \
+ -e '/^#define .* gint64/d' \
+ -e '/^#define .* guint64/d' \
+ sys/v4l2/ext/types-compat.h && \
+ sed -i \
+ -e 's/__s64/gint64/g' \
+ -e 's/__u64/guint64/g' \
+ sys/v4l2/ext/videodev2.h && \
+ ./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib64 --disable-failing-tests --disable-static --disable-static-plugins --enable-shared && \
+ make -j $(nproc) VERBOSE=1 && \
+ make install VERBOSE=1 ; \
+ fi && \
+ git clone https://github.com/kanarip/gst-plugins-bad.git /src/gst-plugins-bad.git && \
+ cd /src/gst-plugins-bad.git/ && \
+ if [ -f 'meson.build' ]; then \
+ meson build --prefix=/usr && \
+ ninja -C build install ; \
+ else \
+ sed -i \
+ -e 's|git://anongit.freedesktop.org/gstreamer/common.*$|https://anongit.freedesktop.org/git/gstreamer/common.git/|g' \
+ .gitmodules && \
+ git submodule init && \
+ git submodule update && \
+ sed -r -i \
+ -e 's/^GST_API_VERSION.*$/GST_API_VERSION=1.5/g' \
+ -e 's/gstreamer-allocators-1.0/gstreamer-allocators-1.5/g' \
+ configure.ac && \
+ sed -r -i \
+ -e 's/gstaudio-1.0/gstaudio-1.5/g' \
+ -e 's/gstvideo-1.0/gstvideo-1.5/g' \
+ gst/festival/Makefile.am \
+ gst/ivtc/Makefile.am \
+ gst/yadif/Makefile.am && \
+ sed -r -i \
+ -e 's/^DOMAIN.*$/DOMAIN = gst-plugins-bad-1.5/g' \
+ po/Makevars && \
+ autopoint --force && \
+ autoreconf -vi && \
+ #./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib64 --disable-failing-tests --disable-dtls && \
+ ./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib64 --disable-failing-tests --disable-static --disable-static-plugins --enable-shared && \
+ make -j $(nproc) VERBOSE=1 && \
+ make install VERBOSE=1 ; \
+ fi && \
+ git clone -b ${GST_VERSION} https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly.git /src/gst-plugins-ugly.git && \
+ cd /src/gst-plugins-ugly.git/ && \
+ if [ -f 'meson.build' ]; then \
+ meson build --prefix=/usr && \
+ ninja -C build install ; \
+ else \
+ sed -i \
+ -e 's|git://anongit.freedesktop.org/gstreamer/common.*$|https://anongit.freedesktop.org/git/gstreamer/common.git/|g' \
+ .gitmodules && \
+ git submodule init && \
+ git submodule update && \
+ sed -r -i \
+ -e 's/^GST_API_VERSION.*$/GST_API_VERSION=1.5/g' \
+ configure.ac && \
+ sed -r -i \
+ -e 's/^DOMAIN.*$/DOMAIN = gst-plugins-ugly-1.5/g' \
+ po/Makevars && \
+ autopoint --force && \
+ autoreconf -vi && \
+ ./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib64 --disable-failing-tests --disable-x264 --disable-static --disable-static-plugins --enable-shared && \
+ make -j $(nproc) VERBOSE=1 && \
+ make install VERBOSE=1 ; \
+ fi && \
+ git clone https://github.com/Kurento/openwebrtc-gst-plugins.git /src/openwebrtc-gst-plugins.git && \
+ cd /src/openwebrtc-gst-plugins.git/ && \
+ autoreconf -vi && \
+ ./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib64 --disable-static --disable-static-plugins --enable-shared && \
+ make VERBOSE=1 && \
+ make install VERBOSE=1 && \
+ git clone -b ${KURENTO_CMAKE_VERSION} https://github.com/Kurento/kms-cmake-utils.git /src/kms-cmake-utils.git && \
cd /src/kms-cmake-utils.git/ && \
- git checkout ${KURENTO_VERSION} && \
mkdir build && \
cd build && \
cmake \
@@ -80,16 +257,14 @@
.. && \
make -j $(nproc) VERBOSE=1 && \
make install -s && \
- git clone https://github.com/Kurento/kurento-module-creator.git /src/kurento-module-creator.git && \
+ git clone -b ${KURENTO_MODULE_CREATOR_VERSION} https://github.com/Kurento/kurento-module-creator.git /src/kurento-module-creator.git && \
cd /src/kurento-module-creator.git/ && \
- git checkout ${KURENTO_VERSION} && \
mvn clean install -DskipTests && \
cp target/kurento-module-creator-jar-with-dependencies.jar /usr/bin/. && \
cp scripts/kurento-module-creator /usr/bin/. && \
cp target/classes/*.cmake /usr/share/cmake/Modules/. && \
- git clone https://github.com/Kurento/jsoncpp.git /src/jsoncpp.git && \
+ git clone -b ${KURENTO_JSONCPP_VERSION} https://github.com/Kurento/jsoncpp.git /src/jsoncpp.git && \
cd /src/jsoncpp.git/ && \
- git checkout ${KURENTO_JSONCPP_VERSION} && \
mkdir build && \
cd build && \
cmake \
@@ -106,9 +281,8 @@
mv -v /usr/include/json/features.h /usr/include/json/json-features.h && \
sed -i -e 's/features\.h/json-features\.h/g' /usr/include/json/*.h && \
cp -av /usr/include/json /usr/include/kmsjsoncpp && \
- git clone https://github.com/Kurento/kms-jsonrpc.git /src/kms-jsonrpc.git && \
+ git clone -b ${KURENTO_JSONRPC_VERSION} https://github.com/Kurento/kms-jsonrpc.git /src/kms-jsonrpc.git && \
cd /src/kms-jsonrpc.git/ && \
- git checkout ${KURENTO_VERSION} && \
mkdir build && \
cd build && \
cmake \
@@ -116,40 +290,55 @@
.. && \
make -j $(nproc) VERBOSE=1 && \
make install -s && \
- git clone https://github.com/Kurento/kms-core.git /src/kms-core.git && \
+ git clone -b ${KURENTO_CORE_VERSION} https://github.com/Kurento/kms-core.git /src/kms-core.git && \
cd /src/kms-core.git/ && \
- git checkout ${KURENTO_VERSION} && \
- sed -r -i \
- -e 's/gstreamer-(.*)1.5/gstreamer-\11.0/g' \
- $(find -type f -name CMakeLists.txt) && \
mkdir build && \
cd build && \
- cmake \
- ${CMAKEOPTS} \
- -DCMAKE_INSTALL_GST_PLUGINS_DIR=/usr/lib64/gstreamer-1.0/ \
- .. && \
+ if [ "${GST_BASE_VERSION}" != "1.8.1-1kurento2" ]; then \
+ sed -r -i \
+ -e 's/gstreamer-(.*)1.5/gstreamer-\11.0/g' \
+ $(find -type f -name CMakeLists.txt) && \
+ cmake \
+ ${CMAKEOPTS} \
+ -DCMAKE_INSTALL_GST_PLUGINS_DIR=/usr/lib64/gstreamer-1.0/ \
+ .. ; \
+ else \
+ cmake \
+ ${CMAKEOPTS} \
+ -DCMAKE_INSTALL_GST_PLUGINS_DIR=/usr/lib64/gstreamer-1.5/ \
+ .. ; \
+ fi && \
make -j $(nproc) VERBOSE=1 && \
make install -s && \
- git clone https://github.com/Kurento/kms-elements.git /src/kms-elements.git && \
+ git clone -b ${KURENTO_ELEMENTS_VERSION} https://github.com/Kurento/kms-elements.git /src/kms-elements.git && \
cd /src/kms-elements.git/ && \
- git checkout ${KURENTO_VERSION} && \
- sed -r -i \
- -e 's/gstreamer-(.*)1.5/gstreamer-\11.0/g' \
- $(find -type f -name CMakeLists.txt) && \
+ if [ "${GST_BASE_VERSION}" != "1.8.1-1kurento2" ]; then \
+ sed -r -i \
+ -e 's/gstreamer-(.*)1.5/gstreamer-\11.0/g' \
+ $(find -type f -name CMakeLists.txt) ; \
+ fi && \
mkdir build && \
cd build && \
cmake \
${CMAKEOPTS} \
.. && \
+ sed -i \
+ -e 's/-lkmsgstcommons/-lkmsgstcommons -lkmscoreinterface/g' \
+ -e 's/-lkmscoreinterface/-lkmscoreinterface -lkmsutils/g' \
+ $(find . -type f -name link.txt) && \
make -j $(nproc) VERBOSE=1 && \
+ make -j $(nproc) check VERBOSE=1 && \
make install -s && \
- cp -av src/server/implementation/HttpServer/libkmshttpep.so /usr/lib64/ && \
- git clone https://github.com/Kurento/kms-filters.git /src/kms-filters.git && \
+ cp -av src/server/implementation/HttpServer/libkmshttpep.so /usr/lib64/. && \
+ cp -av /usr/lib64/libkmswebrtcendpointlib.so* /usr/lib64/kurento/modules/. && \
+ cp -av /usr/lib64/libkmshttpep.so* /usr/lib64/kurento/modules/. && \
+ git clone -b ${KURENTO_FILTERS_VERSION} https://github.com/Kurento/kms-filters.git /src/kms-filters.git && \
cd /src/kms-filters.git/ && \
- git checkout ${KURENTO_VERSION} && \
- sed -r -i \
- -e 's/gstreamer-(.*)1.5/gstreamer-\11.0/g' \
- $(find -type f -name CMakeLists.txt) && \
+ if [ "${GST_BASE_VERSION}" != "1.8.1-1kurento2" ]; then \
+ sed -r -i \
+ -e 's/gstreamer-(.*)1.5/gstreamer-\11.0/g' \
+ $(find -type f -name CMakeLists.txt) ; \
+ fi && \
mkdir build && \
cd build && \
cmake \
@@ -157,12 +346,14 @@
.. && \
make -j $(nproc) VERBOSE=1 && \
make install -s && \
- git clone https://github.com/Kurento/kurento-media-server.git /src/kurento-media-server.git && \
+ git clone -b ${KURENTO_MEDIA_SERVER_VERSION} https://github.com/Kurento/kurento-media-server.git /src/kurento-media-server.git && \
cd /src/kurento-media-server.git/ && \
- git checkout ${KURENTO_VERSION} && \
- sed -r -i \
- -e 's/gstreamer-(.*)1.5/gstreamer-\11.0/g' \
- $(find -type f -name CMakeLists.txt) && \
+ if [ "${GST_BASE_VERSION}" != "1.8.1-1kurento2" ]; then \
+ sed -r -i \
+ -e 's/gstreamer-(.*)1.5/gstreamer-\11.0/g' \
+ $(find -type f -name CMakeLists.txt) ; \
+ fi && \
+ # work around for kurento not building on pcc64le \
sed -i \
-e '603,618d' \
server/death_handler.cpp && \
@@ -171,55 +362,66 @@
cmake \
${CMAKEOPTS} \
.. && \
+ # a linking error / oversight may occur \
sed -i \
-e 's/-lkmsgstcommons/-lkmsgstcommons -lkmscoreinterface/g' \
- server/CMakeFiles/kurento-media-server.dir/link.txt && \
+ $(find . -type f -name link.txt) && \
make -j $(nproc) VERBOSE=1 && \
make install VERBOSE=1 -s && \
cp -av $(find . -type f -name 'libtransport.so*') /usr/lib64/ && \
cp -av $(find . -type f -name 'libwebsocketTransport.so*') /usr/lib64/ && \
- strip -s /usr/lib64/libkms*.so* /usr/lib64/kurento/modules/*.so* && \
- dnf -y remove \
- -x boost-filesystem \
- -x boost-program-options \
- -x boost-log \
- -x boost-thread \
- -x file \
- -x gstreamer1-plugins-base \
- -x gstreamer1-plugins-bad-free \
- -x glibmm24 \
- -x java-1.8.0-openjdk \
- -x libnice \
- -x libsigc \
- -x libvpx \
- -x opencv \
- boost-devel \
- cmake \
- gcc-c++ \
- git \
- glibmm24-devel \
- gstreamer1-devel \
- gstreamer1-plugins-base-devel \
- gstreamer1-plugins-bad-free-devel \
- libevent-devel \
- libnice-devel \
- libsigc++20-devel \
- libsoup-devel \
- libuuid-devel \
- libvpx-devel \
- make \
- maven \
- opencv-devel \
- openssl-devel \
- redhat-rpm-config \
- vim-enhanced \
- websocketpp-devel && \
- dnf -y clean all && \
- rm -rvf \
- /src/ \
- /root/.m2/ \
- /usr/include/*
+ if [ "${CLEAN}" -eq 1 ]; then \
+ strip -s \
+ /usr/lib64/gstreamer-*/*.so \
+ /usr/lib64/kurento/modules/*.so* \
+ /usr/lib64/libkms*.so* && \
+ dnf -y remove \
+ -x boost-filesystem \
+ -x boost-program-options \
+ -x boost-log \
+ -x boost-thread \
+ -x file \
+ -x gstreamer1-plugins-base \
+ -x gstreamer1-plugins-bad-free \
+ -x glibmm24 \
+ -x java-1.8.0-openjdk \
+ -x libsigc \
+ -x libsoup \
+ -x libvpx \
+ -x opencv \
+ boost-devel \
+ cmake \
+ gcc-c++ \
+ git \
+ glibmm24-devel \
+ gstreamer1-devel \
+ gstreamer1-plugins-base-devel \
+ gstreamer1-plugins-bad-free-devel \
+ libevent-devel \
+ libsigc++20-devel \
+ libsoup-devel \
+ libuuid-devel \
+ libvpx-devel \
+ make \
+ maven \
+ opencv-devel \
+ openssl-devel \
+ redhat-rpm-config \
+ vim-enhanced \
+ websocketpp-devel && \
+ dnf -y clean all && \
+ rm -rvf \
+ /src/ \
+ /root/.m2/ \
+ /usr/include/* \
+ /usr/lib64/*.la \
+ /usr/lib64/gstreamer-*/*.la && \
+ ldconfig ; \
+ fi
COPY rootfs/ /
-CMD ["/bin/kurento-media-server"]
+RUN chmod 777 /etc/kurento/modules/kurento/
+RUN chmod 666 /etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini
+
+CMD ["/usr/local/bin/kurento-media-server.sh"]
diff --git a/docker/kurento-media-server/rootfs/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini b/docker/kurento-media-server/rootfs/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini
new file mode 100644
--- /dev/null
+++ b/docker/kurento-media-server/rootfs/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini
@@ -0,0 +1,130 @@
+;; Local network interfaces used for ICE gathering.
+;;
+;; If you know which network interfaces should be used to perform ICE (for
+;; WebRTC connectivity), you can define them here. Doing so has several
+;; advantages:
+;;
+;; * The WebRTC ICE gathering process will be much quicker. Normally, it needs
+;; to gather local candidates for all of the network interfaces, but this step
+;; can be made faster if you limit it to only the interface that you know will
+;; work.
+;;
+;; * It will ensure that the media server always decides to use the correct
+;; network interface. With WebRTC ICE gathering it's possible that, under some
+;; circumstances (in systems with virtual network interfaces such as
+;; "docker0") the ICE process ends up choosing the wrong local IP.
+;;
+;; <networkInterfaces> is a comma-separated list of network interface names.
+;;
+;; Examples:
+;; networkInterfaces=eth0
+;; networkInterfaces=eth0,enp0s25
+;;
+;networkInterfaces=eth0
+
+;; STUN server IP address.
+;;
+;; The ICE process uses STUN to punch holes through NAT firewalls.
+;;
+;; You don't need to configure both STUN and TURN, because TURN already includes
+;; STUN functionality.
+;;
+;; <stunServerAddress> MUST be an IP address; domain names are NOT supported.
+;;
+;; You need to use a well-working STUN server. Use this to check if it works:
+;; https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
+;; From that check, you should get at least one Server-Reflexive Candidate
+;; (type "srflx").
+;;
+stunServerAddress=212.103.80.153
+stunServerPort=3478
+
+;; TURN server URL.
+;;
+;; When STUN is not enough to open connections through some NAT firewalls,
+;; using TURN is the remaining alternative.
+;;
+;; You don't need to configure both STUN and TURN, because TURN already includes
+;; STUN functionality.
+;;
+;; The provided URL should follow one of these formats:
+;;
+;; * user:password@ipaddress:port
+;; * user:password@ipaddress:port?transport=[udp|tcp|tls]
+;;
+;; <ipaddress> MUST be an IP address; domain names are NOT supported.
+;; <transport> is OPTIONAL. Possible values: udp, tcp, tls. Default: udp.
+;;
+;; You need to use a well-working TURN server. Use this to check if it works:
+;; https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
+;;
+;; From that check, you should get at least one Server-Reflexive Candidate
+;; (type "srflx") AND one Relay Candidate (type "relay").
+;;
+;turnURL=user:password@198.51.100.1:3478?transport=udp
+
+;; Certificate used for DTLS authentication.
+;;
+;; If you want KMS to use a specific certificate for DTLS, then provide it here.
+;; You can provide both RSA or ECDSA files; the choice between them is done when
+;; calling the WebRtcEndpoint constructor.
+;;
+;; If this setting isn't specified, a different set of self-signed certificates
+;; is generated automatically for each WebRtcEndpoint instance.
+;;
+;; This setting can be helpful, for example, for situations where you have to
+;; manage multiple media servers and want to make sure that all of them use the
+;; same certificate. Some browsers, such as Firefox, require this in order to
+;; allow multiple WebRTC connections from the same tab to different KMS.
+;;
+;; Absolute path to the concatenated certificate (chain) file(s) + private key,
+;; in PEM format.
+;;
+;pemCertificateRSA=/path/to/cert+key.pem
+;pemCertificateECDSA=/path/to/cert+key.pem
+
+;; External IPv4 and IPv6 addresses of the media server.
+;;
+;; Forces all local IPv4 and/or IPv6 ICE candidates to have the given address.
+;; This is really nothing more than a hack, but it's very effective to force a
+;; public IP address when one is known in advance for the media server. In doing
+;; so, KMS will not need a STUN or TURN server, but remote peers will still be
+;; able to contact it.
+;;
+;; You can try using these settings if KMS is deployed on a publicly accessible
+;; server, without NAT, and with a static public IP address. But if it doesn't
+;; work for you, just go back to configuring a STUN or TURN server for ICE.
+;;
+;; Only set this parameter if you know what you're doing, and you understand
+;; 100% WHY you need it. For the majority of cases, you should just prefer to
+;; configure a STUN or TURN server.
+;;
+;; <externalIPv4> is a single IPv4 address.
+;; <externalIPv6> is a single IPv6 address.
+;;
+;externalIPv4=198.51.100.1
+;externalIPv6=2001:0db8:85a3:0000:0000:8a2e:0370:7334
+
+;; External IP address of the media server.
+;;
+;; DEPRECATED: Use "externalIPv4" and/or "externalIPv6" instead.
+;;
+;; Forces all local IPv4 and IPv6 ICE candidates to have the given address. This
+;; is really nothing more than a hack, but it's very effective to force a public
+;; IP address when one is known in advance for the media server. In doing so,
+;; KMS will not need a STUN or TURN server, but remote peers will still be able
+;; to contact it.
+;;
+;; You can try using this setting if KMS is deployed on a publicly accessible
+;; server, without NAT, and with a static public IP address. But if it doesn't
+;; work for you, just go back to configuring a STUN or TURN server for ICE.
+;;
+;; Only set this parameter if you know what you're doing, and you understand
+;; 100% WHY you need it. For the majority of cases, you should just prefer to
+;; configure a STUN or TURN server.
+;;
+;; <externalAddress> is a single IPv4 or IPv6 address.
+;;
+;externalAddress=198.51.100.1
+;externalAddress=2001:0db8:85a3:0000:0000:8a2e:0370:7334
+
diff --git a/docker/kurento-media-server/rootfs/usr/local/bin/kurento-media-server.sh b/docker/kurento-media-server/rootfs/usr/local/bin/kurento-media-server.sh
new file mode 100755
--- /dev/null
+++ b/docker/kurento-media-server/rootfs/usr/local/bin/kurento-media-server.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+if [ ! -z "${OPENVIDU_COTURN_IP}" ]; then
+ sed -i \
+ -e "s/;externalIPv4.*$/externalIPv4=${OPENVIDU_COTURN_IP}/g" \
+ /etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini
+fi
+
+if [ ! -z "${KMS_PORT}" ]; then
+ sed -i \
+ -e "s/\"port\": 8888,/\"port\": ${KMS_PORT},/g" \
+ /etc/kurento/kurento.conf.json
+fi
+
+/usr/bin/kurento-media-server
diff --git a/docker/openvidu-dev/.gitignore b/docker/openvidu-dev/.gitignore
new file mode 100644
--- /dev/null
+++ b/docker/openvidu-dev/.gitignore
@@ -0,0 +1 @@
+build
diff --git a/docker/coturn/Dockerfile b/docker/openvidu-dev/Dockerfile
copy from docker/coturn/Dockerfile
copy to docker/openvidu-dev/Dockerfile
--- a/docker/coturn/Dockerfile
+++ b/docker/openvidu-dev/Dockerfile
@@ -2,6 +2,10 @@
MAINTAINER Jeroen van Meeuwen <vanmeeuwen@kolabsys.com>
+ENV CERTIFICATE_TYPE=selfsigned
+ENV DOMAIN_OR_PUBLIC_IP=localhost.localdomain
+ENV OPENVIDU_SECRET=MY_SECRET
+
RUN dnf -y install \
--setopt 'tsflags=nodocs' \
bash-completion \
@@ -9,11 +13,14 @@
coturn \
curl \
dhcp-client \
+ git \
iproute \
iptraf-ng \
iputils \
+ java-1.8.0-openjdk \
less \
lsof \
+ maven \
mtr \
net-tools \
NetworkManager \
@@ -23,6 +30,7 @@
openssh-clients \
openssh-server \
procps-ng \
+ redis \
strace \
systemd-udev \
tcpdump \
@@ -32,6 +40,5 @@
wget && \
dnf clean all
-COPY rootfs/ /
-
-CMD ["/usr/local/bin/coturn.sh"]
+COPY init.sh /init.sh
+CMD [ "/init.sh" ]
diff --git a/docker/openvidu-dev/build/.m2/.gitkeep b/docker/openvidu-dev/build/.m2/.gitkeep
new file mode 100644
diff --git a/docker/openvidu-dev/init.sh b/docker/openvidu-dev/init.sh
new file mode 100755
--- /dev/null
+++ b/docker/openvidu-dev/init.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+cd /src/openvidu/
+mvn -DskipTests=true clean install
+/usr/bin/java -jar /src/openvidu/openvidu-server/target/openvidu-server-2.16.0.jar
diff --git a/docker/openvidu/Dockerfile b/docker/openvidu/Dockerfile
--- a/docker/openvidu/Dockerfile
+++ b/docker/openvidu/Dockerfile
@@ -30,6 +30,7 @@
openssh-clients \
openssh-server \
procps-ng \
+ redis \
strace \
systemd-udev \
tcpdump \
@@ -39,7 +40,7 @@
wget && \
dnf clean all && \
mkdir -p /src/ && \
- git clone --branch v2.16.0 https://github.com/OpenVidu/openvidu.git /src/openvidu.git && \
+ git clone --branch stable/kolab-2.16.0 https://git.kolab.org/source/openvidu.git /src/openvidu.git && \
cd /src/openvidu.git/ && \
mvn clean install -DskipTests && \
mkdir -p /usr/share/openvidu/ && \
@@ -50,8 +51,6 @@
CMD [ \
"/usr/bin/java", \
- "-Dserver.port=8080", \
- "-Dserver.ssl.enabled=false", \
"-jar", \
"/usr/share/openvidu/openvidu-server.jar" \
]
diff --git a/src/.env.example b/src/.env.example
--- a/src/.env.example
+++ b/src/.env.example
@@ -124,7 +124,7 @@
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
-MIX_ASSET_PATH=
+MIX_ASSET_PATH='/'
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
diff --git a/src/database/seeds/local/UserSeeder.php b/src/database/seeds/local/UserSeeder.php
--- a/src/database/seeds/local/UserSeeder.php
+++ b/src/database/seeds/local/UserSeeder.php
@@ -129,6 +129,9 @@
$john->assignPackage($package_lite, $joe);
+ $john->assignSku(Sku::firstOrCreate(['title' => 'beta']));
+ $john->assignSku(Sku::firstOrCreate(['title' => 'meet']));
+
$joe->setAliases(['joe.monster@kolab.org']);
// factory(User::class, 10)->create();
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Apr 3, 12:06 AM (6 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18821624
Default Alt Text
D2161.1775174772.diff (35 KB)
Attached To
Mode
D2161: Enhance the openvidu deployment
Attached
Detach File
Event Timeline