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]
- sudo vim /etc/netplan/50-cloud-init.yaml
- WLAN
- ls /sys/class/net
- enp0s25 lo wlan0
- sudo nmcli radio wifi off (ifconfig shows eth0, lo only)
- ls /sys/class/net
- 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
- https://github.com/corrados/jamulus/wiki
- https://jamulus.io/wiki/Running-a-Server
- https://www.facebook.com/notes/jamulus-online-musicianssingers-jamming/howto-idiots-guide-to-installing-jamulus-server-on-amazon-aws-lightsail-ubuntu-i/507719749802976/
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

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)”
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!