Harmony aims to provide secure, robust, and open source encrypted communication with high call quality. It is designed for individuals, communities, as well as organizations with a space and channel structure. In addition to providing a secure communication platform, developers may build upon the platform much easier than other platforms.
This repository includes the core server software. It's free to self-host or use any hosted instance. Enterprise customers will have the option to purchase support services and hosted instances. Authentication is meant to be used with the Nextania account services. OAuth2 will be supported in the future.
The Harmony client currently only exists for browsers. Other clients will be developed in the future.
Note: Harmony is not a federated service for the sake of simplicity. It is a centralized service that can be self-hosted.
You will need Rust, MongoDB, and Redis before running the server. The following environment variables need to be set:
MONGODB_URI
- The URI to the MongoDB database.MONGODB_DATABASE
- The name of the MongoDB database.REDIS_URI
- The URI to the Redis database.JWT_SECRET
- The secret used for JWTs. To run the server, you can usecargo run --bin harmony
.
In addition, if you would like to run the WebRTC voice node, you will need to set the following environment variables:
REDIS_URI
- The URI to the Redis database.REGION
- The region of the voice node. To run the voice node, you can usecargo run --bin pulse
.
The voice node needs to be run using a server with a public IP address for WebRTC to function properly. Additionally, a sizeable amount of bandwidth is required.
This project is licensed under the GNU Affero General Public License v3.0.