PageSourceSearch

https://woodpecker-ci.org/assets/js/147efaac.769aa0fa.js

js woodpecker-ci.org collected 2026-10-04 00:32:28 UTC 4,179 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkwoodpecker=self.webpackChunkwoodpecker||[]).push([["4808"],{40820(e,n,o){o.r(n),o.d(n,{metadata:()=>i,default:()=>h,frontMatter:()=>d,contentTitle:()=>r,toc:()=>c,assets:()=>s});var i=JSON.parse('{"id":"administration/advanced/advanced","title":"Adavanced options","description":"Why should we be happy with a default setup? We should not! Woodpecker offers a lot of advanced options to configure it to your needs.","source":"@site/versioned_docs/version-2.8/30-administration/40-advanced/40-advanced.md","sourceDirName":"30-administration/40-advanced","slug":"/administration/advanced/","permalink":"/docs/2.8/administration/advanced/","draft":false,"unlisted":false,"editUrl":"https://github.com/woodpecker-ci/woodpecker/edit/main/docs/versioned_docs/version-2.8/30-administration/40-advanced/40-advanced.md","tags":[],"version":"2.8","sidebarPosition":40,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Custom backends","permalink":"/docs/2.8/administration/backends/custom-backends"},"next":{"title":"Proxy","permalink":"/docs/2.8/administration/advanced/proxy"}}'),t=o(94686),a=o(23191);let d={},r="Adavanced options",s={},c=[{value:"Behind a proxy",id:"behind-a-proxy",level:2},{value:"SSL",id:"ssl",level:2},{value:"Metrics",id:"metrics",level:2},{value:"Autoscaling",id:"autoscaling",level:2},{value:"Configuration service",id:"configuration-service",level:2}];function l(e){let n={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",p:"p",...(0,a.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"adavanced-options",children:"Adavanced options"})}),"\n",(0,t.jsx)(n.p,{children:"Why should we be happy with a default setup? We should not! Woodpecker offers a lot of advanced options to configure it to your needs."}),"\n",(0,t.jsx)(n.h2,{id:"behind-a-proxy",children:"Behind a proxy"}),"\n",(0,t.jsxs)(n.p,{children:["See the ",(0,t.jsx)(n.a,{href:"/docs/2.8/administration/advanced/proxy",children:"proxy guide"})," if you want to see a setup behind Apache, Nginx, Caddy or ngrok."]}),"\n",(0,t.jsxs)(n.p,{children:["In the case you need to use Woodpecker with a URL path prefix (like: ",(0,t.jsx)(n.a,{href:"https://example.org/woodpecker/",children:"https://example.org/woodpecker/"}),"), add the root path to ",(0,t.jsx)(n.a,{href:"/docs/2.8/administration/server-config#woodpecker_host",children:(0,t.jsx)(n.code,{children:"WOODPECKER_HOST"})}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"ssl",children:"SSL"}),"\n",(0,t.jsxs)(n.p,{children:["Woodpecker supports SSL configuration by using Let's encrypt or by using own certificates. See the ",(0,t.jsx)(n.a,{href:"/docs/2.8/administration/advanced/ssl",children:"SSL guide"}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"metrics",children:"Metrics"}),"\n",(0,t.jsxs)(n.p,{children:["A ",(0,t.jsx)(n.a,{href:"/docs/2.8/administration/advanced/prometheus",children:"Prometheus endpoint"})," is exposed by Woodpecker to collect metrics."]}),"\n",(0,t.jsx)(n.h2,{id:"autoscaling",children:"Autoscaling"}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.a,{href:"/docs/2.8/administration/advanced/autoscaler",children:"autoscaler"})," can be used to deploy new agents to a cloud provider based on the current workload your server is experiencing."]}),"\n",(0,t.jsx)(n.h2,{id:"configuration-service",children:"Configuration service"}),"\n",(0,t.jsxs)(n.p,{children:["Sometime the normal yaml configuration compiler isn't enough. You can use the ",(0,t.jsx)(n.a,{href:"/docs/2.8/administration/advanced/external-configuration-api",children:"configuration service"})," to process your configuration files by your own."]})]})}function h(e={}){let{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},23191(e,n,o){o.d(n,{R:()=>d,x:()=>r});var i=o(92990);let t={},a=i.createContext(t);function d(e){let n=i.useContext(a);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),i.createElement(a.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.