Files
caddy-bunny/README.md
T
Nils-Johan Gynther 76933d21c1 feat(caddy): integrate Bunny.net DNS and dynamic IP support
- 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
2026-06-04 17:23:35 +02:00

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.serecipe-flutter:5000
  • bazarr.gynther.sebazarr:6767
  • prowlarr.gynther.seprowlarr:9696
  • radarr.gynther.seradarr:7878
  • sonarr.gynther.sesonarr:8989
  • jellyfin.gynther.sejellyfin:8096
  • qbittorrent.gynther.se192.168.50.4:8080
  • wetty.gynther.sewetty:3001 (med autentisering)
  • portainer.gynther.seportainer:9000
  • gitea.gynther.se192.168.50.2:3002
  • import.gynther.serecipe-import-service:3000
  • recept.gynther.se → Kombinerar flera tjänster:
    • recipe-import-service:3000
    • recipe-frontend:3000
    • recipe-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

  1. Klona repot och navigera till katalogen:

    git clone ssh://git@gitea.gynther.se:2222/nilsjohan/caddy-bunny.git
    cd caddy-bunny
    
  2. 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
    
  3. Bygg och starta containrar:

    docker-compose build
    docker-compose up -d
    
  4. 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/Caddyfile fö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:

  1. Kontrollera den publika IP:n.
  2. Uppdatera DNS-records om IP:n har ändrats.
  3. Starta om Caddy för att säkerställa TLS-synkronisering.
  4. Verifiera HTTPS-anslutningar till kritiska domäner.

Installation av Cron

  1. Kopiera cron-filen till servern:

    scp cron/caddy-ddns-cert.cron user@server:/etc/cron.d/caddy-ddns-cert
    
  2. 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
  • 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:

  1. Redigera Caddyfile efter behov.
  2. Starta om Caddy-containern:
    docker-compose restart caddy
    

Rollback

För att återgå till den tidigare versionen:

  1. Återgå till det gamla repot:
    cd ../caddy
    docker-compose up -d
    

Licens

MIT