changedetection/templates/compose.yml.j2
2026-10-11 01:16:35 +02:00

77 lines
2.9 KiB
Django/Jinja

services:
changedetection:
image: "ghcr.io/dgtlmoon/changedetection.io:{{ changedetection.version }}" #0.55.3
volumes:
- ./data/changedetection:/datastore
# Configurable proxy list support, see https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration#proxy-list-support
# - ./proxies.json:/datastore/proxies.json
networks:
- internal
- proxy
environment:
- PORT=5000
- LOGGER_LEVEL=INFO
- PLAYWRIGHT_DRIVER_URL=ws://browser-sockpuppet-chrome:3000
- BASE_URL=http://localhost:5000
- HIDE_REFERER=true
- FETCH_WORKERS=10
- MINIMUM_SECONDS_RECHECK_TIME=10
- ALLOW_FILE_URI=False
- DISABLE_VERSION_CHECK=true
- TZ=Europe/Berlin
- LC_ALL=UTF-8
- SCREENSHOT_MAX_HEIGHT=16000
- LISTEN_HOST=0.0.0.0
- ALLOW_IANA_RESTRICTED_ADDRESSES=true
labels:
traefik.enable: true
traefik.http.services.changedetection.loadbalancer.server.port: "5000"
traefik.http.services.changedetection.loadbalancer.passhostheader: "true"
traefik.http.routers.changedetection-diff.rule: "Host(`{{ changedetection.url }}`) && PathPrefix(`/preview`)"
traefik.http.routers.changedetection-diff.priority: 100
traefik.http.routers.changedetection-diff.service: changedetection
traefik.http.routers.changedetection.rule: "Host(`{{ changedetection.url }}`) && PathPrefix(`/`)"
traefik.http.routers.changedetection.tls: "true"
traefik.http.routers.changedetection.tls.certresolver: hetzner
traefik.http.routers.changedetection.priority: 90
traefik.http.routers.changedetection.service: changedetection
{% if changedetection.oidc.forwardauth_url | length > 0 -%}
traefik.http.routers.changedetection.middlewares: changedetection-auth
traefik.http.middlewares.changedetection-auth.forwardauth.address: "{{ changedetection.oidc.forwardauth_url }}"
traefik.http.middlewares.changedetection-auth.forwardauth.trustForwardHeader: true
traefik.http.middlewares.changedetection-auth.forwardauth.authResponseHeaders: X-authentik-username,X-authentik-groups,X-authentik-entitlements,X-authentik-email,X-authentik-name
{% endif %}
restart: unless-stopped
depends_on:
browser-sockpuppet-chrome:
condition: service_started
browser-sockpuppet-chrome:
hostname: browser-sockpuppet-chrome
image: dgtlmoon/sockpuppetbrowser:0.0.3
networks:
- internal
# cap_add:
# - SYS_ADMIN
## SYS_ADMIN might be too much, but it can be needed on your platform https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#running-puppeteer-on-gitlabci
restart: unless-stopped
environment:
- SCREEN_WIDTH=1920
- SCREEN_HEIGHT=1600
- SCREEN_DEPTH=16
- MAX_CONCURRENT_CHROME_PROCESSES=10
networks:
internal:
proxy:
name: traefik_exposed
external: true