Jamulus Server – (Raspberry PI 4 8G Model B)

Raspberry PI 4 8G Model B (185$)

  • 1 x Raspberry Pi 4 8G Model B Full Starter Kit (ARMv8) (130$)
    • 1 x Raspberry Pi 4 8G Model B (ARMv8)
    • 1 x OKdo Raspberry Pi 4 Model B case
    • 1 x Raspberry Pi 16GB MicroSD Karte mit Noobs
    • 1 x Raspberry Pi Official Raspberry Pi 4 Power Adapter (Netzteil)
  • 1 x Raspberry Pi micro HDMI to HDMI (1m, HDMI) (15$)
  • 1 x Microsoft Keyboard 600 (20$)
  • 1 x Microsoft Basic Optica Mouse (20$)

ubuntu 20

https://ubuntu.com/download/raspberry-pi

  • ubuntu 20.04.1 LTS 64 Bit
  • SSH is enabled, Ubuntu upgrade base packages following first login
  • sudo apt upgrade
  • apt-get install network-manager net-tools
  • LAN
    • sudo vim /etc/netplan/50-cloud-init.yaml
      • network:
      •     ethernets:
      •         eth0:
      •             dhcp4: no
      •             addresses: [192.168.1.160/24]
      •             gateway4: 192.168.1.1
      •             nameservers:
      •                     addresses: [192.168.1.1]
  • WLAN
    • ls /sys/class/net
      • enp0s25 lo wlan0
    • sudo nmcli radio wifi off (ifconfig shows eth0, lo only)
  • time
    • timedatectl set-timezone “Europe/Berlin”
  • hostname
    • sudo hostnamectl set-hostname PI1

disable hibernate

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Desktop (optional)

  • sudo apt update
  • sudo apt upgrade
  • sudo apt-get install lubuntu-desktop
  • reboot > startet in lubuntu Desktop

GUI on/off

  • NO GUI
  • sudo systemctl set-default multi-user
  • gnome-session-quit ((??))
  • = REBOOT
  • sudo systemctl set-default graphical
  • sudo systemctl start gdm3
  • = REBOOT

Remote Desktop

  • sudo apt install vino
  • https://techsparx.com/linux/ubuntu/remote-desktop.html
  • gsettings set org.gnome.Vino require-encryption false
  • lubuntu > enable sharing

Jamulus Server

cd /home/ubuntu
sudo apt-get install build-essential qt5-qmake qtdeclarative5-dev libjack-jackd2-dev qt5-default
git clone https://github.com/corrados/jamulus.git llcon-jamulus
cd llcon-jamulus
qmake "CONFIG+=nosound headless" Jamulus.pro
make clean
make
cd
sudo mv llcon-jamulus/ /usr/local/bin
sudo adduser --system --no-create-home jamulus
sudo mkdir /var/log/jamulus
sudo chown jamulus:nogroup /var/log/jamulus

Jamulus to run as a service

qlocale

https://doc.qt.io/qt-5/qlocale.html#Country-enum

  • sudo vi /etc/systemd/system/jamulus_server.service
  • sudo chmod 644 /etc/systemd/system/jamulus_server.service
  • sudo systemctl start jamulus_server
  • sudo systemctl enable jamulus_server
[Unit]
Description=Jamulus Server – (Raspberry PI 4 8G Model B with ubuntu 20)
After=network.target
[Service]
Type=simple
User=jamulus
NoNewPrivileges=true
ProtectSystem=true
ProtectHome=true
Nice=-20
IOSchedulingClass=realtime
IOSchedulingPriority=0
# This line below is what you want to edit according to your preferences
ExecStartPre=/bin/sleep 30
ExecStart=/usr/local/bin/llcon-jamulus/Jamulus --server --nogui \
--fastupdate \
--centralserver jamulusjazz.fischvolk.de:22324 \
--serverinfo "yourserver;city;country" \
--log "/var/log/jamulus/jamulus.log" \
--welcomemessage "<h4>Welcome to </h4> - Jamulus Version 3.6 <br> - Raspberry PI 4 8G Model B with ubuntu 20 <br> - max. channels 6 <br> - 10Gbit/s up/down Fiber connection with 64 buffer size (fastupdate) <br>" \
--numchannels 7 \
--multithreading \
--recording "/opt/JamulusRecording" \
--norecord
#--htmlstatus "/var/www/html/JamulusServerStatus.dat" \
# end of section you might want to alter
Restart=on-failure
RestartSec=30
StandardOutput=journal
StandardError=inherit
SyslogIdentifier=jamulus
[Install]
WantedBy=multi-user.target

