In order to use a proper SSL-encrypted connection betwen GitHub and slurmactiond, spin up a reverse proxy like NGINX to handle SSL termination and forward HTTP requests to slurmactiond.
slurmactiond will by default run on port 8020, so if the reverse proxy is running on the same
machine, it should forward to localhost:8020.
For NGINX, an example configuration might look like this:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name reverse-proxy.url;
root /var/www/reverse-proxy.url;
ssl_certificate "/etc/letsencrypt/live/reverse-proxy.url/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/reverse-proxy.url/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location /slurmactiond {
proxy_pass http://localhost:8020/;
}
}
- In your Repository or Organization, navigate to Settings → Webhooks and select Add Webhook.
- Enter the reverse-proxied URL that points to slurmactiond into the Payload URL field.
- Select
application/jsonas the Content Type. - Generate a secure and random Webhook Secret string, and enter it in the Secret field. This will be used to sign messages from GitHub to slurmactiond. Keep the the secret around for when we enter it into the slurmactiond config file.
- For the triggering events, manually select only "Worfklow jobs".
- Choose a user that slurmactiond will impersonate in order to register Actions Runners and navigate to its "Settings" -> "Developer Settings".
- Select "Personal access token" -> "Generate new token".
- Set the token to never expire.
- Manually select the "repo" and "workflow" scopes, and if slurmactiond is supposed to manage runners in an organization instead of a single repository, additionally select "admin:org".
- Save the generated access token for the slurmactiond config file.
- Install the service and config file skeletons by running
dist/install.sh --config. Re-installations after an update should not use the--configflag, as it will overwrite any changes made to config files. - Complete the configuration in
/etc/slurmactiond.toml.- Set
http.secretto the Secret we used when configuring the Webhook. - Set
github.entityto the organization name oruser/repospecification where runners should be registered. - Set
github.api_tokento the Personal Access Token we created above. - Select an
action_runner.work_dirwhere ephemeral runner installations and files checked out from GitHub should reside. Ideally, this directory is not on a shared file system. - Create one or more
targetsthat will match Workflow job labels to SLURM options. Whenever a Workflow job matches all of therunner_labels, an ephemeral Actions Runner will be scheduled through SLRUM via ansruncommand that receives all thesrun_optionsspecified here.
- Set
- (optional) Register slurmactiond as a systemd service
- (optional) Adjust the usernames and installation paths within the
.servicefile. - Start the service via
systemctl start slurmactiond. - (optional) Auto-start the service via
systemctl start slurmactiond. - (optional) Inspect the logs via
journalctl -u slurmactiond.
- (optional) Adjust the usernames and installation paths within the




