Skip to content

ordinaryexperts/aws-marketplace-oe-patterns-jitsi

Repository files navigation

Ordinary Experts Logo

Jitsi Meet on AWS Pattern

The Ordinary Experts Jitsi Pattern is an open-source AWS CloudFormation template that offers an easy-to-install AWS infrastructure solution for quickly deploying a Jitsi Meet service, using AWS best practices.

Jitsi Meet is a set of free and open-source projects which allow easy building deployment of secure video conferencing solutions.

Product Setup

Prework

For this pattern to work, you must first:

  1. Have an AWS Route 53 Hosted Zone configured and delegated

After that you can just launch the CloudFormation stack and fill out the required parameters.

See the Ordinary Experts AWS Marketplace Product Page for a more detailed walkthrough with screenshots.

Technical Details

  • Ubuntu 22.04.4 LTS
  • Jitsi version stable-9823

The AWS stack uses Amazon Elastic Compute Cloud (Amazon EC2), Amazon Network Load Balancer (NLB) and Application Load Balancer (ALB), Amazon Virtual Public Cloud (Amazon VPC), Amazon CloudWatch, Amazon S3, Amazon Secrets Manager, Amazon Systems Manager Parameter Store, and Amazon Route 53.

The template places an EC2 instance in a private subnet of the VPC, and deploys an NLB (for UDP and passing HTTP/S to ALB) and ALB (for HTTP/S) and secures port access to 80, 443, 10000, and 20000-20040 via an EC2 Security Group. Users can optionally have the template create a brand new VPC, or specify an existing VPC ID in their AWS account into which to deploy, including subnet identification parameters. Users are also able to lock down public access of the service to an ingress CIDR Block, in case they want to restrict access to a range of IP addresses (such as corporate VPN IPs).

Users provide an AWS Route 53 Hosted Zone Name and the stack will automatically manage a DNS record for the provided hostname parameter to point to the NLB. SSL is done by specifying an ACM certificate ARN.

There are three files that control the configuration of Jitsi, according to the self-hosting guide, .env, custom-config.js, and custom-interface_config.js.

The .env file contains core settings for Jitsi. This file is automatically generated by the Ordinary Experts Pattern and contains secret configuration among other runtime configuration.

In order to add custom configuration to the .env file, create an SSM Parameter Secret String with the configuration you would like appended to the .env file, then specify the ARN of this SSM Parameter Secret String as the CustomDotEnvParameterArn CloudFormation parameter. When the stack provisions the EC2 instance, it will check this parameter and append any configuration to the .env file.

For example, to enable server-side recording, put this into the value of the parameter referenced by CustomDotEnvParameterArn:

ENABLE_RECORDING=1

Likewise, to create an custom-config.js or custom-interface_config.js file, specify the CustomConfigJsParameterArn and / or the CustomInterfaceConfigJsParameterArn, where these ARNs point to SSM Parameter Secret Strings with values that will be used to create the custom-config.js and interface_custom-config.js files.

We recommend adding the version of the SSM Parameter Secret String to the end of the SSM Parameter ARN in this format: thearn:1 where 1 is the version of the SSM Parameter Secret String. This allows you to make a change to the contents of one of the SSM Parameters, then increment the version number in the ARN in the CloudFormation parameters, then re-deploy the stack. If there happens to be an issue with the configuration you just added, CloudFormation will roll-back to the previous version.

Direct access to the EC2 instance for maintenance and customizations is possible through AWS Systems Manager Agent which is running as a service on the instance. For access, locate the EC2 instance in the AWS console dashboard, select it and click the "Connect" button, selecting the "Session Manager" option.

Jitsi Stack Infrastructure

Topology Diagram

Developer Setup

We are following the 3 Musketeers pattern for project layout / setup.

First, install Docker, Docker Compose, and Make.

Feedback

To post feedback, submit feature ideas, or report bugs, use the Issues section of this GitHub repo.