ION

ION is a distributed RTC system written by pure go and flutter.

Architecture

ION

Features

  • [x] Distributed Node

    • [x] Standalone BIZ/ISLB and SFU node

    • [x] Message Queue by NATS

    • [x] SFU by Pure GO

    • [x] MCU (WIP)

    • [x] SFU<-->SFU relay (WIP)

    • [x] High Performance (WIP)

    • [x] Media Streaming

      • [x] WebRTC stack
      • [x] SIP stack (WIP)
      • [x] RTP/RTP over KCP
      • [x] JitterBuffer
        • [x] Nack
        • [x] PLI
        • [x] Lite-REMB
        • [x] Transport-CC(WIP)
        • [x] Anti-Loss-Package 30%+
  • [x] SDK

    • [x] Flutter SDK
    • [x] JS SDK
  • [x] Demo

Contributing

  • adwpc - Original Author - ion server
  • cloudwebrtc - Original Author - ion server and client sdk
  • kangshaojun - Contributor UI - flutter and react.js
  • Sean-Der - ion server and docker

Roadmap

Projects
Welcome contributing to ion!

Stars

68747470733a2f2f7374617263686172742e63632f70696f6e2f696f6e2e737667

Screenshots

iOS/Android

flutter-01

flutter-02

flutter-03

PC/HTML5

ion-01

ion-02

ion-04

ion-05

How to use

Local Deployment

1. clone

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

2. run

Firstly pull images. Skip this command if you want build images locally

docker-compose pull
docker-compose up

3. chat

Open this url with chrome

http://localhost:8080

Online Deployment

1. clone

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

2. set env

export WWW_URL=yourdomain
export [email protected]

3. run

docker-compose up

3. chat

Open this url with chrome

https://yourdomain:8080

Docker Tips

The provided docker-compose works for deploying to open usage, and can also be used for local development. It also supports auto-generate of certificates via LetsEncrypt.

It accepts the following enviroment variables.

  • WWW_URL -- Public URL if auto-generating certificates
  • ADMIN_EMAIL -- Email if auto-generating certificates

To run on conference.pion.ly you would run WWW_URL=conference.pion.ly [email protected] docker-compose up

If WWW_URL is set you will access via https://yourip:8080 OR http://yourip:8080 if not running with TLS enabled.

GitHub