mumble-voip / mumble

Mumble is an open-source, low-latency, high quality voice chat software.
https://www.mumble.info
Other
6.41k stars 1.12k forks source link

[Feature Request] Start daemon (murmurd) without starting (virtual) servers #4183

Closed toby63 closed 2 years ago

toby63 commented 4 years ago

Description: On many Distributions (Linux) the daemon (murmurd) is auto-started on system-startup. This is intended and useful in most cases and can likely be disabled.

But in some cases people might not want the (or all) virtual servers to also auto-start. For example if they prefer to configure the virtual servers over protocols like ICE/gRPC etc.

A config option to prevent autostart of (specific) virtual servers in the configuration files would be useful.


Todo:


Update: The initial intended usecase can be solved in a different way, so I changed the description for a different usecase.

streaps commented 4 years ago

I don't know much about the murmur internals, but I did a test with my murmur server. I stopped virtual servers via murmur-cli. Then I restarted the daemon. All virtual server were running again.

I'm not convinced that it is a good solution to have murmurd running in the background when no virtual server is active, just in case the user wants to start a server.

On the other hand I think an "autostart" option would be useful (autostart=true/false). That would allow the admin to disable virtual servers and to prevent startup of specific virtual servers when murmurd is (re-) started. I'm talking about an "autostart" option in murmur.ini and the virtual server config.

What about "Start daemon without starting virtual server" for the title of this issue?

Krzmbrzl commented 4 years ago

I agree that having murmur running in the background doing nothing is not the best idea. Also making this the default breaks any usage of a server binary directly as this relies on the server firing up a virtual server by default.

I think it'd be easy enough though to add a CLI option to stop automatic booting of virtual servers. Is that basically what you're asking for?

streaps commented 4 years ago

I'm not sure that a CLI option is that useful. Wouldn't it make the setup (in Debian) even more complicated?

Krzmbrzl commented 4 years ago

I have no idea how the setup works in Debian. But I always thought that every way of starting an application on Linux basically allows to specify CL arguments :thinking:

toby63 commented 4 years ago

tldr: A config option in the configuration files would be best :smiley:.

Because the best case imo would be an option to ask the user during installation about it. The alternative would be for the users to be able to set it themselves afterwards. In this case I think modifying a line in a configuration file is easier than needing to modify systemd scripts.

Update: I see that with debconf it is possible to modify configuration during installation, for Example:

wasabi:/home/fr# debconf-show apache
* apache/server-name: hoshi.homeunix.net
* apache/document-root: /var/www
* apache/server-port: 80
* apache/enable-suexec: false
* apache/init: true
* apache/server-admin: webmaster@wasabi

Also: [...] when installing (or upgrading) any single package [...], debconf asks the packages' configuration questions [...] and stores the user/admin preferences in a database. Later as the packages are installing, their scripts use the configuration preferences in the database to generate configuration files and otherwise do administrative tasks (e.g. set up servers to start or not start, install other software such as libdvdcss, etc.). Source: https://wiki.debian.org/debconf

So I guess the best way would be a key in the configuration files. The rest is up to the package maintainers, they can configure debconf.

bendem commented 4 years ago

Can you clarify what the use case is for this? Is there an actual user asking for this or is this "in case someone ever wants this"? You seem to imply that software is automatically started and enabled on install, that is not true for debian so the issue would be inexistant.

streaps commented 4 years ago

Most daemons are indeed started and enabled on install in Debian. The mumble-server package is no exception. I just installed it on Debian Buster and murmurd is running.

bendem commented 4 years ago

Most daemons are indeed started and enabled on install in Debian. The mumble-server package is no exception. I just installed it on Debian Buster and murmurd is running.

Ah, I guess I was thinking of another distro then.

I still don't understand why users that need a one-off instance of murmur wouldn't just disable the service and start/stop it manually though like they do with other software. And I'm still not sure how making murmurd start without provisionning a default virtual server would help with that.

streaps commented 4 years ago

Btw, murmur-user-wrapper is independent from the system-wide murmurd that is started by systemd.

streaps commented 4 years ago

@bendem I don't see the need for the use case neither. murmur-user-wrapper seems to work fine for murmurd on-demand instances started by the user. If it's not good enough / easy enough it could be improved, but it doesn't need any change in murmurd itself. Giving the user the option to disable murmurd on install is Debian specific.

I think my idea of autostart=true/false is another use case and feature request.

toby63 commented 4 years ago

I still don't understand why users that need a one-off instance of murmur wouldn't just disable the service and start/stop it manually though like they do with other software. And I'm still not sure how making murmurd start without provisionning a default virtual server would help with that.

Well exactly this scenario (on-off with systemd and configuration files in /etc) is inconvenient. And please don't argue with the typical nerd attitude, this is too complicated for many normal users and they maybe want to start a quick server, without logging in as root, needing to start with a systemd command and configure this and that in console editor etc. So my solution would be a good solution, given the case that the murmur-user-wrapper is not working when the daemon is disabled. Also related to: #4164

Btw, murmur-user-wrapper is independent from the system-wide murmurd that is started by systemd.

That was one of my questions. If thats the case, the method with deactivating the daemon should work. To clarify:

Giving the user the option to disable murmurd on install is Debian specific.

