# roomler **Repository Path**: psjb/roomler ## Basic Information - **Project Name**: roomler - **Description**: No description available - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-10 - **Last Updated**: 2021-05-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## 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 | |-------------------------|-------------------------|-------------------------| | | | | # 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](./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='["your_super_admin_email@gmail.com"]' \ -e WEB_PUSH_CONTACT="mailto: your_email@gmail.com" \ -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)