{"id":13510303,"url":"https://github.com/linagora/hublin","last_synced_at":"2025-03-30T15:31:15.232Z","repository":{"id":28504194,"uuid":"32020675","full_name":"linagora/hublin","owner":"linagora","description":"DEPRECATED - An easy and free video conference service based on WebRTC","archived":true,"fork":false,"pushed_at":"2021-02-10T04:51:34.000Z","size":5270,"stargazers_count":1585,"open_issues_count":89,"forks_count":296,"subscribers_count":134,"default_branch":"master","last_synced_at":"2024-11-01T10:35:19.061Z","etag":null,"topics":["conference","openpaas-esn","p2p","webrtc"],"latest_commit_sha":null,"homepage":"https://hubl.in","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linagora.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-11T14:01:12.000Z","updated_at":"2024-09-10T15:01:36.000Z","dependencies_parsed_at":"2022-08-07T13:15:58.273Z","dependency_job_id":null,"html_url":"https://github.com/linagora/hublin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linagora%2Fhublin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linagora%2Fhublin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linagora%2Fhublin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linagora%2Fhublin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linagora","download_url":"https://codeload.github.com/linagora/hublin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246338877,"owners_count":20761454,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["conference","openpaas-esn","p2p","webrtc"],"created_at":"2024-08-01T02:01:32.816Z","updated_at":"2025-03-30T15:31:10.224Z","avatar_url":"https://github.com/linagora.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","p2p","webrtc","Support"],"sub_categories":["Video Conference"],"readme":"# Deprecated\n\n**!!! This project is deprecated and not maintained anymore !!!**\n\n# Hubl.in\n\n[![Join the chat at https://gitter.im/linagora/hublin](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/linagora/hublin?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\n[![Code Climate](https://codeclimate.com/github/linagora/hublin/badges/gpa.svg)](https://codeclimate.com/github/linagora/hublin)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/30d5ffabcf7e49a789fa6024a33d918e)](https://www.codacy.com/app/linagora/hublin?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=linagora/hublin\u0026amp;utm_campaign=Badge_Grade)\n[![CodeFactor](https://www.codefactor.io/repository/github/linagora/hublin/badge)](https://www.codefactor.io/repository/github/linagora/hublin)\n[![Build Status](https://travis-ci.org/linagora/hublin.svg?branch=master)](https://travis-ci.org/linagora/hublin)\n[![Docker Build Status](https://img.shields.io/docker/build/linagora/hublin.svg)](https://hub.docker.com/r/linagora/hublin)\n\n[Hubl.in](https://hubl.in) is a free and open source video conference solution built with love and designed with ethics in mind.\nIt's the best way to initiate a communication anywhere with anybody and brings real time conversation to the next level.\nHubl.in allows free communication without additional plugins.\n\n## Installation\n\nA complete and more advanced documentation is available at [https://linagora.github.io/hublin-doc](https://linagora.github.io/hublin-doc). The following instructions assumes that you are installing Hublin on a debian distribution.\n\n1. clone the repository\n\n``` sh\ngit clone https://github.com/linagora/hublin.git\n```\n\n2. Install node.js\n\nHublin uses Node 8. It is highly recommended that you use [nvm](https://github.com/creationix/nvm) to install a specific version of node.\n\n``` sh\nnvm use\n# will install and use required node version (lts/carbon)\n```\n\n3. Go into the project root directory and install project dependencies\n\n``` sh\nnpm install\n```\n\n4. Install and configure MongoDB\n\nYou must install mongoDB. We suggest you to use mongoDB version 2.6.5.\n\n``` sh\nsudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10\necho 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list\napt-get install -y mongodb-org=2.6.5 mongodb-org-server=2.6.5 mongodb-org-shell=2.6.5 mongodb-org-mongos=2.6.5 mongodb-org-tools=2.6.5\nservice mongod start\n```\n\n5. Copy the sample `db.json` configuration file and adapt it to your needs (especially the mongodb URL)\n\n``` sh\ncp config/db.json.sample config/db.json\n```\n\n6. Install Redis\n\n``` sh\napt-get install redis-server\n```\n\nA more advanced deployment using the Janus WebRTC Gateway is possible and described in the [Hublin + Janus documentation](https://linagora.github.io/hublin-doc/getting-started/janus/).\n\n## Starting the server\n\nOnce all your services are ready and started (Mongo, Redis and optionally Janus), use `npm start` to start the server\n\n``` sh\nnpm start\n```\n\nHublin is now available on [http://localhost:8080](http://localhost:8080).\n\n## Testing\n\nFirst, install the required npm dependencies (as an administrator):\n\n``` sh\nnpm install -g mocha grunt-cli bower karma-cli\n```\n\nYou can check that everything works by launching the test suite:\n\n``` sh\ngrunt\n```\n\nIf you want to launch tests from a single test, you can specify the file as command line argument.\nFor example, you can launch the backend tests on the `test/unit-backend/webserver/index.js` file like this:\n\n``` sh\ngrunt test-unit-backend --test=test/unit-backend/webserver/index.js\n```\n\nNote: This works for backend and midway tests.\n\nSome specialized Grunt tasks are also available, check the `Gruntfile.js` file for more:\n\n```\ngrunt linters # launch hinter and linter against the codebase\ngrunt test-frontend # only run the fontend unit tests\ngrunt test-unit-backend # only run the unit backend tests\ngrunt test-midway-backend # only run the midway backend tests\ngrunt test # launch all the testsuite\n```\n## Fixtures\n\nFixtures can be configured in the fixtures folder and injected in the system using `grunt`:\n\n``` sh\ngrunt fixtures\n```\n\nNote that this will override all the current configuration resources with the fixtures ones.\n\n## Develop\n\nRunning `grunt dev` will start the server in development mode. Whenever you\nmake changes to server files, the server will be restarted. Make sure you have\nstarted the `mongodb` and `redis` services beforehand.\n\n### Updating files for distribution\n\n`grunt` plugins are used to process files and generate distribution.\nYou will have to follow some rules to not break the distribution generation which are defined here.\n\n#### Frontend\n\nAny project frontend JS file which is under `frontend/js` and used in a web page must be placed between generator tags.\nFor example, in `frontend/views/meetings/index.pug` file:\n\n``` html\n// \u003c!--build:js({.tmp,frontend}) meetings.js--\u003e\nscript(src='/js/modules/user/user.js')\n...\nscript(src='/js/meetings/app.js')\n// \u003c!--endbuild--\u003e\n```\n\nThe files placed between the two comment lines will be used to generate a `meetings.js` file (concatenate and minify all).\n\n### Backend\n\nAll the files from backend are copied into the `dist/backend` folder without any change.\n\n### Static files\n\nThese folders are pushed in the distribution:\n\n- `config`\n- `templates`\n\nIf you need to add more, you will have to change the `copy:dist` and `dist-files` tasks in `Gruntfile.js`\n\n## Create a distribution\n\nTo create a distribution with clean environment, minified files and install production dependencies:\n\n``` sh\ngrunt dist-all\ncd dist\nnpm install --production\n```\n\nThen you can start the server with `npm start`, `node server`, or your favorite tool (Kudos to forever).\n\n## Docker\n\nHubl.in is available on the Docker Hub as `linagora/hublin`, so you can pull it from there:\n\n``` sh\ndocker pull linagora/hublin\n```\n\nOr you can build it from the current git repository\n\n```\ndocker build -t linagora/hublin .\n```\n\nThe `linagora/hublin` container is configured to get the mongodb connection from `mongodb://mongo:27017` URL. You can modify the `config/db.json` file and adapt to use your own instance, or continue to use Docker and use one of the solutions below.\n\n### docker-compose\n\n`docker-compose` allows to describe and run distributed applications (cf `docker-compose.yml` file).\n\nYou can launch Hublin with compose from the current directory:\n\n``` sh\nDOCKER_IP=\u003cYOUR DOCKER IP\u003e docker-compose up\n```\n\nWhere `DOCKER_IP` is the public IP address where Docker services can be reached. This will be used by Janus to send back the right IP to Web clients (ICE candidates) so that they can communicate with Janus correctly.\n\n### Janus with docker\n\nThe docker image configured for Janus is available on the Hub as `linagora/hublin:janus`.\n\n``` sh\ndocker pull linagora/hublin:janus\n```\n\nOr you can build it from the current repository\n\n``` sh\ndocker build -t linagora/hublin:janus -f Dockerfile.janus .\n```\n\nYou can launch Hublin with Janus and all required services with Docker compose like:\n\n``` sh\nDOCKER_IP=\u003cYOUR DOCKER IP\u003e docker-compose -f docker-compose.yml -f docker-compose.janus.yml up\n```\n\nIf you want to launch required services except Hublin container to start it on your own for development purposes for example, you can do:\n\n```sh\nDOCKER_IP=\u003cYOUR DOCKER IP\u003e docker-compose -f docker-compose.yml -f docker-compose.janus.yml up janus-gateway mongo redis\n```\n\nAnd then start Hublin\n\n```sh\nNODE_ENV=dev npm start\n```\n\n## Embedding\n\nWant to embed hubl.in on your website? Read more [here](doc/embedding.md).\n\n## License\n\n[Affero GPL v3](http://www.gnu.org/licenses/agpl-3.0.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinagora%2Fhublin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinagora%2Fhublin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinagora%2Fhublin/lists"}