
2nd December 2024
I recently decided to try fixing the issues I had with my Nextcloud HPB = High Performance Backend. Some of the issues I experienced in Nextcloud Talk:
Not working on certain browsers, like Firefox.
Did not work on the Nextcloud Talk android app.
For some users it did not work at all.
I thought it may have been related to the Reverse-Proxy configuration, but it turned out that I just needed to update the spreed-signaling-server. This is my journey:
Updating the HPB = High Performance Backend
When I first installed the HPB, the latest version of the script was 1.2.3. Now 1.2.6 is released. To update everything, I just had to download the latest version from github and run the new script. Just follow the instructions in the link.
https://github.com/sunweaver/nextcloud-high-performance-backend-setup/wiki/02-Setup-Script
Note: I had to temporary disable reverse-proxy and add a public AAAA record so the Let’s Encrypt certificate could be downloaded. Otherwise the script would fail. I later added my internal certificate in the nginx and turnserver settings, as described in my previous post.
Updating the Nextcloud Spreed Signaling Server
When I got to this step here during the install script, at first I chose “No”, because it said it isn’t normally required:
However, I got an error in Nextcloud that the HPB is out of date:
Error: Running version: 1.2.4-1~bpo12+1.debian; Server needs to be updated to be compatible with this version of Talk
Note: You can also verify the version of your signaling server by performing this CURL command:
curl -i https://<your-server-url>/standalone-signaling/api/v1/welcome
When I instead chose “Yes”, It connects, but the version is “unknown”, and is probably the reason why I had so many issues.
The solution was to update the Signaling server from a different source.
Installing Nextcloud-Spreed-Signaling Standalone Server
Install dependencies
Install following dependencies:
Git
Go, version 1.23
Make
Git and make can be installed with apt, but the go version on debians repository is outdated so you need to download the latest version using wget. Follow the instructions here: https://www.cherryservers.com/blog/install-go-ubuntu
Download and compile nextcloud-spreed-signaling-server
I compiled it as root, because I ran the HPB script as root before:
sudo su
cd /root
git clone https://github.com/strukturag/nextcloud-spreed-signaling.git
cd nextcloud-spreed-signaling/
make build
Stop the old Spreed-Signaling-Server
systemctl stop nextcloud-spreed-signaling
Start the new Spreed-Signaling-Server
Run the following command from the nextcloud-spreed-signaling directory:
./bin/signaling --config /etc/nextcloud-spreed-signaling/server.conf
Verify in Nextcloud
Log in as admin and go to Admin Settings > Talk and verify Signaling Server Status
Make the new signaling server compatible with existing setup.
Add a new service
Now we need to add a new service. I chose to add instead editing existing service in case a new update will fix the problem for the old config.
1. Change the user privileges for the configuration file. This should have been done anyway for security reasons:
sudo chmod 600 /etc/nextcloud-spreed-signaling/server.conf
sudo chown _signaling:_signaling /etc/nextcloud-spreed-signaling/server.conf
Note: The username and group that is defined when running the HPB install script has prepended an underscore for some reason.
2. Copy binary file from the git directory to /usr/bin:
cp bin/signaling /usr/bin/signaling
3. Copy the service from the git directory to /etc/systemd/system:
cp dist/init/systemd/signaling.service /etc/systemd/system/signaling.service
4. Edit the signaling.service file to point towards your existing configuration file. Also adjust the user and group:
nano /etc/systemd/system/signaling.service
# Before:
[Unit]
Description=Nextcloud Talk signaling server
[Service]
ExecStart=/usr/bin/signaling --config /etc/signaling/server.conf
User=signaling
Group=signaling
Restart=on-failure
------------------------------------------------------------------------
# After:
[Unit]
Description=Nextcloud Talk signaling server
[Service]
ExecStart=/usr/bin/signaling --config /etc/nextcloud-spreed-signaling/server.conf
User=_signaling
Group=_signaling
Restart=on-failure
5. Disable old service and activate the new one:
systemctl daemon-reload
systemctl disable nextcloud-spreed-signaling
systemctl enable signaling
systemctl start signaling
Final Verification
Verify that the signaling service is running correctly:
root@sauna-hpb:~/nextcloud-spreed-signaling# systemctl status signaling
● signaling.service - Nextcloud Talk signaling server
Loaded: loaded (/etc/systemd/system/signaling.service; enabled; preset: enabled)
Active: active (running) since Sat 2024-11-16 13:38:36 UTC; 15min ago
Main PID: 46402 (signaling)
Tasks: 5 (limit: 2315)
Memory: 5.3M
CPU: 231ms
CGroup: /system.slice/signaling.service
└─46402 /usr/bin/signaling --config /etc/nextcloud-spreed-signaling/server.conf
Verify version:
wl@sauna-pub:~$ curl -i https://hpb.bastuklubben.online/standalone-signaling/api/v1/welcome
HTTP/1.1 200 OK
Server: nginx
...
{"nextcloud-spreed-signaling":"Welcome","version":"c0c0187f076e13918fc6a6a1f04890cd18643a4e"}
And in Nextcloud:
Now, the Nextcloud Talk experience should be much smoother.