This is a module for NethServer 8 that installs Semaphore, a modern open-source Ansible UI.
Instantiate the module with:
add-module ghcr.io/geniusdynamics/semaphoreui:latest 1
Example output:
{
"module_id": "semaphoreui1",
"image_name": "semaphoreui",
"image_url": "ghcr.io/geniusdynamics/semaphoreui:latest"
}
Assuming your instance is named semaphoreui1
, configure it by setting the domain and HTTPS options:
api-cli run configure-module --agent module/semaphoreui1 --data - <<EOF
{
"host": "semaphoreui.domain.com",
"http2https": true,
"lets_encrypt": false
}
EOF
This command:
- Starts the Semaphore UI
- Creates a virtual host via Traefik
Email/SMTP settings are automatically discovered from the centralized SmartHost Redis configuration using the discover-smarthost
hook.
SEMAPHORE_EMAIL_SENDER
SEMAPHORE_EMAIL_HOST
SEMAPHORE_EMAIL_PORT
SEMAPHORE_EMAIL_USERNAME
SEMAPHORE_EMAIL_PASSWORD
You do not need to pass these manually — they're refreshed at container start and on SmartHost changes.
Optional alert integrations can be added by including the following variables in your JSON configuration:
SEMAPHORE_GOTIFY_ALERT
: "True" or "False"SEMAPHORE_GOTIFY_URL
: Your Gotify server URLSEMAPHORE_GOTIFY_TOKEN
: Application token
SEMAPHORE_TELEGRAM_ALERT
: "True" or "False"SEMAPHORE_TELEGRAM_CHAT
: Telegram Chat IDSEMAPHORE_TELEGRAM_TOKEN
: Bot token
All alert settings are written into app.env
and used on container startup.
api-cli run get-configuration --agent module/semaphoreui1
remove-module --no-preserve semaphoreui1
At container startup, bin/discover-smarthost
populates state/smarthost.env
by querying Redis. When SmartHost settings change, the event handler events/smarthost-changed/10reload_services
restarts the container automatically.
runagent -m semaphoreui1 env
runagent -m semaphoreui1
podman ps
podman exec semaphoreui-app env
podman exec -ti semaphoreui-app sh
Test the module using the following script:
./test-module.sh <NODE_ADDR> ghcr.io/geniusdynamics/semaphoreui:latest
Test logic uses Robot Framework.
This module supports Weblate for localization.
To contribute:
- Add GitHub Weblate app to your repo.
- Add the repository to hosted.weblate.org or ask a NethServer developer to include it.