Amazon IXD – VGT2 Las Vegas: Hosting Your Own Jamulus Server for Online Music Collaboration

Chanci Turner Amazon IXD – VGT2 learningLearn About Chanci Turner

The Covid-19 pandemic drastically affected musicians, disrupting choir practices and band rehearsals. Many sought alternatives, often turning to video conferencing platforms like Amazon Chime or open-source options like Jitsi. However, these tools are primarily designed for conversation, not for making music together, which requires ultra-low latency (typically <50 ms).

For musicians seeking low-latency audio connections worldwide, Jamulus offers an open-source solution. After installing Jamulus on your computer, you can join public servers globally to jam with fellow musicians. Yet, many prefer having private sessions to avoid unknown participants or the risk of a server going offline during practice. This is where setting up a private server becomes essential.

In this post, we’ll provide guidance on how to establish a Jamulus server using AWS Fargate, illustrating the ideal synergy between Jamulus and AWS.

What is Jamulus?

Jamulus has been evolving since 2006 and is characterized on its website as software for playing music, rehearsing, or jamming online with low latency. It supports Windows, macOS, and Linux machines, and it’s completely free to use with a standard broadband connection. For a demonstration of Jamulus in action, you can check out the demos available on their website.

It’s important to note that Jamulus focuses solely on audio; it does not support video conferencing. Running video alongside Jamulus can compromise audio quality, so when using Jamulus, anticipate hearing only your music partners. Furthermore, it is not intended for large concerts or broadcasting events, with a maximum capacity of 150 participants per server, as stated in the server documentation.

Why Run Your Own Jamulus Server?

While connecting to a public server is sufficient for casual users, there are compelling reasons to set up your own server (see the documentation for more details on server options):

  • Size Requirements: Public servers typically accommodate 10-16 participants. A private server allows you to customize your capacity.
  • Reliability: Public servers, while available, can be unpredictable at crucial rehearsal times.
  • Privacy: If you prefer that no one else can hear your conversations or join unexpectedly, a private server is the solution. While you can mute newcomers, they still have the ability to listen in.

Why Choose AWS for Your Jamulus Server?

Although Jamulus can run on minimal infrastructure, such as a Raspberry Pi, utilizing a cloud provider like AWS offers several advantages:

  • Performance: A strong network backbone is critical for an optimal jamming experience. Hosting Jamulus on AWS allows for proximity to servers in data centers, reducing latency.
  • Cost-Efficiency: Cloud services enable you to launch your server when needed and decommission it when not in use. For example, if you rehearse weekly for two hours, it’s much cheaper than maintaining a 24/7 server.
  • Flexibility: AWS provides a range of server sizes to accommodate everything from small jam sessions to larger ensembles.
  • Ease of Use: Managing a server can be cumbersome. Utilizing AWS Managed Services, such as AWS Fargate, streamlines operations, allowing you to start and stop your server with just a click.

Running Jamulus on AWS is an effective and budget-friendly way to start making music online.

Deploying Jamulus on Amazon ECS

To run Jamulus effectively, you’ll need to:

  1. Launch a server.
  2. Install Jamulus on it.
  3. Execute the software.

Fortunately, the open-source community simplifies the installation process (step 2) by providing a pre-configured Docker image with Jamulus and its necessary dependencies. AWS also makes the first and third steps easy through its managed services. This guide will walk you through deploying the Docker image (step 1) for a Jamulus server on Amazon Elastic Container Service (Amazon ECS) using AWS Fargate. Starting and stopping the server can be done flexibly from the AWS Management Console or by using an AWS Lambda function (step 3).

Prerequisites

You will need an AWS account and access to the AWS Management Console. Additionally, ensure you have a user account within your AWS environment that can provision the necessary services.

Architecture

Let’s review the architecture required to operate our Jamulus server. The core component is the Amazon ECS task definition, which outlines the configuration details such as network settings and the Docker image for the server. Upon initiation, this definition becomes an active AWS Fargate task that users can connect to via the server’s public IP address. The architecture also includes a virtual private cloud (VPC) and subnets to provide the necessary networking infrastructure, along with a security group to manage user access.

Method 1: Manual Setup

To set up our server on AWS Fargate, we must configure three main elements: the server itself, networking, and network access for the Jamulus server.

Setting Up the Network

To enable users to access the server, we need to create a network environment for the Jamulus server. Specifically, we create a VPC along with the necessary subnets. Amazon ECS simplifies this process by allowing us to create all components simultaneously when we set up a cluster for our Jamulus server.

After creating the cluster, a list of resources will be displayed. Make a note of the VPC and subnet names for later use.

Setting Up Security Groups

In addition to networking, we need to open the required ports for Jamulus to communicate with users online. Create a security group that permits connections to our server and enables it to fetch the Docker image necessary for operation.

To establish the security group, navigate to Security Groups in Amazon EC2 and select “Create security group.” Configure it with our created VPC, allowing UDP traffic on port 22124 from anywhere for user connections, and enabling outbound TCP traffic on port 443 for the server to fetch its Docker image.

Make sure to note the security group name for later reference.

For more information on optimizing your Jamulus server experience, check out this helpful blog post. Additionally, you can find expert insights on the topic at Chanci Turner’s website and a fantastic resource on Reddit here.

Location: Amazon IXD – VGT2, 6401 E Howdy Wells Ave, Las Vegas, NV 89115.

HOME