version: '3' services: nginx: container_name: "{{nginx.host}}" image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped networks: net: {} ports: - '{{nginx.endpoints.http}}:80' - '{{nginx.endpoints.https}}:443' - '{{nginx.endpoints.admin}}:81' volumes: - "{{nginx.paths.data}}:/data" - "{{nginx.paths.letsencrypt}}:/etc/letsencrypt" - '/var/run/docker.sock:/var/run/docker.sock' pihole: container_name: pihole image: pihole/pihole:latest restart: unless-stopped depends_on: - nginx networks: - net ports: - "53:53/tcp" - "53:53/udp" volumes: - "/etc/localtime:/etc/localtime:ro" - "{{ pihole_config }}:/etc/pihole/" - "{{ pihole_dnsmasq }}:/etc/dnsmasq.d/" environment: - PUID={{puid}} - PGID={{pgid}} - TZ={{timezone}} - "WEBPASSWORD={{ vault_aya01_pihole_password }}" - "ServerIP={{ host.ip }}" - "INTERFACE=eth0" - "DNS1=1.1.1.1" - "DNS1=1.0.0.1" dns: - 127.0.0.1 - 1.1.1.1 cap_add: - NET_ADMIN syncthing: image: syncthing/syncthing container_name: syncthing restart: unless-stopped depends_on: - pihole networks: - net ports: - 22000:22000/tcp # TCP file transfers - 22000:22000/udp # QUIC file transfers - 21027:21027/udp # Receive local discovery broadcasts volumes: - "{{syncthing_data}}:/var/syncthing" environment: - PUID={{puid}} - PGID={{pgid}} - TZ={{timezone}} hostname: syncthing cupsd: container_name: cupsd image: olbat/cupsd restart: unless-stopped depends_on: - pihole networks: - net environment: - PUID={{puid}} - PGID={{pgid}} - TZ={{timezone}} volumes: - /var/run/dbus:/var/run/dbus - "{{cupsd_config}}:/etc/cups" kuma: container_name: kuma image: louislam/uptime-kuma:1 restart: unless-stopped depends_on: - pihole networks: - net environment: - PUID={{puid}} - PGID={{pgid}} - TZ={{timezone}} ports: - "{{kuma_port}}:3001" volumes: - "{{ kuma_config }}:/app/data" plex: image: lscr.io/linuxserver/plex:latest container_name: plex restart: unless-stopped depends_on: - pihole networks: - net devices: - /dev/dri:/dev/dri ports: - "{{ plex_port }}:32400" - "1900:1900" - "3005:3005" - "5353:5353" - "32410:32410" - "8324:8324" - "32412:32412" - "32469:32469" environment: - PUID={{puid}} - PGID={{pgid}} - TZ={{timezone}} - VERSION=docker volumes: - "{{ plex_config }}:/config" - "{{ plex_tv }}:/tv:ro" - "{{ plex_movies }}:/movies:ro" - "{{ plex_music }}:/music:ro" sonarr: image: lscr.io/linuxserver/sonarr:latest container_name: sonarr restart: unless-stopped depends_on: - prowlarr networks: - net environment: - PUID={{ puid }} - PGID={{ pgid }} - TZ={{ timezone }} volumes: - {{ sonarr_config }}:/config - {{ sonarr_media }}:/tv #optional - {{ sonarr_downloads }}:/downloads #optional radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr restart: unless-stopped depends_on: - prowlarr networks: - net environment: - PUID={{ puid }} - PGID={{ pgid }} - TZ={{ timezone }} volumes: - {{ radarr_config }}:/config - {{ radarr_media }}:/movies #optional - {{ radarr_downloads }}:/downloads #optional lidarr: image: lscr.io/linuxserver/lidarr:latest container_name: lidarr restart: unless-stopped depends_on: - prowlarr networks: - net environment: - PUID={{ puid }} - PGID={{ pgid }} - TZ={{ timezone }} volumes: - {{ lidarr_config }}:/config - {{ lidarr_media }}:/music #optional - {{ lidarr_downloads }}:/downloads #optional prowlarr: image: lscr.io/linuxserver/prowlarr:latest container_name: prowlarr restart: unless-stopped depends_on: - pihole networks: - net environment: - PUID={{ puid }} - PGID={{ pgid }} - TZ={{ timezone }} volumes: - {{ prowlarr_config }}:/config pastebin: image: wantguns/bin container_name: pastebin restart: unless-stopped depends_on: - pihole networks: - net environment: - PUID={{ puid }} - PGID={{ pgid }} - TZ={{ timezone }} - ROCKET_PORT={{ bin_port }} - HOST_URL={{ bin_host }}.{{ aya01_host }}.{{ local_domain }} volumes: - {{ bin_upload }}:/app/upload tautulli: image: lscr.io/linuxserver/tautulli:latest container_name: tautulli restart: unless-stopped depends_on: - plex networks: - net environment: - PUID={{ puid }} - PGID={{ pgid}} - TZ={{ timezone }} ports: - "{{ tautulli_port }}:8181" volumes: - {{ tautulli_config}}:/config {{ gluetun_host }}: image: qmcgaw/gluetun container_name: {{ gluetun_host }} restart: unless-stopped networks: - net cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun volumes: - {{ gluetun_config }}:/gluetun environment: - PUID={{puid}} - PGID={{pgid}} - TZ={{ timezone }} - VPN_SERVICE_PROVIDER=protonvpn - UPDATER_VPN_SERVICE_PROVIDERS=protonvpn - UPDATER_PERIOD=24h - SERVER_COUNTRIES={{ gluetun_country }} - OPENVPN_USER={{ vault_qbit_vpn_user }}+pmp - OPENVPN_PASSWORD={{ vault_qbit_vpn_password }} {{ torrentleech_host }}: image: qbittorrentofficial/qbittorrent-nox container_name: {{ torrentleech_host }} restart: unless-stopped depends_on: - gluetun - sonarr - radarr - lidarr network_mode: "container:{{ gluetun_host }}" environment: - PUID={{ puid }} - PGID={{ pgid }} - TZ={{ timezone }} - QBT_EULA="accept" - QBT_WEBUI_PORT="{{ torrentleech_port }}" volumes: - {{ torrentleech_remote_config }}:/config - {{ qbit_downloads }}:/downloads {{qbit_host}}: image: qbittorrentofficial/qbittorrent-nox container_name: {{ qbit_host }} restart: unless-stopped depends_on: - gluetun - sonarr - radarr - lidarr network_mode: "container:{{ gluetun_host }}" environment: - PUID={{ puid }} - PGID={{ pgid }} - TZ={{ timezone }} - QBT_EULA="accept" - QBT_WEBUI_PORT="{{ qbit_port }}" volumes: - {{ qbit_remote_config }}:/config - {{ qbit_downloads }}:/downloads {{ prometheus_host }}: image: prom/prometheus container_name: {{ prometheus_host }} restart: unless-stopped depends_on: - pihole networks: - net environment: - PUID={{ prometheus_puid }} - PGID={{ prometheus_pgid}} - TZ={{ timezone }} volumes: - {{ prometheus_config }}:/etc/prometheus/ - prometheus_data:/prometheus/ {{ grafana_host }}: image: grafana/grafana-oss container_name: {{ grafana_host }} restart: unless-stopped user: "0:0" depends_on: - {{ prometheus_host }} networks: - net environment: - PUID={{ grafana_puid }} - PGID={{ grafana_pgid }} - TZ={{ timezone }} volumes: - {{ grafana_data }}:/var/lib/grafana/ - {{ grafana_config }}:/etc/grafana/ ddns-updater: container_name: ddns-updater image: "ghcr.io/qdm12/ddns-updater" restart: unless-stopped depends_on: - pihole networks: net: {} volumes: - "{{ ddns_data }}:/updater/data/" homeassistant: container_name: homeassistant image: "ghcr.io/home-assistant/home-assistant:stable" restart: unless-stopped depends_on: - pihole networks: net: {} volumes: - "/etc/localtime:/etc/localtime:ro" - "{{ ha_config }}:/config/" privileged: true ports: - "{{ ha_port }}:8123" - 4357:4357 - 5683:5683 - 5683:5683/udp {{stirling.host}}: container_name: {{stirling.host}} image: frooodle/s-pdf:latest restart: unless-stopped depends_on: - pihole networks: net: {} {{ jellyfin.host }}: container_name: {{ jellyfin.host }} image: jellyfin/jellyfin restart: 'unless-stopped' depends_on: - pihole networks: net: {} devices: - /dev/dri:/dev/dri volumes: - {{ jellyfin.config }}:/config - {{ jellyfin.cache }}:/cache - {{ jellyfin.media.tv }}:/tv:ro - {{ jellyfin.media.movies }}:/movies:ro - {{ jellyfin.media.music }}:/music:ro ports: - "{{ jellyfin.port }}:{{ jellyfin.port }}" broker: container_name: {{ paperless.redis.host }} image: docker.io/library/redis:7 restart: unless-stopped depends_on: - pihole networks: - net volumes: - {{paperless.redis.data}}:/data db: container_name: {{ paperless.db.host }} image: docker.io/library/postgres:15 restart: unless-stopped depends_on: - pihole networks: - net volumes: - {{paperless.db.data}}:/var/lib/postgresql/data environment: POSTGRES_DB: {{ paperless.db.db }} POSTGRES_USER: {{ paperless.db.user }} POSTGRES_PASSWORD: {{ paperless.db.password }} paperless: container_name: {{ paperless.host }} image: ghcr.io/paperless-ngx/paperless-ngx:latest restart: unless-stopped depends_on: - db - broker networks: - net healthcheck: test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:{{ paperless.port }}"] interval: 30s timeout: 10s retries: 5 volumes: - {{ paperless.data.data }}:/usr/src/paperless/data - {{ paperless.data.media }}:/usr/src/paperless/media - {{ paperless.data.export }}:/usr/src/paperless/export - {{ paperless.data.consume }}:/usr/src/paperless/consume environment: - "PAPERLESS_REDIS=redis://broker:6379" - "PAPERLESS_DBHOST=db" - "PAPERLESS_DBUSER={{paperless.db.user}}" - "PAPERLESS_DBPASS={{paperless.db.password}}" - "USERMAP_UID={{ puid }}" - "USERMAP_GID={{ pgid}}" - "PAPERLESS_URL=https://{{paperless.host}}.{{ host.hostname }}.{{ backup_domain }}" - "PAPERLESS_TIME_ZONE={{ timezone }}" - "PAPERLESS_OCR_LANGUAGE=deu" {{ homarr.host }}: container_name: {{ homarr.host }} image: ghcr.io/ajnart/homarr:latest restart: unless-stopped depends_on: - pihole networks: - net volumes: - {{ homarr.volumes.configs }}:/app/data/configs - {{ homarr.volumes.icons }}:/app/public/icons {{ gitea.host }}: container_name: {{ gitea.host }} image: gitea/gitea:1.20.5-rootless restart: unless-stopped depends_on: - pihole networks: - net volumes: - {{ gitea.volumes.data }}:/var/lib/gitea - {{ gitea.volumes.config }}:/etc/gitea - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "{{ gitea.ports.http }}:3000" - "{{ gitea.ports.ssh }}:2222" {{ gitea.runner.host }}: container_name: {{ gitea.runner.host }} image: gitea/act_runner:nightly restart: unless-stopped depends_on: - {{ gitea.host }} networks: - net volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - "GITEA_INSTANCE_URL={{ gitea.url }}" - "GITEA_RUNNER_REGISTRATION_TOKEN={{ gitea.runner.token }}" {{ jellyseer.host }}: container_name: {{ jellyseer.host }} image: fallenbagel/jellyseerr:latest restart: unless-stopped environment: - LOG_LEVEL=info - TZ={{ timezone }} depends_on: - {{ jellyfin.host }} networks: - net volumes: - {{ jellyseer.volumes.config }}:/app/config networks: zoneminder: driver: bridge ipam: driver: default config: - subnet: {{ zoneminder_network }} net: driver: bridge ipam: driver: default config: - subnet: {{ docker_network }} volumes: prometheus_data: {}