StartUp
startSemaphore.sh
#!/usr/bin/env bash set -euo pipefail CONTAINER_NAME="semaphore" IMAGE="public.ecr.aws/semaphore/pro/server:v2.16.51" # Path to your Ansible roles / playbooks on the host PLAYBOOK_PATH="$(pwd)/playbooks" PLAYBOOK_DOCKER_PATH="/playboks" echo "Stopping and removing existing container (if it exists)..." docker stop "$CONTAINER_NAME" 2>/dev/null || true docker rm "$CONTAINER_NAME" 2>/dev/null || true echo "Creating required directories..." mkdir -p config mkdir -p data echo "Starting Semaphore container..." docker run --user 0 \ --cap-add=NET_RAW --cap-add=NET_ADMIN \ --name "$CONTAINER_NAME" \ -p 3000:3000 \ -e SEMAPHORE_DB_DIALECT=sqlite \ -e SEMAPHORE_ADMIN=admin \ -e SEMAPHORE_ADMIN_PASSWORD=password \ -e SEMAPHORE_ADMIN_NAME="Admin" \ -e SEMAPHORE_ADMIN_EMAIL=admin@localhost \ -v "$PLAYBOOK_PATH:$PLAYBOOK_DOCKER_PATH" \ -v "$(pwd)/data:/var/lib/semaphore" \ -v "$(pwd)/config:/etc/semaphore" \ -d "$IMAGE" echo "Installing Additional Binaries" docker exec -it semaphore sh -c "apk add --no-cache nmap nmap-scripts sqlite" echo "Semaphore is running at http://localhost:3000" echo "Playbooks mounted from: $PLAYBOOK_PATH to internal container path: $PLAYBOOK_DOCKER_PATH"
Navigate to: http://localhost:3000