跳到主要内容

服务器

代码托管平台和用户配置

Woodpecker 没有自己的用户注册系统。用户由您的代码托管平台提供(使用 OAuth2)。默认情况下注册是关闭的(WOODPECKER_OPEN=false)。如果注册是开放的,任何拥有账户的用户都可以使用配置的代码托管平台登录到 Woodpecker。

您也可以限制注册:

  • 关闭注册并使用 CLI woodpecker-cli user 手动管理用户

  • 开放注册并使用设置 WOODPECKER_ADMIN 允许某些管理员用户

    WOODPECKER_OPEN=false
    WOODPECKER_ADMIN=john.smith,jane_doe
  • 开放注册并使用设置 WOODPECKER_ORGS 按组织隶属关系过滤

    WOODPECKER_OPEN=true
    WOODPECKER_ORGS=dolores,dog-patch

管理员也应该在您的配置中明确设置。

WOODPECKER_ADMIN=john.smith,jane_doe

仓库配置

Woodpecker 使用用户在代码托管平台上的 OAuth 权限。默认情况下,Woodpecker 将同步用户有权访问的所有仓库。使用变量 WOODPECKER_REPO_OWNERS 来过滤哪些仓库应该只由 GitHub 用户同步。通常您应该在这里输入您公司的 GitHub 名称。

WOODPECKER_REPO_OWNERS=my_company,my_company_oss_github_user

数据库

Woodpecker 的默认数据库引擎是嵌入式 SQLite 数据库,无需安装或配置。但是您可以用 MySQL/MariaDB 或 PostgreSQL 数据库替换它。还有一些基础知识需要牢记:

  • Woodpecker 不会自动创建您的数据库。如果您使用 MySQL 或 Postgres 驱动程序,您需要使用 CREATE DATABASE 手动创建数据库。

  • Woodpecker 不执行数据归档;这被认为超出了项目的范围。Woodpecker 对存储的数据量相当保守,但是,您应该预期数据库日志会大大增加数据库的大小。

  • Woodpecker 自动处理数据库迁移,包括表和索引的初始创建。新版本的 Woodpecker 将自动升级数据库,除非发布说明中另有说明。

  • Woodpecker 不执行数据库备份。这应该由您选择的数据库供应商提供的独立第三方工具处理。

SQLite

默认情况下,Woodpecker 使用存储在 /var/lib/woodpecker/ 下的 SQLite 数据库。如果使用容器,您可以挂载一个数据卷来持久化 SQLite 数据库。

docker-compose.yaml
 services:
woodpecker-server:
[...]
+ volumes:
+ - woodpecker-server-data:/var/lib/woodpecker/

MySQL/MariaDB

下面的示例演示了 MySQL 数据库配置。请参阅官方驱动程序文档了解配置选项和示例。 MySQL/MariaDB 所需的最低版本由 go-sql-driver/mysql 确定 - 有关更多信息,请参阅其 README

WOODPECKER_DATABASE_DRIVER=mysql
WOODPECKER_DATABASE_DATASOURCE=root:password@tcp(1.2.3.4:3306)/woodpecker?parseTime=true

PostgreSQL

下面的示例演示了 Postgres 数据库配置。请参阅官方驱动程序文档了解配置选项和示例。 请使用等于或高于 11 的 Postgres 版本。

WOODPECKER_DATABASE_DRIVER=postgres
WOODPECKER_DATABASE_DATASOURCE=postgres://root:password@1.2.3.4:5432/postgres?sslmode=disable

TLS

Woodpecker 通过将证书挂载到容器中来支持 SSL 配置。

WOODPECKER_SERVER_CERT=/etc/certs/woodpecker.example.com/server.crt
WOODPECKER_SERVER_KEY=/etc/certs/woodpecker.example.com/server.key

TLS 支持使用 Go 标准库中的 ListenAndServeTLS 函数提供。

容器配置

除了docker-compose安装中显示的端口外,还必须暴露端口 443

docker-compose.yaml
 services:
woodpecker-server:
[...]
ports:
+ - 80:80
+ - 443:443
- 9000:9000

此外,必须挂载并引用证书和密钥:

docker-compose.yaml
 services:
woodpecker-server:
[...]
environment:
+ - WOODPECKER_SERVER_CERT=/etc/certs/woodpecker.example.com/server.crt
+ - WOODPECKER_SERVER_KEY=/etc/certs/woodpecker.example.com/server.key
volumes:
+ - /etc/certs/woodpecker.example.com/server.crt:/etc/certs/woodpecker.example.com/server.crt
+ - /etc/certs/woodpecker.example.com/server.key:/etc/certs/woodpecker.example.com/server.key

反向代理

Apache

本指南提供了在 Apache2 Web 服务器后安装 Woodpecker 服务器的简要概述。这是一个示例配置:

ProxyPreserveHost On

RequestHeader set X-Forwarded-Proto "https"

ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/

您必须安装这些 Apache 模块:

  • proxy
  • proxy_http

使用 https 时,您必须配置 Apache 设置 X-Forwarded-Proto

 ProxyPreserveHost On

+RequestHeader set X-Forwarded-Proto "https"

ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/

Nginx

本指南提供了在 Nginx Web 服务器后安装 Woodpecker 服务器的基本概述。有关更高级的配置选项,请咨询官方 Nginx 文档

示例配置:

server {
listen 80;
server_name woodpecker.example.com;

location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;

proxy_pass http://127.0.0.1:8000;
proxy_redirect off;
proxy_http_version 1.1;
proxy_buffering off;

chunked_transfer_encoding off;
}
}

您必须配置代理设置 X-Forwarded 代理头:

 server {
listen 80;
server_name woodpecker.example.com;

location / {
+ proxy_set_header X-Forwarded-For $remote_addr;
+ proxy_set_header X-Forwarded-Proto $scheme;

proxy_pass http://127.0.0.1:8000;
proxy_redirect off;
proxy_http_version 1.1;
proxy_buffering off;

chunked_transfer_encoding off;
}
}
备注

由于这是一个完整的配置文档,内容很长。这里提供了主要配置部分的翻译。如需完整的配置选项列表和详细说明,请参考英文原版文档。