Guide for setting up Caddy 2 on Windows 10 for jellyfin and file server

1. Caddy version (caddy version): Ver 2 newest as of 3.10.21

2. How I run Caddy: Haven’t figured that out yet, hence the post.

a. System environment: Windows 10 enterprise with jellyfin. Nothing else.

b. Command:

paste command here

c. Service/unit/compose file:

paste full file contents here

d. My complete Caddyfile or JSON config: Nothing yet.

paste config here, replacing this text
use `caddy fmt` to make it readable
DO NOT REDACT anything except credentials
or helpers will be sad

3. The problem I’m having: Tried for hours with no luck other than seeing the hello world.

4. Error messages and/or full log output:

5. What I already tried: Looking for a guide to walk me threw setting this up properly on my platform.

6. Links to relevant resources: I’ve followed this guide but it doesn’t work for me. https://www.reddit.com/r/jellyfin/comments/ek8ugr/windows_reverse_proxy_guide/ To conclude, I’m looking to install this on windows 10 (not server) to use with jellyfin, and to create a file server that I can access on the road. I am very new to this, but really enjoy learning, so your hand-holding help would be greatly appreciated.

There’s a newer guide here for Caddy v2, give that a shot. The one you linked was for Caddy v1, which is EOL.

Yes, sorry i posted the wrong one. I am using the newest version but I just can’t get it to run. I have tried the basics by just having a folder on the desktop with caddy2 and the Caddyfile showing hello world, and was able to see that but that’s where I get lost. I think a big issue is that I don’t understand the conf file. I tried the file on jellyfin that reads as shown below, but I’m running on local pc and not through a website url so I don’t know what to put? Thanks : ```
yourdomain.duckdns.org { # your DNS address
root c:\caddy # root of your install
basicauth / user password # user/pass authorization
}

jellyfin.yourdomain.duckdns.org { # the domain used to access jellyfin
proxy / localhost:8096 { # the location of your install

	transparent         # shorthand for passthru info, details on caddy site
}

}

I put my dns addy where it says, but where do i enter a use and password for caddy. I made one up and placed in the file just to fill it in, hoping somewhere in this process I’d be asked for it. Lastly, I don’t have a domain that I am using jellyfin on outside of my localhost pc, so what goes there. Thanks for your help.

Please use ``` on their own lines, before and after your config when posting it here, to preserve formatting. It’s very hard to read without it.

Your config still looks like Caddy v1 config. Please consult the upgrade guide to see the differences:

Any idea where I can find a v2 caddyfile already done for my setup needs? I can’t believe no one has done a youtube on v2 setup for windows. Thanks

Did you read through this guide I linked? It has everything you need:

Also, the Jellyfin docs have a section about Caddy:

https://jellyfin.org/docs/general/networking/caddy.html

Yes, that’s what i posted and you said it appeared to be version 1 for the caddyfile. Due to the lack of updated information on V2, it appears Caddy is reserved for those in the coding world. Like I said, I can get the basic hello world page to show, indicating the server is running, but it doesn’t appear that anyone can really tell me how to set it up to protect jellyfin and also act as a file server. I’ve installed and successfully set up servers yet this is causing issues. lol Thanks anyway. Perhaps someone will write a full install guide one day for my need with Windows.

Maybe this will help me out if you can answer it. On jellyfin, it states that "To get HTTPS, simply change the first line to your domain name, with their example being: 1st line: example.com - 2nd line being: reverse_proxy 127.0.0.1:8096. I’m not running this on a domain, simply on my pc with localhost and a DNS pointed to it, so what goes in place of example.com? That will help clear up a few things for sure. If you could also answer the first question regarding user name and password, as well as the domain to use with jellyfin in the caddyfile. Thanks.

No, the pastebin in that reddit post, i.e. Media Server only v2 - Pastebin.com, is a Caddy v2 config. That’s not what you posted. What you posted used proxy which is the Caddy v1 directive. In v2, it’s reverse_proxy. For example, this line in what you posted:

I really don’t understand what the problem is here. That guide on reddit is very complete and covers everything you might need to run Caddy on windows to proxy Jellyfin.

What do you mean by “protect”? Jellyfin has user authentication built-in.

This is a bit contradictory. If you have “a DNS pointed to it” then you have a domain. DNS is an acronym for “domain name system”.

If you just want Caddy to proxy requests to Jellyfin without HTTPS, then you can use :80 as your site address instead of your domain… but most people want HTTPS so their connections between their server and the clients are encrypted, and for that, you need a domain.

This article may help you better understand:

1 Like

I think that’s where the issue is, being that I want https on my server from my local host so when I log in remotely, or anyone else, I can use https. In example, my security NVR login runs over https, so I assumed I could do the same here. This is the first time I’ve played with doing a home server without a www domain. Thanks again for your help. To sum it up, if I want https I need to put jellyfin on a public domain web service outside my local network? My main goal was to use jellyfin it to serve my movies at home, in which I’ve been using Serviio with dlna support, but also be able to access them remotely, with https protection. .

If you want local HTTPS, then you can add tls internal to your config:

If you go that route, then all devices will not trust your server’s certificate, until you install Caddy’s root CA certificate on those devices.

If you want a trusted certificate, i.e. issued by Let’s Encrypt, then you need a domain that has a public DNS record pointing to your IP address, and ports 80 and 443 open and forwarded to your server so that it can be reached from outside your network. Then all you need to do is tell Caddy the domain name to use and the rest is automated.

1 Like

Thank you, that cleared up a lot of my confusion.

This is my caddy configuration for a jellyfin reverse proxy, my local network is 192.168.131.0 and jellyfin runs on another computer (192.168.131.121). If you are running jellyfin on the same PC as caddy then you could reverse proxy 127.0.0.1:8096:

jellyfin.mysubdomain.duckdns.org {

        tls myemail@gmail.com
        encode gzip
        @external {
                not remote_ip 192.168.131.0/24
        }
        log {
                output file /var/log/caddy/jellyfin.log {
                roll true                       # Rotate logs, enabled by default
                roll_size_mb 5                  # Set max size 5 MB
                roll_gzip true                  # Whether to compress rolled files
                roll_local_time true            # Use localhost time
                roll_keep 2                     # Keep at most 2 log files
                roll_keep_days 7                # Keep log files for 7 days
                level error 
                }
        }
        reverse_proxy 192.168.131.121:8096 
}

This topic was automatically closed after 30 days. New replies are no longer allowed.