├── .github ├── ISSUE_TEMPLATE │ ├── report-error-in-documentation.md │ ├── request-a-custom-build.md │ └── request-module-update.md ├── dependabot.yml └── workflows │ ├── build.caddy-cloudflare-crowdsec.yml │ ├── build.caddy-cloudflare-ddns-crowdsec-geoip-security-dockerproxy.yml │ ├── build.caddy-cloudflare-ddns-crowdsec-geoip-security.yml │ ├── build.caddy-cloudflare-ddns-crowdsec-geoip.yml │ ├── build.caddy-cloudflare-ddns-crowdsec.yml │ ├── build.caddy-cloudflare-ddns-security.yml │ ├── build.caddy-cloudflare-ddns.yml │ ├── build.caddy-cloudflare.yml │ ├── build.caddy-cloudns.yml │ ├── build.caddy-crowdsec-geoip-ratelimit-security-dockerproxy.yml │ ├── build.caddy-crowdsec-geoip.yml │ ├── build.caddy-crowdsec.yml │ ├── build.caddy-desec-crowdsec-geoip-ratelimit.yml │ ├── build.caddy-desec-geoip-coraza-dockerproxy.yml │ ├── build.caddy-duckdns-crowdsec.yml │ ├── build.caddy-duckdns-ddns-crowdsec-geoip-security-dockerproxy.yml │ ├── build.caddy-duckdns-ddns-crowdsec-geoip-security.yml │ ├── build.caddy-duckdns-ddns-crowdsec.yml │ ├── build.caddy-duckdns-ddns.yml │ ├── build.caddy-duckdns.yml │ ├── build.caddy-eventsexec.yml │ ├── build.caddy-gandi.yml │ ├── build.caddy-namecheap.yml │ ├── build.caddy-netcup-ddns-geoip.yml │ ├── build.caddy-netcup-ddns.yml │ ├── build.caddy-netcup.yml │ ├── build.caddy-netlify-geoip-security.yml │ ├── build.caddy-ovh-crowdsec-geoip.yml │ ├── build.caddy-porkbun-dockerproxy.yml │ ├── build.caddy-ratelimit-dockerproxy-sablier.yml │ └── update-tag-release.yml ├── .gitignore ├── LICENSE ├── README.md ├── caddy-cloudflare-crowdsec ├── Dockerfile └── README.md ├── caddy-cloudflare-ddns-crowdsec-geoip-security-dockerproxy ├── Dockerfile └── README.md ├── caddy-cloudflare-ddns-crowdsec-geoip-security ├── Dockerfile └── README.md ├── caddy-cloudflare-ddns-crowdsec-geoip ├── Dockerfile └── README.md ├── caddy-cloudflare-ddns-crowdsec ├── Dockerfile └── README.md ├── caddy-cloudflare-ddns-security ├── Dockerfile └── README.md ├── caddy-cloudflare-ddns ├── Dockerfile └── README.md ├── caddy-cloudflare ├── Dockerfile └── README.md ├── caddy-cloudns ├── Dockerfile └── README.md ├── caddy-crowdsec-geoip-ratelimit-security-dockerproxy ├── Dockerfile └── README.md ├── caddy-crowdsec-geoip ├── Dockerfile └── README.md ├── caddy-crowdsec ├── Dockerfile └── README.md ├── caddy-desec-crowdsec-geoip-ratelimit ├── Dockerfile └── README.md ├── caddy-desec-geoip-coraza-dockerproxy ├── Dockerfile └── README.md ├── caddy-duckdns-crowdsec ├── Dockerfile └── README.md ├── caddy-duckdns-ddns-crowdsec-geoip-security-dockerproxy ├── Dockerfile └── README.md ├── caddy-duckdns-ddns-crowdsec-geoip-security ├── Dockerfile └── README.md ├── caddy-duckdns-ddns-crowdsec ├── Dockerfile └── README.md ├── caddy-duckdns-ddns ├── Dockerfile └── README.md ├── caddy-duckdns ├── Dockerfile └── README.md ├── caddy-eventsexec ├── Dockerfile └── README.md ├── caddy-gandi ├── Dockerfile └── README.md ├── caddy-namecheap ├── Dockerfile └── README.md ├── caddy-netcup-ddns-geoip ├── Dockerfile └── README.md ├── caddy-netcup-ddns ├── Dockerfile └── README.md ├── caddy-netcup ├── Dockerfile └── README.md ├── caddy-netlify-geoip-security ├── Dockerfile └── README.md ├── caddy-ovh-crowdsec-geoip ├── Dockerfile └── README.md ├── caddy-porkbun-dockerproxy ├── Dockerfile └── README.md └── caddy-ratelimit-dockerproxy-sablier ├── Dockerfile └── README.md /.github/ISSUE_TEMPLATE/report-error-in-documentation.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Report error in documentation 3 | about: Help improve the instructions of the different Caddy modules 4 | title: '' 5 | labels: documentation 6 | assignees: serfriz 7 | 8 | --- 9 | 10 | **Which Caddy modules are affected?** 11 | Ex. The module with errors in the instructions is CrowdSec Bouncer module. 12 | 13 | **Describe the documentation error** 14 | A clear and concise description of what the error is, including links and additional resources. 15 | 16 | **Suggest a solution (if available)** 17 | If applicable, describe the proposed solution to the documentation error. 18 | 19 | **Which existing Caddy custom build are you using?** 20 | Ex. I am running the build caddy-cloudflare-crowdsec. 21 | 22 | **Additional context** 23 | Add any other comments or observations to the request here. 24 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/request-a-custom-build.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Request a custom build 3 | about: Ask for additional Caddy modules 4 | title: '' 5 | labels: enhancement 6 | assignees: serfriz 7 | 8 | --- 9 | 10 | **Which Caddy modules do you need to be included? Please, list them with their GitHub links.** 11 | Ex. I would like a Caddy build with the following modules: 12 | - Cloudflare DNS: https://github.com/caddy-dns/cloudflare 13 | - CrowdSec Bouncer: https://github.com/hslatman/caddy-crowdsec-bouncer 14 | - [...] 15 | 16 | **Additional context** 17 | Add any other comments or observations to the request here. 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/request-module-update.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Request module update 3 | about: Update the modules of an existing Caddy build 4 | title: '' 5 | labels: dependencies 6 | assignees: serfriz 7 | 8 | --- 9 | 10 | **Which Caddy modules need to be updated?** 11 | Ex. There is a new version of the CrowdSec Bouncer module. 12 | 13 | **Which existing Caddy custom build are you using?** 14 | Ex. I am running the build caddy-cloudflare-crowdsec. 15 | 16 | **Additional context** 17 | Add any other comments or observations to the request here. 18 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | # Maintain dependencies for GitHub Actions 4 | - package-ecosystem: "github-actions" 5 | directory: "/" 6 | schedule: 7 | interval: "weekly" 8 | assignees: 9 | - "serfriz" 10 | # Check for Docker image updates 11 | - package-ecosystem: "docker" 12 | directory: "/caddy-cloudflare" 13 | schedule: 14 | interval: "daily" 15 | assignees: 16 | - "serfriz" -------------------------------------------------------------------------------- /.github/workflows/build.caddy-cloudflare-crowdsec.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-cloudflare-crowdsec 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-cloudflare-crowdsec/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-cloudflare-crowdsec 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Cloudflare DNS/IPs and CrowdSec Bouncer modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-cloudflare-ddns-crowdsec-geoip-security.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-cloudflare-ddns-crowdsec-geoip-security 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-cloudflare-ddns-crowdsec-geoip-security/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-cloudflare-ddns-crowdsec-geoip-security 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Cloudflare Dynamic DNS/IPs, CrowdSec Bouncer, GeoIP Filter and Caddy Security modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-cloudflare-ddns-crowdsec-geoip.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-cloudflare-ddns-crowdsec-geoip 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-cloudflare-ddns-crowdsec-geoip/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-cloudflare-ddns-crowdsec-geoip 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Cloudflare Dynamic DNS/IPs, CrowdSec Bouncer and GeoIP Filter modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-cloudflare-ddns-crowdsec.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-cloudflare-ddns-crowdsec 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-cloudflare-ddns-crowdsec/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-cloudflare-ddns-crowdsec 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Cloudflare Dynamic DNS/IPs and CrowdSec Bouncer modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-cloudflare-ddns-security.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-cloudflare-ddns-security 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-cloudflare-ddns-security/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-cloudflare-ddns-security 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Cloudflare Dynamic DNS/IPs and Caddy Security modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-cloudflare-ddns.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-cloudflare-ddns 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-cloudflare-ddns/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-cloudflare-ddns 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Cloudflare Dynamic DNS/IPs modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-cloudflare.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-cloudflare 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-cloudflare/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-cloudflare 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Cloudflare DNS/IPs modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-cloudns.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-cloudns 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-cloudns/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-cloudns 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with ClouDNS DNS module" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-crowdsec-geoip-ratelimit-security-dockerproxy.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-crowdsec-geoip-ratelimit-security-dockerproxy 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-crowdsec-geoip-ratelimit-security-dockerproxy/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-crowdsec-geoip-ratelimit-security-dockerproxy 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with CrowdSec Bouncer, GeoIP Filter, Rate Limit, Caddy Security and Docker Proxy modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-crowdsec-geoip.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-crowdsec-geoip 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-crowdsec-geoip/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-crowdsec-geoip 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with CrowdSec Bouncer and GeoIP Filter modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-crowdsec.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-crowdsec 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-crowdsec/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-crowdsec 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with CrowdSec Bouncer module" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-desec-crowdsec-geoip-ratelimit.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-desec-crowdsec-geoip-ratelimit 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-desec-crowdsec-geoip-ratelimit/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-desec-crowdsec-geoip-ratelimit 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with deSEC DNS, CrowdSec Bouncer, GeoIP Filter and Rate Limit modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-desec-geoip-coraza-dockerproxy.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-desec-geoip-coraza-dockerproxy 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-desec-geoip-coraza-dockerproxy/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-desec-geoip-coraza-dockerproxy 18 | DOCKER_DESCRIPTION: "Caddy Docker build with deSEC DNS, GeoIP Filter, Coraza WAF and Docker Proxy modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-duckdns-crowdsec.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-duckdns-crowdsec 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-duckdns-crowdsec/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-duckdns-crowdsec 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with DuckDNS DNS and CrowdSec Bouncer modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-duckdns-ddns-crowdsec-geoip-security-dockerproxy.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-duckdns-ddns-crowdsec-geoip-security-dockerproxy 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-duckdns-ddns-crowdsec-geoip-security-dockerproxy/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-duckdns-ddns-crowdsec-geoip-security-dockerproxy 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with DuckDNS Dynamic DNS, CrowdSec Bouncer, GeoIP Filter, Caddy Security and Docker Proxy modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-duckdns-ddns-crowdsec-geoip-security.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-duckdns-ddns-crowdsec-geoip-security 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-duckdns-ddns-crowdsec-geoip-security/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-duckdns-ddns-crowdsec-geoip-security 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with DuckDNS Dynamic DNS, CrowdSec Bouncer, GeoIP Filter and Caddy Security modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-duckdns-ddns-crowdsec.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-duckdns-ddns-crowdsec 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-duckdns-ddns-crowdsec/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-duckdns-ddns-crowdsec 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with DuckDNS Dynamic DNS and CrowdSec Bouncer modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-duckdns-ddns.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-duckdns-ddns 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-duckdns-ddns/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-duckdns-ddns 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with DuckDNS Dynamic DNS module" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-duckdns.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-duckdns 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-duckdns/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-duckdns 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with DuckDNS DNS module" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-eventsexec.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-eventsexec 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-eventsexec/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-eventsexec 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Events Exec module" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-gandi.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-gandi 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-gandi/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-gandi 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Gandi DNS module" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-namecheap.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-namecheap 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-namecheap/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-namecheap 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Namecheap DNS module" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-netcup-ddns-geoip.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-netcup-ddns-geoip 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-netcup-ddns-geoip/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-netcup-ddns-geoip 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Netcup Dynamic DNS and GeoIP Filter modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-netcup-ddns.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-netcup-ddns 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-netcup-ddns/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-netcup-ddns 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Netcup Dynamic DNS module" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-netcup.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-netcup 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-netcup/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-netcup 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Netcup DNS module" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-netlify-geoip-security.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-netlify-geoip-security 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-netlify-geoip-security/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-netlify-geoip-security 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Netlify DNS, GeoIP Filter and Caddy Security modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-ovh-crowdsec-geoip.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-ovh-crowdsec-geoip 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-ovh-crowdsec-geoip/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-ovh-crowdsec-geoip 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with OVH DNS, CrowdSec Bouncer and GeoIP Filter modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-porkbun-dockerproxy.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-porkbun-dockerproxy 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-porkbun-dockerproxy/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-porkbun-dockerproxy 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Porkbun DNS and Docker Proxy modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.github/workflows/build.caddy-ratelimit-dockerproxy-sablier.yml: -------------------------------------------------------------------------------- 1 | # Workflow to build and push a Docker image to Docker Hub, GitHub and Quay Container Registries 2 | name: Build caddy-ratelimit-dockerproxy-sablier 3 | 4 | # Controls when the action will run 5 | on: 6 | workflow_dispatch: # allows to run the workflow manually from the Actions tab 7 | schedule: 8 | - cron: '0 0 1 * *' # runs at 00:00 on the first day of every month 9 | push: 10 | branches: main 11 | paths: 12 | - caddy-ratelimit-dockerproxy-sablier/Dockerfile 13 | 14 | # Environment variables available to all jobs and steps in this workflow 15 | env: 16 | DOCKER_BUILDKIT: 1 17 | DOCKER_NAME: caddy-ratelimit-dockerproxy-sablier 18 | DOCKER_DESCRIPTION: "Caddy Docker custom build with Rate Limit, Docker Proxy and Sablier modules" 19 | 20 | # Jobs to run once the workflow is triggered 21 | jobs: 22 | # Job to get image and repository details 23 | metadata: 24 | name: Get image and repository details 25 | runs-on: ubuntu-latest 26 | 27 | outputs: 28 | version: ${{ steps.version.outputs.version }} 29 | labels: ${{ steps.metadata.outputs.labels }} 30 | tags: ${{ steps.metadata.outputs.tags }} 31 | platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/arm/v7,linux/arm/v6 32 | 33 | steps: 34 | - name: Checkout repository 35 | uses: actions/checkout@v4 36 | with: 37 | ref: main 38 | 39 | - name: Parse Caddy version 40 | id: version 41 | run: echo "version=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' $DOCKER_NAME/Dockerfile | cut -d ':' -f2)" | tee -a $GITHUB_OUTPUT 42 | 43 | - name: Generate image metadata with Caddy version 44 | uses: docker/metadata-action@v5 45 | id: metadata 46 | with: 47 | images: | 48 | docker.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 49 | ghcr.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 50 | quay.io/${{ github.actor }}/${{ env.DOCKER_NAME }} 51 | tags: | 52 | type=semver,pattern={{version}},value=v${{ steps.version.outputs.version }} 53 | type=semver,pattern={{major}}.{{minor}},value=v${{ steps.version.outputs.version }} 54 | type=semver,pattern={{major}},value=v${{ steps.version.outputs.version }} 55 | labels: | 56 | org.opencontainers.image.title=${{ env.DOCKER_NAME }} 57 | org.opencontainers.image.description=${{ env.DOCKER_DESCRIPTION }} 58 | 59 | # Job to build and publish Docker image 60 | build: 61 | name: Build and publish Docker image 62 | runs-on: ubuntu-latest 63 | needs: metadata 64 | 65 | steps: 66 | - name: Checkout repository 67 | uses: actions/checkout@v4 68 | with: 69 | ref: main 70 | 71 | - name: Set up QEMU 72 | uses: docker/setup-qemu-action@v3 73 | 74 | - name: Set up Docker Buildx 75 | uses: docker/setup-buildx-action@v3 76 | 77 | - name: Login to Docker Hub 78 | uses: docker/login-action@v3 79 | with: 80 | username: ${{ github.actor }} 81 | password: ${{ secrets.DOCKERHUB_TOKEN }} 82 | 83 | - name: Login to GitHub Container Repository 84 | uses: docker/login-action@v3 85 | with: 86 | registry: ghcr.io 87 | username: ${{ github.actor }} 88 | password: ${{ github.token }} 89 | 90 | - name: Login to Quay Container Registry 91 | uses: docker/login-action@v3 92 | with: 93 | registry: quay.io 94 | username: ${{ github.actor }} 95 | password: ${{ secrets.QUAY_TOKEN }} 96 | 97 | - name: Build and publish container image 98 | uses: docker/build-push-action@v6 99 | id: build 100 | with: 101 | context: . 102 | file: ./${{ env.DOCKER_NAME }}/Dockerfile 103 | push: true 104 | provenance: false 105 | tags: ${{ needs.metadata.outputs.tags }} 106 | labels: ${{ needs.metadata.outputs.labels }} 107 | platforms: ${{ needs.metadata.outputs.platforms }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .* 2 | !/.gitignore 3 | !/.github -------------------------------------------------------------------------------- /caddy-cloudflare-crowdsec/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/cloudflare \ 6 | --with github.com/WeidiDeng/caddy-cloudflare-ip \ 7 | --with github.com/hslatman/caddy-crowdsec-bouncer/http 8 | 9 | FROM caddy:2.10.0 10 | 11 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-cloudflare-crowdsec/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with Cloudflare DNS/IPs and CrowdSec Bouncer modules 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--cloudflare--crowdsec%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-cloudflare-crowdsec) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--cloudflare--crowdsec%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-cloudflare-crowdsec) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--cloudflare--crowdsec%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-cloudflare-crowdsec) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-cloudflare-crowdsec.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-cloudflare-crowdsec.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**Cloudflare DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for Cloudflare DNS-01 ACME validation support | [caddy-dns/cloudflare](https://github.com/caddy-dns/cloudflare) 12 | - [**Cloudflare IPs**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#cloudflare-ips): to retrieve Cloudflare's current [IP ranges](https://www.cloudflare.com/ips/) | [WeidiDeng/caddy-cloudflare-ip](https://github.com/WeidiDeng/caddy-cloudflare-ip) 13 | - [**CrowdSec Bouncer**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#crowdsec-bouncer): to blocks malicious traffic based on [CrowdSec](https://www.crowdsec.net/) decisions | [hslatman/caddy-crowdsec-bouncer](https://github.com/hslatman/caddy-crowdsec-bouncer) 14 | 15 | ## Usage 16 | 17 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 18 | 19 | Docker builds for all Caddy supported platforms available at the following container registries: 20 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-cloudflare-crowdsec) `docker pull serfriz/caddy-cloudflare-crowdsec:latest` 21 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-cloudflare-crowdsec) `docker pull ghcr.io/serfriz/caddy-cloudflare-crowdsec:latest` 22 | - [**Quay**](https://quay.io/serfriz/caddy-cloudflare-crowdsec) `docker pull quay.io/serfriz/caddy-cloudflare-crowdsec:latest` 23 | 24 | ### Tags 25 | 26 | The following tags are available for the `serfriz/caddy-cloudflare-crowdsec` image: 27 | 28 | - `latest` 29 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 30 | 31 | ## Contributing 32 | 33 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 34 | 35 | ## License 36 | 37 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-cloudflare-ddns-crowdsec-geoip-security-dockerproxy/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/cloudflare \ 6 | --with github.com/WeidiDeng/caddy-cloudflare-ip \ 7 | --with github.com/mholt/caddy-dynamicdns \ 8 | --with github.com/hslatman/caddy-crowdsec-bouncer/http \ 9 | --with github.com/porech/caddy-maxmind-geolocation \ 10 | --with github.com/greenpau/caddy-security \ 11 | --with github.com/lucaslorentz/caddy-docker-proxy/v2 12 | 13 | FROM caddy:2.10.0 14 | 15 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy 16 | 17 | CMD ["caddy", "docker-proxy"] -------------------------------------------------------------------------------- /caddy-cloudflare-ddns-crowdsec-geoip-security/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/cloudflare \ 6 | --with github.com/WeidiDeng/caddy-cloudflare-ip \ 7 | --with github.com/mholt/caddy-dynamicdns \ 8 | --with github.com/hslatman/caddy-crowdsec-bouncer/http \ 9 | --with github.com/porech/caddy-maxmind-geolocation \ 10 | --with github.com/greenpau/caddy-security 11 | 12 | FROM caddy:2.10.0 13 | 14 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-cloudflare-ddns-crowdsec-geoip/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/cloudflare \ 6 | --with github.com/WeidiDeng/caddy-cloudflare-ip \ 7 | --with github.com/mholt/caddy-dynamicdns \ 8 | --with github.com/hslatman/caddy-crowdsec-bouncer/http \ 9 | --with github.com/porech/caddy-maxmind-geolocation 10 | 11 | FROM caddy:2.10.0 12 | 13 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-cloudflare-ddns-crowdsec/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/cloudflare \ 6 | --with github.com/WeidiDeng/caddy-cloudflare-ip \ 7 | --with github.com/mholt/caddy-dynamicdns \ 8 | --with github.com/hslatman/caddy-crowdsec-bouncer/http 9 | 10 | FROM caddy:2.10.0 11 | 12 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-cloudflare-ddns-crowdsec/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with Cloudflare Dynamic DNS/IPs and CrowdSec Bouncer modules 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--cloudflare--ddns--crowdsec%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-cloudflare-ddns-crowdsec) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--cloudflare--ddns--crowdsec%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-cloudflare-ddns-crowdsec) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--cloudflare--ddns--crowdsec%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-cloudflare-ddns-crowdsec) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-cloudflare-ddns-crowdsec.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-cloudflare-ddns-crowdsec.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**Cloudflare DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for Cloudflare DNS-01 ACME validation support | [caddy-dns/cloudflare](https://github.com/caddy-dns/cloudflare) 12 | - [**Cloudflare IPs**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#cloudflare-ips): to retrieve Cloudflare's current [IP ranges](https://www.cloudflare.com/ips/) | [WeidiDeng/caddy-cloudflare-ip](https://github.com/WeidiDeng/caddy-cloudflare-ip) 13 | - [**Dynamic DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dynamic-dns): updates the DNS records with the public IP address of your instance | [mholt/caddy-dynamicdns](https://caddyserver.com/docs/modules/dynamic_dns) 14 | - [**CrowdSec Bouncer**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#crowdsec-bouncer): to blocks malicious traffic based on [CrowdSec](https://www.crowdsec.net/) decisions | [hslatman/caddy-crowdsec-bouncer](https://github.com/hslatman/caddy-crowdsec-bouncer) 15 | 16 | ## Usage 17 | 18 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 19 | 20 | Docker builds for all Caddy supported platforms available at the following container registries: 21 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-cloudflare-ddns-crowdsec) `docker pull serfriz/caddy-cloudflare-ddns-crowdsec:latest` 22 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-cloudflare-ddns-crowdsec) `docker pull ghcr.io/serfriz/caddy-cloudflare-ddns-crowdsec:latest` 23 | - [**Quay**](https://quay.io/serfriz/caddy-cloudflare-ddns-crowdsec) `docker pull quay.io/serfriz/caddy-cloudflare-ddns-crowdsec:latest` 24 | 25 | ### Tags 26 | 27 | The following tags are available for the `serfriz/caddy-cloudflare-ddns-crowdsec` image: 28 | 29 | - `latest` 30 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 31 | 32 | ## Contributing 33 | 34 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 35 | 36 | ## License 37 | 38 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-cloudflare-ddns-security/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/cloudflare \ 6 | --with github.com/WeidiDeng/caddy-cloudflare-ip \ 7 | --with github.com/mholt/caddy-dynamicdns \ 8 | --with github.com/greenpau/caddy-security 9 | 10 | FROM caddy:2.10.0 11 | 12 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-cloudflare-ddns-security/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with Cloudflare Dynamic DNS/IPs and Caddy Security modules 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--cloudflare--ddns--security%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-cloudflare-ddns-security) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--cloudflare--ddns--security%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-cloudflare-ddns-security) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--cloudflare--ddns--security%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-cloudflare-ddns-security) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-cloudflare-ddns-security.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-cloudflare-ddns-security.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**Cloudflare DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for Cloudflare DNS-01 ACME validation support | [caddy-dns/cloudflare](https://github.com/caddy-dns/cloudflare) 12 | - [**Cloudflare IPs**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#cloudflare-ips): to retrieve Cloudflare's current [IP ranges](https://www.cloudflare.com/ips/) | [WeidiDeng/caddy-cloudflare-ip](https://github.com/WeidiDeng/caddy-cloudflare-ip) 13 | - [**Dynamic DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dynamic-dns): updates the DNS records with the public IP address of your instance | [mholt/caddy-dynamicdns](https://caddyserver.com/docs/modules/dynamic_dns) 14 | - [**Caddy Security**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#caddy-security): to add different authentication methods including MFA/2FA support | [greenpau/caddy-security](https://github.com/greenpau/caddy-security) 15 | 16 | ## Usage 17 | 18 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 19 | 20 | Docker builds for all Caddy supported platforms available at the following container registries: 21 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-cloudflare-ddns-security) `docker pull serfriz/caddy-cloudflare-ddns-security:latest` 22 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-cloudflare-ddns-security) `docker pull ghcr.io/serfriz/caddy-cloudflare-ddns-security:latest` 23 | - [**Quay**](https://quay.io/serfriz/caddy-cloudflare-ddns-security) `docker pull quay.io/serfriz/caddy-cloudflare-ddns-security:latest` 24 | 25 | ### Tags 26 | 27 | The following tags are available for the `serfriz/caddy-cloudflare-ddns-security` image: 28 | 29 | - `latest` 30 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 31 | 32 | ## Contributing 33 | 34 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 35 | 36 | ## License 37 | 38 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-cloudflare-ddns/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/cloudflare \ 6 | --with github.com/WeidiDeng/caddy-cloudflare-ip \ 7 | --with github.com/mholt/caddy-dynamicdns 8 | 9 | FROM caddy:2.10.0 10 | 11 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-cloudflare-ddns/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with Cloudflare Dynamic DNS and IPs modules 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--cloudflare--ddns%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-cloudflare-ddns) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--cloudflare--ddns%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-cloudflare-ddns) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--cloudflare--ddns%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-cloudflare-ddns) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-cloudflare-ddns.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-cloudflare-ddns.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**Cloudflare DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for Cloudflare DNS-01 ACME validation support | [caddy-dns/cloudflare](https://github.com/caddy-dns/cloudflare) 12 | - [**Cloudflare IPs**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#cloudflare-ips): to retrieve Cloudflare's current [IP ranges](https://www.cloudflare.com/ips/) | [WeidiDeng/caddy-cloudflare-ip](https://github.com/WeidiDeng/caddy-cloudflare-ip) 13 | - [**Dynamic DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dynamic-dns): updates the DNS records with the public IP address of your instance | [mholt/caddy-dynamicdns](https://caddyserver.com/docs/modules/dynamic_dns) 14 | 15 | ## Usage 16 | 17 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 18 | 19 | Docker builds for all Caddy supported platforms available at the following container registries: 20 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-cloudflare-ddns) `docker pull serfriz/caddy-cloudflare-ddns:latest` 21 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-cloudflare-ddns) `docker pull ghcr.io/serfriz/caddy-cloudflare-ddns:latest` 22 | - [**Quay**](https://quay.io/serfriz/caddy-cloudflare-ddns) `docker pull quay.io/serfriz/caddy-cloudflare-ddns:latest` 23 | 24 | ### Tags 25 | 26 | The following tags are available for the `serfriz/caddy-cloudflare-ddns` image: 27 | 28 | - `latest` 29 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 30 | 31 | ## Contributing 32 | 33 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 34 | 35 | ## License 36 | 37 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-cloudflare/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/cloudflare \ 6 | --with github.com/WeidiDeng/caddy-cloudflare-ip 7 | 8 | FROM caddy:2.10.0 9 | 10 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-cloudflare/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with Cloudflare DNS and IPs modules 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--cloudflare%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-cloudflare) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--cloudflare%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-cloudflare) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--cloudflare%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-cloudflare) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-cloudflare.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-cloudflare.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**Cloudflare DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for Cloudflare DNS-01 ACME validation support | [caddy-dns/cloudflare](https://github.com/caddy-dns/cloudflare) 12 | - [**Cloudflare IPs**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#cloudflare-ips): to retrieve Cloudflare's current [IP ranges](https://www.cloudflare.com/ips/) | [WeidiDeng/caddy-cloudflare-ip](https://github.com/WeidiDeng/caddy-cloudflare-ip) 13 | 14 | ## Usage 15 | 16 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 17 | 18 | Docker builds for all Caddy supported platforms available at the following container registries: 19 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-cloudflare) `docker pull serfriz/caddy-cloudflare:latest` 20 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-cloudflare) `docker pull ghcr.io/serfriz/caddy-cloudflare:latest` 21 | - [**Quay**](https://quay.io/serfriz/caddy-cloudflare) `docker pull quay.io/serfriz/caddy-cloudflare:latest` 22 | 23 | ### Tags 24 | 25 | The following tags are available for the `serfriz/caddy-cloudflare` image: 26 | 27 | - `latest` 28 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 29 | 30 | ## Contributing 31 | 32 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 33 | 34 | ## License 35 | 36 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-cloudns/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/anxuanzi/caddy-dns-ClouDNS 6 | 7 | FROM caddy:2.10.0 8 | 9 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-cloudns/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with ClouDNS DNS module 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--cloudns%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-cloudns) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--cloudns%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-cloudns) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--cloudns%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-cloudns) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-cloudns.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-cloudns.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following module: 11 | - [**ClouDNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for ClouDNS DNS-01 ACME validation support | [anxuanzi/caddy-dns-cloudns](https://github.com/anxuanzi/caddy-dns-cloudns) 12 | 13 | ## Usage 14 | 15 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added module. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 16 | 17 | Docker builds for all Caddy supported platforms available at the following container registries: 18 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-cloudns) `docker pull serfriz/caddy-cloudns:latest` 19 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-cloudns) `docker pull ghcr.io/serfriz/caddy-cloudns:latest` 20 | - [**Quay**](https://quay.io/serfriz/caddy-cloudns) `docker pull quay.io/serfriz/caddy-cloudns:latest` 21 | 22 | ### Tags 23 | 24 | The following tags are available for the `serfriz/caddy-cloudns` image: 25 | 26 | - `latest` 27 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 28 | 29 | ## Contributing 30 | 31 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 32 | 33 | ## License 34 | 35 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-crowdsec-geoip-ratelimit-security-dockerproxy/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/hslatman/caddy-crowdsec-bouncer/http \ 6 | --with github.com/porech/caddy-maxmind-geolocation \ 7 | --with github.com/mholt/caddy-ratelimit \ 8 | --with github.com/greenpau/caddy-security \ 9 | --with github.com/lucaslorentz/caddy-docker-proxy/v2 10 | 11 | FROM caddy:2.10.0 12 | 13 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy 14 | 15 | CMD ["caddy", "docker-proxy"] -------------------------------------------------------------------------------- /caddy-crowdsec-geoip/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/hslatman/caddy-crowdsec-bouncer/http \ 6 | --with github.com/porech/caddy-maxmind-geolocation 7 | 8 | FROM caddy:2.10.0 9 | 10 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-crowdsec-geoip/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with CrowdSec Bouncer and GeoIP Filter modules 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--crowdsec--geoip%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-crowdsec-geoip) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--crowdsec--geoip%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-crowdsec-geoip) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--crowdsec--geoip%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-crowdsec-geoip) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-crowdsec-geoip.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-crowdsec-geoip.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**CrowdSec Bouncer**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#crowdsec-bouncer): to blocks malicious traffic based on [CrowdSec](https://www.crowdsec.net/) decisions | [hslatman/caddy-crowdsec-bouncer](https://github.com/hslatman/caddy-crowdsec-bouncer) 12 | - [**GeoIP Filter:**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#geoip-filter) to allow or block traffic from specific regions based on [Maxmind GeoLite2 database](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) | [porech/caddy-maxmind-geolocation](https://github.com/porech/caddy-maxmind-geolocation) 13 | 14 | ## Usage 15 | 16 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 17 | 18 | Docker builds for all Caddy supported platforms available at the following container registries: 19 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-crowdsec-geoip) `docker pull serfriz/caddy-crowdsec-geoip:latest` 20 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-crowdsec-geoip) `docker pull ghcr.io/serfriz/caddy-crowdsec-geoip:latest` 21 | - [**Quay**](https://quay.io/serfriz/caddy-crowdsec-geoip) `docker pull quay.io/serfriz/caddy-crowdsec-geoip:latest` 22 | 23 | ### Tags 24 | 25 | The following tags are available for the `serfriz/caddy-crowdsec-geoip` image: 26 | 27 | - `latest` 28 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 29 | 30 | ## Contributing 31 | 32 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 33 | 34 | ## License 35 | 36 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-crowdsec/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/hslatman/caddy-crowdsec-bouncer/http 6 | 7 | FROM caddy:2.10.0 8 | 9 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-crowdsec/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with CrowdSec Bouncer module 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--crowdsec%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-crowdsec) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--crowdsec%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-crowdsec) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--crowdsec%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-crowdsec) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-crowdsec.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-crowdsec.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following module: 11 | - [**CrowdSec Bouncer**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#crowdsec-bouncer): to blocks malicious traffic based on [CrowdSec](https://www.crowdsec.net/) decisions | [hslatman/caddy-crowdsec-bouncer](https://github.com/hslatman/caddy-crowdsec-bouncer) 12 | 13 | ## Usage 14 | 15 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added module. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 16 | 17 | Docker builds for all Caddy supported platforms available at the following container registries: 18 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-crowdsec) `docker pull serfriz/caddy-crowdsec:latest` 19 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-crowdsec) `docker pull ghcr.io/serfriz/caddy-crowdsec:latest` 20 | - [**Quay**](https://quay.io/serfriz/caddy-crowdsec) `docker pull quay.io/serfriz/caddy-crowdsec:latest` 21 | 22 | ### Tags 23 | 24 | The following tags are available for the `serfriz/caddy-crowdsec` image: 25 | 26 | - `latest` 27 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 28 | 29 | ## Contributing 30 | 31 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 32 | 33 | ## License 34 | 35 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-desec-crowdsec-geoip-ratelimit/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/desec \ 6 | --with github.com/hslatman/caddy-crowdsec-bouncer/http \ 7 | --with github.com/porech/caddy-maxmind-geolocation \ 8 | --with github.com/mholt/caddy-ratelimit 9 | 10 | FROM caddy:2.10.0 11 | 12 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-desec-geoip-coraza-dockerproxy/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/desec \ 6 | --with github.com/porech/caddy-maxmind-geolocation \ 7 | --with github.com/corazawaf/coraza-caddy/v2 \ 8 | --with github.com/lucaslorentz/caddy-docker-proxy/v2 9 | 10 | FROM caddy:2.10.0 11 | 12 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy 13 | 14 | CMD ["caddy", "docker-proxy"] -------------------------------------------------------------------------------- /caddy-desec-geoip-coraza-dockerproxy/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with deSEC DNS, GeoIP Filter, Coraza WAF and Docker Proxy modules 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--desec--geoip--coraza--dockerproxy%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-desec-geoip-coraza-dockerproxy) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--desec--geoip--coraza--dockerproxy%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-desec-geoip-coraza-dockerproxy) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--desec--geoip--coraza--dockerproxy%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-desec-geoip-coraza-dockerproxy) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-desec-geoip-coraza-dockerproxy.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-desec-geoip-coraza-dockerproxy.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**deSEC DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for deSEC DNS-01 ACME validation support | [caddy-dns/desec](https://github.com/caddy-dns/desec) 12 | - [**GeoIP Filter:**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#geoip-filter) to allow or block traffic from specific regions based on [Maxmind GeoLite2 database](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) | [porech/caddy-maxmind-geolocation](https://github.com/porech/caddy-maxmind-geolocation) 13 | - [**Coraza WAF**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#coraza-waf): a Web Application Firewall (WAF) for Caddy | [corazawaf/coraza-caddy](https://github.com/corazawaf/coraza-caddy) 14 | - [**Docker Proxy**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#docker-proxy): enables Caddy to be used for Docker containers via labels | [lucaslorentz/caddy-docker-proxy](https://github.com/lucaslorentz/caddy-docker-proxy) 15 | 16 | ## Usage 17 | 18 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 19 | 20 | Docker builds for all Caddy supported platforms available at the following container registries: 21 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-desec-geoip-coraza-dockerproxy) `docker pull serfriz/caddy-desec-geoip-coraza-dockerproxy:latest` 22 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-desec-geoip-coraza-dockerproxy) `docker pull ghcr.io/serfriz/caddy-desec-geoip-coraza-dockerproxy:latest` 23 | - [**Quay**](https://quay.io/serfriz/caddy-desec-geoip-coraza-dockerproxy) `docker pull quay.io/serfriz/caddy-desec-geoip-coraza-dockerproxy:latest` 24 | 25 | ### Tags 26 | 27 | The following tags are available for the `serfriz/caddy-desec-geoip-coraza-dockerproxy` image: 28 | 29 | - `latest` 30 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 31 | 32 | ## Contributing 33 | 34 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 35 | 36 | ## License 37 | 38 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-duckdns-crowdsec/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/duckdns \ 6 | --with github.com/hslatman/caddy-crowdsec-bouncer/http 7 | 8 | FROM caddy:2.10.0 9 | 10 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-duckdns-crowdsec/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with DuckDNS DNS and CrowdSec Bouncer modules 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--duckdns--crowdsec%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-duckdns-crowdsec) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--duckdns--crowdsec%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-duckdns-crowdsec) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--duckdns--crowdsec%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-duckdns-crowdsec) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-duckdns-crowdsec.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-duckdns-crowdsec.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**DuckDNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for DuckDNS DNS-01 ACME validation support | [caddy-dns/duckdns](https://github.com/caddy-dns/duckdns) 12 | - [**CrowdSec Bouncer**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#crowdsec-bouncer): to blocks malicious traffic based on [CrowdSec](https://www.crowdsec.net/) decisions | [hslatman/caddy-crowdsec-bouncer](https://github.com/hslatman/caddy-crowdsec-bouncer) 13 | 14 | ## Usage 15 | 16 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 17 | 18 | Docker builds for all Caddy supported platforms available at the following container registries: 19 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-duckdns-crowdsec) `docker pull serfriz/caddy-duckdns-crowdsec:latest` 20 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-duckdns-crowdsec) `docker pull ghcr.io/serfriz/caddy-duckdns-crowdsec:latest` 21 | - [**Quay**](https://quay.io/serfriz/caddy-duckdns-crowdsec) `docker pull quay.io/serfriz/caddy-duckdns-crowdsec:latest` 22 | 23 | ### Tags 24 | 25 | The following tags are available for the `serfriz/caddy-duckdns-crowdsec` image: 26 | 27 | - `latest` 28 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 29 | 30 | ## Contributing 31 | 32 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 33 | 34 | ## License 35 | 36 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-duckdns-ddns-crowdsec-geoip-security-dockerproxy/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/duckdns \ 6 | --with github.com/mholt/caddy-dynamicdns \ 7 | --with github.com/hslatman/caddy-crowdsec-bouncer/http \ 8 | --with github.com/porech/caddy-maxmind-geolocation \ 9 | --with github.com/greenpau/caddy-security \ 10 | --with github.com/lucaslorentz/caddy-docker-proxy/v2 11 | 12 | FROM caddy:2.10.0 13 | 14 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy 15 | 16 | CMD ["caddy", "docker-proxy"] -------------------------------------------------------------------------------- /caddy-duckdns-ddns-crowdsec-geoip-security/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/duckdns \ 6 | --with github.com/mholt/caddy-dynamicdns \ 7 | --with github.com/hslatman/caddy-crowdsec-bouncer/http \ 8 | --with github.com/porech/caddy-maxmind-geolocation \ 9 | --with github.com/greenpau/caddy-security 10 | 11 | FROM caddy:2.10.0 12 | 13 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-duckdns-ddns-crowdsec/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/duckdns \ 6 | --with github.com/mholt/caddy-dynamicdns \ 7 | --with github.com/hslatman/caddy-crowdsec-bouncer/http 8 | 9 | FROM caddy:2.10.0 10 | 11 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-duckdns-ddns-crowdsec/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with DuckDNS Dynamic DNS and CrowdSec Bouncer modules 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--duckdns--ddns--crowdsec%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-duckdns-ddns-crowdsec) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--duckdns--ddns--crowdsec%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-duckdns-ddns-crowdsec) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--duckdns--ddns--crowdsec%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-duckdns-ddns-crowdsec) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-duckdns-ddns-crowdsec.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-duckdns-ddns-crowdsec.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**DuckDNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for DuckDNS DNS-01 ACME validation support | [caddy-dns/duckdns](https://github.com/caddy-dns/duckdns) 12 | - [**Dynamic DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dynamic-dns): updates the DNS records with the public IP address of your instance | [mholt/caddy-dynamicdns](https://caddyserver.com/docs/modules/dynamic_dns) 13 | - [**CrowdSec Bouncer**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#crowdsec-bouncer): to blocks malicious traffic based on [CrowdSec](https://www.crowdsec.net/) decisions | [hslatman/caddy-crowdsec-bouncer](https://github.com/hslatman/caddy-crowdsec-bouncer) 14 | 15 | ## Usage 16 | 17 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 18 | 19 | Docker builds for all Caddy supported platforms available at the following container registries: 20 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-duckdns-crowdsec) `docker pull serfriz/caddy-duckdns-crowdsec:latest` 21 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-duckdns-crowdsec) `docker pull ghcr.io/serfriz/caddy-duckdns-crowdsec:latest` 22 | - [**Quay**](https://quay.io/serfriz/caddy-duckdns-crowdsec) `docker pull quay.io/serfriz/caddy-duckdns-crowdsec:latest` 23 | 24 | ### Tags 25 | 26 | The following tags are available for the `serfriz/caddy-duckdns-crowdsec` image: 27 | 28 | - `latest` 29 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 30 | 31 | ## Contributing 32 | 33 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 34 | 35 | ## License 36 | 37 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-duckdns-ddns/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/duckdns \ 6 | --with github.com/mholt/caddy-dynamicdns 7 | 8 | FROM caddy:2.10.0 9 | 10 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-duckdns-ddns/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with DuckDNS Dynamic DNS module 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--duckdns--ddns%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-duckdns-ddns) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--duckdns--ddns%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-duckdns-ddns) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--duckdns--ddns%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-duckdns-ddns) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-duckdns-ddns.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-duckdns-ddns.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**DuckDNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for DuckDNS DNS-01 ACME validation support | [caddy-dns/duckdns](https://github.com/caddy-dns/duckdns) 12 | - [**Dynamic DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dynamic-dns): updates the DNS records with the public IP address of your instance | [mholt/caddy-dynamicdns](https://caddyserver.com/docs/modules/dynamic_dns) 13 | 14 | ## Usage 15 | 16 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 17 | 18 | Docker builds for all Caddy supported platforms available at the following container registries: 19 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-duckdns-ddns) `docker pull serfriz/caddy-duckdns-ddns:latest` 20 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-duckdns-ddns) `docker pull ghcr.io/serfriz/caddy-duckdns-ddns:latest` 21 | - [**Quay**](https://quay.io/serfriz/caddy-duckdns-ddns) `docker pull quay.io/serfriz/caddy-duckdns-ddns:latest` 22 | 23 | ### Tags 24 | 25 | The following tags are available for the `serfriz/caddy-duckdns-ddns` image: 26 | 27 | - `latest` 28 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 29 | 30 | ## Contributing 31 | 32 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 33 | 34 | ## License 35 | 36 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-duckdns/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/duckdns 6 | 7 | FROM caddy:2.10.0 8 | 9 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-duckdns/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with DuckDNS DNS module 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--duckdns%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-duckdns) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--duckdns%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-duckdns) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--duckdns%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-duckdns) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-duckdns.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-duckdns.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following module: 11 | - [**DuckDNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for DuckDNS DNS-01 ACME validation support | [caddy-dns/duckdns](https://github.com/caddy-dns/duckdns) 12 | 13 | ## Usage 14 | 15 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added module. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 16 | 17 | Docker builds for all Caddy supported platforms available at the following container registries: 18 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-duckdns) `docker pull serfriz/caddy-duckdns:latest` 19 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-duckdns) `docker pull ghcr.io/serfriz/caddy-duckdns:latest` 20 | - [**Quay**](https://quay.io/serfriz/caddy-duckdns) `docker pull quay.io/serfriz/caddy-duckdns:latest` 21 | 22 | ### Tags 23 | 24 | The following tags are available for the `serfriz/caddy-duckdns` image: 25 | 26 | - `latest` 27 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 28 | 29 | ## Contributing 30 | 31 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 32 | 33 | ## License 34 | 35 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-eventsexec/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/mholt/caddy-events-exec 6 | 7 | FROM caddy:2.10.0 8 | 9 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-eventsexec/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with Events Exec module 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--eventsexec%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-eventsexec) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--eventsexec%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-eventsexec) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--eventsexec%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-eventsexec) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-eventsexec.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-eventsexec.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following module: 11 | - [**Events Exec**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#events-exec): implements an event handler that allows to execute commands on the system | [mholt/caddy-events-exec](https://github.com/mholt/caddy-events-exec) 12 | 13 | ## Usage 14 | 15 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 16 | 17 | Docker builds for all Caddy supported platforms available at the following container registries: 18 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-eventsexec) `docker pull serfriz/caddy-eventsexec:latest` 19 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-eventsexec) `docker pull ghcr.io/serfriz/caddy-eventsexec:latest` 20 | - [**Quay**](https://quay.io/serfriz/caddy-eventsexec) `docker pull quay.io/serfriz/caddy-eventsexec:latest` 21 | 22 | ### Tags 23 | 24 | The following tags are available for the `serfriz/caddy-eventsexec` image: 25 | 26 | - `latest` 27 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 28 | 29 | ## Contributing 30 | 31 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 32 | 33 | ## License 34 | 35 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-gandi/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/gandi 6 | 7 | FROM caddy:2.10.0 8 | 9 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-gandi/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with Gandi DNS module 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--gandi%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-gandi) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--gandi%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-gandi) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--gandi%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-gandi) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-gandi.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-gandi.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following module: 11 | - [**Gandi DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for Gandi DNS-01 ACME validation support | [caddy-dns/gandi](https://github.com/caddy-dns/gandi) 12 | 13 | ## Usage 14 | 15 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added module. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 16 | 17 | Docker builds for all Caddy supported platforms available at the following container registries: 18 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-gandi) `docker pull serfriz/caddy-gandi:latest` 19 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-gandi) `docker pull ghcr.io/serfriz/caddy-gandi:latest` 20 | - [**Quay**](https://quay.io/serfriz/caddy-gandi) `docker pull quay.io/serfriz/caddy-gandi:latest` 21 | 22 | ### Tags 23 | 24 | The following tags are available for the `serfriz/caddy-gandi` image: 25 | 26 | - `latest` 27 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 28 | 29 | ## Contributing 30 | 31 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 32 | 33 | ## License 34 | 35 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-namecheap/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/namecheap 6 | 7 | FROM caddy:2.10.0 8 | 9 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-namecheap/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with Netcup DNS module 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--namecheap%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-namecheap) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--namecheap%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-namecheap) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--namecheap%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-namecheap) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-namecheap.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-namecheap.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**Namecheap DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for Namecheap DNS-01 ACME validation support | [caddy-dns/namecheap](https://github.com/caddy-dns/namecheap) 12 | 13 | ## Usage 14 | 15 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 16 | 17 | Docker builds for all Caddy supported platforms available at the following container registries: 18 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-namecheap) `docker pull serfriz/caddy-namecheap:latest` 19 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-namecheap) `docker pull ghcr.io/serfriz/caddy-namecheap:latest` 20 | - [**Quay**](https://quay.io/serfriz/caddy-namecheap) `docker pull quay.io/serfriz/caddy-namecheap:latest` 21 | 22 | ### Tags 23 | 24 | The following tags are available for the `serfriz/caddy-namecheap` image: 25 | 26 | - `latest` 27 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 28 | 29 | ## Contributing 30 | 31 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 32 | 33 | ## License 34 | 35 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-netcup-ddns-geoip/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/netcup \ 6 | --with github.com/mholt/caddy-dynamicdns \ 7 | --replace github.com/libdns/netcup=github.com/Monviech/libdns-netcup@libdns-patch \ 8 | --with github.com/porech/caddy-maxmind-geolocation 9 | 10 | FROM caddy:2.10.0 11 | 12 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-netcup-ddns-geoip/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with Netcup Dynamic DNS and GeoIP Filter modules 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--netcup--ddns--geoip%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-netcup-ddns-geoip) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--netcup--ddns--geoip%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-netcup-ddns-geoip) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--netcup--ddns--geoip%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-netcup-ddns-geoip) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-netcup-ddns-geoip.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-netcup-ddns-geoip.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**Netcup DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for Netcup DNS-01 ACME validation support | [caddy-dns/netcup](https://github.com/caddy-dns/netcup-ddns) 12 | - [**Dynamic DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dynamic-dns): updates the DNS records with the public IP address of your instance | [mholt/caddy-dynamicdns](https://caddyserver.com/docs/modules/dynamic_dns) 13 | - [**GeoIP Filter:**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#geoip-filter) to allow or block traffic from specific regions based on [Maxmind GeoLite2 database](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) | [porech/caddy-maxmind-geolocation](https://github.com/porech/caddy-maxmind-geolocation) 14 | 15 | ## Usage 16 | 17 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 18 | 19 | Docker builds for all Caddy supported platforms available at the following container registries: 20 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-netcup-ddns-geoip) `docker pull serfriz/caddy-netcup-ddns-geoip:latest` 21 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-netcup-ddns-geoip) `docker pull ghcr.io/serfriz/caddy-netcup-ddns-geoip:latest` 22 | - [**Quay**](https://quay.io/serfriz/caddy-netcup-ddns-geoip) `docker pull quay.io/serfriz/caddy-netcup-ddns-geoip:latest` 23 | 24 | ### Tags 25 | 26 | The following tags are available for the `serfriz/caddy-netcup-ddns-geoip` image: 27 | 28 | - `latest` 29 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 30 | 31 | ## Contributing 32 | 33 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 34 | 35 | ## License 36 | 37 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-netcup-ddns/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/netcup \ 6 | --with github.com/mholt/caddy-dynamicdns \ 7 | --replace github.com/libdns/netcup=github.com/Monviech/libdns-netcup@libdns-patch 8 | 9 | FROM caddy:2.10.0 10 | 11 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-netcup-ddns/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with Netcup Dynamic DNS module 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--netcup--ddns%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-netcup-ddns) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--netcup--ddns%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-netcup-ddns) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--netcup--ddns%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-netcup-ddns) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-netcup-ddns.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-netcup-ddns.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**Netcup DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for Netcup DNS-01 ACME validation support | [caddy-dns/netcup](https://github.com/caddy-dns/netcup-ddns) 12 | - [**Dynamic DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dynamic-dns): updates the DNS records with the public IP address of your instance | [mholt/caddy-dynamicdns](https://caddyserver.com/docs/modules/dynamic_dns) 13 | 14 | ## Usage 15 | 16 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 17 | 18 | Docker builds for all Caddy supported platforms available at the following container registries: 19 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-netcup-ddns) `docker pull serfriz/caddy-netcup-ddns:latest` 20 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-netcup-ddns) `docker pull ghcr.io/serfriz/caddy-netcup-ddns:latest` 21 | - [**Quay**](https://quay.io/serfriz/caddy-netcup-ddns) `docker pull quay.io/serfriz/caddy-netcup-ddns:latest` 22 | 23 | ### Tags 24 | 25 | The following tags are available for the `serfriz/caddy-netcup-ddns` image: 26 | 27 | - `latest` 28 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 29 | 30 | ## Contributing 31 | 32 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 33 | 34 | ## License 35 | 36 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-netcup/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/netcup \ 6 | --replace github.com/libdns/netcup=github.com/Monviech/libdns-netcup@libdns-patch 7 | 8 | FROM caddy:2.10.0 9 | 10 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-netcup/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with Netcup DNS module 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--netcup%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-netcup) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--netcup%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-netcup) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--netcup%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-netcup) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-netcup.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-netcup.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**Netcup DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for Netcup DNS-01 ACME validation support | [caddy-dns/netcup](https://github.com/caddy-dns/netcup) 12 | 13 | ## Usage 14 | 15 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 16 | 17 | Docker builds for all Caddy supported platforms available at the following container registries: 18 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-netcup) `docker pull serfriz/caddy-netcup:latest` 19 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-netcup) `docker pull ghcr.io/serfriz/caddy-netcup:latest` 20 | - [**Quay**](https://quay.io/serfriz/caddy-netcup) `docker pull quay.io/serfriz/caddy-netcup:latest` 21 | 22 | ### Tags 23 | 24 | The following tags are available for the `serfriz/caddy-netcup` image: 25 | 26 | - `latest` 27 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 28 | 29 | ## Contributing 30 | 31 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 32 | 33 | ## License 34 | 35 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-netlify-geoip-security/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/netlify \ 6 | --with github.com/porech/caddy-maxmind-geolocation \ 7 | --with github.com/greenpau/caddy-security 8 | 9 | FROM caddy:2.10.0 10 | 11 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-netlify-geoip-security/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with Netlify DNS, GeoIP Filter and Caddy Security modules 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--netlify--geoip--security%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-netlify-geoip-security) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--netlify--geoip--security%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-netlify-geoip-security) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--netlify--geoip--security%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-netlify-geoip-security) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-netlify-geoip-security.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-netlify-geoip-security.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**Netlify DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for Netlify DNS-01 ACME validation support | [caddy-dns/netlify](https://github.com/caddy-dns/netlify) 12 | - [**GeoIP Filter:**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#geoip-filter) to allow or block traffic from specific regions based on [Maxmind GeoLite2 database](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) | [porech/caddy-maxmind-geolocation](https://github.com/porech/caddy-maxmind-geolocation) 13 | - [**Caddy Security**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#caddy-security): to add different authentication methods including MFA/2FA support | [greenpau/caddy-security](https://github.com/greenpau/caddy-security) 14 | 15 | ## Usage 16 | 17 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 18 | 19 | Docker builds for all Caddy supported platforms available at the following container registries: 20 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-netlify-geoip-security) `docker pull serfriz/caddy-netlify-geoip-security:latest` 21 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-netlify-geoip-security) `docker pull ghcr.io/serfriz/caddy-netlify-geoip-security:latest` 22 | - [**Quay**](https://quay.io/serfriz/caddy-netlify-geoip-security) `docker pull quay.io/serfriz/caddy-netlify-geoip-security:latest` 23 | 24 | ### Tags 25 | 26 | The following tags are available for the `serfriz/caddy-netlify-geoip-security` image: 27 | 28 | - `latest` 29 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 30 | 31 | ## Contributing 32 | 33 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 34 | 35 | ## License 36 | 37 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-ovh-crowdsec-geoip/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/ovh \ 6 | --with github.com/hslatman/caddy-crowdsec-bouncer/http \ 7 | --with github.com/porech/caddy-maxmind-geolocation 8 | 9 | FROM caddy:2.10.0 10 | 11 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy -------------------------------------------------------------------------------- /caddy-ovh-crowdsec-geoip/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with OVH DNS, CrowdSec Bouncer and GeoIP Filter modules 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--ovh--crowdsec--geoip%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-ovh-crowdsec-geoip) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--ovh--crowdsec--geoip%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-ovh-crowdsec-geoip) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--ovh--crowdsec--geoip%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-ovh-crowdsec-geoip) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-ovh-crowdsec-geoip.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-ovh-crowdsec-geoip.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**OVH DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for OVH DNS-01 ACME validation support | [caddy-dns/ovh](https://github.com/caddy-dns/ovh) 12 | - [**CrowdSec Bouncer**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#crowdsec-bouncer): to blocks malicious traffic based on [CrowdSec](https://www.crowdsec.net/) decisions | [hslatman/caddy-crowdsec-bouncer](https://github.com/hslatman/caddy-crowdsec-bouncer) 13 | - [**GeoIP Filter:**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#geoip-filter) to allow or block traffic from specific regions based on [Maxmind GeoLite2 database](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) | [porech/caddy-maxmind-geolocation](https://github.com/porech/caddy-maxmind-geolocation) 14 | 15 | ## Usage 16 | 17 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 18 | 19 | Docker builds for all Caddy supported platforms available at the following container registries: 20 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-ovh-crowdsec-geoip) `docker pull serfriz/caddy-ovh-crowdsec-geoip:latest` 21 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-ovh-crowdsec-geoip) `docker pull ghcr.io/serfriz/caddy-ovh-crowdsec-geoip:latest` 22 | - [**Quay**](https://quay.io/serfriz/caddy-ovh-crowdsec-geoip) `docker pull quay.io/serfriz/caddy-ovh-crowdsec-geoip:latest` 23 | 24 | ### Tags 25 | 26 | The following tags are available for the `serfriz/caddy-ovh-crowdsec-geoip` image: 27 | 28 | - `latest` 29 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 30 | 31 | ## Contributing 32 | 33 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 34 | 35 | ## License 36 | 37 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-porkbun-dockerproxy/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/caddy-dns/porkbun \ 6 | --with github.com/lucaslorentz/caddy-docker-proxy/v2 7 | 8 | FROM caddy:2.10.0 9 | 10 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy 11 | 12 | CMD ["caddy", "docker-proxy"] -------------------------------------------------------------------------------- /caddy-porkbun-dockerproxy/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with Porkbun DNS and Docker Proxy modules 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--porkbun--dockerproxy%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-porkbun-dockerproxy) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--porkbun--dockerproxy%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-porkbun-dockerproxy) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--porkbun--dockerproxy%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-porkbun-dockerproxy) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-porkbun-dockerproxy.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-porkbun-dockerproxy.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**Porkbun DNS**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#dns-modules): for Porkbun DNS-01 ACME validation support | [caddy-dns/porkbun](https://github.com/caddy-dns/porkbun) 12 | - [**Docker Proxy**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#docker-proxy): enables Caddy to be used for Docker containers via labels | [lucaslorentz/caddy-docker-proxy](https://github.com/lucaslorentz/caddy-docker-proxy) 13 | 14 | ## Usage 15 | 16 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 17 | 18 | Docker builds for all Caddy supported platforms available at the following container registries: 19 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-porkbun-dockerproxy) `docker pull serfriz/caddy-porkbun-dockerproxy:latest` 20 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-porkbun-dockerproxy) `docker pull ghcr.io/serfriz/caddy-porkbun-dockerproxy:latest` 21 | - [**Quay**](https://quay.io/serfriz/caddy-porkbun-dockerproxy) `docker pull quay.io/serfriz/caddy-porkbun-dockerproxy:latest` 22 | 23 | ### Tags 24 | 25 | The following tags are available for the `serfriz/caddy-porkbun-dockerproxy` image: 26 | 27 | - `latest` 28 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 29 | 30 | ## Contributing 31 | 32 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 33 | 34 | ## License 35 | 36 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. -------------------------------------------------------------------------------- /caddy-ratelimit-dockerproxy-sablier/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM caddy:2.10.0-builder AS builder 3 | 4 | RUN xcaddy build \ 5 | --with github.com/mholt/caddy-ratelimit \ 6 | --with github.com/lucaslorentz/caddy-docker-proxy/v2 \ 7 | --with github.com/acouvreur/sablier/plugins/caddy 8 | 9 | FROM caddy:2.10.0 10 | 11 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy 12 | 13 | CMD ["caddy", "docker-proxy"] -------------------------------------------------------------------------------- /caddy-ratelimit-dockerproxy-sablier/README.md: -------------------------------------------------------------------------------- 1 | # Caddy Docker build with Rate Limit, Docker Proxy and Sablier modules 2 | 3 | [![Docker Hub](https://img.shields.io/badge/Docker%20Hub%20-%20serfriz%2Fcaddy--ratelimit--dockerproxy--sablier%20-%20%230db7ed?style=flat&logo=docker)](https://hub.docker.com/r/serfriz/caddy-ratelimit-dockerproxy-sablier) 4 | [![GitHub](https://img.shields.io/badge/GitHub%20-%20serfriz%2Fcaddy--ratelimit--dockerproxy--sablier%20-%20%23333?style=flat&logo=github)](https://ghcr.io/serfriz/caddy-ratelimit-dockerproxy-sablier) 5 | [![Quay](https://img.shields.io/badge/Quay%20-%20serfriz%2Fcaddy--ratelimit--dockerproxy--sablier%20-%20%23CC0000?style=flat&logo=redhat)](https://quay.io/serfriz/caddy-ratelimit-dockerproxy-sablier) 6 | 7 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/serfriz/caddy-custom-builds?label=Release)](https://github.com/serfriz/caddy-custom-builds/releases) 8 | [![GitHub build status](https://img.shields.io/github/actions/workflow/status/serfriz/caddy-custom-builds/build.caddy-ratelimit-dockerproxy-sablier.yml?label=Build)](https://github.com/serfriz/caddy-custom-builds/actions/workflows/build.caddy-ratelimit-dockerproxy-sablier.yml) 9 | 10 | This image is updated automatically by GitHub Actions when a new version of [Caddy](https://github.com/caddyserver/caddy) is released using the official [Caddy Docker](https://hub.docker.com/_/caddy) image and the following modules: 11 | - [**Rate Limit**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#rate-limit): implements both internal and distributed HTTP rate limiting | [mholt/caddy-ratelimit](https://github.com/mholt/caddy-ratelimit) 12 | - [**Docker Proxy**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#docker-proxy): enables Caddy to be used for Docker containers via labels | [lucaslorentz/caddy-docker-proxy](https://github.com/lucaslorentz/caddy-docker-proxy) 13 | - [**Sablier**](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#sablier): to start your containers on demand and shut them down automatically | [acouvreur/sablier](https://github.com/acouvreur/sablier) 14 | 15 | ## Usage 16 | 17 | Since this image built off the official Caddy Docker image, the same [volumes](https://docs.docker.com/storage/volumes/) and/or [bind mounts](https://docs.docker.com/storage/bind-mounts/), ports mapping, etc. can be used with this container. Additional [environment variables](https://caddyserver.com/docs/caddyfile/concepts#environment-variables) may be needed for the added modules. Please, refer to the repository's [README](https://github.com/serfriz/caddy-custom-builds?tab=readme-ov-file#container-creation) file for further usage instructions. 18 | 19 | Docker builds for all Caddy supported platforms available at the following container registries: 20 | - [**Docker Hub**](https://hub.docker.com/r/serfriz/caddy-ratelimit-dockerproxy-sablier) `docker pull serfriz/caddy-ratelimit-dockerproxy-sablier:latest` 21 | - [**GitHub Packages**](https://ghcr.io/serfriz/caddy-ratelimit-dockerproxy-sablier) `docker pull ghcr.io/serfriz/caddy-ratelimit-dockerproxy-sablier:latest` 22 | - [**Quay**](https://quay.io/serfriz/caddy-ratelimit-dockerproxy-sablier) `docker pull quay.io/serfriz/caddy-ratelimit-dockerproxy-sablier:latest` 23 | 24 | ### Tags 25 | 26 | The following tags are available for the `serfriz/caddy-ratelimit-dockerproxy-sablier` image: 27 | 28 | - `latest` 29 | - `` (eg: `2.7.4`, including: `2.7`, `2`, etc.) 30 | 31 | ## Contributing 32 | 33 | Feel free to contribute, request additional Caddy images with your preferred modules, and make things better by opening an [Issue](https://github.com/serfriz/caddy-custom-builds/issues) or [Pull Request](https://github.com/serfriz/caddy-custom-builds/pulls). 34 | 35 | ## License 36 | 37 | Software under [GPL-3.0](https://github.com/serfriz/caddy-custom-builds/blob/main/LICENSE) ensures users' freedom to use, modify, and distribute it while keeping the source code accessible. It promotes transparency, collaboration, and knowledge sharing. Users agree to comply with the GPL-3.0 license terms and provide the same freedom to others. --------------------------------------------------------------------------------