Sign inSign up

flashphoner/webcallserver

By flashphoner

•Updated 13 minutes ago

Streaming media server-side platform for real-time video delivery in browsers and mobile apps

Image
5

100K+

flashphoner/webcallserver repository overview

⁠What is Flashphoner Web Call Server?

Web Call Server is a platform for real-time audio and video applications. It is designed primarily for developers who spin up streaming projects such as video chat, webinar, mass broadcasting, web calls, low-latency web and mobile apps. The platform supports all popular today streaming video web-technologies such as WebRTC, Flash, RTMP, RTMFP, RTSP, HLS, MSE, SIP, and Websocket streaming, which allows delivering a video stream to a wide range of browsers and mobile devices. Development tools and APIs: Web SDK, iOS SDK, Android SDK, REST API. General features: low-latency streaming, low-latency CDN, VR streaming, recording, video mixing, screen-sharing, stream snapshots, real-time video transcoding, VOD, SIP calls, etc.

For more information and related downloads please visit flashphoner.com⁠

⁠How to use this image

⁠Get a license

You can request a trial here⁠ or purchase a commercial license online here⁠.

⁠Start Web Call Server instance

Start Web Call Server instance container as

docker run -e LICENSE=license_number -e PASSWORD=secret --name webcallserver-instance -d webcallserver:tag

where

  • license_number is your license number to activate
  • secret is your password to access container by SSH
  • webcallserver-instance is the container name
  • tag is Web Call Server version number (5.3.96 e.g.), 5.2-latest for latest 5.2 build or 5.3-latest for lates 5.3 build

You can also activate your license number on first web interface logon.

⁠Test the instance

Login to the web interface by address https://container_ip:8444/admin/ with demo account (user demo, password demo). Feel free to explore our web application examples.

⁠Set up SSL certificates

Login to the WCS web interface with admin account (user admin, password admin). Obtain an SSL certificate from your SSL provider and follow this instructions⁠

⁠Know more about Web Call Server

Read the use cases on main page⁠, useful articles in our blog⁠, don't forget about official documentation⁠

⁠Stop Web Call Server instance

Web Call Server instance can be stopped as

docker stop webcallserver-instance

The license will be deactivated on container stop to prevent unnecessary billing.

⁠How to configure Web Call Server instance

⁠Networking issues

By default, IP address will be set dynamically to the container. So if you suppose to use fixed IP address, you should set it with docker run options and pass to the container using LOCAL_IP variable:

docker run -e LICENSE=license_number -e PASSWORD=secret \
-e LOCAL_IP=static_ip \
--net your-docker-network \
--ip static_ip \
--name webcallserver-instance -d webcallserver:5.3-latest

If your docker host is behind NAT, and your Web Call Server is supposed to be available from outside, you should set external IP address to EXTERNAL_IP variable:

docker run -e LICENSE=license_number -e PASSWORD=secret \
-e LOCAL_IP=static_ip \
-e EXTERNAL_IP=external_ip \
--net your-docker-network \
--ip static_ip \
--name webcallserver-instance -d webcallserver:5.3-latest

⁠Environment variables reference

The following environment variables can be passed to the container:

  • PASSWORD - SSH password to access the container. If this variable is not defined, container will not be accessible by SSH using password
  • LICENSE - Web Call Server license number. If this variable is not defined, license can be entered on first web interface logon
  • LOCAL_IP - local IP address to set to ip_local parameter in flashphoner.properties configuration file. If this variable is not defined, container IP address will be detected automatically.
  • EXTERNAL_IP - external IP address to set to ip parameter in flashphoner.properties configuration file. If this variable is not defined and LOCAL_IP is not defined, external IP address will be detected automatically.
  • CDN_ROLE - container role in CDN⁠. If this variable is not defined, container will act as standalone server
  • CDN_ENTRY_POINT - CDN entry point server address for the container. If this variable is not defined, CDN entry point will not be set
  • CDN_GROUPS - CDN groups⁠ to which the container should belong. If this variable is not defined, the container will not belong to any CDN group
  • WCS_FD_LIMIT - a maximum file descriptors available to the WCS process (since 5.3.96)
  • USE_JEMALLOC=true - to use jemalloc memory allocation library (since 5.3.96)
  • SSH_PORT - SSH port to access the container (since 5.3.96). May be useful to set a non-standard SSH port when container is running in the host network --net host

⁠Volumes reference

