服务器
代码托管平台和用户配置
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 数据库。
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:
services:
woodpecker-server:
[...]
ports:
+ - 80:80
+ - 443:443
- 9000:9000
此外,必须挂载并引用证书和密钥:
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 模块:
proxyproxy_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;
}
}
由于这是一个完整的配置文档,内容很长。这里提供了主要配置部分的翻译。如需完整的配置选项列表和详细说明,请参考英文原版文档。