Skip to content
Crow CI

Installation

Crow CI consists of three components:

Component Required Description
Server Yes UI, API, webhook handling, pipeline parsing
Agent Yes Executes pipelines via Docker, Kubernetes, or local backend
Autoscaler No Spins up/down cloud VMs for pending builds
Method Best For
Docker Compose Single-server deployments
Helm Chart Kubernetes clusters
Ansible Automated provisioning

All of them deploy Crow as containers, which is the supported way to run it. Standalone agent binaries also exist, but only to run an agent with the local backend, which executes pipeline commands directly on the host with no isolation and no plugin support. Read the warnings on that page before choosing it.

Crow uses SQLite by default. For production, PostgreSQL or MariaDB is recommended.1

Images are published to the Codeberg Container Registry:

The unsuffixed and -alpine tags differ depending on the component:

  • crow-server and crow-agent are published as Alpine-based images. The unsuffixed tag and the -alpine tag point to the same image — -alpine is kept as an alias for backwards compatibility.
  • crow-cli is published in two flavours: the unsuffixed tag is a minimal scratch image, and the -alpine tag is the Alpine variant.
Tag Description
vX.Y.Z SemVer release (server/agent: Alpine; cli: scratch)
vX.Y.Z-alpine SemVer release (Alpine, rootless; alias of vX.Y.Z for server/agent)
vX, vX.Y Rolling major/minor version
vX-alpine, vX.Y-alpine Rolling major/minor version (Alpine variant)
dev Latest from main branch
dev-alpine Latest from main branch (Alpine variant)

Agents authenticate with the server using tokens via CROW_AGENT_SECRET.

Set the same CROW_AGENT_SECRET on both server and agent. On first connection:

  1. Agent connects with system token
  2. Server registers agent and returns unique ID
  3. Agent stores ID in CROW_AGENT_CONFIG_FILE
  4. Subsequent connections use stored ID

For multiple agents with different configurations, create tokens via Settings → Agents → Add agent or the API. Each agent uses its assigned token in CROW_AGENT_SECRET. The agent token is shown only once, when the agent is created, so copy it before closing the dialog.

Agent creation
Agent creation

Agents can run on separate machines from the server.

Connect using private IP addresses:

CROW_SERVER: <private-ip>:9000
CROW_AGENT_SECRET: <token>

Requires TLS for secure GRPC connection:

CROW_SERVER: grpc.crow.mydomain.com:443
CROW_GRPC_SECURE: "true"
CROW_AGENT_SECRET: <token>

Requirements:

  • Subdomain for GRPC service
  • Valid SSL certificate
  • TLS-terminating proxy

See Reverse Proxy Setup for ingress configuration examples.

  1. Pipeline logs are stored in the database. External log storage is planned. ↩