jacktrip/studio

By jacktrip

Updated 3 months ago

Use this to host JackTrip Virtual Studio sessions on your own server

Image
Networking
Content management system
1

50K+

jacktrip/studio repository overview

JackTrip Virtual Studio Container

Copyright (c) 2024 JackTrip Labs, Inc. All Rights Reserved.

The jacktrip/studio container provides everything necessary to manage your own Virtual Studio server.

DNS, TLS and Ingress required!

Managing a Virtual Studio server requires advanced IT skills, including a very strong familiarity with things like network routing and firewalls, ingress, DNS, TLS, etc. If you are unfamiliar or uncomfortable with any of these topics, we encourage you to use our fully managed studios instead.

The studio container requires a publicly-accessible machine that has a valid fully-qualified domain name (FQDN) pointing to its IP address. You must also have a valid TLS (SSL) certificate, and provide your own HTTPS server listening on port 443, which terminates encrypted connections, and proxies the unencrypted requests to port 8000 (inside the container).

Required environment variables

The following variables are required to run the container. You can obtain these by from your studio dashboard after migrating a studio to unmanaged.

  • JACKTRIP_STUDIO_ID: a unique identifier for your studio
  • JACKTRIP_STUDIO_TOKEN: used to authenticate your studio to our API

You must provide these variables via the command line, or by mounting an environment config file as /etc/default/studio. It should look like the following, where *** is the unique value:

JACKTRIP_STUDIO_ID=***
JACKTRIP_STUDIO_TOKEN=***

Required permissions and limits

The container requires the ability to lock about 384MB of shared memory, and some processes should be allowed to run with realtime priority to prevent audio glitches. Be sure that your memory limits (ulimit) are set appropriately.

ulimit -l 384000000
ulimit -r 95

If using docker instead of podman, you also need to use the --privileged flag to run this as a privileged container.

Running the studio container

To run a studio container using podman:

podman run --name studio -e JACKTRIP_STUDIO_ID=*** -e JACKTRIP_STUDIO_TOKEN=*** --network=host --shm-size=384M -d jacktrip/studio

Or alternatively:

podman run --name studio -v path_to_env_file:/etc/default/studio --network=host --shm-size=384M -d jacktrip/studio

Docker users should include these additional options:

--cpu-rt-runtime=950000 --ulimit rtprio=95 --cap-add=sys_nice

Docker Desktop users on Mac and Windows computers may also prefer to provide specific port ranges instead of using host networking:

docker run --name studio -v path_to_env_file:/etc/default/studio -p 443:443/tcp -p 22124:22124/tcp -p 4464:4464/tcp -p 7881:7881/tcp -p 3478:3478 -p 50000-50999:50000-50999/udp -p 61000-61100:61000-62000/udp --shm-size=384M --privileged --cpu-rt-runtime=950000 --ulimit rtprio=95 --cap-add=sys_nice -d jacktrip/studio

To make sure the container is running:

$ podman ps
CONTAINER ID  IMAGE                             COMMAND     CREATED        STATUS            PORTS       NAMES
2aba06b93354  docker.io/jacktrip/studio:latest  /sbin/init  3 seconds ago  Up 4 seconds ago              studio

Open bash shell inside the container for troubleshooting: podman exec -it studio bash

Use journalctl to view logs for relevant processes:

journalctl -f

To stop and remove the container:

podman rm -f studio

Tag summary

Content type

Image

Digest

sha256:aa83755d8

Size

751.5 MB

Last updated

3 months ago

docker pull jacktrip/studio