# Semaphore UI (Ansible)

Achtung, Runners nur in PRO Version (50€ mtl.)

[https://semaphoreui.com/install/docker/2\_16/](https://semaphoreui.com/install/docker/2_16/)

## community-edition

```yaml
services:
    semaphore:
        restart: always
        ports:
            - 3000:3000
        image: semaphoreui/semaphore:v2.16.45
        environment:
            SEMAPHORE_DB_DIALECT: bolt
            SEMAPHORE_ADMIN: admin
            SEMAPHORE_ADMIN_PASSWORD: MEINPW123
            SEMAPHORE_ADMIN_NAME: admin
            SEMAPHORE_ADMIN_EMAIL: it@MEINEDOMAIN.de
            SEMAPHORE_SCHEDULE_TIMEZONE: Europe/Berlin
            SEMAPHORE_USE_REMOTE_RUNNER: "True"
            SEMAPHORE_RUNNER_REGISTRATION_TOKEN: "D3o/h.........QAdqU="

        volumes:
            - cfg:/etc/semaphore
            - tmp:/tmp/semaphore
            - data:/var/lib/semaphore
            
    runner01:
        image: semaphoreui/runner:v2.16.45
        environment:
            - SEMAPHORE_RUNNER_PRIVATE_KEY_FILE=/var/lib/semaphore/config.runner.key
            - SEMAPHORE_RUNNER_REGISTRATION_TOKEN=D3o/hQ..........VdqU=
            - SEMAPHORE_RUNNER_TOKEN=12rew..........bqj8=
            - SEMAPHORE_WEB_ROOT=http://192.168.200.11:3000
        volumes:
            - cfg-run01:/var/lib/semaphore

volumes:
    cfg:
    tmp:
    data:
    cfg-run01:
```

## pro-edition (15€/monat)

Pro = mehrere Runner + Terraform + opentofu

<p class="callout info">Obacht: Beim umstellen von Free auf Pro muss der Browsercache gelöscht werden, damit unten links der Button 'activate Subscription' erscheint </p>

```yaml
services:
    semaphore:
        restart: always
        ports:
            - 3000:3000
        #image: semaphoreui/semaphore:v2.16.45
        image: public.ecr.aws/semaphore/pro/server:v2.16.43
        environment:
            SEMAPHORE_DB_DIALECT: bolt
            SEMAPHORE_ADMIN: admin
            SEMAPHORE_ADMIN_PASSWORD: MEINPW123
            SEMAPHORE_ADMIN_NAME: admin
            SEMAPHORE_ADMIN_EMAIL: it@MEINEDOMAIN.de
            SEMAPHORE_SCHEDULE_TIMEZONE: Europe/Berlin
            SEMAPHORE_USE_REMOTE_RUNNER: "True"
            SEMAPHORE_RUNNER_REGISTRATION_TOKEN: "D3o/h.........QAdqU="

        volumes:
            - cfg:/etc/semaphore
            - tmp:/tmp/semaphore
            - data:/var/lib/semaphore
            
    runner01:
        #image: semaphoreui/runner:v2.16.45
        image: public.ecr.aws/semaphore/pro/runner:v2.16.43
        environment:
            - SEMAPHORE_RUNNER_PRIVATE_KEY_FILE=/var/lib/semaphore/config.runner.key
            - SEMAPHORE_RUNNER_REGISTRATION_TOKEN=D3o/hQ..........VdqU=
            - SEMAPHORE_RUNNER_TOKEN=12rew..........bqj8=
            - SEMAPHORE_WEB_ROOT=http://192.168.200.11:3000
        volumes:
            - cfg-run01:/var/lib/semaphore
    runner02:
        image: semaphoreui/runner:v2.16.7
        environment:
            - SEMAPHORE_RUNNER_PRIVATE_KEY_FILE=/var/lib/semaphore/config.runner.key
            - SEMAPHORE_RUNNER_REGISTRATION_TOKEN=D3o/hQ..........dqU=
            - SEMAPHORE_RUNNER_TOKEN=wM7...........6S8=
            - SEMAPHORE_WEB_ROOT=http://192.168.200.11:3000
        volumes:
            - cfg-run02:/var/lib/semaphore
volumes:
    cfg:
    tmp:
    data:
    cfg-run01:
    cfg-run02:
```

#### Runner mit config.runner.key erzeugen

Beim Erzeugen eines neuen Runners über die Semaphore-UI muss der private-key in der Datei   
/var/lib/semaphore/config.runner.key  
gespeichert werden (kann mit root also vom Docker Host passieren)

[![image.png](https://wiki.folkerts.it/uploads/images/gallery/2025-12/scaled-1680-/Rhqimage.png)](https://wiki.folkerts.it/uploads/images/gallery/2025-12/Rhqimage.png)

[![image.png](https://wiki.folkerts.it/uploads/images/gallery/2025-12/scaled-1680-/YlPimage.png)](https://wiki.folkerts.it/uploads/images/gallery/2025-12/YlPimage.png)

[![image.png](https://wiki.folkerts.it/uploads/images/gallery/2025-12/scaled-1680-/Qxjimage.png)](https://wiki.folkerts.it/uploads/images/gallery/2025-12/Qxjimage.png)

wie oben in der docker-compose.yml der Pro-Variante angegeben muss der Pfad der Datei als env-var mitgegeben werden:

```yaml
[...]
    runner02:
        image: semaphoreui/runner:v2.16.7
        environment:
            - SEMAPHORE_RUNNER_PRIVATE_KEY_FILE=/var/lib/semaphore/config.runner.key
[...]            
```