Coder Social home page Coder Social logo

meething / openhouse Goto Github PK

View Code? Open in Web Editor NEW
18.0 7.0 6.0 999 KB

Anonymous p2p Clubhouse Clone with GUN/DAM

Home Page: https://openhouse-meething.glitch.me/

License: MIT License

JavaScript 0.85% CSS 90.46% HTML 8.50% EJS 0.19%
clubhouse audio bridge p2p dweb dwebrtc webrtc meething secure decentralized

openhouse's Introduction

mozilla-builders

Meething : dWebRTC

Meething is a semi-decentralized conference bridge using modern WebRTC, GunDB and MediaSoup to produce a hybrid MESH-SFU with strong privacy, zero user data retention and powerful off-grid capabilities.

Status

Ready to try Meething? Join Now!


Remix on Glitch

Installation

Docker

Try Meething using docker containers

Manual

  • Install pm2
sudo npm install pm2 -g
  • Clone the repository and install using npm
npm install

Configuration

  • Copy the example meething.config.example.js to meething.config.js
  • Customize meething.config.js to set the desired port and other environment variables
  • Configure your SSL certificate & key in certs/ by either copying certs/fullchain.pem.example to certs/fullchain.pem and certs/privkey.pem.example to certs/privkey.pem or using your own certificate & key
  • Run using pm2
pm2 start meething.config.js

Usage

  • Browse to the configured HTTPS port (default 3443)
  • Accept the self-signed certificates (if needed)
  • Choose a Room and User name
  • Share link with other participants

The Meething application will connect to community Gun nodes for user discovery. All room data/audio/video is p2p.

SuperPeers

SuperPeers can provide the network with services such as STUN/TURN/RELAY and in the future SFU/MCU features. For more details, check out the Project Wiki.


Credits & Thanks

openhouse's People

Contributors

lmangani avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

openhouse's Issues

Error while creating the room

I was just going through the project, really great work. But when I try to run the same locally it works fine sometimes and in some cases, i get the following error while creating the room

room.js:507 Uncaught TypeError: Cannot convert undefined or null to object
at Function.keys ()
at Gun. (room.js:507)
at Object.val (gun.js:1837)
at gun.js:1831

This leads other participants to be unable to join the room. Can I get any help regarding the same?

Fix Room Management

The distributed client-side room management logic is very basic and prone to distributed failures (split brain, abandoned peer objects, nulls, etc)

We need to redesign it to fully leverage the potential and provide a stable approach for room permission management.

Implement Quoroom

During beta, channels are owned by their creating browser fingerprint which can terminate/lock them. Since we have no user authentication this is quite ephemeral to the same session and assuming all rooms will be wiped when the last participant leaves. A potential idea is to add an option for rooms to be self governed by the current majority using a quoroom approach - where the mob can act as an admin effectively. An organized anarchy?

  • force-muting or kicking out someone? vote.
  • renaming or terminating the channel? vote.

Ideas?

House Rules TBD

Simple Room Rules

  • Room creator or owner should be the only active speaker in his room, and cannot be removed. (speaker)
  • Room participants are read-only by default. They should not offer webrtc audio, just receive it from SFU like a podcast. (mute)
  • Room participants can request a 'speaker' status from one of the Ops in the room to become speakers (request)
  • Room creator can 'accept requests' of others to become speakers and negotiate two-way audio. (co-speaker)
  • Room speakers explicitly muted by a creator/owner loose all rights and become read-only (mute)
  • Room speaker can mute themselves without loosing rights. Nobody can unmute anyone from an audio standpoint.
  • Room creator can lock or destroy the room at any moment. When the creator exits, the room and all peers are destroyed.

Bonus Features

  • Implement speaker screensharing to the room, only one allowed, full screen broadcasting mode.
  • Implement automute speakers after silence-idle time in audio analyzer
  • Implement ban/kick anonymous users (using fingerprint.js)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.