All Projects → garage44 → Ca11

garage44 / Ca11

Licence: unlicense
Multi-Protocol Webphone

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Ca11

Metastream
Watch streaming media with friends.
Stars: ✭ 1,926 (+2691.3%)
Mutual labels:  websocket, webrtc, p2p, pwa
Ayame
WebRTC Signaling Server Ayame
Stars: ✭ 218 (+215.94%)
Mutual labels:  websocket, webrtc, p2p
meanOs
Mean Operating System - The first decentralized, artificially intelligent, MEAN.js stack, operating system. Mean OS is the only operating system hosted anonymous using a P2P network and a suite of non-standard in-browser delivery mechanisms. Mean OS proudly supports Brave and Tor, be free!
Stars: ✭ 62 (-10.14%)
Mutual labels:  pwa, webrtc, p2p
Roll Call
📞 Free and reliable audio calls for everyone w/ browser p2p.
Stars: ✭ 1,563 (+2165.22%)
Mutual labels:  webrtc, p2p, privacy
Libdatachannel
C/C++ WebRTC Data Channels and Media Transport standalone library
Stars: ✭ 336 (+386.96%)
Mutual labels:  websocket, webrtc, p2p
Peer Calls
Group peer to peer video calls for everyone written in Go and TypeScript
Stars: ✭ 837 (+1113.04%)
Mutual labels:  webrtc, p2p
Webrtc
Pure Go implementation of the WebRTC API
Stars: ✭ 8,399 (+12072.46%)
Mutual labels:  webrtc, p2p
Waggle.js
An experiment to distribute the bandwidth among video viewers
Stars: ✭ 29 (-57.97%)
Mutual labels:  webrtc, p2p
Meething Ml Camera
Machine-Learning powered Virtual Camera with SVG Animation (alpha)
Stars: ✭ 36 (-47.83%)
Mutual labels:  webrtc, privacy
Webrtc android
webrtc VideoCall VideoConference 视频通话 视频会议
Stars: ✭ 764 (+1007.25%)
Mutual labels:  webrtc, p2p
Viraljs
Express.JS middleware to enable P2P distribution for your app. Your decentralized CDN made easy.
Stars: ✭ 952 (+1279.71%)
Mutual labels:  webrtc, p2p
Toxic
An ncurses-based Tox client (please make pull requests on the development fork: https://github.com/toktok/toxic)
Stars: ✭ 987 (+1330.43%)
Mutual labels:  p2p, privacy
Peergos
A p2p, secure file storage, social network and application protocol
Stars: ✭ 895 (+1197.1%)
Mutual labels:  p2p, privacy
P2p Media Loader
An open-source engine for P2P streaming of live and on demand video directly in a web browser HTML page
Stars: ✭ 822 (+1091.3%)
Mutual labels:  webrtc, p2p
Hoppscotch
👽 Open source API development ecosystem https://hoppscotch.io
Stars: ✭ 34,569 (+50000%)
Mutual labels:  websocket, pwa
Baresip
Baresip is a modular SIP User-Agent with audio and video support
Stars: ✭ 817 (+1084.06%)
Mutual labels:  webrtc, telephony
Ios P2p Engine
Let your viewers become your unlimitedly scalable CDN.
Stars: ✭ 31 (-55.07%)
Mutual labels:  webrtc, p2p
Discovery Swarm Webrtc
discovery-swarm for WebRTC
Stars: ✭ 56 (-18.84%)
Mutual labels:  webrtc, p2p
Snapdrop
A Progressive Web App for local file sharing
Stars: ✭ 10,173 (+14643.48%)
Mutual labels:  webrtc, pwa
Webtorrent Desktop
❤️ Streaming torrent app for Mac, Windows, and Linux
Stars: ✭ 8,587 (+12344.93%)
Mutual labels:  webrtc, p2p

NOTE: THIS PRODUCT IS NO LONGER MAINTAINED.

CA11 - Multi-Protocol Webphone

Build status Commitizen friendly

CA11 is about to make telephony more like the Web; accessible, open and without requiring accounts or subscriptions. The frontend is a flexible signalling-agnostic WebRTC webphone and supports the following signalling backends:

  • SIP - Centralized WebRTC calls using Asterisk PBX
  • ION - Centralized custom SFU signalling (E2EE)
  • S11 - Decentralized WebRTC calls using WebCrypto ECDH (E2EE)

Requirements

  • Unix-like operating system
  • Docker (or install manually using Docker as reference)
  • Node.js 13+ (requires native JavaScript module support)
  • Chromium 87 or later

Install

  • Clone the project & install npm dependencies:

    git clone [email protected]:open-voip-alliance/ca11.git
    cd ca11
    yarn
    
  • Generate a TLS certificate & Certificate Authority (CA) for development

    This is to enable TLS on locally defined domains without annoying the browser. The CA install script (ca_system.sh) only works on Archlinux at the moment. Other operating systems require manual CA installation. Restart the browser to refresh the TLS certificate.

    cd docker/nginx/ssl
    ./ca_cert.sh dev.ca11.app
    ./ca_cert.sh sip.dev.ca11.app
    ./ca_cert.sh sig11.dev.ca11.app
    ./ca_cert.sh ion.dev.ca11.app
    sudo ./ca_system.sh
    cd -
    
  • Add Hostname lookups for the development domains:

    sudo echo "127.0.0.1 dev.ca11.app" >> /etc/hosts
    sudo echo "127.0.0.1 sip.dev.ca11.app" >> /etc/hosts
    sudo echo "127.0.0.1 sig11.dev.ca11.app" >> /etc/hosts
    sudo echo "127.0.0.1 ion.dev.ca11.app" >> /etc/hosts
    
    cp docker/.env.example docker/.env
    
    # Add hostname lookups in case of linux (Docker host networking):
    sudo echo "127.0.0.1 asterisk" >> /etc/hosts
    sudo echo "127.0.0.1 coturn" >> /etc/hosts
    sudo echo "127.0.0.1 postgresql" >> /etc/hosts
    sudo echo "127.0.0.1 ion" >> /etc/hosts
    
  • Setup Docker services

    # Use 'yarn backend:bridge' instead on MacOS/Windows
    yarn backend
    # Open another shell and initialize the Asterisk database
    docker exec -w /root/asterisk/contrib/ast-db-manage -it ca11_asterisk alembic -c config.ini upgrade head
    # Add experimental sig11/asterisk binding table; default password is "ca11ftw"
    psql -U postgres -h 127.0.0.1 asterisk < docker/postgres/sig11_asterisk.sql
    # CTRL-C Stop all Docker services
    

Development

  • Setup custom config files to test with:

    cp sig11/.sig11rc.defaults .sig11rc
    cp webphone/.webphonerc.defaults .webphonerc
    
  • Start the development stack

    yarn backend
    node sig11/server.js # or use nodemon
    yarn frontend
    
  • Open chrome://flags in Chromium and enable Experimental Web Platform features (import maps)

  • Restart the browser and open the url to the softphone

    For autoreload, use the livereload extension

  • Verify the SIP stack by calling 1111 using the SIP protocol

  • Start a second webphone from another browser with a fake WebRTC video stream:

    chromium --use-fake-device-for-media-stream --enable-experimental-web-platform-features  --user-data-dir=~/.chromium-tmp
    
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].