This is a fork from chatmosphere.cc
This project should evolve into a tool for theaters, to enable a hybrid stage experience. Working together with the Boat People Project e.V.
To deploy...
- Build app locally
- Install netlify-cli
3a. (connect to netlify, only first time)
netlify init
3b.netlify deploy --prod
Netlify does not know, how to handle react-router URL.
Here is the fix: https://sung.codes/blog/2018/12/18/page-not-found-on-netlify-with-react-router/ https://docs.netlify.com/routing/redirects/rewrites-proxies/#history-pushstate-and-single-page-apps
-> Use _redirects file
The frontent uses / relies on lib-litsi-meet: https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-ljm-api
Find it in /public/lib/
Space, where everyone enters. People can move around and watch live-stream. There arealso 1-1 seats.
ROOT/enter
or
ROOT/session/SESSIONNAME
Special view for back-projection on stage, where all participant video views are projected in a grid.
ROOT/beamer/SESSIONNAME
Special view for speacker on stage, where only participant on a speaker-vield are shown in a grid-like view.
ROOT/speaker/SESSIONNAME
We use a separate jitsi-server to broadcasting the stage. It is at the time of writing the best compromise we can get to ensure good audio-quality and low-latency stream, because we want to do the webRTC route, instead of RTMP. (RTMP always gave us some seconds delay, no matter what we tried, and we tried a lot. It looks, that by the end of the year, broadcasting via webRTC will be much more supported, because of the community (i.e. OBS-community) discusses this topic a lot at the moment and new techologies are build, like WHIP.)
To ensure a good audio-quality we did the following things
-
Setup an own server, that run an jitsi-instance, that will not get disturbed by the "regular visitors", but will only handle delivering stage audio-and video to foyer participants (that itself will not broadcast any video or audio)
-
Edited the following settings at the jitsi-server:
/etc/jitsi/meet/<domain>-config.js
enableNoAudioDetection: false,
enableNoisyMicDetection: false,
opusMaxAverageBitrate: 510000,
enableOpusRed: true,
enableLipSync: false,
disableAP: true,
disableAEC: true,
disableNS: true,
disableAGC: true,
disableHPF: true,
stereo: true,
For app-stability, we disable p2p mode:
testing: {
p2pTestMode: true
}
p2p: {
enabled: false
}
Do not forget to restart after editing
# Restart Services
$ /etc/init.d/jicofo restart && /etc/init.d/jitsi-videobridge2 restart && /etc/init.d/prosody restart
Edit nano /etc/nginx/sites-enabled/YOUR-SITE.conf
Make sure, bosh connections allow all Access Control
# BOSH
location = /http-bind {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept';
proxy_pass http://localhost:5280/http-bind;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
}
Again, do not forget to restart after editing:
systemctl restart nginx
When having problems, connecting to the prosody-service on the backend, please check, if you set the serverUrl-param in the serverConfig.ts. The bosh-param is deprecated. Read more: https://community.jitsi.org/t/issues-setting-up-jitsi-backend-with-lib-jitsi-meet-prosody-get-error-with-focus-server-sending-error-replies-for-1-queued-stanzas-because-of-failed-outgoing-connection-to-focus-undefined/120372/1
This issue seems to go down, that the jitsi-videobridge component does not seem to have the correnct user-auth credential. A typical error looks like this tail -F /var/log/jitsi/jvb.log
RetryStrategy$TaskRunner.run#198:
org.jivesoftware.smack.sasl.SASLErrorException: SASLError using SCRAM-SHA-1: not-authorized
at org.jivesoftware.smack.SASLAuthentication.authenticationFailed(SASLAuthentication.java:292)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1100)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:1000)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:1016)
at java.base/java.lang.Thread.run(Thread.java:834)
The background is, that the install somehow failed to create the jvb-user with credentials at the prosody-service. To resolve: Get the password of the jvb-user at this file: /etc/jitsi/videobridge/sip-communicator.properties
-> org.jitsi.videobridge.xmpp.user.shard.PASSWORD
The create the prosody user with this command: prosodyctl passwd [email protected]
You will get asked for a password. Enter the password you obtained form org.jitsi.videobridge.xmpp.user.shard.PASSWORD
Don't forget to restart all servived again to reflect the changes that were made.
Chatmosphere is an open source project that aims to make video calls informal and natural. We missed the dynamics of a self-organizing crowd hanging out at one big table together. The big table in a bar, where so many discussions, jokes, comforting talks, utopias and ideas happen. With chatmosphere you can move and zoom in the area and hear people that are located near by louder and have dynamic talks. To learn more about the Chatmosphere project and ideas have a look in our ABOUT.md