diff --git a/.env.example b/.env.example index 3dae50c..3906467 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,5 @@ +COMPOSE_FILE=docker-compose.yml +COMPOSE_PATH_SEPARATOR=: USER_ID=1000 GROUP_ID=1000 TIMEZONE="America/New_York" @@ -8,7 +10,8 @@ PIA_USER= PIA_PASS= PIA_LOCAL_NETWORK="192.168.0.0/16" HOSTNAME= +ADGUARD_HOSTNAME= LETS_ENCRYPT_EMAIL= CLOUDFLARE_EMAIL= CLOUDFLARE_DNS_API_TOKEN= -CLOUDFLARE_ZONE_API_TOKEN= \ No newline at end of file +CLOUDFLARE_ZONE_API_TOKEN= diff --git a/.gitignore b/.gitignore index 72a7cec..785da39 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,10 @@ /letsencrypt !/letsencrypt/.gitkeep /jellyfin -!/jellyfin/.gitkeep \ No newline at end of file +!/jellyfin/.gitkeep +/adguardhome/certs +!/adguardhome/certs/.gitkeep +/adguardhome/conf +!/adguardhome/conf/.gitkeep +/adguardhome/work +!/adguardhome/work/.gitkeep diff --git a/adguardhome/certs/.gitkeep b/adguardhome/certs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/adguardhome/conf/.gitkeep b/adguardhome/conf/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/adguardhome/docker-compose.yml b/adguardhome/docker-compose.yml new file mode 100644 index 0000000..4443ee7 --- /dev/null +++ b/adguardhome/docker-compose.yml @@ -0,0 +1,68 @@ +version: '3.9' + +services: + dhcp-relay: + image: modem7/dhcprelay:latest + container_name: dhcp-relay + restart: always + command: ["-id", "enp2s0", "-iu", "br_adguard", "10.0.0.10"] + cap_add: + - NET_ADMIN + network_mode: host + mem_limit: 20m + mem_reservation: 6m + + adguardhome: + image: adguard/adguardhome + container_name: adguardhome + restart: always + networks: + adguardhome: + ipv4_address: 10.0.0.10 + docker-compose-nas: + ports: + - "53:53/tcp" + - "53:53/udp" + - "68:68/tcp" + - "68:68/udp" + - "853:853/tcp" + volumes: + - ./adguardhome/work:/opt/adguardhome/work + - ./adguardhome/conf:/opt/adguardhome/conf + - ./adguardhome/certs:/opt/adguardhome/certs + labels: + - "traefik.enable=true" + - "traefik.docker.network=docker-compose-nas" + - "traefik.http.services.adguardhome.loadbalancer.server.port=3000" + - "traefik.http.routers.adguardhome.rule=(Host(`${ADGUARD_HOSTNAME}`))" + - "traefik.http.routers.adguardhome.tls=true" + - "traefik.http.routers.adguardhome.tls.certresolver=myresolver" + + traefik-certs-dumper: + image: ldez/traefik-certs-dumper + container_name: traefik-certs-dumper + networks: + docker-compose-nas: + restart: always + entrypoint: sh -c ' + apk add jq + ; while ! [ -e /data/acme.json ] + || ! [ `jq ".[] | .Certificates | length" /data/acme.json` != 0 ]; do + sleep 1 + ; done + && traefik-certs-dumper file --version v2 --watch + --source /data/acme.json --dest /certs' + volumes: + - ./letsencrypt:/data + - ./adguardhome/certs:/certs + +networks: + docker-compose-nas: + external: true + adguardhome: + driver: bridge + driver_opts: + com.docker.network.bridge.name: br_adguard + ipam: + config: + - subnet: 10.0.0.0/24 diff --git a/adguardhome/work/.gitkeep b/adguardhome/work/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yml b/docker-compose.yml index 26ee663..45bed64 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -171,7 +171,7 @@ services: restart: always labels: - traefik.enable=true - - traefik.http.routers.heimdall.rule=(Host(`${HOSTNAME}`) && PathPrefix(`/`) || PathPrefix(`/`)) + - traefik.http.routers.heimdall.rule=(Host(`${HOSTNAME}`) && PathPrefix(`/`)) - traefik.http.routers.heimdall.tls=true - traefik.http.routers.heimdall.tls.certresolver=myresolver - traefik.http.services.heimdall.loadbalancer.server.port=80 diff --git a/flaresolverr/docker-compose.yml b/flaresolverr/docker-compose.yml new file mode 100644 index 0000000..28d8700 --- /dev/null +++ b/flaresolverr/docker-compose.yml @@ -0,0 +1,23 @@ +version: '3.9' + +services: + flaresolverr: + image: ghcr.io/flaresolverr/flaresolverr:latest + container_name: flaresolverr + restart: always + networks: + docker-compose-nas: + environment: + - LOG_LEVEL=${LOG_LEVEL:-info} + - LOG_HTML=${LOG_HTML:-false} + - CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none} + - TZ=${TIMEZONE} + labels: + - traefik.enable=true + - traefik.http.routers.flaresolverr.rule=PathPrefix(`/flaresolverr`) + - traefik.http.routers.flaresolverr.tls=true + - traefik.http.services.flaresolverr.loadbalancer.server.port=8191 + +networks: + docker-compose-nas: + external: true