diff --git a/repo/caddy-git/Caddyfile b/repo/caddy-git/Caddyfile
new file mode 120000
index 0000000..2a04384
--- /dev/null
+++ b/repo/caddy-git/Caddyfile
@@ -0,0 +1 @@
+../caddy/Caddyfile
\ No newline at end of file
diff --git a/repo/caddy-git/PKGBUILD b/repo/caddy-git/PKGBUILD
new file mode 100644
index 0000000..6d3982c
--- /dev/null
+++ b/repo/caddy-git/PKGBUILD
@@ -0,0 +1,108 @@
+# Base on https://github.com/archlinux/svntogit-packages/tree/packages/bash/trunk
+# Contributor: Levente Polyak <anthraxx[at]archlinux[dot]org>
+# Contributor: Christian Rebischke <chris.rebischke@archlinux.org>
+# Contributor: Wei Congrui < crvv.mail at gmail dot com >
+# Contributor: Carl George < arch at cgtx dot us >
+# Contributor: Eric Engeström <eric at engestrom dot ch>
+# Contributor: Andreas Linz <klingt.net at gmail dot com>
+# Contributor: Akshay S Dinesh <asdofindia at gmail dot com>
+
+pkgname=caddy-git
+pkgver=2.7.0.beta.1
+pkgrel=3
+pkgdesc='Fast web server with automatic HTTPS'
+url='https://caddyserver.com'
+arch=('x86_64')
+license=('Apache')
+depends=('glibc')
+makedepends=('go' 'git' 'gzip')
+conflicts=('caddy')
+provides=('caddy')
+backup=('etc/caddy/Caddyfile')
+source=(
+  caddy-git::"git+https://github.com/caddyserver/caddy.git"
+  caddy-dist::"git+https://github.com/caddyserver/dist.git"
+  forwardproxy::"git+https://github.com/klzgrad/forwardproxy.git"
+  main.go
+  caddy.sysusers
+  caddy.tmpfiles
+  Caddyfile
+)
+sha512sums=(
+  'SKIP'
+  'SKIP'
+  'SKIP'
+  'aa9fefd87c87e3a120af66fcd745448831b99baab9b795a35544a752147422920d200e4c0ea9d0ceb0880f80e01c351522209fbcfce0d5b7d7cac940565755a3'
+  'c893d88fec89e37da6596030c8dce7103e7e575371e8542a24d2a0741e877358d85219f2d8ade9d6aa0f515efe1156a4badd9fef5f65f553a5b0c72330c4728f'
+  '55ee8d3f8b14f9adddc7a1026addcea4f85b4bae4cd512fd4da2a5e8adaae4b6fd0f486d2e3847f75518f4710a897b4fca84e48ee15700b968bad762125c4742'
+  '716da3f4edeb3561243aeaf5c32b01ff7a4ac810b6deba8364fb12a1f71b6a5278c34a97b289bcfdc48784679b942bf780f1f36d416a575791168c94b0d59fe0'
+)
+
+pkgver() {
+  cd "${pkgname}-git"
+  git describe --tags --long | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-\([^-]*\)-\([^-]*\)$/.\1.\2/;s/-//'
+}
+
+prepare() {
+  pushd "${pkgname}-git"
+  _gitcommit=$(git rev-parse HEAD)
+  popd
+
+  mkdir ${pkgname}
+  cd ${pkgname}
+  cp ../main.go .
+  go mod init caddy
+  sed -i -e '$a replace github.com/caddyserver/forwardproxy => ../forwardproxy' go.mod
+  go get github.com/caddyserver/caddy/v2@${_gitcommit}
+  go mod tidy
+
+  # welcome page
+  cp ../caddy-dist/welcome/index.html .
+  sed 's|/var/www/html|/srv/http|g' -i index.html
+}
+
+build() {
+  cd ${pkgname}
+  export CGO_LDFLAGS="${LDFLAGS}"
+  export CGO_CPPFLAGS="${CPPFLAGS}"
+  export CGO_CFLAGS="${CFLAGS}"
+  export CGO_CXXFLAGS="${CXXFLAGS}"
+  export GOFLAGS="-buildmode=pie -trimpath -ldflags=-linkmode=external -mod=readonly -modcacherw"
+  go build .
+
+  for i in zsh bash fish; do
+    ./caddy completion $i >caddy.$i
+  done
+
+  ./caddy manpage --directory manpages
+  gzip manpages/*
+}
+
+check() {
+  cd "${pkgname}"
+  ./caddy version
+  ./caddy build-info
+  ./caddy list-modules
+}
+
+package() {
+  cd "${pkgname}"
+  install -Dm 755 caddy -t "${pkgdir}/usr/bin"
+
+  install -Dm 644 "${srcdir}/caddy-dist/init/caddy.service" "${srcdir}/caddy-dist/init/caddy-api.service" -t "${pkgdir}/usr/lib/systemd/system"
+  install -Dm 644 "${srcdir}/caddy.tmpfiles" "${pkgdir}/usr/lib/tmpfiles.d/caddy.conf"
+  install -Dm 644 "${srcdir}/caddy.sysusers" "${pkgdir}/usr/lib/sysusers.d/caddy.conf"
+
+  install -Dm 644 "${srcdir}/Caddyfile" -t "${pkgdir}/etc/caddy"
+  install -d "${pkgdir}/etc/caddy/conf.d"
+
+  install -Dm 644 index.html "${pkgdir}/usr/share/caddy/index.html"
+
+  install -Dm 644 caddy.zsh "${pkgdir}/usr/share/zsh/site-functions/_caddy"
+  install -Dm 644 caddy.bash "${pkgdir}/usr/share/bash-completion/completions/caddy"
+  install -Dm 644 caddy.fish -t "${pkgdir}/usr/share/fish/vendor_completions.d"
+
+  install -Dm 644 manpages/* -t "${pkgdir}/usr/share/man/man8"
+}
+
+# vim: ts=2 sw=2 et:
diff --git a/repo/caddy-git/caddy.sysusers b/repo/caddy-git/caddy.sysusers
new file mode 120000
index 0000000..8bdef6d
--- /dev/null
+++ b/repo/caddy-git/caddy.sysusers
@@ -0,0 +1 @@
+../caddy/caddy.sysusers
\ No newline at end of file
diff --git a/repo/caddy-git/caddy.tmpfiles b/repo/caddy-git/caddy.tmpfiles
new file mode 120000
index 0000000..1a0248e
--- /dev/null
+++ b/repo/caddy-git/caddy.tmpfiles
@@ -0,0 +1 @@
+../caddy/caddy.tmpfiles
\ No newline at end of file
diff --git a/repo/caddy-git/lilac.yaml b/repo/caddy-git/lilac.yaml
new file mode 100644
index 0000000..a11c065
--- /dev/null
+++ b/repo/caddy-git/lilac.yaml
@@ -0,0 +1,14 @@
+maintainers:
+  - github: yingziwu
+    email: i@bgme.me
+
+build_prefix: extra-x86_64
+
+pre_build: vcs_update
+
+post_build: git_pkgbuild_commit
+
+update_on:
+  - source: github
+    github: caddyserver/caddy
+  - source: vcs
diff --git a/repo/caddy-git/main.go b/repo/caddy-git/main.go
new file mode 120000
index 0000000..80d5db7
--- /dev/null
+++ b/repo/caddy-git/main.go
@@ -0,0 +1 @@
+../caddy/main.go
\ No newline at end of file
diff --git a/repo/caddy/Caddyfile b/repo/caddy/Caddyfile
new file mode 100644
index 0000000..e8dda50
--- /dev/null
+++ b/repo/caddy/Caddyfile
@@ -0,0 +1,40 @@
+# The Caddyfile is an easy way to configure your Caddy web server.
+#
+# https://caddyserver.com/docs/caddyfile
+#
+# The configuration below serves a welcome page over HTTP on port 80.
+# To use your own domain name (with automatic HTTPS), first make
+# sure your domain's A/AAAA DNS records are properly pointed to
+# this machine's public IP, then replace the line below with your
+# domain name.
+#
+# https://caddyserver.com/docs/caddyfile/concepts#addresses
+
+{
+	# Restrict the admin interface to a local unix file socket whose directory
+	# is restricted to caddy:caddy. By default the TCP socket allows arbitrary
+	# modification for any process and user that has access to the local
+	# interface. If admin over TCP is turned on one should make sure
+	# implications are well understood.
+	admin "unix//run/caddy/admin.socket"
+}
+
+http:// {
+	# Set this path to your site's directory.
+	root * /usr/share/caddy
+
+	# Enable the static file server.
+	file_server
+
+	# Another common task is to set up a reverse proxy:
+	# reverse_proxy localhost:8080
+
+	# Or serve a PHP site through php-fpm:
+	# php_fastcgi localhost:9000
+
+	# Refer to the directive documentation for more options.
+	# https://caddyserver.com/docs/caddyfile/directives
+}
+
+# Import additional caddy config files in /etc/caddy/conf.d/
+import /etc/caddy/conf.d/*
diff --git a/repo/caddy/PKGBUILD b/repo/caddy/PKGBUILD
new file mode 100644
index 0000000..1511a7c
--- /dev/null
+++ b/repo/caddy/PKGBUILD
@@ -0,0 +1,106 @@
+# Base on https://github.com/archlinux/svntogit-packages/tree/packages/bash/trunk
+# Contributor: Levente Polyak <anthraxx[at]archlinux[dot]org>
+# Contributor: Christian Rebischke <chris.rebischke@archlinux.org>
+# Contributor: Wei Congrui < crvv.mail at gmail dot com >
+# Contributor: Carl George < arch at cgtx dot us >
+# Contributor: Eric Engeström <eric at engestrom dot ch>
+# Contributor: Andreas Linz <klingt.net at gmail dot com>
+# Contributor: Akshay S Dinesh <asdofindia at gmail dot com>
+
+pkgname=caddy
+pkgver=2.7.0.beta.1
+_gitcommit=v2.7.0-beta.1
+_distcommit=5ded5351fc9f6f35286e38c4552fc2d8b37f4df3
+pkgrel=3
+pkgdesc='Fast web server with automatic HTTPS'
+url='https://caddyserver.com'
+arch=('x86_64')
+license=('Apache')
+depends=('glibc')
+makedepends=('go' 'git' 'gzip')
+conflicts=('caddy-git')
+provides=('caddy')
+backup=('etc/caddy/Caddyfile')
+source=(
+  caddy-git::"git+https://github.com/caddyserver/caddy#tag=${_gitcommit}"
+  caddy-dist::"git+https://github.com/caddyserver/dist#commit=${_distcommit}"
+  forwardproxy::"git+https://github.com/klzgrad/forwardproxy.git"
+  main.go
+  caddy.sysusers
+  caddy.tmpfiles
+  Caddyfile
+)
+sha512sums=(
+  'SKIP'
+  'SKIP'
+  'SKIP'
+  'aa9fefd87c87e3a120af66fcd745448831b99baab9b795a35544a752147422920d200e4c0ea9d0ceb0880f80e01c351522209fbcfce0d5b7d7cac940565755a3'
+  'c893d88fec89e37da6596030c8dce7103e7e575371e8542a24d2a0741e877358d85219f2d8ade9d6aa0f515efe1156a4badd9fef5f65f553a5b0c72330c4728f'
+  '55ee8d3f8b14f9adddc7a1026addcea4f85b4bae4cd512fd4da2a5e8adaae4b6fd0f486d2e3847f75518f4710a897b4fca84e48ee15700b968bad762125c4742'
+  '716da3f4edeb3561243aeaf5c32b01ff7a4ac810b6deba8364fb12a1f71b6a5278c34a97b289bcfdc48784679b942bf780f1f36d416a575791168c94b0d59fe0'
+)
+
+pkgver() {
+  cd "${pkgname}-git"
+  git describe --tags --match 'v*' | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
+}
+
+prepare() {
+  mkdir ${pkgname}
+  cd ${pkgname}
+  cp ../main.go .
+  go mod init caddy
+  sed -i -e '$a replace github.com/caddyserver/forwardproxy => ../forwardproxy' go.mod
+  go get github.com/caddyserver/caddy/v2@${_gitcommit}
+  go mod tidy
+
+  # welcome page
+  cp ../caddy-dist/welcome/index.html .
+  sed 's|/var/www/html|/srv/http|g' -i index.html
+}
+
+build() {
+  cd ${pkgname}
+  export CGO_LDFLAGS="${LDFLAGS}"
+  export CGO_CPPFLAGS="${CPPFLAGS}"
+  export CGO_CFLAGS="${CFLAGS}"
+  export CGO_CXXFLAGS="${CXXFLAGS}"
+  export GOFLAGS="-buildmode=pie -trimpath -ldflags=-linkmode=external -mod=readonly -modcacherw"
+  go build .
+
+  for i in zsh bash fish; do
+    ./caddy completion $i >caddy.$i
+  done
+
+  ./caddy manpage --directory manpages
+  gzip manpages/*
+}
+
+check() {
+  cd "${pkgname}"
+  ./caddy version
+  ./caddy build-info
+  ./caddy list-modules
+}
+
+package() {
+  cd "${pkgname}"
+  install -Dm 755 caddy -t "${pkgdir}/usr/bin"
+
+  install -Dm 644 "${srcdir}/caddy-dist/init/caddy.service" "${srcdir}/caddy-dist/init/caddy-api.service" -t "${pkgdir}/usr/lib/systemd/system"
+  install -Dm 644 "${srcdir}/caddy.tmpfiles" "${pkgdir}/usr/lib/tmpfiles.d/caddy.conf"
+  install -Dm 644 "${srcdir}/caddy.sysusers" "${pkgdir}/usr/lib/sysusers.d/caddy.conf"
+
+  install -Dm 644 "${srcdir}/Caddyfile" -t "${pkgdir}/etc/caddy"
+  install -d "${pkgdir}/etc/caddy/conf.d"
+
+  install -Dm 644 index.html "${pkgdir}/usr/share/caddy/index.html"
+
+  install -Dm 644 caddy.zsh "${pkgdir}/usr/share/zsh/site-functions/_caddy"
+  install -Dm 644 caddy.bash "${pkgdir}/usr/share/bash-completion/completions/caddy"
+  install -Dm 644 caddy.fish -t "${pkgdir}/usr/share/fish/vendor_completions.d"
+
+  install -Dm 644 manpages/* -t "${pkgdir}/usr/share/man/man8"
+}
+
+# vim: ts=2 sw=2 et:
diff --git a/repo/caddy/caddy.sysusers b/repo/caddy/caddy.sysusers
new file mode 100644
index 0000000..6fb5633
--- /dev/null
+++ b/repo/caddy/caddy.sysusers
@@ -0,0 +1 @@
+u caddy - "caddy daemon" /var/lib/caddy
diff --git a/repo/caddy/caddy.tmpfiles b/repo/caddy/caddy.tmpfiles
new file mode 100644
index 0000000..25f170f
--- /dev/null
+++ b/repo/caddy/caddy.tmpfiles
@@ -0,0 +1,3 @@
+d /var/lib/caddy 0750 caddy caddy
+d /var/log/caddy 0750 caddy caddy
+d /run/caddy 0750 caddy caddy
diff --git a/repo/caddy/lilac.yaml b/repo/caddy/lilac.yaml
new file mode 100644
index 0000000..80d7ff5
--- /dev/null
+++ b/repo/caddy/lilac.yaml
@@ -0,0 +1,12 @@
+maintainers:
+  - github: yingziwu
+    email: i@bgme.me
+
+build_prefix: extra-x86_64
+
+pre_build: vcs_update
+
+post_build: git_pkgbuild_commit
+
+update_on:
+  - source: vcs
diff --git a/repo/caddy/main.go b/repo/caddy/main.go
new file mode 100644
index 0000000..6b73a96
--- /dev/null
+++ b/repo/caddy/main.go
@@ -0,0 +1,52 @@
+// Copyright 2015 Matthew Holt and The Caddy Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Package main is the entry point of the Caddy application.
+// Most of Caddy's functionality is provided through modules,
+// which can be plugged in by adding their import below.
+//
+// There is no need to modify the Caddy source code to customize your
+// builds. You can easily build a custom Caddy with these simple steps:
+//
+//  1. Copy this file (main.go) into a new folder
+//  2. Edit the imports below to include the modules you want plugged in
+//  3. Run `go mod init caddy`
+//  4. Run `go install` or `go build` - you now have a custom binary!
+//
+// Or you can use xcaddy which does it all for you as a command:
+// https://github.com/caddyserver/xcaddy
+package main
+
+import (
+	caddycmd "github.com/caddyserver/caddy/v2/cmd"
+
+	// plug in Caddy modules here
+	_ "github.com/caddyserver/caddy/v2/modules/standard"
+
+	_ "github.com/caddyserver/forwardproxy"
+
+	_ "github.com/mholt/caddy-ratelimit"
+	_ "github.com/caddyserver/replace-response"
+	_ "github.com/silinternational/certmagic-storage-dynamodb/v3"
+	_ "github.com/abiosoft/caddy-json-schema"
+	_ "github.com/fvbommel/caddy-combine-ip-ranges"
+	_ "github.com/fvbommel/caddy-dns-ip-range"
+	_ "github.com/WeidiDeng/caddy-cloudflare-ip"
+	_ "github.com/zhangjiayin/caddy-geoip2"
+	_ "github.com/corazawaf/coraza-caddy"
+)
+
+func main() {
+	caddycmd.Main()
+}