Question

How to install and run ION video conferencing on a VM?

Posted May 2, 2020 1.2k views
Go

ION is extensible video conferencing software that builds on a distributed RTC System using Go and Flutter. It is part of a larger PION open source project.

GitHub Link: https://github.com/pion/ion

Some strengths of ion, as listed by one of the core contributors:

  • Distributed by default - Designed to allow running different workloads and scaling them out as you need
  • Flutter and JS SDK - Ready to be used on Web, Android and iOS!
  • Designed to be modified - Modify the UI/Backend so you can have custom experiences for your use cases. As long as you satisfy public APIs any piece can be swapped.
  • Easy to deploy - docker-compose with LetsEncrypt support. Spin up a conference server with on command
  • *Performant *- You can run multi person conference calls on very small VMs

What are the steps to deploy it to a DigitalOcean VM?

edited by AHA

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
1 answer

I installed it on a $15 3 CPU/1GB RAM/60GB SSD Droplet with the DigitalOcean Docker One-Click image.

Prerequisites

Because the developers have containerized everything in Docker, the only software you need pre-installed is:

  • git - so you can clone the repo
  • docker - the app runs in docker containers
  • docker-compose - the app is started via a docker-compose script

The last prerequisite is *a domain *to point to your server. Without a domain, you can’t easily connect via HTTPS, and some browsers block audio/video features on HTTP connections.

Installation

here’s a 2 minute video walkthrough of installation

Step 1. Create a server

With git, Docker, and docker-compose installed. If you’re using DigitalOcean the Docker One-Click has all this, if you’re installing from scratch you can reference how to install git and how to install docker

Step 2. Point a domain to your server

One magical feature of ion is that if you are using a domain, the startup process uses Let’s Encrypt to automatically generate SSL certs for the app. This step is important because some modern browsers will block video/audio streaming on non-secure (HTTP) connections.

Step 3. Clone the ion repo

use git to clone the latest version of the ion codebase onto your server, once it is complete, move to the new ion directory.

  • git clone https://github.com/pion/ion
  • cd ion

Step 4. Set ENV Vars

Specify your domain and email address to use in the Let’s Encrypt registration process via environment variables

  • export WWW_URL=yourdomain.com
  • export ADMIN_EMAIL=your@email.com

These will be used to generate SSL certs in the automated setup that runs next.

Step 5. Start the app

via docker-compose:

  • docker-compose up

This will start the app and log all output of all containers to your commandline, exiting via the commandline will stop the app. If you want to run it in the background you can use docker-compose up -d for daemon mode.

Step 6. Access the app

Once you see in the logs that the app has been successfully initialized (sometimes the Let’s Encrypt process can take a couple minutes) access the site at https://yourdomain.com:8080. You should see a login screen where you enter a room name, and your nickname.

Depending on your browser, you’ll need to grant access to camera and microphone, and enable video autoplay.

At this point ion behaves very much like most video conferencing apps, you can generate a share link to send others, you can mute/unmute and turn video on and off, and message other participants via text.

Conclusion

ion looks very good, especially for those who are interested in developing something more on top of an open source video conferencing stack, and those who are interested in running video conferencing with limited resources.

Upon first impression, it stands out from the others in that the software uses very low amount of resources.

One part that I still need to dig into is how is the video streamed. When video conference software fully utilizes webRTC, each video stream is just going peer-to-peer instead of through the server, and conferences with more than 4 participants can quickly overwhelm a good internet connection.

Submit an Answer