That is the first idea. If the wrapper is working independently, the first idea will be applied.

toby63 commented 4 years ago

Still starting the daemon without running virtual servers can be a good idea. If people instead want to configure virtual servers via ICE etc. and don't want the regular server based on the murmur.ini to start. But I don't know the technical details, maybe its to complicated. If the murmur-wrapper is working independently you can assume this low-priority.

streaps commented 4 years ago

That was one of my questions. If thats the case, the method with deactivating the daemon should work. To clarify:

* You disabled and stopped the daemon

yes

* And then you started the user-wrapper?

yes

output from netstat:

tcp     0    0 127.0.0.1:6502          0.0.0.0:*         LISTEN      297/murmurd         
tcp6    0    0 :::64738                :::*              LISTEN      297/murmurd         
udp6    0    0 :::64738                :::*                          297/murmurd  

and ps:

test 297 ... /usr/sbin/murmurd -ini /home/test/murmur/murmur.ini

Krzmbrzl commented 4 years ago

I still don't see this as something we need (especially considering that we have way too few devs to work on other feature requests already).

Even if someone wants to configure their server via ICE, there's no problem whatsoever if there already is a server running when connecting to the ICE interface, 'cause you can simply shut it down again if you don't want it. Or even simpler: You go ahead and configure the server that's already running instead of explicitly starting one yourself.

As such I'll close this issue (for now)

toby63 commented 4 years ago

I think that it can be useful. I admit that my first idea/usecase can be solved differently, but @streaps mentioned another usecase: If you have multiple virtual servers, everytime you start the daemon, all virtual servers are started too. This should not necessarily be the case. Imo thats simply a design flaw and should be fixed. But as no one complained yet, you can assume low-priority of course.

I understand that you want to close issues, but other projects use labels like later or maybe for such cases. I would only close issues, if they are solved, invalid, intended-behaviour ("not a bug its a feature") or wontfix.

Krzmbrzl commented 4 years ago

Well starting all existing servers is in fact a feature - it has been explicitly programmed that way and I think this is reasonable.

Besides: With this amount of issues and this few developers, low priority is basically the same thing as wontfix :shrug:

toby63 commented 4 years ago

I think this might be a part of the whole gRPC-topic and also related to #4164 . Implement an option to not autostart specific virtual servers.

Krzmbrzl commented 4 years ago

How is that related to gRPC?

Implement an option to not autostart specific virtual servers.

I have no problem with adding it as a CLI parameter. I'm just really against this being the default behavior.

toby63 commented 4 years ago

How is that related to gRPC?

Well the whole thing gRPC and stuff is about is virtual server management. So how is it not related? If you only manage one server you can do that very easily without gRPC etc., so I assume that most people use it to manage several servers.

I'm just really against this being the default behavior.

Who said something about default behaviour? This was always about an option.

Krzmbrzl commented 4 years ago

Who said something about default behaviour?

@streaps did:

I'm not sure that a CLI option is that useful. Wouldn't it make the setup (in Debian) even more complicated?

and you (I thought at least) did as well:

Still starting the daemon without running virtual servers can be a good idea.

So how is it not related?

Because gRPC doesn't care about whether or not a server is already running.

toby63 commented 4 years ago

Who said something about default behaviour?

@streaps did:

I'm not sure that a CLI option is that useful. Wouldn't it make the setup (in Debian) even more complicated?

and you (I thought at least) did as well:

Still starting the daemon without running virtual servers can be a good idea.

:confused: I don't see how that can be interpreted as arguments for default behaviour. streaps argued for a config option instead of cli. And I just clarified that I think that an option to run a daemon without running virtual servers is still useful, even though my first usecase was solved otherwise.

So how is it not related?

Because gRPC doesn't care about whether or not a server is already running.

And? Just because a program or protocol can work bare-metal, that means that any functionality (that is not necessary for starting) is unrelated?

I think that this option would be useful for the proper use of grpc. Thats what I mean with "related".

Krzmbrzl commented 4 years ago

I think that this option would be useful for the proper use of grpc. Thats what I mean with "related".

And I disagree. To me this sounds a bit like "You can use a pen to write something on paper. Therefore the paper should be red". Like yeah pen and paper have something to do with each other but that doesn't affect them in such a way.

Anyways - this is not the important bit here ^^


I don't see how that can be interpreted as arguments for default behaviour. streaps argued for a config option instead of cli.

:shrug:

So the consensus here was basically that a config option would be best?

streaps commented 4 years ago

This was my proposal:

On the other hand I think an "autostart" option would be useful (autostart=true/false). That would allow the admin to disable virtual servers and to prevent startup of specific virtual servers when murmurd is (re-) started. I'm talking about an "autostart" option in murmur.ini and the virtual server config.

so we would have

autostart=true|false

in murmur.ini as the default value and you could change that setting for every virtual server (as usual).

But honestly, it's not that important. +1 to "With this amount of issues and this few developers, low priority is basically the same thing as wontfix"

Krzmbrzl commented 4 years ago

Adding a new config option is not much work at all. My argumentation against this really was because I thought you'd wanted to change the default behavior which would have required a lot of workaround to keep other stuff working.

I added the respective option (plus a bonus one) in #4233

Krzmbrzl commented 2 years ago

Closing in favor of #5924