76933d21c1
- 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
138 lines
4.6 KiB
Markdown
138 lines
4.6 KiB
Markdown
# 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:5000`
|
|
- `bazarr.gynther.se` → `bazarr:6767`
|
|
- `prowlarr.gynther.se` → `prowlarr:9696`
|
|
- `radarr.gynther.se` → `radarr:7878`
|
|
- `sonarr.gynther.se` → `sonarr:8989`
|
|
- `jellyfin.gynther.se` → `jellyfin:8096`
|
|
- `qbittorrent.gynther.se` → `192.168.50.4:8080`
|
|
- `wetty.gynther.se` → `wetty:3001` (med autentisering)
|
|
- `portainer.gynther.se` → `portainer:9000`
|
|
- `gitea.gynther.se` → `192.168.50.2:3002`
|
|
- `import.gynther.se` → `recipe-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:**
|
|
```bash
|
|
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:**
|
|
```bash
|
|
cp .env.example .env
|
|
# Redigera .env och lägg till din Bunny.net API-nyckel och e-post
|
|
```
|
|
|
|
3. **Bygg och starta containrar:**
|
|
```bash
|
|
docker-compose build
|
|
docker-compose up -d
|
|
```
|
|
|
|
4. **Verifiera att Caddy körs korrekt:**
|
|
```bash
|
|
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:
|
|
```bash
|
|
scp cron/caddy-ddns-cert.cron user@server:/etc/cron.d/caddy-ddns-cert
|
|
```
|
|
|
|
2. Säkerställa att scriptet är körbart:
|
|
```bash
|
|
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:
|
|
```bash
|
|
docker-compose restart caddy
|
|
```
|
|
|
|
## Rollback
|
|
|
|
För att återgå till den tidigare versionen:
|
|
1. Återgå till det gamla repot:
|
|
```bash
|
|
cd ../caddy
|
|
docker-compose up -d
|
|
```
|
|
|
|
## Licens
|
|
|
|
MIT
|