Deploy Woodpecker CI Lite

Self-hosted CI/CD (GitHub Actions alternative). Local backend, no Docker.

Deploy Woodpecker CI Lite

Just deployed

/var/lib/woodpecker

Woodpecker CI Lite

Lightweight self-hosted CI/CD platform — GitHub Actions alternative. Runs pipelines as steps via a local backend (no Docker daemon required). Two services: server + agent.

Deploy and Host

Host your own Woodpecker CI on Railway. This template provisions a server (UI, API, SQLite) and an agent (pipeline executor) with persistent storage for your build data.

Deploy to Railway

Why Deploy

Woodpecker CI is a modern, lightweight alternative to GitHub Actions that runs your pipelines on your own infrastructure. No Docker daemon required — the agent executes steps locally via the local backend, making it ideal for self-hosted CI/CD on Railway.

Common Use Cases

  • Replace GitHub Actions — run your own CI/CD pipelines with familiar YAML syntax without relying on GitHub's hosted runners
  • Self-hosted CI for private repos — keep your build data and secrets on your own infrastructure
  • Cost-effective CI for small teams — single-server deployment with SQLite, no external database needed
  • Custom build environments — the local backend runs steps directly on the agent, giving you full control over the execution environment

Deployment Dependencies

This template is self-contained — no external services required. All data persists on the server's volume. The server boots on one-click deploy (the GitHub forge is enabled by default, so Woodpecker's startup requirement is already met).

To get working login, add a one-time GitHub OAuth App (the login button uses it):

  1. Go to GitHub → Settings → Developer settings → OAuth Apps → New OAuth App
  2. Homepage URL: https://YOUR-RAILWAY-PUBLIC-DOMAIN
  3. Authorization callback URL: https://YOUR-RAILWAY-PUBLIC-DOMAIN/authorize
  4. Copy the Client ID and Client Secret
  5. In Railway, set these on the woodpecker-server service (the OAuth flags are already true by default):
    • WOODPECKER_GITHUB_CLIENT=YOUR-GITHUB-CLIENT-ID
    • WOODPECKER_GITHUB_SECRET=YOUR-GITHUB-CLIENT-SECRET
  6. Redeploy the server service

Why the forge defaults to true: Woodpecker v3 refuses to start with no forge driver enabled (forge not configured). Enabling exactly one is mandatory. GitHub is enabled by default so the first deploy doesn't crash-loop; add the OAuth client/secret above to activate login. Using another forge? Set one of WOODPECKER_FORGEJO / WOODPECKER_GITEA / WOODPECKER_GITLAB to true and set WOODPECKER_GITHUB=false.

Architecture

  • Server — UI, API, webhook receiver, pipeline analyzer. Stores everything in SQLite (/var/lib/woodpecker).
  • Agent — connects to the server via GRPC and executes pipeline steps locally. No Docker socket required.

Features

  • GitHub Actions alternative — familiar YAML pipeline syntax
  • OAuth login — GitHub OAuth2 (one-time setup, see Deployment Dependencies)
  • Local backend — runs pipeline steps directly on the agent (no Docker daemon needed)
  • SQLite by default — zero external database to manage
  • Webhook triggers — automatic pipeline runs on push/PR
  • Secrets management — built-in secret store for pipeline variables
  • Parallel stepsWOODPECKER_MAX_WORKFLOWS controls concurrency
  • Persistent — SQLite DB persists across deploys via Railway volume

Dependencies for

This template is self-contained — no external services required. All data persists on the server's volume. The only external dependency is an OAuth app with your forge (GitHub, GitLab, Forgejo, or Gitea) for user authentication.

About Hosting

Woodpecker CI requires two services:

  1. Server — the web UI and API. Exposes port 8000 for HTTP and port 9000 for GRPC (agent communication).
  2. Agent — the pipeline executor. Connects to the server via GRPC using a shared secret.

Both services must share the same WOODPECKER_AGENT_SECRET. The server stores all data in SQLite, persisted via a Railway volume mounted at /var/lib/woodpecker. No Docker daemon is required — the agent runs pipeline steps locally.

GitHub OAuth (one-time setup): To enable login, create a GitHub OAuth App as described in the Deployment Dependencies section above. Without OAuth configured, the login button returns a 404 — this is expected behavior.

Configuration

VariableDescriptionDefault
PORTServer HTTP port8000
WOODPECKER_HOSTPublic URL for webhook callbackshttps://${{RAILWAY_PUBLIC_DOMAIN}}
WOODPECKER_OPENAllow open registrationtrue
WOODPECKER_ADMINAdmin username (optional)
WOODPECKER_AGENT_SECRETShared secret (must match agent)${{secret(32)}}
WOODPECKER_GITHUBEnable the GitHub forge (required for startup)true
WOODPECKER_GITHUB_CLIENTGitHub OAuth Client ID
WOODPECKER_GITHUB_SECRETGitHub OAuth Client Secret
WOODPECKER_DATABASE_DRIVERDatabase driversqlite3
WOODPECKER_DATABASE_DATASOURCESQLite file path/var/lib/woodpecker/woodpecker.sqlite
WOODPECKER_LOG_LEVELLog levelinfo
WOODPECKER_SERVERServer GRPC address (agent only)${{server.RAILWAY_PRIVATE_DOMAIN}}:9000
WOODPECKER_MAX_WORKFLOWSMax parallel workflows (agent only)4
WOODPECKER_BACKENDAgent backend typelocal

Quick Start

  1. Deploy via the button above — the server and agent boot immediately (GitHub forge is enabled by default).
  2. Create a GitHub OAuth App (see Deployment Dependencies above).
  3. Set WOODPECKER_GITHUB_CLIENT and WOODPECKER_GITHUB_SECRET on the woodpecker-server service and redeploy to enable login.
  4. Log in; you'll automatically be an admin (first user). Optionally set WOODPECKER_ADMIN=your-username.
  5. Add your first repository under Projects and push a .woodpecker.yml pipeline.

License

Woodpecker CI is open source under the Apache License 2.0.


Template Content

More templates in this category

View Template
N8N Main + Worker
Deploy and Host N8N with Inactive worker.

jakemerson
119
View Template
Evolution API with n8n
Automate WhatsApp workflows with Evolution API, n8n, and Postgres.

codestorm
89
View Template
Postgres Backup
Cron-based PostgreSQL backup to bucket storage

Railway Templates
870