Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gjovanov/roomler
Roomler - Multi-party Video Conferencing & Team Collaboration Tool using WebRTC (Janus Gateway)
https://github.com/gjovanov/roomler
chat coturn docker fastify janus-gateway mongodb nginx nuxtjs redis video-conferencing vuejs webrtc
Last synced: 1 day ago
JSON representation
Roomler - Multi-party Video Conferencing & Team Collaboration Tool using WebRTC (Janus Gateway)
- Host: GitHub
- URL: https://github.com/gjovanov/roomler
- Owner: gjovanov
- License: agpl-3.0
- Created: 2019-08-27T08:37:08.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-01-28T15:13:00.000Z (9 days ago)
- Last Synced: 2025-01-28T16:23:02.628Z (9 days ago)
- Topics: chat, coturn, docker, fastify, janus-gateway, mongodb, nginx, nuxtjs, redis, video-conferencing, vuejs, webrtc
- Language: JavaScript
- Homepage: https://roomler.live
- Size: 64.9 MB
- Stars: 288
- Watchers: 20
- Forks: 83
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-webrtc - Roomler - Multi-party Video Conferencing & Team Collaboration Tool using WebRTC (Janus Gateway). (Projects / Video Conference)
README
# Roomler
> Roomler.Live - Live video conferencing & collaboration tool using WebRTC (Janus Gateway)
It's like Slack on Crack and Microsoft Teams on Steroids.
All that fully free and open source.[![Roomler Intro](https://img.youtube.com/vi/lzHeRwVDfPQ/0.jpg)](https://www.youtube.com/watch?v=lzHeRwVDfPQ)
# Features
| MULTI PARTY CALLS | POWERFUL CHAT | ORGANIZED ROOMS |
|-------------------------|-------------------------|-------------------------|
|
- [x] Video
- [x] Audio
- [x] Screen share
- [x] Encrypted
- [x] up to 50 call participants
- [x] Rich-text
- [x] File sharing
- [x] Emojis & Giphy's
- [x] Mentions
- [x] Reactions
- [x] Public Rooms
- [x] Private Rooms
- [x] Hierarchy of Rooms
- [x] User invite system
- [x] Owner, moderator & member roles
# Technology stack
- [Janus Gateway](https://github.com/meetecho/janus-gateway)
- [Coturn](https://github.com/coturn/coturn)
- [Fastify](https://github.com/fastify/fastify)
- [PM2](https://github.com/Unitech/pm2)
- [MongoDB](https://github.com/mongodb/mongo)
- [Redis](https://github.com/antirez/redis)
- [VueJS](https://github.com/vuejs/vue)
- [NuxtJS](https://github.com/nuxt/nuxt.js/)
- [VuetifyJS](https://github.com/vuetifyjs/vuetify)
- [Tiptap](https://github.com/ueberdosis/tiptap)
- [ProseMirror](https://github.com/ProseMirror/prosemirror)
- [Nginx](https://github.com/nginx/nginx)
- [Docker](https://github.com/docker)
# Architecture
![Architecture](./packages/ui/static/architecture.png)
# Prerequisites
Roomler requires:
- docker engine being installed on your host machine
- two docker networks being created
- environment variables being setup
- serveral micro services up and running
before we can start Roomler (both in development and production environemnt)
## Docker network
Besides the default `host` Docker network, we need to create two addition bridge networks:
1. `docker network create frontend` (used by containers `roomler`, `nginx`)
2. `docker network create backend` (used by containers `roomler`, `mongo`, `redis`)
3. on the existing `host` network `janus` and `coturn` will be attached
## Microservice dependencies
- [Janus Gateway](docs/deps-janus.md)
- [Coturn](docs/deps-coturn.md)
- [MongoDB](docs/deps-mongo.md)
- [Redis](docs/deps-redis.md) - optional in development, but recommended in production!
- [Nginx](docs/deps-nginx.md) - optional in development, but recommended in production!
## Environment variables
You need to setup all your Required (even Optional if desired) [environment variables](docs/env.md), before you can run Roomler
# Start Roomler App
## Start in development mode
``` bash
# install dependencies
$ npx lerna bootstrap
# Start API server (localhost:3001)
$ yarn run dev:api
# Start UI server (localhost:3000)
$ yarn run dev:ui
```
## Start in production mode
``` bash
# install dependencies
$ npx lerna bootstrap --scope roomler.ui
# build for production and launch server
$ yarn run build
$ yarn run start
```
## Start in production mode using docker
### Docker build
`.scripts/build.sh`
### Docker release
`.scripts/release.sh`
### Docker run
``` bash
docker run -d --name roomler \
--hostname roomler \
--network backend \
--restart always \
-v /path_to_your_uploads_folder:/roomler/packages/ui/static/uploads \
-e API_URL=https://roomler.live \
-p 8082:3000 \
-e DB_CONN=YOUR_DB_CONN \
-e WS_SCALEOUT_ENABLED=true \
-e WS_SCALEOUT_HOST=redis \
-e SENDGRID_API_KEY=YOUR_SEND_GRID_KEY \
-e FACEBOOK_ID=YOUR_FACEBOOK_ID \
-e FACEBOOK_SECRET=YOUR_FACEBOOK_SECRET \
-e GOOGLE_ID=YOUR_GOOGLE_ID \
-e GOOGLE_SECRET=YOUR_GOOGLE_SECRET \
-e GITHUB_ID=YOUR_GITHUB_ID \
-e GITHUB_SECRET=YOUR_GITHUB_SECRET \
-e LINKEDIN_ID=YOUR_LINKEDIN_ID \
-e LINKEDIN_SECRET=YOUR_LINKEDIN_SECRET \
-e MICROSOFT_ID=YOUR_MICROSOFT_ID \
-e MICROSOFT_SECRET=YOUR_MICROSOFT_SECRET \
-e TURN_URL=YOUR_TURN_URL \
-e TURN_USERNAME=YOUR_TURN_USERNAME \
-e TURN_PASSWORD=YOUR_TURN_PASSWORD \
-e GIPHY_API_KEY=YOUR_GIPHY_KEY \
-e GOOGLE_ANALYTICS_ID=YOUR_GOOGLE_ANALYTICS_ID \
-e SUPER_ADMIN_EMAILS='["[email protected]"]' \
-e WEB_PUSH_CONTACT="mailto: [email protected]" \
-e WEB_PUSH_PUBLISH_KEY=YOUR_VAPID_PUBLIC_KEY \
-e WEB_PUSH_PRIVATE_KEY=YOUR_VAPID_PRIVATE_KEY \
-e NUXT_TELEMETRY_DISABLED=1 \
gjovanov/roomler
# attach roomler container to backend network
docker network connect backend roomler
```
## Start in production mode using docker-compose
`docker-compose up` - this will start the whole docker stack of services
# Testing
## Run API tests
``` bash
# makes sure MongoDB is reachable based on /config/index.js (dbSettings)
$ yarn run test:api
```
## Run E2E tests (TODO)