Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
content:serverbasics:docker-caddy [2024/01/14 21:17] – [Create Caddy Yaml] Daniel | content:serverbasics:docker-caddy [2025/02/08 14:12] (aktuell) – Daniel | ||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
Caddy is a powerful full featured webserver, which is also easy to use and setup. | Caddy is a powerful full featured webserver, which is also easy to use and setup. | ||
- | In this guide i will show how to use Caddy as SSL- Proxy for your services to deliver them to the internet via name- based virtual hosting. | + | In this guide i will show how to use Caddy as SSL- Reverse- Proxy for your services to deliver them to the internet via name- based virtual hosting. |
===== Prerequisites ===== | ===== Prerequisites ===== | ||
Zeile 11: | Zeile 11: | ||
===== DNS- Records ===== | ===== DNS- Records ===== | ||
- | You will also need a domainname like '' | + | You will also need a domainname like '' |
+ | When your service sucessfully resolves, you can use it in Caddy as written beneath. | ||
- | ==== Register some Domain ==== | ||
- | |||
- | There are many free Domainproviders out there. I chose dynv6 ( [[https:// | ||
- | |||
- | bla (not ready) blah - setup IPV4 , setup IPV6, bla link to [[.: | ||
- | |||
- | ==== Define services ==== | ||
- | |||
- | After that, create an A-Name record (or AAAA- Name for ipv6) per service without specifying the ip, som that the dynamic ip of the domain will be taken. Only paste the servicename, | ||
- | |||
- | In our example this would be nice: | ||
- | |||
- | '' | ||
===== Create Caddy Yaml ===== | ===== Create Caddy Yaml ===== | ||
Zeile 35: | Zeile 23: | ||
For me, this would be '' | For me, this would be '' | ||
Change to that directory and create the following docker-compose.yml file in it, putting in the following: | Change to that directory and create the following docker-compose.yml file in it, putting in the following: | ||
- | |||
< | < | ||
- | version: " | ||
services: | services: | ||
Zeile 53: | Zeile 39: | ||
cap_add: | cap_add: | ||
- NET_ADMIN | - NET_ADMIN | ||
- | |||
healthcheck: | healthcheck: | ||
test: "wget --no-verbose --tries=1 --spider https:// | test: "wget --no-verbose --tries=1 --spider https:// | ||
Zeile 69: | Zeile 54: | ||
#Do NOT use networkmode: | #Do NOT use networkmode: | ||
# network_mode: | # network_mode: | ||
- | ports: | + | |
- | | + | - " |
- | | + | - " |
- | | + | - " |
volumes: | volumes: | ||
caddy_data: | caddy_data: | ||
- | driver: local | ||
- | driver_opts: | ||
- | device: "" | ||
- | type: "" | ||
- | o: " | ||
caddy_config: | caddy_config: | ||
- | driver: local | ||
- | driver_opts: | ||
- | device: "" | ||
- | type: "" | ||
- | o: " | ||
caddy_certs: | caddy_certs: | ||
- | driver: local | ||
- | driver_opts: | ||
- | device: "" | ||
- | type: "" | ||
- | o: " | ||
caddy_sites: | caddy_sites: | ||
- | driver: local | ||
- | driver_opts: | ||
- | device: "" | ||
- | type: "" | ||
- | o: " | ||
</ | </ | ||
- | Also, check that your Firewall has those Ports open on your hosts and that Port Forwarding in your Router is enabled for ipv4 and for ipv6 that the host+ports are not blocked. | + | Also, check that your Firewall has those Port 80 + 443 open on your host and that Port Forwarding in your Router is enabled for ipv4 and for ipv6. |
===== Caddy Configuration ===== | ===== Caddy Configuration ===== | ||
Zeile 109: | Zeile 73: | ||
if you omit the Caddyfile, the server will already work, but we can directly Skip those tests and create the file '' | if you omit the Caddyfile, the server will already work, but we can directly Skip those tests and create the file '' | ||
< | < | ||
+ | |||
https:// | https:// | ||
header Strict-Transport-Security max-age=31536000; | header Strict-Transport-Security max-age=31536000; | ||
Zeile 116: | Zeile 81: | ||
</ | </ | ||
- | replace mylocalhostname with your actual hostname (can be found out by calling hostname in your terminal). | + | replace |
Don't use localhost - see above. If you do not have a clue which hostname you have, better specify some fixed one which you can freely chose and edit ''/ | Don't use localhost - see above. If you do not have a clue which hostname you have, better specify some fixed one which you can freely chose and edit ''/ | ||
Zeile 123: | Zeile 88: | ||
Thats all - use '' | Thats all - use '' | ||
- | You now have a powerful proxy, that can transparently deliver your Dockers to the world with SSL- encryption enabled. | + | If the Caddy doe not return any Errors, you now have a powerful proxy, that can transparently deliver your Dockers to the world with SSL- encryption enabled. |