--- title: description: date: 2023-04-16 lang: zh-tw tags: - 樹莓派 - Linux - docker --- # 樹莓派筆記-安裝 Caddy in docker 嘗試過蠻多的的反代理 nginx, traefik 還是覺得Caddy比較好使用 因為有使用Cloudflare的插件 因此需要自己編譯Caddy ## Dockerfile `caddy.Dockerfile` ```Dockerfile= FROM caddy:2.6-builder-alpine AS builder RUN xcaddy build \ --with github.com/caddy-dns/cloudflare FROM caddy:2.6.4-alpine COPY --from=builder /usr/bin/caddy /usr/bin/caddy ``` ## docker-compose `docker-compose.yml` ```yml= version: '3.3' networks: default: name: ${DOCKER_MY_NETWORK} external: true services: caddy: build: context: . dockerfile: Dockerfile.caddy container_name: caddy hostname: caddy restart: unless-stopped ports: - "80:80" - "443:443" - "443:443/udp" volumes: #讀取Host主機時間 - ${HOME_PATH}/caddy/Caddyfile:/etc/caddy/Caddyfile:ro - ${HOME_PATH}:/data - ${HOME_PATH}:/config - ${HOME_PATH}/logs/caddy:/var/log/caddy env_file: - stack.env ``` ## Caddyfile `Caddyfile` ```Caddyfile= { acme_dns cloudflare {$CLOUDFLARE_API_TOKEN} } whoami.{$MY_DOMAIN} { log { output file /var/log/caddy/access.log } reverse_proxy whoami:80 } portainer.{$MY_DOMAIN} { log { output file /var/log/caddy/access.log } reverse_proxy portainer:9000 } ``` > reverse_proxy 容器名:容器使用端口 ## env `stack.env` ```yml= # common.env: Set development environment DOCKER_MY_NETWORK=caddy_net MY_DOMAIN=example.com HOME_PATH=<your path> CLOUDFLARE_API_TOKEN=<cloudflare api token goes here> ``` > 創建API參考 > ![image](https://i.imgur.com/YWxgUiO.png) ## 使用 登入設定好的網址就會看到結果了 `whoami.{$MY_DOMAIN}` ```html Hostname: 524b538bb131 IP: 127.0.0.1 IP: 172.18.0.3 RemoteAddr: 172.18.0.2:51166 GET / HTTP/1.1 ... ``` `portainer.{$MY_DOMAIN}` ```html portainer 登入介面 ``` ## Ref * https://hub.docker.com/_/caddy * https://github.com/DoTheEvo/selfhosted-apps-docker/tree/master/caddy_v2 * https://github.com/DoTheEvo/selfhosted-apps-docker/tree/master/caddy_v2#--create-api-token-on-cloudflare * https://caddy.community/t/infinite-redirection/3230/4 * https://docs.docker.com/engine/reference/commandline/build/#specify-a-dockerfile--f * https://github.com/compose-spec/compose-spec/blob/master/build.md#build-definition