The following docker volumes can be mounted to the container

  • /conf - additional configuration files folder. This volume can be mounted as read-only
  • /usr/local/FlashphonerWebCallServer/hls - HLS segments folder. This volume must be mounted with write access
  • /usr/local/FlashphonerWebCallServer/logs - logging folder. This volume must be mounted with write access
  • /usr/local/FlashphonerWebCallServer/media - media files for VOD playback folder. This volume can be mounted as read-only. This volume can be shared with another Web Call Server instances
  • /usr/local/FlashphonerWebCallServer/records - stream recoding files folder. This volume must be mounted with write access. This volume can be shared with another Web Call Server instances
  • /usr/local/FlashphonerWebCallServer/conf - WCS configuration folder (since 5.3.96). This volume must be mounted with write access
  • /usr/local/FlashphonerWebCallServer/report - WCS support reports collection folder (since 5.3.96). This volume must be mounted with write access
  • /usr/local/FlashphonerWebCallServer/snapshots - temporary snapshot files storage folder (since 5.3.96). This volume must be mounted with write access

The container launch example with all the volumes mounted:

 docker run -e LICENSE=license_number -e CDN_ROLE=origin \
 -v /opt/wcs/conf:/usr/local/FlashphonerWebCallServer/conf \
 -v /opt/wcs/logs:/usr/local/FlashphonerWebCallServer/logs \
 -v /opt/wcs/hls:/usr/local/FlashphonerWebCallServer/hls \
 -v /opt/wcs/media:/usr/local/FlashphonerWebCallServer/media \
 -v /opt/wcs/records:/usr/local/FlashphonerWebCallServer/records \
 -v /opt/wcs/report:/usr/local/FlashphonerWebCallServer/report \
 -v /opt/wcs/snapshots:/usr/local/FlashphonerWebCallServer/snapshots \
 --name webcallserver-instance -d webcallserver:5.3-latest

⁠Additional instance configuration

⁠A legacy way using a limited set of configuration files

The following additional configuration files can be placed to the host folder mounted as /conf volume:

  • id_rsa.pub - public SSH access key. If this file is found during the container start, the container will be accessible with corresponding private key. Otherwise, if PASSWORD variable is defined, the container will be accesible by password. If neiher key, nor password are defined, SSH daemon will not be started.
  • flashphoner.properties - main server configuration file. It can be used for detailed Web Call Server instance configuration
  • wcs-core.properties - Java configuration file. It can be used for memory tuning⁠ and JMC connection⁠ configuration
  • log4j.properties - logging⁠ configuration file
  • wss.jks - SSL certificates key storage file. This file can be prepared with keytool⁠
  • cdn_profiles.yml - CDN transcoding profiles⁠ configuration file
  • database.yml - user accounts⁠ and REST hook applications⁠ configuration
  • *.sdp - SDP settings⁠ files

All those files can be used for example to restore Web Call Server instance configuration from backup and automatic deployment. The files will be copied to the container 'as is', except flashphoner.properties:

  • ip and ip_local parameters will be changed (see IP_LOCAL variable description above)
  • if CDN_ROLE variable is set, but the file contains no CDN settings, the default settings⁠ will be added
⁠Mount configuration folder

Since build 5.3.96 the configuration folder may be mounted as volume

docker run -e LICENSE=license_number -e PASSWORD=secret \
 -v /opt/wcs/conf:/usr/local/FlashphonerWebCallServer/conf \
 --name webcallserver-instance -d webcallserver:5.3-latest

A minimal set of custom files may be placed to the mounted folder before the first container start, for example

database.yml
flashphoner.properties
log4j.properties
wcs-core.properties
wss.jks

When container starts, it will copy all the needed configuration files to the folder if they not exists

⁠Container ports

The following ports are available by default:

  • 22/tcp - SSH (this port is active only if password or key access is set)
  • 554/tcp - RTSP server port
  • 1935/tcp - RTMP server port
  • 1935/udp - RTMFP server port
  • 2001/tcp - server CLI⁠ port
  • 7777/tcp - server monitoring port
  • 8080-8084/tcp - WS, HTTP, CDN ports
  • 8443-8445/tcp - WSS, HTTPS ports
  • 8888/tcp - HTTPS port (for older versions compatibility)
  • 9091/tcp - HTTP port (for older versions compatibility)
  • 30000-35000/tcp - TCP media ports
  • 30000-35000/udp - UDP media ports
  • 50999/tcp - JMX port

The ports can be changed using docker run --expose parameters if necessary. In this case, the actual port values should be set to flashphoner.properties and wcs-core.properties files, see description above

Tag summary

Content type

Image

Digest

sha256:6eb3a1bb4…

Size

524 MB

Last updated

13 minutes ago

docker pull flashphoner/webcallserver:5.3-latest