Semaphore Docs
Search…
⌃K

Installation

You can install Semaphore in 4 ways:

Snap

To install Semaphore via snap run following command in terminal:
sudo snap install semaphore
Semaphore will be available by URL https://localhost:3000.
But to log in, you should create an admin user. Do it by the following command:
sudo snap stop semaphore
sudo semaphore user add --admin \
--login john \
--name=John \
--password=12345
sudo snap start semaphore
You can check the status of the Semaphore service using the following command:
sudo snap services semaphore
It should print the following table:
Service Startup Current Notes
semaphore.semaphored enabled active -
After installation, you can set up Semaphore via Snap Configuration. Use following command to see your Semaphore configuration:
sudo snap get semaphore
List of available options you can find in Configuration options reference.

Package manager

Python, Ansible and Git should be installed on your system.
Download package file from Releases page.
*.deb for Debian and Ubuntu, *.rpm for CentOS and RedHat.
Install it with using package manager.
Debian / Ubuntu (x64)
Debian / Ubuntu (ARM64)
CentOS (x64)
CentOS (ARM64)
wget https://github.com/ansible-semaphore/semaphore/releases/\
download/v2.8.75/semaphore_2.8.75_linux_amd64.deb
sudo dpkg -i semaphore_2.8.75_linux_amd64.deb
wget https://github.com/ansible-semaphore/semaphore/releases/\
download/v2.8.75/semaphore_2.8.75_linux_arm64.deb
sudo dpkg -i semaphore_2.8.75_linux_arm64.deb
wget https://github.com/ansible-semaphore/semaphore/releases/\
download/v2.8.75/semaphore_2.8.75_linux_amd64.rpm
sudo yum install semaphore_2.8.75_linux_amd64.rpm
wget https://github.com/ansible-semaphore/semaphore/releases/\
download/v2.8.75/semaphore_2.8.75_linux_arm64.rpm
sudo yum install semaphore_2.8.75_linux_arm64.rpm
Setup Semaphore by following command:
semaphore setup
Now you can run Semaphore:
semaphore service --config=./config.json
Semaphore will be available by URL https://localhost:3000.

Docker

Create file docker-compose.yml with following content:
services:
# uncomment this section and comment out the mysql section to use postgres instead of mysql
#postgres:
#restart: unless-stopped
#ports:
#- 5432:5432
#image: postgres:14
#hostname: postgres
#volumes:
# - semaphore-postgres:/var/lib/postgresql/data
#environment:
# POSTGRES_USER: semaphore
# POSTGRES_PASSWORD: semaphore
# POSTGRES_DB: semaphore
# comment this section out if you wish to use postgres
mysql:
restart: unless-stopped
ports:
- 3306:3306
image: mysql:8.0
hostname: mysql
volumes:
- semaphore-mysql:/var/lib/mysql
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
MYSQL_DATABASE: semaphore
MYSQL_USER: semaphore
MYSQL_PASSWORD: semaphore
semaphore:
restart: unless-stopped
ports:
- 3000:3000
image: semaphoreui/semaphore:latest
environment:
SEMAPHORE_DB_USER: semaphore
SEMAPHORE_DB_PASS: semaphore
SEMAPHORE_DB_HOST: mysql #change to postgres for postgres
SEMAPHORE_DB_PORT: 3306 # change to 5432 for postgres
SEMAPHORE_DB_DIALECT: mysql
SEMAPHORE_DB: semaphore # change to semaphore?sslmode=disable for postgres
SEMAPHORE_PLAYBOOK_PATH: /tmp/semaphore/
SEMAPHORE_ADMIN_PASSWORD: changeme
SEMAPHORE_ADMIN_NAME: admin
SEMAPHORE_ADMIN_EMAIL: [email protected]
SEMAPHORE_ADMIN: admin
SEMAPHORE_ACCESS_KEY_ENCRYPTION: gs72mPntFATGJs9qK0pQ0rKtfidlexiMjYCH9gWKhTU=
SEMAPHORE_LDAP_ACTIVATED: 'no' # set to yes if you wish to use ldap
SEMAPHORE_LDAP_HOST: dc01.local.example.com
SEMAPHORE_LDAP_PORT: '636'
SEMAPHORE_LDAP_NEEDTLS: 'yes'
SEMAPHORE_LDAP_DN_BIND: 'uid=bind_user,cn=users,cn=accounts,dc=local,dc=shiftsystems,dc=net'
SEMAPHORE_LDAP_PASSWORD: 'ldap_bind_account_password'
SEMAPHORE_LDAP_DN_SEARCH: 'dc=local,dc=example,dc=com'
SEMAPHORE_LDAP_SEARCH_FILTER: "(\u0026(uid=%s)(memberOf=cn=ipausers,cn=groups,cn=accounts,dc=local,dc=example,dc=com))"
depends_on:
- mysql #change to postgres for postgres
volumes:
semaphore-mysql: #switch to semaphore-postgres to use postgres
You must specify following confidential variables:
  • MYSQL_PASSWORD and SEMAPHORE_DB_PASS — password for the MySQL user.
  • SEMAPHORE_ADMIN_PASSWORD — password for the Semaphore's admin user.
  • SEMAPHORE_ACCESS_KEY_ENCRYPTION — key for encrypting access keys in database. It must be generated by command: head -c32 /dev/urandom | base64.
Run following command to start Semaphore with MySQL:
docker-compose up
Semaphore will be available by URL https://localhost:3000.
For more information about the Docker Compose, see the Docker Compose reference.

Binary file

Python, Ansible and Git should be installed on your system.
Download *.tar.gz for your platform from Releases page. Unpack it and setup Semaphore.
Linux (x64)
Linux (ARM64)
Windows (x64)
wget https://github.com/ansible-semaphore/semaphore/releases/\
download/v2.8.75/semaphore_2.8.75_linux_amd64.tar.gz
tar xf semaphore_2.8.75_linux_amd64.tar.gz
./semaphore setup
wget https://github.com/ansible-semaphore/semaphore/releases/\
download/v2.8.75/semaphore_2.8.75_linux_arm64.tar.gz
tar xf semaphore_2.8.75_linux_arm64.tar.gz
./semaphore setup
Invoke-WebRequest `
-Uri ("https://github.com/ansible-semaphore/semaphore/releases/" +
"download/v2.8.75/semaphore_2.8.75_windows_amd64.zip") `
-OutFile semaphore.zip
Expand-Archive -Path semaphore.zip -DestinationPath ./
./semaphore setup
Now you can run Semaphore:
./semaphore service --config=./config.json
Semaphore will be available by URL https://localhost:3000.

Run as service

If you installed Semaphore via package manager or by downloading binary file, you should create Semaphore service manually.
Create systemd service file:
Replace /path/to/semaphore and /path/to/config.json to your semaphore and config file path
sudo cat > /etc/systemd/system/semaphore.service <<EOF
[Unit]
Description=Semaphore Ansible
Documentation=https://github.com/ansible-semaphore/semaphore
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/path/to/semaphore service --config=/path/to/config.json
SyslogIdentifier=semaphore
Restart=always
[Install]
WantedBy=multi-user.target
EOF
Start the Semaphore service:
sudo systemctl daemon-reload
sudo systemctl start semaphore
Check the Semaphore service status:
sudo systemctl status semaphore
To make the Semaphore service auto start:
sudo systemctl enable semaphore