Using a Headless Server: How?

This is something that is advertized here:

Thanks in part to the various APIs of Jami, it is also possible to use Jami in a ‘headless’ server setting with only the daemon part of Jami running, and accepting and handling rendezvous accounts and calls.

So I tried to do just that.

I set up a Rendevous point account on my Linux Desktop, because our little group needed a conference room. We used it already, so it is working. But my Desktop is not always running, it would be nice if other could use the rendevous point without me being online.

So I installed the jami-server package on a ubunutu virtual server in some server farm. And I made a backup of the rendevous point account.

Now I need to restore that account. Which doesn’t even work properly on the same desktop with the same client, because the backup function saves the account as a gzipped json file with no file extension, but the restore backup function only allows you to find *.gz files. Not very nice.

But I also have absolutely no idea how I would import the backup on the server.

The man file does’t say anything. The wiki doesn’t say anything from the user perspective. The jamid -h help function says there is a default port 8080 for the rest api (when I try to change the port with that --port option, there is a segfault btw)

That should be nice, and I started jamid on the server. Complains a little bit about lacking audio hardware like this:

ALSA lib confmisc.c:165:(snd_config_get_card) Cannot get card index for 0 except the browser shows nothing and curl says the response is empty.

But seems to be running fine. Except curl says the response is empty and the browser says the connection was reset.

So maybe config files.

I know the config file is under ~/.config/jami/dring.yml but the backup is in json format with a lot of different keys and many options that are irrelevant for the server. I don’t think anyone expects me to convert such a backup json to config yml manually, without any proper documentation.

So how does this work? The linked article says it is possible. I would like to know how. Or maybe just have a pointer in the right direction.

Am I missing something?

Hi, there is plenty of solutions.

On a server, you will only use jamid (the jami daemon) which provides several APIs described in the doc (, if doc is missing, feel free to help to complete it.

Once jamid is on a server, there is at least 3 solutions:

  1. Just copy the configurations files you want on your server (so ~/.local/share/jami & ~/.config/jami from whatever desktop to the server)
  2. Use the DBUS API (ConfigurationManager.addAccount with “Account.archivePath”, “Account.archivePassword” and “Account.type” = “RING”
  3. Also I did this which use the dbus API:

This solution has already worked for me. Thank you so much :heart: :heart: :heart:

Note that your files should not be duplicated (else you will have 2 devices with the same key that you don’t have with the export/import solution), but copying is indeed the quickest way I guess

1 Like