ION is a distributed real-time communication system, the goal is to chat anydevice, anytime, anywhere!
- ION is a secure, self-hosted WebRTC video conferencing SFU (what is an SFU?), that you can host today in the cloud or on-premise.
- This ION repository contains the backend cluster services, so you also need to deploy the web app or install a flutter client for web, desktop or mobile
- ION's mission is to deliver world-class tools for creating communication systems, and many people build their projects on top of it:
- ION Cluster (This project!) is composed of two services
biz
+ISLB
(see glossary) and usesNATS
,etcd
andredis
as databases to administer room membership, manage text chat, verify JWT authentication and assign clients to the proper SFU in a multi-datacenter architecture. ION Cluster also builds its own version ofion-sfu
binary, which is lightly adapted to useNatsRPC
for signaling (which is howbiz
andISLB
trade messages internally). ion-sfu
(external), which handles WebRTC streams, can be used as a standalone SFU for designing custom chat experiences or implementing your own scaling architecture.ion-sfu
is equally capable of forwarding Video, Audio and DataChannel tracks, and can handle arbitrary non-media data transport.ion-avp
Audio/Video Processing (WIP) is a sidecar utility for running realtime AV processing jobs, includingwrite-to-disk
,ffmpeg
andopenCV
ion-live
LIVE node (planned) - A feed streaming gateway for supporting publishing to and from SIP/RTMP/HLS/RTSP endpoints
- ION Cluster (This project!) is composed of two services
- All built with pion and golang, ION is fast and efficient
- ION is a young project, under active development; some people run ION in production, but it's not for everyone (yet)
- ION is a community effort and relies on volunteers like you and me!
NOV24 STATUS UPDATE: The ion
project has been undergoing a major restructuring for a few months! If you want to build on top of ion
today, you should start with ion-sfu
! You can still deploy ion:0.4.6
as a ready-to-go conference demonstration.
(https://opencollective.com/pion-ion)
You can vote for feature if you are a sponsor.
Features: https://github.com/pion/ion/projects/2
NOTE: Do not attempt to run this example on a VPS, it only works on localhost
. Make sure you read the docs; WebRTC requires some specific network configuration for the SFU service (depending on your host), and the JavaScript GetUserMedia()
API can only request camera access on pages with SSL (or localhost
). If you are not running on localhost
, you MUST configure networking for SFU and enable HTTPS for ion-app-web
.
After cloning the folder, create a docker network (we use this so ion-app-web
can communicate securely with the backend):
docker network create ionnet
docker-compose up
Ensure the ports 5000-5200/udp
are exposed or forwarded for the SFU service;
Head over to Ion Web App to bring up the front end.
The web app repo also contains examples of exposing the ion biz websocket via reverse proxy with automatic SSL.
For dev and more options see the wiki
-
Ion SDKs
-
Open-Source ION Clients
-
Other Ion Projects
Original Author: adwpc cloudwebrtc
Community Hero: Sean-Der