Spyke

Syndicated from the fediverse. Read and engage on the original instance.

View original on lemmy.world
selfhosted·SelfhostedbyWubbyGeth

Caddy reverse proxy

I 'm trying to setup a caddy reverse proxy within Docker and I am following the guide in this YouTube video

https://www.youtube.com/watch?v=qj45uHP7Jmo but when I the run docker compose up -d command I get this error:

failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/home/Joe/container/caddy/Caddyfile" to rootfs at "/etc/caddy/Caddyfile": create mountpoint for /etc/caddy/Caddyfile mount: cannot create subdirectories in "/var/lib/docker/overlay2/49e15938cd9c418a331b963f6fbbd3bba726b28748113ee8d028f6adf034b525/merged/etc/caddy/Caddyfile": not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

I am a bit perplexed on what I am doing wrong so any advice would be appreciated!

View original on lemmy.world
19

16 replies

lemmy.world

Can you share your compose file? You should be able to paste into code blocks in a comment or your original post. It's likely you've yamld something wrong.

7
WubbyGethreply
lemmy.world

I do but I am wondering if the syntax in my caddyfile is wrong.

I did get past my initial error thanks to this group but I cannot get to my portainer via host name still.

2
Xanzareply

I do but I am wondering if the syntax in my caddyfile is wrong.

Caddy can format caddyfiles;

caddy fmt --overwrite /home/Joe/container/caddy/Caddyfile
caddy validate --config /home/Joe/container/caddy/Caddyfile --adapter caddyfile
5
lemmy.world

Here is my YAMLD YAML haha

version: '3.3' networks: caddy: services: portainer: image: portainer/portainer-ce:latest container_name: portainer2 restart: unless-stopped security_opt: - no-new-privileges:true volumes: - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock:ro - /home/Joe/containers/portainer/portainer-data:/data networks: - caddy ports: - 9000:9000

caddy: image: caddy:latest restart: unless-stopped container_name: caddy ports: - 80:80 - 443:443 volumes: - /home/Joe/container/caddy/Caddyfile:/etc/caddy/Caddyfile - /home/Joe/container/caddy/site:/srv - /home/Joe/container/caddy/caddy_data:/data - /home/Joe/container/caddy/caddy_config:/config networks: - caddy volumes: caddy_data:

4
HelloRootreply
lemy.lol

The error suggests that you're trying to mount a file (Caddyfile) onto a directory or vice versa. Let's debug this step by step.

Steps to Fix:

  1. Check if the path exists and is correct Run:

    ls -ld /home/Joe/container/caddy/Caddyfile
    
    • If it’s a directory, it should be a file instead.
    • If it doesn’t exist, create an empty one:
      touch /home/Joe/container/caddy/Caddyfile
      
  2. Ensure correct permissions

    chmod 644 /home/Joe/container/caddy/Caddyfile
    
  3. Check YAML Formatting
    Your docker-compose.yml seems to have incorrect indentation and improper quotes around version. Here's a fixed version:

    version: "3.3"
    
    networks:
      caddy:
    
    services:
      portainer:
        image: portainer/portainer-ce:latest
        container_name: portainer2
        restart: unless-stopped
        security_opt:
          - no-new-privileges:true
        volumes:
          - /etc/localtime:/etc/localtime:ro
          - /var/run/docker.sock:/var/run/docker.sock:ro
          - /home/Joe/containers/portainer/portainer-data:/data
        networks:
          - caddy
        ports:
          - 9000:9000
    
      caddy:
        image: caddy:latest
        restart: unless-stopped
        container_name: caddy
        ports:
          - 80:80
          - 443:443
        volumes:
          - /home/Joe/container/caddy/Caddyfile:/etc/caddy/Caddyfile
          - /home/Joe/container/caddy/site:/srv
          - /home/Joe/container/caddy/caddy_data:/data
          - /home/Joe/container/caddy/caddy_config:/config
        networks:
          - caddy
    
  4. Restart Docker and Try Again

    docker compose down
    docker compose up -d
    

If the error persists, check docker logs caddy for additional hints.

6

I have always had trouble whenever I tried mounting files, and it seems that you're getting the same error, "not a directory".

Stick to mounting directories and you should be fine

/home/Joe/container/caddy:/etc/caddy

4

I was successful in installing and using caddy directly on my host instead of podman (docker).

Edit: someone doesn't like that I succeeded at it ...

3

Thank you everyone for your help!

I elected to start from scratch and use nginx and have come across another issue that I am hoping someone can shed some light on.

  • I've purchased a domain.
  • configured CloudFlare to use as my DNS.
  • set up a CNAME for my two test containers.
  • set up my SSL cert in nginx
  • forwarded the proper ports on my router for my test containers.
  • Configured two hosts. AudioBookShelf and Portainer

I can get to my Audiobookshelf perfectly from the web but when I try to reach my portainer it just re-directs to my audiobookshelf container.

When I disable audiobookshelf and attempt access my portainer I now get error code 521 website down. I am not sure what I misconfigured.

1

Caddy is growing in popularity and finding its ways into more and more tutorials. Traefik and Caddy seem to be found in more reverse proxy tutorials/docs than NPM anymore. Forget about SWAG these days.

6
fatalicusreply
lemmy.world

Because caddy has built in, and default enabled, SSL of all sites using letsencrypt, something nginx doesn't have from what I can see.

5

You reached the end

Caddy reverse proxy | Spyke