.deb binary / service

[Unit]
Description=Jamulus headless server
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
User=jamulus
Group=nogroup
NoNewPrivileges=true
ProtectSystem=true
ProtectHome=true
Nice=-20
IOSchedulingClass=realtime
IOSchedulingPriority=0

#### Change this to publish this server, set genre, location and other parameters.
#### See https://jamulus.io/wiki/Command-Line-Options ####
ExecStart=/bin/sh -c 'exec /usr/bin/jamulus-headless -s -n -F -e "jazz.jamulus.io:22324" -o "timton;Frankfurt;82"'

Restart=on-failure
RestartSec=30
StandardOutput=journal
StandardError=inherit
SyslogIdentifier=jamulus


[Install]
WantedBy=multi-user.target

Miscellaneous

  • Router port forwarding 22120 – 22130
This image has an empty alt attribute; its file name is image-2.png
nc -u jamulus.hensler.net 22124

Making a server status page

https://jamulus.io/wiki/Tips-Tricks-More

Recordings

https://jamulus.io/wiki/Server-Linux

Samba

Make Jamulus session recording folder available

  • sudo apt install samba
  • sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.001
  • sudo vim /etc/samba/smb.conf
  • sudo passwd jamulus
  • sudo smbpasswd -a jamulus
  • sudo smbpasswd -e jamulus
  • sudo chsh -s /bin/bash jamulus
  • sudo mkdir /opt/JamulusRecording
  • sudo chown jamulus /opt/JamulusRecording
  • sudo chmod 777 /opt/JamulusRecording
  • sudo service smbd restart
  • sudo smbstatus
  • sudo vim /etc/samba/smb.conf
[global]
   workgroup = WORKGROUP
   # %h represents systems hostname
   server string = %h server (Samba, Ubuntu)
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes

[Jamulus]
  comment = Jamulus recordings
  path = /opt/JamulusRecording
  valid users = jamulus
  browsable = yes
  writable = yes
  guest ok = yes

on your workstation:

sudo vim /etc/hosts
192.168.1.160   pi1

df -h

Filesystem      Size  Used Avail Use% Mounted on
udev            3.8G     0  3.8G   0% /dev
tmpfs           782M  5.8M  776M   1% /run
/dev/mmcblk0p2  117G  3.8G  109G   4% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/loop0       49M   49M     0 100% /snap/core18/1883
/dev/loop1       49M   49M     0 100% /snap/core18/1888
/dev/loop2       64M   64M     0 100% /snap/lxd/16103
/dev/loop3       26M   26M     0 100% /snap/snapd/8543
/dev/loop5       27M   27M     0 100% /snap/snapd/9730
/dev/loop4       63M   63M     0 100% /snap/lxd/16945
/dev/mmcblk0p1  253M   97M  156M  39% /boot/firmware
tmpfs           782M     0  782M   0% /run/user/1000

One thought on “Jamulus Server – (Raspberry PI 4 8G Model B)

  1. Thanks for the instructions! I got this working to set up my public server on my brand new Raspberry Pi 4 Model B 8G. Nice! I had some minor problems along the way.
    It refused to “make” when installing Jamulus because of an error:
    lrelease: Command not found
    so I did
    sudo apt-get install qttools5-dev-tools
    to fix that so it could then do the “make” of Jamulus without errors.
    Also, I didn’t understand how to work 50-cloud-init.yaml as putting in what you had left me with somesort of nameserver problem (github.com host could not be resolved even though I could ping it successfully). I had to leave 50-cloud-init.yaml the way it was in order to get github to be accessible for git. I still need to work out how to get my IP static on eth0. Thanks again!

Leave a Reply

Your email address will not be published. Required fields are marked *