Semaphore UI packaged from the upstream community (MIT) release binaries, following the gitea packaging pattern: native systemd service and Podman quadlet variants (mutually exclusive), with an optional PostgreSQL backend via quadlet drop-ins. SQLite is the default database; session/encryption secrets are generated into /etc/semaphore/env on first install.
2.6 KiB
semaphore
Semaphore UI (https://semaphoreui.com) packaged for InfoMaOS. Web UI and API for running Ansible, Terraform, OpenTofu, Terragrunt, Bash and PowerShell tasks.
Binaries are the upstream community (fully open source, MIT) release builds. Download the source tarballs with:
spectool -g semaphore.spec
Subpackages
semaphore— common base:semaphoreuser/group (uid/gid 127),/etc/semaphore/config.json,/etc/semaphore/env(secrets generated on first install),/var/lib/semaphoredata directory.semaphore-service— native binary +semaphore.serviceunit. Requiresgitandansible. Conflicts withsemaphore-container.semaphore-container— Podman quadlet runningdocker.io/semaphoreui/semaphore:v<version>in a pod (semaphore-pod, web UI published on port 3000). The image bundles Ansible, Terraform, OpenTofu and Terragrunt. Conflicts withsemaphore-service.semaphore-postgresql— optional PostgreSQL backend as asemaphore-dbquadlet container. With-serviceit runs standalone, published on127.0.0.1:5432; with-containerit joins the semaphore pod. Without it, Semaphore uses SQLite at/var/lib/semaphore/database.sqlite(zero configuration).
Database
Default dialect is SQLite (config.json). Installing
semaphore-postgresql switches the dialect to PostgreSQL via
SEMAPHORE_DB_* environment drop-ins:
- service mode:
/etc/systemd/system/semaphore.service.d/database.conf - container mode:
/usr/share/containers/systemd/semaphore.container.d/database.conf
Change the default semaphore/semaphore credentials in both the
relevant database.conf and
/etc/containers/systemd/semaphore-db.container.d/credentials.conf
before first start.
First start
systemctl enable --now semaphore.service # service mode
systemctl start semaphore.service # container mode (enabled via pod drop-in)
# Create the initial admin user
semaphore user add --admin --login admin --name Admin \
--email admin@example.org --password '<password>' \
--config /etc/semaphore/config.json
In container mode /usr/bin/semaphore is a shim that runs the CLI
inside the running container.
Session/encryption secrets (SEMAPHORE_COOKIE_HASH,
SEMAPHORE_COOKIE_ENCRYPTION, SEMAPHORE_ACCESS_KEY_ENCRYPTION) are
generated into /etc/semaphore/env by the base package %post on first
install. Back up this file — SEMAPHORE_ACCESS_KEY_ENCRYPTION encrypts
the stored SSH keys and secrets, which are lost if it changes.
Updating
- Bump
Versionin the spec and the image tag insemaphore.container. spectool -g semaphore.spec./build.sh