I have a minipc with proxmox on it. I have tried caddy in a lxc to set up DNS challenges to my owned domain and I set the url in my router to point to the IP (for example, proxmox.DOMAIN.com could be 192.168.10.22). The hope was to have everything local within my house and nothing needs the internet to be accessed. Some services I can host in proxmox NEED https to use, which I could not get working with my own certs or ones proxmox could make, thus Caddy. However, I get proxmox with a proper cert, but i cannot get any of the other services from proxmox working. If I were doing it all manually, I would expect DNS issues with the domain, but from what I understand, Caddy by default does wildcard domains which should mean that my services should work. but they do not. Networking is new to me so perhaps I am missing something obvious. Any guidance would be appreciated.
EDIT: You guys helped me find my issue! Turns out that I did everything right except for 1 simple step. Once I have everything set up, I have my router point the urls to the CADDY address, not the services address. For example, I had bookmarks.DOMAIN.com set in my router to point at the readeck lxc ip and it didn’t work. Changing that to the Caddy ip fixed it. So all my services would point to the same ip (caddy). I do not know how I never saw this in any of the tutorials/videos/guides I checked, but THANK YOU for pointing it out to me.
Now the only odd thing is why does the proxmox ip work fine without pointing to caddy? I will leave it as is, but its the odd one out :/
IME Caddy will not do wildcard domains “by default” if you just configure sub.domain.com {} for everything. It will try to create a unique cert for each. You have to specifically configure it to use a wildcard cert.
Short answer, it should work as you describe, everything local, no need to expose anything.
More information is needed to help.
Its either the caddy setup, maybe proxmox internal networking? Or most likely DNS, its almost always DNS.
I had some success using nginx reverse proxy with let’s encrypt.
There should be a couple of guides online that will tell you how to do that.
I was running Nginx through Portainer on Proxmox, and the Let’s Encrypt certificate was set to my local IP address for nginx.
This is for traefik but might help to understand the process and change it for caddy (https://youtu.be/liV3c9m_OX8)
You should have
For local only services (Vaultwarden) and
For external things (immich)
I’m your router / Pihole locally, you setup the above URLs to point to the IP of caddy
I’m your router / Pihole locally, you setup the above URLs to point to the IP of caddy This is what I must be doing wrong. I have my router point to the url for the lxc services. So it is supposed to point to caddy. Thank you for the tip. I will try it out!
My setup: My domain-> vps <-wireguard->home ubuntu server behind 4G modem. My home server runs letsencrypt certbot for .mydomain.com My ubuntu server at home runs adguard home as DNS/DHCP/Android Private VPN. I have rules for adguard to forward any client coming from home lan 192.168.1. accessing mydomain.com to go directly to my home server local ip.
That way I run same certs and can access my local services via same urls - immich.mydomain.com runs from outside and inside my network, with ultra fast local uploads without using my modem data, etc.
or ones proxmox could make
In proxmox, ACME is a service for the root CA of the cluster. It does use letsencrypt, but it does not provide certs for clients.
Sounds like you are probably conflating DNS and PKI certificates.
Yes, I probably did. I am familiar with computers, but know next to nothing about networking. So I was trying a bunch of various things I could find to try to get it to work. the proxmox ACME did not get me certs for my server or for a vm of proxmox so I abandoned that method and tried caddy and GoDoxy but never got them to get certs for services after various attempts. So I reached out here since there are many more people smarter than me here.
Firstly, wildcards are convenient but they break your functionality of authenticating the server to which you are connecting which is half of what TLS does. That may or may not be important to you.
Does it work without TLS? Start there, making sure dns and reverse proxy works, works, then add the certificate/TLS termination.
Its good practice to handle https on a reverse proxy. Also who actually does cert pinning?
I am neither stating TLS termination is wrong, nor providing instructions to cert pinning.
Firstly, wildcards are convenient but they break your functionality of to which you are connecting which is half of what TLS does. That may or may not be important to you.
You are implying that https is supposed to be done by the individual server and not reverse proxy. Since otherwise you could not “authenticating the server”



