Skip to content

Instantly share code, notes, and snippets.

@pablos123
Last active June 30, 2025 14:51
Show Gist options
  • Save pablos123/9445ebdfcaeb0be3e16a5942e01ec1a8 to your computer and use it in GitHub Desktop.
Save pablos123/9445ebdfcaeb0be3e16a5942e01ec1a8 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
function install_docker() {
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install --yes ca-certificates curl
sudo mkdir -p /etc/apt/keyrings
sudo chmod 0755 /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(source /etc/os-release && echo "${VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install --yes docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
}
function install_semaphore() {
local yml_content semaphore_dir
yml_content="
services:
mysql:
restart: unless-stopped
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: asdf
semaphore:
restart: unless-stopped
ports:
- 3000:3000
image: semaphoreui/semaphore:latest
environment:
SEMAPHORE_DB_USER: semaphore
SEMAPHORE_DB_PASS: asdf
SEMAPHORE_DB_HOST: mysql
SEMAPHORE_DB_PORT: 3306
SEMAPHORE_DB_DIALECT: mysql
SEMAPHORE_DB: semaphore
SEMAPHORE_PLAYBOOK_PATH: /tmp/semaphore/
SEMAPHORE_ADMIN_PASSWORD: asdf
SEMAPHORE_ADMIN_NAME: admin
SEMAPHORE_ADMIN_EMAIL: admin@localhost
SEMAPHORE_ADMIN: admin
SEMAPHORE_ACCESS_KEY_ENCRYPTION: $(head -c32 /dev/urandom | base64)
SEMAPHORE_LDAP_ACTIVATED: 'no'
TZ: UTC-03:00
depends_on:
- mysql
volumes:
semaphore-mysql:
"
semaphore_dir="${HOME}/semaphore"
mkdir -p "${semaphore_dir}"
echo "${yml_content}" > "${semaphore_dir}/docker-compose.yml"
sudo usermod -a -G docker educativa
sudo usermod -a -G docker vagrant
newgrp - docker
cd "${semaphore_dir}" || exit 1
if ! docker compose up --detach; then
echo "If you cannot run docker logout and login again then run 'docker compose up --detach' inside ${semaphore_dir} directory"
else
echo "Hosted in http://192.168.0.144:3000/"
echo "ADMIN USER: admin"
echo "ADMIN PASSWORD: asdf"
fi
}
install_docker
install_semaphore
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment