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!

  • @WubbyGeth@lemmy.worldOP
    link
    fedilink
    English
    12 days ago

    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.

  • @roofuskit@lemmy.world
    link
    fedilink
    English
    7
    edit-2
    3 days ago

    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.

    • funkajunk
      link
      fedilink
      English
      93 days ago

      Sounds like a bad prank show

      YOU GOT YAML’D! 🤪

  • 👻👻👻
    link
    fedilink
    English
    53 days ago

    Do you already have the file created and populated at ‘/home/Joe/container/caddy/Caddyfile’ before running your up command?

    • @WubbyGeth@lemmy.worldOP
      link
      fedilink
      English
      23 days ago

      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.

      • @Xanza@lemm.ee
        link
        fedilink
        English
        5
        edit-2
        2 days ago

        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
        
  • @WubbyGeth@lemmy.worldOP
    link
    fedilink
    English
    43 days ago

    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:

    • @HelloRoot@lemy.lol
      link
      fedilink
      English
      63 days ago

      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.

  • funkajunk
    link
    fedilink
    English
    43 days ago

    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

  • @enemenemu@lemm.ee
    link
    fedilink
    English
    3
    edit-2
    2 days ago

    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 …

    • fatalicus
      link
      fedilink
      English
      52 days ago

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

    • @roofuskit@lemmy.world
      link
      fedilink
      English
      63 days ago

      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.