Need help with roomler?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

gjovanov
153 Stars 50 Forks GNU Affero General Public License v3.0 411 Commits 1 Opened issues

Description

Roomler - Multi-party Video Conferencing & Team Collaboration Tool using WebRTC (Janus Gateway)

Services available

!
?

Need anything else?

Contributors list

No Data

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

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

Architecture

Architecture

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

Environment variables

You need to setup all your Required (even Optional if desired) environment variables, before you can run Roomler

Start Roomler App

Start in development mode

# 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

# 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

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 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

# makes sure MongoDB is reachable based on /config/index.js (dbSettings)
$ yarn run test:api

Run E2E tests (TODO)

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.