├── Dockerfile ├── LICENSE └── README.md /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.11 as builder 2 | 3 | RUN \ 4 | echo "**** updating system packages ****" && \ 5 | apk update 6 | 7 | RUN \ 8 | echo "**** install build packages ****" && \ 9 | apk add --no-cache --virtual .build-dependencies \ 10 | build-base \ 11 | wget \ 12 | qt5-qtbase-dev \ 13 | qt5-qttools-dev \ 14 | qtchooser 15 | 16 | WORKDIR /tmp 17 | RUN \ 18 | echo "**** getting source code ****" && \ 19 | wget "https://github.com/jamulussoftware/jamulus/archive/latest.tar.gz" && \ 20 | tar xzf latest.tar.gz 21 | 22 | # Github directory format for tar.gz export 23 | WORKDIR /tmp/jamulus-latest 24 | RUN \ 25 | echo "**** compiling source code ****" && \ 26 | qmake "CONFIG+=nosound headless" Jamulus.pro && \ 27 | make clean && \ 28 | make && \ 29 | cp Jamulus /usr/local/bin/ && \ 30 | rm -rf /tmp/* && \ 31 | apk del .build-dependencies 32 | 33 | FROM alpine:3.11 34 | 35 | RUN apk add --update --no-cache \ 36 | qt5-qtbase-x11 icu-libs tzdata 37 | 38 | COPY --from=builder /usr/local/bin/Jamulus /usr/local/bin/Jamulus 39 | ENTRYPOINT ["Jamulus"] 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Grigory Chernyshev 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Jamulus 🎶 2 | [Docker](https://hub.docker.com/repository/docker/grundic/jamulus) configuration for [Jamulus](https://github.com/jamulussoftware/jamulus) music server. 3 | 4 | The Jamulus software enables musicians to perform real-time jam sessions over the internet. There is one server running the Jamulus server software which collects the audio data from each Jamulus client, mixes the audio data and sends the mix back to each client. 5 | 6 | # Usage 7 | 8 | Here are some example snippets to help you get started creating a container. 9 | 10 | ## docker 11 | 12 | ```bash 13 | docker run \ 14 | -e TZ=America/Los_Angeles \ 15 | --name jamulus \ 16 | -d --rm \ 17 | -p 22124:22124/udp \ 18 | -v $(pwd)/jam:/jam \ 19 | grundic/jamulus \ 20 | -n -s -p 22124 -l /jam/jamulus.log -w "Welcome to Jamulus docker server." 21 | ``` 22 | 23 | ## docker-compose 24 | 25 | ```yaml 26 | --- 27 | version: "3.7" 28 | services: 29 | jamulus: 30 | container_name: jamulus 31 | image: grundic/jamulus 32 | restart: always 33 | ports: 34 | - "22124:22124/udp" 35 | environment: 36 | TZ: "America/Los_Angeles" 37 | entrypoint: 38 | - "Jamulus" 39 | - "--server" 40 | - "--nogui" 41 | - "--welcomemessage" 42 | - "Welcome to the Jamulus rehearsal room" 43 | - "--numchannels" 44 | - "16" 45 | ``` 46 | 47 | You can monitor output with `docker logs -f jamulus` 48 | 49 | | ⚠️ To improve performance, please consider using docker's [realtime scheduler](https://docs.docker.com/config/containers/resource_constraints/#configure-the-realtime-scheduler) | 50 | | --- | 51 | 52 | # Parameters 53 | 54 | |Parameter |Description | 55 | |---|---| 56 | |-a, --servername |server name, required for HTML status | 57 | |-d, --discononquit |disconnect all clients on quit | 58 | |-e, --centralserver |address of the central server (or 'localhost' to be a central server) | 59 | |-f, --listfilter |server list whitelist filter in the format:
`[IP address 1];[IP address 2];[IP address 3]; ...` | 60 | |-F, --fastupdate |use 64 samples frame size mode | 61 | |-g, --pingservers |ping servers in list to keep NAT port open (central server only) | 62 | |-l, --log |enable logging, set file name | 63 | |-L, --licence |a licence must be accepted on a new connection | 64 | |-m, --htmlstatus |enable HTML status file, set file name | 65 | |-n, --nogui |disable GUI | 66 | |-o, --serverinfo |infos of the server(s) in the format:
`[name];[city];[country as QLocale ID]; ...`
`[server1 address];[server1 name]; ...`
`[server1 city]; ...`
`[server1 country as QLocale ID]; ...`
`[server2 address]; ... ` | 67 | |-R, --recording |sets directory to contain recorded jams | 68 | |--norecord |disables recording (when enabled by default by -R) | 69 | |-p, --port |local port number | 70 | |-s, --server |start server | 71 | |-T, --multithreading |use multithreading to make better use of multi-core CPUs and support more clients | 72 | |-u, --numchannels |maximum number of channels | 73 | |-w, --welcomemessage |welcome message on connect | 74 | |-z, --startminimized |start minimizied | 75 | --------------------------------------------------------------------------------