- Replace Bazarr with NZBGet in Caddyfile routes - Add global DNS provider configuration for ACME DNS-01 challenges - Implement dynamic DNS updater with Bunny.net provider - Add comprehensive security headers and authentication - Update documentation with new requirements and setup instructions - Add .env.example, Dockerfile, cron jobs, and scripts - Modify compose.yml to use local build and add environment variables BREAKING CHANGE: Requires Bunny.net API key and updated Caddyfile configuration
4.6 KiB
Caddy Reverse Proxy med Bunny.net DNS och Dynamisk IP
Detta projekt innehåller konfigurationen för en Docker-installation av Caddy som fungerar som en reverse proxy för olika tjänster, med stöd för Bunny.net DNS och automatisk IP-uppdatering.
Beskrivning
Caddy används för att dirigera trafik till olika tjänster som körs i Docker-containrar. Denna konfiguration inkluderar:
- Säkerhetsrubriker och autentisering för vissa tjänster.
- Bunny.net DNS-integration för ACME DNS-01 challenges (Let's Encrypt-certifikat).
- Dynamisk DNS-uppdatering när den publika IP:n ändras.
- Cron-script för att övervaka IP-förändringar och säkerställa TLS-funktion.
Tjänster
Följande domäner och tjänster hanteras av Caddy:
test.gynther.se→recipe-flutter:5000bazarr.gynther.se→bazarr:6767prowlarr.gynther.se→prowlarr:9696radarr.gynther.se→radarr:7878sonarr.gynther.se→sonarr:8989jellyfin.gynther.se→jellyfin:8096qbittorrent.gynther.se→192.168.50.4:8080wetty.gynther.se→wetty:3001(med autentisering)portainer.gynther.se→portainer:9000gitea.gynther.se→192.168.50.2:3002import.gynther.se→recipe-import-service:3000recept.gynther.se→ Kombinerar flera tjänster:recipe-import-service:3000recipe-frontend:3000recipe-api:8080
Säkerhet
- Autentisering: Vissa tjänster, som
wetty.gynther.se, kräver basautentisering. - Säkerhetsrubriker: Caddy lägger till säkerhetsrubriker för att skydda mot vanliga webbsårbarheter.
- TLS: Automatisk certifikatshantering via Let's Encrypt med Bunny.net DNS-01 challenge.
Installation och Körning
Förutsättningar
- Docker och Docker Compose installerade.
- Bunny.net API-nyckel (för DNS-hantering).
- Miljövariabler konfigurerade (se
.env.example).
Steg
-
Klona repot och navigera till katalogen:
git clone ssh://git@gitea.gynther.se:2222/nilsjohan/caddy-bunny.git cd caddy-bunny -
Skapa en
.env-fil med nödvändiga variabler:cp .env.example .env # Redigera .env och lägg till din Bunny.net API-nyckel och e-post -
Bygg och starta containrar:
docker-compose build docker-compose up -d -
Verifiera att Caddy körs korrekt:
docker-compose logs caddy docker-compose exec caddy caddy list-modules | grep -E "dns.providers.bunny|dynamic_dns"
Konfiguration
Caddyfile
-
Globala inställningar:
acme_dns bunny {env.BUNNY_API_KEY}: Aktiverar ACME DNS-01 challenge med Bunny.net.dynamic_dns: Konfigurerar automatisk uppdatering av DNS-records när IP:n ändras.
-
Site-specifika regler: Se
conf/Caddyfileför detaljerad routing.
Miljövariabler
BUNNY_API_KEY: Bunny.net API-nyckel (för DNS-hantering).CADDY_EMAIL: E-postadress för Let's Encrypt-kontot.
Dynamisk DNS och IP-övervakning
Cron-script
Ett script (scripts/ddns-cert-sync.sh) körs periodiskt (var 5:e minut) för att:
- Kontrollera den publika IP:n.
- Uppdatera DNS-records om IP:n har ändrats.
- Starta om Caddy för att säkerställa TLS-synkronisering.
- Verifiera HTTPS-anslutningar till kritiska domäner.
Installation av Cron
-
Kopiera cron-filen till servern:
scp cron/caddy-ddns-cert.cron user@server:/etc/cron.d/caddy-ddns-cert -
Säkerställa att scriptet är körbart:
chmod +x /app/scripts/ddns-cert-sync.sh
Felsökning
-
Loggar:
- Caddy-loggar:
docker-compose logs caddy - Cron-loggar:
/var/log/cron-caddy-ddns.log - Script-loggar:
/var/log/caddy-ddns-cert-sync.log
- Caddy-loggar:
-
Vanliga problem:
- DNS-uppdateringar misslyckas: Kontrollera att Bunny.net API-nyckeln är korrekt och att zonen och hostnames är korrekt konfigurerade.
- TLS-fel: Verifiera att DNS-records har propagerats korrekt och att Caddy har startats om.
- Caddy startar inte: Kontrollera att alla nödvändiga moduler är inkluderade i den anpassade builden (
docker-compose exec caddy caddy list-modules).
Uppdatering
För att uppdatera konfigurationen:
- Redigera
Caddyfileefter behov. - Starta om Caddy-containern:
docker-compose restart caddy
Rollback
För att återgå till den tidigare versionen:
- Återgå till det gamla repot:
cd ../caddy docker-compose up -d
Licens
MIT