Installation
Detailed installation guide for ActionsManager Self-Hosted Beta.
Beta notice: ActionsManager Self-Hosted is currently a free beta preview for testing, evaluation, and feedback. Provided as-is, without warranty or production-readiness guarantee.
Prerequisites
Section titled “Prerequisites”- Docker Engine 20.10+ with Docker Compose plugin (or Podman 3.0+)
- A GitHub account
- Free port
8080on your host - 4 GB RAM (8 GB recommended), 10 GB disk
Installation Methods
Section titled “Installation Methods”ActionsManager can be installed using either docker run or Docker Compose. Both use the same prebuilt image:
ghcr.io/greywolflabs/actions-manager:latestSQLite is the default database. PostgreSQL is available for larger deployments.
Option 1: Docker Run (Fastest)
Section titled “Option 1: Docker Run (Fastest)”For PAT-based login (no OAuth App required):
docker run -d \ --name actions-manager \ -p 8080:8080 \ -v actions-manager-data:/app/data \ -e SECRET_KEY=<your_generated_key> \ -e ALLOW_INSECURE_HTTP=true \ ghcr.io/greywolflabs/actions-manager:latestFor GitHub OAuth login, add your OAuth App credentials:
docker run -d \ --name actions-manager \ -p 8080:8080 \ -v actions-manager-data:/app/data \ -e SECRET_KEY=<your_generated_key> \ -e APP_URL=http://localhost:8080 \ -e ALLOW_INSECURE_HTTP=true \ -e GITHUB_CLIENT_ID=your_client_id \ -e GITHUB_CLIENT_SECRET=your_client_secret \ ghcr.io/greywolflabs/actions-manager:latestGenerate <your_generated_key> once with openssl rand -hex 32 and use the same value every time you restart or update the container.
ALLOW_INSECURE_HTTP=true is required because both commands serve the app over plain HTTP: ActionsManager refuses to start on a non-loopback http:// APP_URL without it, and blocks PAT login over non-local HTTP. Drop it once you put ActionsManager behind HTTPS — see HTTPS Setup.
Note: The self-hosted image now forces
INSTALLATION_MODE=self-hostedinstart.sh, so you can omit that variable.VITE_APP_URLstill works as a deprecated alias forAPP_URL.
Option 2: Docker Compose
Section titled “Option 2: Docker Compose”Create a docker-compose.yml file:
version: "3.8"services: actions-manager: image: ghcr.io/greywolflabs/actions-manager:latest ports: - "8080:8080" volumes: - actions-manager-data:/app/data environment: - SECRET_KEY=${SECRET_KEY} # Required while the app is served over plain HTTP; remove it once you # front ActionsManager with HTTPS - ALLOW_INSECURE_HTTP=true # Optional OAuth (set APP_URL to match your deployment URL when using OAuth; # VITE_APP_URL remains supported as a deprecated alias): # - APP_URL=http://localhost:8080 # - GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID} # - GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET} restart: unless-stopped
volumes: actions-manager-data:Then start with:
docker compose up -dMake sure SECRET_KEY is set in your .env file (generate once with openssl rand -hex 32 and reuse on every restart).
Authentication Setup
Section titled “Authentication Setup”Personal Access Token (Recommended for Quick Start)
Section titled “Personal Access Token (Recommended for Quick Start)”No additional configuration required. After starting the container:
- Open
http://localhost:8080 - Click Sign in with Personal Access Token
- Paste your GitHub PAT and submit
See GitHub PAT Setup for token creation instructions.
GitHub OAuth
Section titled “GitHub OAuth”- Create a GitHub OAuth App (see GitHub OAuth Setup)
- Add
GITHUB_CLIENT_IDandGITHUB_CLIENT_SECRETto your container environment - Use the Log in with GitHub button
Post-Installation
Section titled “Post-Installation”After startup:
- Open
http://localhost:8080 - Sign in using your preferred authentication method
- Create your first project
- Add repositories to manage
Upgrading
Section titled “Upgrading”Pull the latest image and restart:
docker pull ghcr.io/greywolflabs/actions-manager:latestdocker stop actions-managerdocker rm actions-manager# Re-run the docker run command with the same volume mountAccessing Logs
Section titled “Accessing Logs”# Docker rundocker logs actions-manager --tail=100 -f
# Docker Composedocker compose logs --tail=100 -fUninstalling
Section titled “Uninstalling”docker stop actions-managerdocker rm actions-manager# To also remove data:docker volume rm actions-manager-dataNext Steps
Section titled “Next Steps”© 2026 ActionsManager. All rights reserved.