this post was submitted on 18 Mar 2025
20 points (100.0% liked)

Selfhosted

44780 readers
3076 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

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!

top 17 comments
sorted by: hot top controversial new old
[–] roofuskit@lemmy.world 7 points 4 days ago* (last edited 4 days ago) (1 children)

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@lemm.ee 9 points 4 days ago

Sounds like a bad prank show

YOU GOT YAML'D! 🤪

[–] banshee@lemmy.dbzer0.com 5 points 4 days ago (1 children)

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

[–] WubbyGeth@lemmy.world 2 points 4 days ago (2 children)

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 5 points 4 days ago* (last edited 4 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
[–] enemenemu@lemm.ee 1 points 4 days ago

You can format it automatically

[–] WubbyGeth@lemmy.world 4 points 4 days ago (1 children)

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 6 points 4 days ago (1 children)

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.

[–] badlotus@discuss.online 11 points 4 days ago

Seems like AI wrote this. And did a good job!

[–] enemenemu@lemm.ee 4 points 4 days ago* (last edited 4 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 ...

[–] funkajunk@lemm.ee 4 points 4 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

[–] WubbyGeth@lemmy.world 1 points 3 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.

[–] muntedcrocodile@lemm.ee 2 points 4 days ago* (last edited 4 days ago) (3 children)

Ik this sounds like a stackoverflow kind of thing to say but why u using caddy not nginx?

Edit: I've uploaded my nginx config if you would like to take a look https://github.com/muntedcrocodile/nginxconf

[–] roofuskit@lemmy.world 6 points 4 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.

[–] fatalicus@lemmy.world 5 points 4 days ago (1 children)

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

[–] muntedcrocodile@lemm.ee 1 points 4 days ago

Nginx does not have default SSL but the example I've uploaded has its quite a simple setup and gives you far greater control and modularity.

[–] funkajunk@lemm.ee 2 points 4 days ago

nginx >>>>>