- Open-Source
- For small groups
- Browser based
- Only peer-to-peer connections
- Firebase is only used for signaling
- No media server
- Screen sharing
- Text-Chat with images
- Change of video and microphone source
- Multilingual (English and German)
- Mobile friendly
- Customizable design
Demo: https://chat.gise.at
The characters after the hashtag define the room, if no hashtag is selected, the create room dialog is displayed.
For example, all visitors with a link to https://chat.gise.at/#roulette-chat enter into a room and can communicate with each other there.
Therefore simply forward the current URL to invite others.
This video chat is made to install it on an own web server. The web server need no server-side programming language, only a free firebase project is required.
- Local development environment
- Git
- Node.js
- npm
- Server
- nginx or apache
Load code and dependencies in your local development environment:
git clone https://github.com/vgiselbrecht/chat.git chat
cd chat
npm install
Linux
cp src/config.tmp.json src/config.json
cp src/assets/sass/_custom.tmp.scss src/assets/sass/_custom.scss
Windows
copy src\config.tmp.json src\config.json
copy src\assets\sass\_custom.tmp.scss src\assets\sass\_custom.scss
For signaling you need a free Firebase Project with anonymous authentication and realtime database.
Copy the firebase configuration to the src/config.json file in exchangeServices/firebase.
{
"meta": {
"title": "Video Chat",
"description": "Open-Source video chat based on WebRTC and Firebase.",
"keywords": "chat, webrtc, video-call, video-chat",
"image": ""
},
"privacy": {
"firebaseAnalytics": 0,
"imprint": "",
"gdpr": ""
},
"exchangeServices": {
"firebase": {
"apiKey": "",
"authDomain": "",
"databaseURL": "",
"projectId": "",
"storageBucket": "",
"messagingSenderId": "",
"appId": "",
"measurementId": ""
}
},
"communication": {
"webrtc": {
"iceServers": [
{"urls": "stun:stun.services.mozilla.com"},
{"urls": "stun:stun.l.google.com:19302"}
],
"iceServersFromUrl": ""
}
}
}
Additional STUN / TURN Server can also be added in communication/webrtc/iceServers. To use this video chat behind some Firewalls and NATs, you need a TURN server.
List of free STUN and TURN Server
With certain systems (e.g. Twilio) it is necessary that the IceServers change frequently. Therefore it is possible to load the IceServer configuration dynamically with communication/webrtc/iceServersFromUrl. In the given URL, a return in JSON format is requested in the same way as with the iceServers Parameter ([{"urls": ""},...]).
You can add your SASS design adaptations into the file "src/assets/sass/_custom.scss". The easiest way is to overwrite the variables from _settings.scss here. This file remains even after an update.
grunt deploy
Add content from dist directory to the document root of your local web server.
grunt deploy --target=production
Copy content from dist directory to your web server.
grunt watch
Change the compiled code in dist directory after saving a project file. Ideally the dist directory is the document root of a local web server like nginx or apache.
You can sponsor me through GitHub Sponsoring.
As a recognition, i would be happy to receive a star.
Suggestions and pull requests for extensions are always welcome.