Talk High-performance backend without Docker?

Is there a straightforward way to add the Talk High-performance backend to an existing Nextcloud instance without using Docker?

Or should I install a new Nextcloud instance using Docker and scrap the existing one?

Sorry if this sounds like a stupid question, but I have very little experience with using Docker, so have no idea how or if it can be used with my existing Nextcloud instance.

1 Like

Well, it’s possible, but it certainly wouldn’t be as straightforward, as it involves installing a number of separate components that you all get in a nice preconfigured package when using the Docker Container.

No need to. It’s perfectly fine to run a bare metal Nextcloud and add the Talk HPB via Docker.

1 Like

Thanks, that is useful to know. So clearly I need to learn more about using Docker

Not a Docker exper either, but here’s my notes how I got it working on a test instance with Apache:

Setup Docker:

curl -sSL https://get.docker.com/ | CHANNEL=stable sh
mkdir /opt/talk-hpb
cd /opt/talk-hpb

Secrets and .env File:

{
echo "FQDN=cloud.domain.tld"
echo "TURNSECRET=$(openssl rand -hex 32)"
echo "SIGNALINGSECRET=$(openssl rand -hex 32)"
echo "INTERNALSECRET=$(openssl rand -hex 32)"
} >> .env

compose.yaml:

nano compose.yaml
services:
    aio-talk:
        container_name: talk-hpb
        image: nextcloud/aio-talk:latest
        restart: unless-stopped
        environment:
            - INTERNAL_SECRET=${INTERNALSECRET}
            - SIGNALING_SECRET=${SIGNALINGSECRET}
            - TURN_SECRET=${TURNSECRET}
            - TALK_PORT=3478
            - TALK_HOST=${FQDN}
            - NC_DOMAIN=${FQDN}
        ports:
            - 127.0.0.1:8081:8081
            - 3478:3478/tcp
            - 3478:3478/udp

In the Nextcloud Apache VirtualHost, add the following line:

ProxyPass /standalone-signaling http://127.0.0.1:8081 upgrade=websocket

Pull the image and start the container:

docker compose up -d

Sources:

2 Likes

Well, completely without Docker is possible. But you then need many services:

  • Coturn (TURN/STUN)
  • Janus (WebRTC server)
  • NATS (message transfer)
  • Signaling Server

I use Docker for NATS since it easier this way. But I never managed to get the “all-in-one” Docker image for the high performance backend working - Nextcloud Talk always refused to connect to it.

So this is my setup - however you still need to find a way to host NATS without Docker: Nextcloud Talk with Coturn and self hosted signaling server (High Performance Backend) | Arno Welzel

For NATS you may see here - but I really recommend to get familiar with Docker, it makes things much easier:

1 Like

Thanks, that looks interesting, I will have a read.

I just updated the article and added some more details about the reasons for (not) using DTLS/TLS in Coturn and a note about installing git, make and golang-go which are required to build the signaling server.

hi
There is something even simpler, a simple script and everything is configured without docker

My German is not great, looking at the instal instructions I can’t quite make out if I need to instal Nextcloud from scratch to use this, or if I can use it with the existing Nextcloud instance that I already have?

Also, I am running Ubuntu 24.04, but I assume that this package will work with that fine.

The HPB (High Performance Backend) backend must be installed on a separate server for performance reasons. It must not be on the same server as the one where NextCloud is installed. I installed it on a server with a freshly installed Debian 12. When running the script, you will be asked a few questions (web address of your NextCloud instance, email for automatic update reports, etc.).
The instructions for running the script are in German and also in English. You can also install Collabora with this script, but it is not mandatory. There is a link to the English version on GitHub.

1 Like

Ah, thanks, that makes things a lot clearer.

I’d say it depends. :wink:

Scripts are easy as long as the corresponding update script is maintained (ok, this applies to the docker image as well), and/or if you know exactley what the script does and are therefore able to maintain each component yourself. Also, OS upgrades are defenitly less straightforward if everything is installed via distro packages or even third party repos.

I’d say that depends too. For businesses with lots of users on their Nextcloud instances and lots of video call participants, sure.

For home users who just want to use all the features of Talk and only have a few users on their instances and a few participants in video calls, it can work perfectly fine on the same server.

It also depends on the server. For example, if you install it on a cheap VPS with less cores and RAM than your Nextcloud server has, I highly doubt that it would perform better than if it were installed directly on the more powerful Nextcloud server :wink:

2 Likes

To give you an impression of a “real world” scenario:

I run Nextcloud along with Collabora and the Nextcloud High Performance Backend on a KVM based virtual server with 6 cores and 32 GB RAM. In addition there is a second virtual server running the video recording service with only 2 cores and 16 GB RAM.

The Nextcloud has 82 users where usually 20-30 are active all the time (also see GitHub - arnowelzel/netdata-nextcloud: A plugin for netdata to monitor Nextcloud servers how to integrate Nextcloud statistics to Netdata).

The server load is usually less then 2 and the CPU usage around 8-10% in average.

I have Talk sessions with up to 15 users at the same time where the load of the Nextcloud server goes up to 5 with a CPU usage of around 50-60%. Video recording does not add much load here, since this is handled on the second server which only acts as one additional “guest” recording the current active speaker.

2 Likes