version: '3' services: traefik: container_name: traefik image: traefik:latest restart: unless-stopped networks: net: {} volumes: - "/etc/localtime:/etc/localtime:ro" - "/var/run/docker.sock:/var/run/docker.sock:ro" - "{{ traefik_config }}:/etc/traefik/" - "{{ traefik_data }}:/var/log/" ports: - "{{ traefik_user_port}}:80" - "{{ traefik_admin_port}}:8080" db: container_name: zoneminder_db image: mariadb restart: always networks: - zoneminder volumes: - "/etc/localtime:/etc/localtime:ro" - "{{ zoneminder_db }}:/var/lib/mysql" environment: - "MYSQL_DATABASE={{ zoneminder_host }}" - "MYSQL_ROOT_PASSWORD={{ vault_mysql_root_password }}" - "MYSQL_USER={{ mysql_user }}" - "MYSQL_PASSWORD={{ vault_mysql_user_password }}" - "MAX_LOG_SIZE_BYTES=1000000" - "MAX_LOG_NUMBER=20" - "TZ=Europe/Berlin" zoneminder: container_name: zoneminder image: ghcr.io/zoneminder-containers/zoneminder-base:latest restart: always stop_grace_period: 45s depends_on: - db networks: - zoneminder - net ports: - "{{ zoneminder_port }}:80" volumes: - "/etc/localtime:/etc/localtime:ro" - "{{ zoneminder_data }}:/data" - "{{ zoneminder_config }}:/config" - "{{ zoneminder_log}}:/log" - type: tmpfs target: /dev/shm tmpfs: size: 1000000000 environment: - "MYSQL_DATABASE={{ zoneminder_host }}" - "MYSQL_ROOT_PASSWORD={{ vault_mysql_root_password }}" - "MYSQL_USER={{ mysql_user }}" - "MYSQL_PASSWORD={{ vault_mysql_user_password }}" - "MAX_LOG_SIZE_BYTES=1000000" - "MAX_LOG_NUMBER=20" - "TZ=Europe/Berlin" labels: - "traefik.enable=true" - "traefik.http.routers.zoneminder.rule=Host(`{{ zoneminder_host}}.{{ aya01_host }}.{{ local_domain }}`)" - "traefik.http.services.zoneminder.loadbalancer.server.port={{ 80 }}" pihole: container_name: pihole image: pihole/pihole:latest restart: unless-stopped networks: - net ports: - "53:53/tcp" - "53:53/udp" - "67:67/udp" - "{{ pihole_port }}:80/tcp" volumes: - "/etc/localtime:/etc/localtime:ro" - "{{ pihole_config }}:/etc/pihole/" - "{{ pihole_dnsmasq }}:/etc/dnsmasq.d/" environment: - "WEBPASSWORD={{ vault_aya01_pihole_password }}" - "ServerIP={{aya01_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 labels: - "traefik.enable=true" - "traefik.http.routers.pihole.rule=Host(`{{ pihole_host }}.{{ aya01_host }}.{{ local_domain }}`)" - "traefik.http.services.pihole.loadbalancer.server.port={{ 80 }}" fyncthing: container_name: syncthing image: syncthing/syncthing restart: unless-stopped networks: - net ports: - "{{ syncthing_port }}:8384" # Web UI - 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 }}" hostname: syncthing labels: - "traefik.enable=true" - "traefik.http.routers.syncthing.rule=Host(`{{ syncthing_host }}.{{ aya01_host }}.{{ local_domain }}`)" - "traefik.http.services.syncthing.loadbalancer.server.port={{ syncthing_port }}" # grafana: # container_name: grafana # image: grafana/grafana-oss # restart: unless-stopped # user: "{{ puid }}:{{ pgid }}" # networks: # - net # ports: # - 3000:3000 # volumes: # - "{{ grafana_data }}:/var/lib/grafana/" # - "{{ grafana_log }}:/var/log/grafana/" # environment: # - "GF_LOG_MODE=console file" # hostname: grafana soft-serve: container_name: soft-serve image: charmcli/soft-serve:latest restart: unless-stopped networks: - net ports: - 23231:23231 # ssh volumes: - "{{ softserve_data }}:/soft-serve" # prometheus: # container_name: prometheus # image: prom/prometheus # restart: unless-stopped # networks: # - net # ports: # - "{{ prm_port }}:9090" # volumes: # - "{{ prm_config }}:/etc/prometheus" # exporter_mikrotik: # container_name: exporter_mikrotik # image: "nshttpd/mikrotik-exporter:{{ e_mikrotik_version }}" # restart: unless-stopped # user: "{{ puid }}:{{ pgid }}" # networks: # - net # ports: # - "{{ e_mikrotik_port }}:9436" # volumes: # - "{{ e_mikrotik_config }}:/config" # environment: # - "CONFIG_FILE=/config/config.yml" # netdata: # container_name: netdata # image: netdata/netdata # restart: unless-stopped # networks: # - net # ports: # - "{{netdata_port}}:19999" # volumes: # - "{{netdata_config}}:/etc/netdata" # - "{{netdata_lib}}:/var/lib/netdata" # - "{{netdata_cache}}:/var/cache/netdata" # - /etc/passwd:/host/etc/passwd:ro # - /etc/group:/host/etc/group:ro # - /proc:/host/proc:ro # - /sys:/host/sys:ro # - /etc/os-release:/host/etc/os-release:ro # environment: # - "DO_NOT_TRACK=1" # cap_add: # - SYS_PTRACE # security_opt: # - apparmor:unconfined # hostname: "{{ aya01_host }}" cupsd: container_name: cupsd image: olbat/cupsd restart: unless-stopped networks: - net ports: - "{{cupsd_port}}:631" volumes: - /var/run/dbus:/var/run/dbus - "{{cupsd_config}}:/etc/cups" labels: - "traefik.enable=true" - "traefik.http.routers.cupsd.rule=Host(`{{ cupsd_host }}.{{ aya01_host }}.{{local_domain}}`)" - "traefik.http.services.cupsd.loadbalancer.server.port={{ cupsd_port }}" kuma: container_name: kuma image: louislam/uptime-kuma:1 restart: always networks: - net ports: - "{{ kuma_port }}:3001" volumes: - "{{ kuma_config }}:/app/data" labels: - "traefik.enable=true" - "traefik.http.routers.kuma.rule=Host(`{{ kuma_host }}.{{ aya01_host }}.{{local_domain}}`)" - "traefik.http.services.kuma.loadbalancer.server.port={{ kuma_port }}" networks: zoneminder: net: driver: bridge ipam: driver: default config: - subnet: 172.16.69.0/24 ip_range: 172.28.69.0/24 gateway: 172.16.69.1