Installing ICTV server

ICTV is intended to be ran on Linux, compatibility with others OSes is unknown at the moment.

Dependencies

ICTV has the following dependencies:

  • Python (with pip) 3.5.1+
  • Library links and header files for ImageMagick (packaged as ImageMagick-devel on RHEL derivatives)
  • Libxml2 >= 2.9.1
  • xmlsec1 >= 1.2.14
  • MediaInfo, a convenient unified tool to display the most relevant technical and tag data for video and audio files.
  • FFmpeg, for automatic video transcoding to WebM.

The aforementioned dependencies can be installed on CentOS 8 as follows:

dnf config-manager --set-enabled PowerTools
dnf install python36 python36-devel git ImageMagick-devel mediainfo

Using SAML for authentication requires the following additional dependencies:

dnf install wget gcc xmlsec1-devel libtool-ltdl-devel

Installing the dependencies on macOS

All dependencies can be installed using brew.

brew install imagemagick Libxml2 MediaInfo FFmpeg xmlsec1 libmagic

Installing ffmpeg on CentOS 8

Installing ffmpeg on CentOS 8 can be done via the RPMFusion repositories. It is compiled with the support for WebM encoders (libvpx and libvpx-vp9).

dnf install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
dnf install https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm
dnf install ffmpeg
ffmpeg -encoders | grep vpx  # Check that both vpx encoders are available

Installing ICTV

Your system is now setup, you are free to use a privileged or unprivileged user for the rest of the procedure. The recommended way to install ICTV is by using pip and the master branch of the ICTV git repository.

pip3 install --upgrade git+https://github.com/UCL-INGI/ICTV.git
pip3 install --upgrade git+https://github.com/UCL-INGI/ICTV-plugins.git

pip will automatically install the additional Python dependencies.

Configuring ICTV

Creating a configuration file

In the configuration file, you will be able to set many parameters to fine tune ICTV to your use. An example of a full configuration file named configuration.example.yaml can be found at the root of the source code. Feel free to start from it but remember to create a separate file. If a parameter is missing from the configuration file, a default value specified in ictv/configuration.default.yaml will be used. If no default value is available for the parameter, an error message and exception will be raised at the start of the application.

See Authenticating to ICTV for more details on configuring authentication. See Setting up a development environment for a minimal configuration file.

Creating a new database

Run ictv-setup-database to create a new database. Skip this step if you are upgrading from an existing installation.

usage: ictv-setup-database [-h] [--config CONFIG]

optional arguments:
  -h, --help       show this help message and exit
  --config CONFIG  Path to configuration file. Defaults to: configuration.yaml

Running ICTV

Starting the webapp can be done with ictv-webapp.

usage: ictv-webapp [-h] address_port [--config CONFIG]

positional arguments:
  address_port     Address and port to bind the webapp to.
                   E. g.: 0.0.0.0:8080

optional arguments:
  -h, --help       show this help message and exit
  --config CONFIG  Path to configuration file. Defaults to: configuration.yaml

Using WSGI

Use ictv.wsgi to deploy ICTV using WSGI. An example of Apache, mod_wsgi and ICTV running together on a CentOS virtual machine is available in the wsgi_server directory.