While there are a lot of public Jamulus servers, there are reasons one might want to run their own server. For instance, we like to use an unregistered server when we practice. To do that, we spin up a Jamulus server at VULTR. It’s quick, easy and very cost effective if you only run it when needed.

With the instructions and startup script below, you can have a Jamulus server running on a virtual private server in about 5 minutes. Yes, it’s that quick.

Prerequisites

* I’m not affiliated with VULTR nor am I a member of their referral program. I have been using them for a few years without issue. There are many other VPS providers to choose from. Just be aware that while the docker image from this startup script should work at many VPS providers, this startup script itself might not.

Startup Script

All of the heavy lifting is accomplished by VULTR’s Docker Marketplace app, a Docker image containing the Jamulus software, and a startup script that runs that Docker image. The first thing we need to do is add the startup script.

On the VULTR site, go to Dashboard > Orchestration > Startup Scripts and add a new script. Copy and paste the text below. You can tweak the command line options as needed, but these should work. Then, save your script. You can name it whatever you like, just remember what you named it since you’ll need to choose it when deploying the server later.


#!/bin/sh

# Dynamic DNS (optional)
# If you have a domain and host name you'd like to use, this would be a good place to update the address for it

# Switch to docker user
su - docker

# Chill for a minute (sometimes docker fails to fetch the image if it happens too fast)
sleep 1m

# Docker Start Command

# Instantiate the Jamulus server with Docker
# See https://jamulus.io/wiki/Command-Line-Options for Jamulus command line options
docker run \
  -e TZ=America/New_York \
  --name jamulus \
  -d --rm \
  -p 22124:22124/udp \
  -v $(pwd)/jam:/jam \
  jpreardon/jamulus:latest \
  -n -s -p 22124 -F -P -T -l /jam/jamulus.log \
  --welcomemessage "<html><h1>Welcome to the Jam Server</h1></html>"

Deploying the Server

  1. Open the VULTR Dashboard.
  2. Click the Deploy button
  3. Choose the following options
    • Dedicated CPU
    • The nearest location to your musicians
    • A CPU optimized VPS (I usually choose the voc-c-c2-4gb-50s, we have 6 clients connecting)
    • Automatic backups: I disable this as I don’t need it
  4. Click the configure button
  5. Choose the following options
    • The Docker Marketplace App
    • Startup script: Choose the one you created earlier
  6. Click Deploy
  7. Wait a few minutes while the server comes up
  8. Jam!

After the server comes up, you should be able to connect to it with a Jamulus client. You’ll need to get the IP address from your VULTR Dashboard and make sure the rest of the band has it. If you use the startup script above without modification, your server will not be registered in a Jamulus directory, anyone that wants to connect will need that IP address.

You can make it easier for your band to connect by either using dynamic DNS, or registering your server in one of the Jamulus directories. We use dynamic DNS and a particular host name so we don’t have to change the IP address on the clients all the time. Setting this up isn’t difficult if you already have a domain name hosted somewhere. Check your DNS or hosting provider’s documentation for instructions. However, adding your server to a Jamulus directory is just a matter of passing some additional options in your startup script. See the Jamulus server mode related options for details.

If you’re only using the server once in a while, you can destroy it so you’re not paying for something you’re not using. Next time you want to jam, just deploy the server again.

I hope these instructions are helpful for someone. Special thanks to Grigory Chernyshev (@grundic) for creating the original Docker image. They did all the work, I just updated a couple version numbers and built a new image.

Happy Jamming!

5 thoughts on “Running your own Jamulus Server

  1. I took this week off. While some might call it a staycation, I call it a mini-retirement. No matter the terminology, it was awesome. I…

  2. A few months ago, I blocked YouTube on my laptop. It has been effective in moderating the random watching. It also makes it clear just…

  3. Oven fresh! This week’s random photo comes from the wall of the men’s in an unnamed, Brooklyn bar. Regular readers will undoubtedly know the place.…

  4. […] configuration, or network congestion. Since I can’t do much about the latter, I updated my Jamulus server docker image with the hope that it might improve things. Rather than building from source, I’m now using a […]

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)