Warning

Kurento is a low-level platform to create WebRTC applications from scratch. You will be responsible of managing STUN/TURN servers, networking, scalability, etc. If you are new to WebRTC, we recommend using OpenVidu instead.

Acknowledgements

Kurento team gives credit to Signicat for their support that allows us to make it possible continue evolving and developing Kurento Media Server Project.

Signicat logo


Installing Nightly Builds

Some components of KMS are built nightly, with the code developed during that same day. Other components are built immediately when code is merged into the source repositories.

These builds end up being uploaded to Development repositories so they can be installed by anyone. Use these if you want to develop Kurento itself, or if you want to try the latest changes before they are officially released.

Warning

Nightly builds always represent the current state on the software development; 99% of the time this is stable code, very close to what will end up being released.

However, it’s also possible (although unlikely) that these builds might include undocumented changes, regressions, bugs or deprecations. It’s safer to be conservative and avoid using nightly builds in a production environment, unless you have a strong reason to do it.

Note

If you are looking to build KMS from the source code, then you should check the section aimed at development of KMS itself: Build from sources.

Kurento Media Server

Docker image

While official Kurento releases are published as Docker images and tagged with a release number, the latest development progress is tagged with dev: kurento/kurento-media-server (notice the dev-* tags). Other than that, these images behave exactly like the release ones. For usage instructions check out this section: Docker image.

Local Installation

The steps to install a nightly version of Kurento Media Server are pretty much the same as those explained in Local Installation – with the only change of using dev instead of a version number, in the file /etc/apt/sources.list.d/kurento.list.

Open a terminal and run these commands:

  1. Make sure that GnuPG is installed.

    sudo apt-get update ; sudo apt-get install --no-install-recommends \
        gnupg
    
  2. Add the Kurento repository to your system configuration.

    Run these commands:

    # Get DISTRIB_* env vars.
    source /etc/upstream-release/lsb-release 2>/dev/null || source /etc/lsb-release
    
    # Add Kurento repository key for apt-get.
    sudo apt-key adv \
        --keyserver hkp://keyserver.ubuntu.com:80 \
        --recv-keys 234821A61B67740F89BFD669FC8A16625AFA7A83
    
    # Add Kurento repository line for apt-get.
    sudo tee "/etc/apt/sources.list.d/kurento.list" >/dev/null <<EOF
    # Kurento Media Server - Nightly packages
    deb [arch=amd64] http://ubuntu.openvidu.io/dev $DISTRIB_CODENAME main
    EOF
    
  3. Install KMS:

    Note

    This step applies only for a first time installation. If you already have installed Kurento and want to upgrade it, follow instead the steps described here: Local Upgrade.

    sudo apt-get update ; sudo apt-get install --no-install-recommends \
        kurento-media-server
    

    This will install the nightly version of Kurento Media Server.

Kurento Java Client

Development builds of Kurento Java packages are uploaded to the GitHub Maven Repository.

This repo can be configured once per-User (by editing Maven’s global settings.xml), or it can be added per-Project, to every pom.xml. We recommend using the first method.

For more information about adding a snapshots repository to Maven, check the official documentation: Guide to Testing Development Versions of Plugins.

Per-User config

Add the snapshots repository to your Maven settings file: $HOME/.m2/settings.xml. If this file doesn’t exist yet, you can copy it from /etc/maven/settings.xml, which offers a nice default template to get you started.

Edit the settings file to include this:

<settings>
    ...
    <profiles>
        <profile>
            <id>snapshot</id>
            <repositories>
                <repository>
                    <id>kurento-github-download</id>
                    <name>Kurento GitHub Maven packages (public access)</name>
                    <url>https://public:&#103;hp_fW4yqnUBB4LZvk8DE6VEbsu6XdnSBZ466WEJ@maven.pkg.github.com/kurento/*</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>kurento-github-download</id>
                    <name>Kurento GitHub Maven packages (public access)</name>
                    <url>https://public:&#103;hp_fW4yqnUBB4LZvk8DE6VEbsu6XdnSBZ466WEJ@maven.pkg.github.com/kurento/*</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
    ...
</settings>

Then use the -Psnapshot argument in your Maven commands, to enable the new profile. For example:

mvn -Psnapshot clean package
mvn dependency:get -Psnapshot -Dartifact='org.kurento:kurento-client:7.0.0-SNAPSHOT'

If you don’t want to change all your Maven commands, it is possible to mark the profile as active by default. This way, a -Psnapshot argument will always be implicitly added, so all calls to Maven will already use the profile:

<settings>
    ...
    <profiles>
        <profile>
            <id>snapshot</id>
            ...
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>snapshot</activeProfile>
    </activeProfiles>
    ...
</settings>

Per-Project config

This method consists on explicitly adding access to the snapshots repository, for a specific project. Open the project’s pom.xml and include this:

<project>
    ...
    <repositories>
        <repository>
            <id>kurento-github-download</id>
            <name>Kurento GitHub Maven packages (public access)</name>
            <url>https://public:&#103;hp_fW4yqnUBB4LZvk8DE6VEbsu6XdnSBZ466WEJ@maven.pkg.github.com/kurento/*</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>kurento-github-download</id>
            <name>Kurento GitHub Maven packages (public access)</name>
            <url>https://public:&#103;hp_fW4yqnUBB4LZvk8DE6VEbsu6XdnSBZ466WEJ@maven.pkg.github.com/kurento/*</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
    ...
</project>

Afterwards, in the same pom.xml, look for the desired dependency and change its version to a snapshot one. For example:

<dependency>
    <groupId>org.kurento</groupId>
    <artifactId>kurento-client</artifactId>
    <version>7.0.0-SNAPSHOT</version>
</dependency>

Kurento JavaScript Client

Change the dependencies section in the application’s package.json, to point directly to the development repository:

"dependencies": {
  "kurento-client": "git+https://github.com/Kurento/kurento-client-js.git#master"
}