Para as minhas necessidades, é necessário um 'arquivo de unidade de sistema', em vez de um 'arquivo de unidade do usuário' (veja aqui ), uma vez que o último reside no diretório home do usuário e é apenas para programas que devem ser executados durante a duração de uma sessão de login.
A solução que acabei de usar é descrita na seguinte resposta:
How could we allow non-root users to control a system.d service?
Essencialmente, você dá ao usuário sudo privilégios para executar comandos específicos. Aqui está:
myserver-user ALL= NOPASSWD: /bin/systemctl start my-nodejs-server
myserver-user ALL= NOPASSWD: /bin/systemctl stop my-nodejs-server
myserver-user ALL= NOPASSWD: /bin/systemctl restart my-nodejs-server
Observe que, se você quiser aplicar esse privilégio a um grupo, use um símbolo de porcentagem na frente do identificador para que:
%myserver-group ALL= NOPASSWD: /bin/systemctl start my-nodejs-server
%myserver-group ALL= NOPASSWD: /bin/systemctl stop my-nodejs-server
%myserver-group ALL= NOPASSWD: /bin/systemctl restart my-nodejs-server
Além disso, com base na resposta referenciada, provavelmente alterarei o usuário da implantação para deployment
, ou algo semelhante, para evitar que o usuário da implantação seja o mesmo que está executando o aplicativo.