# Install an Heptapod runner

**URL:** https://discuss.tryton.org/t/install-an-heptapod-runner/8117
**Category:** Organisation
**Created:** [December 13, 2024, 9:19am UTC](https://discuss.tryton.org/t/install-an-heptapod-runner/8117 "2024-12-13T09:19:06Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)
#### Post date: [December 13, 2024, 9:19am UTC](https://discuss.tryton.org/t/install-an-heptapod-runner/8117/1 "2024-12-13T09:19:06Z")

</div>

Here is a copy of the instructions to install a runner for Heptapod (as they are only available to the administrators):

> Download and install binary
> 
> ```auto
> # Download the binary for your system
> sudo curl -L --output /usr/local/bin/gitlab-runner https://download.heptapod.net/runner/latest/binaries/heptapod-runner-linux-amd64
> 
> # Give it permission to execute
> sudo chmod +x /usr/local/bin/gitlab-runner
> 
> # Create a GitLab Runner user
> sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
> 
> # Install and run as a service
> sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
> sudo gitlab-runner start
> 
> ```

> Command to register runner  
> `sudo gitlab-runner register --url https://foss.heptapod.net/ --registration-token <token>`

Request the token by contacting the administrators.

_It is also possible to use the [docker image](https://hub.docker.com/r/heptapod/heptapod-runner) instead of the binary with:_

> `docker run -d --name heptapod-runner --restart always -v /srv/heptapod-runner/config:/etc/heptapod-runner -v /var/run/docker.sock:/var/run/docker.sock heptapod/heptapod-runner:latest`

Here is the template of the configuration file for Tryton runners:

```toml
concurrent = <number of cores>                                                                  
check_interval = 1                                                          

[session_server]
  session_timeout = 1800

[[runners]]
  name = "<organisation>-<name>-docker-<arch>"
  url = "https://foss.heptapod.net/"
  token = "<token>"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false        
    image = "python"          
    privileged = false          
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.docker.tmpfs]
    "/tmp" = "rw,exec"
  [runners.docker.services_tmpfs]
    "/var/lib/postgresql/data" = "rw"

```

with:

- `<number of cores>`: the number of cores shared
- `<organisation>`: the name of the organisation giving the resource (ex: `tryton`)
- `<name>`: the name of host (ex: `tycho`)
- `<arch>`: the type of CPU architecture (ex: `amd64`)
- `<token>`: the token provided by the administrator
