Simples - você separa totalmente o programa em 2 partes.
Primeiro, seu servidor / serviço e seu daemon. Isso deve ser instalado autônomo e integrar em qualquer gerenciador de processos que o host utilize - systemd, upstart, initd, etc
Então você tem seu programa GUI. Configure-o para conectar-se via rede na máquina local (usando loopbacks) ou um host remoto executando o daemon.
Para um exemplo disso, veja o servidor mysql e o mysql-workbench. Dois aplicativos totalmente separados, uma GUI e nenhum root necessário, um serviço e root possivelmente necessários.