Hello, I have a mumble server running as a docker container.

I’m using lego to generate let’s encrypt certificates using dns challenge as an unprivileged user.

My problem is that I need to restart the mumble server so that it can reload the ssl certificate, which means restarting the docker container.

Is there any way to do this withuot adding the user to docker group, since there are security issues with that group where it’s easy to escalate to a root user.

I thought about maybe a user level systemd service could be able to do it, but wan’t to hear your opinions?

EDIT: I mention mumble specifically here, but this can apply to any server that requires manual reload of ssl keys, like postfix for example. I’m also not againd the idea of converting to something like kubernetes or even podman ( which would be harder cause of file permissions on all my binds ) if they can allow for woking on the container without root privileges.

  • redcalcium@lemmy.institute
    link
    fedilink
    English
    arrow-up
    12
    ·
    3 months ago

    I think you can send a SIGUSR1 signal to mumble process to tell it to reload the ssl certificate without actually restarting mumble’s process. You can use docker kill --signal="SIGUSR1" <container name or id>, but then you still need to give your user access to docker group. Maybe you can setup a monthly cron on root user to run that command every months?

  • someonesmall
    link
    fedilink
    English
    arrow-up
    5
    ·
    3 months ago

    Create a sudo rule which allows the user to run only this exact command: “sudo docker restart mycontainer”

  • Björn Tantau@swg-empire.de
    link
    fedilink
    English
    arrow-up
    3
    ·
    3 months ago

    Did you think about automating the certificate generation? You could put everything into a cron script. That’s more or less the reason why certificates have such a short lifetime. To force automation.

    • CronyAkatsuki@lemmy.cronyakatsuki.xyzOP
      link
      fedilink
      English
      arrow-up
      3
      ·
      3 months ago

      I am using it in a cron script, but the mumble server doesn’t support automatic reload of the ssl certs, so I need to restart tge mumblr server to load the new certs. That’s where my problem comes cause I run it inside docker.

  • iluminae@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    3 months ago

    You could write a script that just restarts your container, make sure unprivileged users cannot edit it, and do one of two things:

    1. make a sudoers entry for your unprivileged account to call just that script as a user in the docker group with sudo
    2. use setuid on the script to have it execute from the docker group even when executed by users
  • tvcvt
    link
    fedilink
    English
    arrow-up
    2
    ·
    3 months ago

    Not sure how your stack works together, but sudo will let you run particular commands as a different user and you can be pretty specific with the privileges. For example you can have a script that’s only allowed to run docker compose -f /path/to/compose.yml restart containername as a user in the docker group. Maybe there’s some docker-specific approach, but this should work with traditional Unix tools and a little scripting.