Skip to main content

Install Semaphore UI on Debian

Semaphore UI documentation semaphoreui/semaphore

Installation

GitHub_Releases

sudo apt install -y ansible yq python3-jmespath
sudo wget -P /usr/local/src/ https://github.com/semaphoreui/semaphore/releases/download/v2.17.33/semaphore_2.17.33_linux_amd64.deb
sudo dpkg -i /usr/local/src/semaphore_2.17.33_linux_amd64.deb
sudo useradd -d /var/lib/semaphore -s /usr/sbin/nologin --no-create-home --system semaphore
sudo mkdir -p /etc/semaphore
sudo mkdir -p /var/lib/semaphore
sudo chown semaphore:semaphore /var/lib/semaphore
sudo chmod 0750 /var/lib/semaphore
sudo -u semaphore semaphore setup
sudo chown root:semaphore /etc/semaphore/config.json
sudo chmod 0640 /etc/semaphore/config.json
sudo chmod 0600 /var/lib/semaphore/database.sqlite
sudo cat > /etc/systemd/system/semaphore.service <<'EOF'
[Unit]
Description=Semaphore Ansible
Documentation=https://github.com/semaphoreui/semaphore
Wants=network-online.target
After=network-online.target
ConditionPathExists=/usr/bin/semaphore
ConditionPathExists=/etc/semaphore/config.json

[Service]
ExecStart=/usr/bin/semaphore server --config=/etc/semaphore/config.json
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
RestartSec=10s
User=semaphore
Group=semaphore
SyslogIdentifier=semaphore

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now semaphore

Reverse Proxy

server {
    listen 443 ssl;
    http2 on;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    add_header Strict-Transport-Security "max-age=63072000" always;

    # required to avoid HTTP 411: see Issue #1486 
    # (https://github.com/docker/docker/issues/1486)
    chunked_transfer_encoding on;

    location / {
        proxy_pass http://127.0.0.1:3000/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_buffering off;
        proxy_request_buffering off;
    }

    location /api/ws {
        proxy_pass http://127.0.0.1:3000/api/ws;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Origin "";
    }
}

Create GitLab Acecss Token

read_api read_repository