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

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:

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?

Submit an answer

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

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.

Want to learn more? Join the DigitalOcean Community!

Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in Q&A, subscribe to topics of interest, and get courses and tools that will help you grow as a developer and scale your project or business.

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


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.


here’s a 2 minute video walkthrough of installation [youtube tE7sR4q2FDA 350 595]

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.

  1. git clone
  2. 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

  1. export
  2. export

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

Step 5. Start the app

via docker-compose:

  1. 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 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.


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.