Skip to content

Commit 8d94492

Browse files
docs: create guide on reverse-proxy-setup using caddy (#8381)
* docs: create guide on reverse-proxy-setup using caddy * Update content/doc/book/system-administration/reverse-proxy-configuration-with-jenkins/reverse-proxy-configuration-caddy.adoc Co-authored-by: Kevin Martens <[email protected]> --------- Co-authored-by: Kevin Martens <[email protected]>
1 parent b2bf6a9 commit 8d94492

File tree

4 files changed

+118
-0
lines changed

4 files changed

+118
-0
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
layout: redirect
3+
redirect_url: /doc/book/system-administration/reverse-proxy-configuration-with-jenkins/reverse-proxy-configuration-caddy/
4+
---

content/doc/book/system-administration/reverse-proxy-configuration-with-jenkins/_section.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
subsections:
33
- reverse-proxy-configuration-apache
44
- reverse-proxy-configuration-nginx
5+
- reverse-proxy-configuration-caddy
56
- reverse-proxy-configuration-lighttpd
67
- reverse-proxy-configuration-haproxy
78
- reverse-proxy-configuration-pomerium

content/doc/book/system-administration/reverse-proxy-configuration-with-jenkins/index.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ endif::[]
2626
"ji-toolbar" : "/doc/book/system-administration/reverse-proxy-configuration-with-jenkins/", /* Algolia search redirect to stay on same page */
2727
2828
"running-jenkins-behind-apache": "/doc/book/system-administration/reverse-proxy-configuration-with-jenkins/reverse-proxy-configuration-apache/",
29+
"running-jenkins-behind-caddy": "/doc/book/system-administration/reverse-proxy-configuration-with-jenkins/reverse-proxy-configuration-caddy/",
2930
"running-jenkins-behind-haproxy": "/doc/book/system-administration/reverse-proxy-configuration-with-jenkins/reverse-proxy-configuration-haproxy/",
3031
"running-jenkins-behind-iis": "/doc/book/system-administration/reverse-proxy-configuration-with-jenkins/reverse-proxy-configuration-iis/",
3132
"running-jenkins-behind-iptables": "/doc/book/system-administration/reverse-proxy-configuration-with-jenkins/reverse-proxy-configuration-iptables/",
@@ -81,6 +82,7 @@ This section provides examples for specific reverse proxies, though much of the
8182

8283
* link:../reverse-proxy-configuration-with-jenkins/reverse-proxy-configuration-apache[Running Jenkins with Apache]
8384
* link:../reverse-proxy-configuration-with-jenkins/reverse-proxy-configuration-nginx[Running Jenkins with Nginx]
85+
* link:../reverse-proxy-configuration-with-jenkins/reverse-proxy-configuration-caddy[Running Jenkins with Caddy]
8486
* link:../reverse-proxy-configuration-with-jenkins/reverse-proxy-configuration-lighttpd[Running Jenkins with Lighttpd]
8587
* link:../reverse-proxy-configuration-with-jenkins/reverse-proxy-configuration-haproxy[Running Jenkins with HAProxy]
8688
* link:../reverse-proxy-configuration-with-jenkins/reverse-proxy-configuration-pomerium[Running Jenkins with Pomerium]
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
---
2+
layout: subsection
3+
---
4+
5+
ifdef::backend-html5[]
6+
ifndef::env-github[:imagesdir: ../../../resources/managing]
7+
:notitle:
8+
:description:
9+
:author:
10+
11+
:sectanchors:
12+
:toc: left
13+
endif::[]
14+
15+
[[running-jenkins-behind-apache]]
16+
= Reverse proxy - Caddy
17+
18+
This sets up Jenkins behind Caddy as an HTTPS reverse proxy using Docker Compose.
19+
20+
== Prerequisites
21+
* DNS for your domain pointing to the Docker host
22+
* Ports 80/443 open to the internet
23+
* (Optional, for sub-path) Decide your Jenkins context path (e.g., `/jenkins`)
24+
25+
== Files
26+
Create these two files in the same directory.
27+
28+
=== docker-compose.yml
29+
[source,yaml]
30+
----
31+
version: "3.9"
32+
33+
services:
34+
jenkins:
35+
image: jenkins/jenkins:lts-jdk21
36+
container_name: jenkins
37+
restart: unless-stopped
38+
# If you want Jenkins on a sub-path like /jenkins, uncomment the next line
39+
# environment:
40+
# - JENKINS_OPTS=--prefix=/jenkins
41+
volumes:
42+
- jenkins_home:/var/jenkins_home
43+
expose:
44+
- "8080" # internal to the compose network
45+
# - "50000" # optional: classic JNLP agents (WebSocket usually removes the need)
46+
networks:
47+
- web
48+
49+
caddy:
50+
image: caddy:2
51+
container_name: caddy
52+
restart: unless-stopped
53+
depends_on:
54+
- jenkins
55+
ports:
56+
- "80:80"
57+
- "443:443"
58+
volumes:
59+
- ./Caddyfile:/etc/caddy/Caddyfile:ro
60+
- caddy_data:/data
61+
- caddy_config:/config
62+
networks:
63+
- web
64+
65+
networks:
66+
web:
67+
driver: bridge
68+
69+
volumes:
70+
jenkins_home:
71+
caddy_data:
72+
caddy_config:
73+
----
74+
75+
=== Caddyfile (subdomain)
76+
[source,caddy]
77+
----
78+
# Replace with your real domain
79+
jenkins.example.com {
80+
encode zstd gzip
81+
reverse_proxy jenkins:8080
82+
}
83+
----
84+
85+
=== Caddyfile (sub-path `/jenkins`)
86+
[source,caddy]
87+
----
88+
# Replace with your real domain
89+
example.com {
90+
encode zstd gzip
91+
92+
@jenkins path /jenkins*
93+
handle @jenkins {
94+
handle_path /jenkins* {
95+
reverse_proxy jenkins:8080
96+
}
97+
}
98+
}
99+
----
100+
101+
== Run
102+
[source,shell]
103+
----
104+
docker compose up -d
105+
----
106+
107+
== Jenkins URL
108+
After startup, set the Jenkins URL under *Manage Jenkins → System → Jenkins Location* to either:
109+
110+
* `https://jenkins.example.com/` (subdomain)
111+
* `https://example.com/jenkins/` (sub-path; ensure `JENKINS_OPTS=--prefix=/jenkins` is set as shown above)

0 commit comments

Comments
 (0)