Skip to content

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.

  • Docker Engine 20.10+ with Docker Compose plugin (or Podman 3.0+)
  • A GitHub account
  • Free port 8080 on your host
  • 4 GB RAM (8 GB recommended), 10 GB disk

ActionsManager can be installed using either docker run or Docker Compose. Both use the same prebuilt image:

ghcr.io/greywolflabs/actions-manager:latest

SQLite is the default database. PostgreSQL is available for larger deployments.

For PAT-based login (no OAuth App required):

Terminal window
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:latest

For GitHub OAuth login, add your OAuth App credentials:

Terminal window
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:latest

Generate <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-hosted in start.sh, so you can omit that variable. VITE_APP_URL still works as a deprecated alias for APP_URL.

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:

Terminal window
docker compose up -d

Make sure SECRET_KEY is set in your .env file (generate once with openssl rand -hex 32 and reuse on every restart).

Section titled “Personal Access Token (Recommended for Quick Start)”

No additional configuration required. After starting the container:

  1. Open http://localhost:8080
  2. Click Sign in with Personal Access Token
  3. Paste your GitHub PAT and submit

See GitHub PAT Setup for token creation instructions.

  1. Create a GitHub OAuth App (see GitHub OAuth Setup)
  2. Add GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET to your container environment
  3. Use the Log in with GitHub button

After startup:

  1. Open http://localhost:8080
  2. Sign in using your preferred authentication method
  3. Create your first project
  4. Add repositories to manage

Pull the latest image and restart:

Terminal window
docker pull ghcr.io/greywolflabs/actions-manager:latest
docker stop actions-manager
docker rm actions-manager
# Re-run the docker run command with the same volume mount
Terminal window
# Docker run
docker logs actions-manager --tail=100 -f
# Docker Compose
docker compose logs --tail=100 -f
Terminal window
docker stop actions-manager
docker rm actions-manager
# To also remove data:
docker volume rm actions-manager-data