Edit this page | Blame

Shepherd

Here we record information on running shepherd (on Debian).

Tags

Issues

Quick overview

On Debian the GNU shepherd can run in systemd as a 'shepherd' user because we typically run (system) containers that have root inside them. To run the system containers and other services as different users we can use sudo. This is not ideal, but the idea is to be able to transition to a full Guix system in the future. Another issue is that services that run inside system containers are hard to monitor because shepherd only sees the outside of the container - at this point.

We use systemd to handle shepherd:

systemctl status user-shepherd.service

the systemd file can therefore look like:

[Unit]
Description=Launch user shepherd daemon
Wants=guix-daemon.service

[Service]
Type=simple
ExecStart=/var/guix/profiles/per-user/shepherd/guix-profile/bin/shepherd
User=shepherd
Group=shepherd
LimitNOFILE=8000

[Install]
WantedBy=multi-user.target

One advantage of using a normal user is that it is easy to test configurations as a different user on the same machine!

The process for deploying the services after creating the shepherd user is

symlink shepherd-services/shepherd to $HOME/.config/shepherd
symlink shepherd-services/cron to $home/.config/cron
symlink shepherd-services/*sh to $HOME

When shepherd starts up it should start all the services. So currently on tux02 that is bnw, gitea, ipfs, power, rn6app, singlecell and the mcron services, gitea-dump and pubmed.

To use shepherd's herd command the command is 'sudo -u shepherd /home/shepherd/.guix-profile/bin/herd status'.

su shepherd
/home/shepherd/.guix-profile/bin/herd status

Adding a bash alias, such as "alias herd-herd='sudo -u shepherd /home/shepherd/.guix-profile/bin/herd'", will make it easier to interact with shepherd without needing to switch to the shepherd user. The logs for the various shepherd services are located in /home/shepherd/logs/ but are not yet timestamped. The log for shepherd itself is in /home/shepherd/.config/shepherd/shepherd.log. There is not yet a way to change this from a config file.

(made with skribilo)