diff --git a/homenetwork/dns/pihole_mason.yml b/homenetwork/dns/pihole_mason.yml new file mode 100644 index 0000000..2abe4dd --- /dev/null +++ b/homenetwork/dns/pihole_mason.yml @@ -0,0 +1,78 @@ +version: "3.7" + +#volumes: +# pihole: + +services: + + pihole: + image: pihole/pihole:latest + container_name: "mason-ph" + hostname: "pihole" +# user: "root:root" + ports: + - "53:53/udp" + - "53:53/tcp" + - "80:80" +# - target: 53 +# published: 53 +# protocol: tcp +# - target: 53 +# published: 53 +# protocol: udp +# - target: 80 +# published: 8053 +# protocol: tcp +# network_mode: "host" + volumes: + - type: bind + source: /pihole_data + target: /etc/pihole +# - pihole:/etc/pihole +# - "/home/ansible/stacks/lighttpd/external.conf:/etc/lighttpd/external.conf" +# - dnsmasq:/etc/dnsmasq.d +# depends_on: +# - cloudflared + restart: always + environment: + TZ: Europe/Amsterdam +# - "DNS1=1.1.1.1" +# - "REV_SERVER=true" +# - "REV_SERVER_CIDR=192.168.1.0/24" #Update these fields to match your environment +# - "REV_SERVER_TARGET=192.168.1.1" +# - "REV_SERVER_DOMAIN=home.local" + WEBPASSWORD: 'password' +# networks: +# - web +# deploy: +# mode: global +# replicas: 1 +# placement: +# constraints: +# - "node.labels.dns==true" + + pihole_exporter: + image: ekofr/pihole-exporter + container_name: pihole_exporter + expose: + - 9617 + environment: + PIHOLE_HOSTNAME: pihole +# PIHOLE_PORT: 8053 + PIHOLE_PASSWORD: password + INTERVAL: 30s + PORT: 9617 + restart: always +# deploy: +# labels: +# - "traefik.enable=false" +# mode: replicated +# replicas: 1 +# placement: +# constraints: +# - "node.hostname==swarm-master" + +networks: + web: +# external: true + name: web diff --git a/homenetwork/dns/pihole_phil.yml b/homenetwork/dns/pihole_phil.yml new file mode 100644 index 0000000..a04a13f --- /dev/null +++ b/homenetwork/dns/pihole_phil.yml @@ -0,0 +1,78 @@ +version: "3.7" + +#volumes: +# pihole: + +services: + + pihole: + image: pihole/pihole:latest + container_name: "phil-ph" + hostname: "pihole" +# user: "root:root" + ports: + - "53:53/udp" + - "53:53/tcp" + - "80:80" +# - target: 53 +# published: 53 +# protocol: tcp +# - target: 53 +# published: 53 +# protocol: udp +# - target: 80 +# published: 8053 +# protocol: tcp +# network_mode: "host" + volumes: + - type: bind + source: /pihole_data + target: /etc/pihole +# - pihole:/etc/pihole +# - "/home/ansible/stacks/lighttpd/external.conf:/etc/lighttpd/external.conf" +# - dnsmasq:/etc/dnsmasq.d +# depends_on: +# - cloudflared + restart: always + environment: + TZ: Europe/Amsterdam +# - "DNS1=1.1.1.1" +# - "REV_SERVER=true" +# - "REV_SERVER_CIDR=192.168.1.0/24" #Update these fields to match your environment +# - "REV_SERVER_TARGET=192.168.1.1" +# - "REV_SERVER_DOMAIN=home.local" + WEBPASSWORD: 'password' +# networks: +# - web +# deploy: +# mode: global +# replicas: 1 +# placement: +# constraints: +# - "node.labels.dns==true" + + pihole_exporter: + image: ekofr/pihole-exporter + container_name: pihole_exporter + expose: + - 9617 + environment: + PIHOLE_HOSTNAME: pihole +# PIHOLE_PORT: 8053 + PIHOLE_PASSWORD: password + INTERVAL: 30s + PORT: 9617 + restart: always +# deploy: +# labels: +# - "traefik.enable=false" +# mode: replicated +# replicas: 1 +# placement: +# constraints: +# - "node.hostname==swarm-master" + +networks: + web: +# external: true + name: web diff --git a/homenetwork/nas/registry.yml b/homenetwork/nas/registry.yml new file mode 100644 index 0000000..395803e --- /dev/null +++ b/homenetwork/nas/registry.yml @@ -0,0 +1,41 @@ +version: '3' + +volumes: + registrystorage: + driver_opts: + type: nfs + o: addr=dockerstorage,nfsvers=4 + device: :/dockerstorage/registry + registryauth: + driver_opts: + type: nfs + o: addr=dockerstorage,nfsvers=4 + device: :/dockerstorage/registry/auth + + + +services: + registry: + image: registry:2 + volumes: + - registryauth:/auth + - registrystorage:/var/lib/registry + environment: + - REGISTRY_AUTH=htpasswd + - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm + - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd + - VIRTUAL_HOST=registry.vbchaos.nl + - VIRTUAL_PORT=5000 + - VIRTUAL_PROTO=http + ports: + - '5000:5000' + + registrybrowser: + image: klausmeyer/docker-registry-browser + ports: + - 8082:8080 + environment: + - 'DOCKER_REGISTRY_URL=https://registry.vbchaos.nl' + - 'PUBLIC_REGISTRY_URL=registry.vbchaos.nl' + - 'NO_SSL_VERIFICATION=true' + - 'ENABLE_DELETE_IMAGES=true' diff --git a/homenetwork/swarm/grafana.yml b/homenetwork/swarm/grafana.yml new file mode 100644 index 0000000..ec427b0 --- /dev/null +++ b/homenetwork/swarm/grafana.yml @@ -0,0 +1,100 @@ +version: '3.8' + +volumes: + prometheus_data: + driver_opts: + type: nfs + o: addr=dockerstorage,nfsvers=4 + device: :/grafana_prometheus_data + + grafana_data: + driver_opts: + type: nfs + o: addr=dockerstorage,nfsvers=4 + device: :/dockerstorage/grafana/grafana + + loki_data: + driver_opts: + type: nfs + o: addr=dockerstorage,nfsvers=4 + device: :/dockerstorage/grafana/loki + + + +services: + + loki: + image: grafana/loki:2.6.1 + user: "0:0" + volumes: + - loki_data:/loki + ports: + - "3100:3100" + command: -config.file=/etc/loki/local-config.yaml + + promtail: + image: grafana/promtail:2.6.1 + user: "0:0" + volumes: + - /var/log:/var/log + command: -config.file=/etc/promtail/config.yml + + prometheus: + user: "0:0" + hostname: prometheus + image: prom/prometheus + environment: + - TZ=Europe/Berlin #change Time Zone if needed + configs: + - source: prometheus_config + target: /etc/prometheus/prometheus.yml + volumes: + - prometheus_data:/prometheus + command: + - '--config.file=/etc/prometheus/prometheus.yml' + ports: + - 9090:9090 + + grafana: + user: "0:0" + hostname: grafana + image: grafana/grafana + depends_on: + - influx + environment: + - TZ=Europe/Amsterdam + configs: + - source: grafana_config + target: /etc/grafana/grafana.ini + volumes: + - grafana_data:/var/lib/grafana + ports: + - 3300:3000 + + node-exporter: + image: prom/node-exporter:latest + deploy: + mode: global + volumes: + - /proc:/host/proc:ro + - /sys:/host/sys:ro + - /:/rootfs:ro + command: + - '--path.procfs=/host/proc' + - '--path.rootfs=/rootfs' + - '--path.sysfs=/host/sys' + - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)' + ports: + - "9100:9100" + + tado-exporter: + user: "1000:1000" + image: registry.vbchaos.nl/tado-exporter:arm64 + hostname: tado-exporter + + environment: + EXPORTER_USERNAME: matthias.mitscherlich@gmail.com + EXPORTER_PASSWORD: 14Mai1984 + + ports: + - "9898:9898" diff --git a/homenetwork/swarm/portainer-agent-stack.yml b/homenetwork/swarm/portainer-agent-stack.yml new file mode 100644 index 0000000..dc6876c --- /dev/null +++ b/homenetwork/swarm/portainer-agent-stack.yml @@ -0,0 +1,39 @@ +version: '3.2' + +services: + agent: + image: portainer/agent:2.19.4 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /var/lib/docker/volumes:/var/lib/docker/volumes + networks: + - agent_network + deploy: + mode: global + placement: + constraints: [node.platform.os == linux] + + portainer: + image: portainer/portainer-ce:2.19.4 + command: -H tcp://tasks.agent:9001 --tlsskipverify + ports: + - "9443:9443" + - "9000:9000" + - "8000:8000" + volumes: + - portainer_data:/data + networks: + - agent_network + deploy: + mode: replicated + replicas: 1 + placement: + constraints: [node.role == manager] + +networks: + agent_network: + driver: overlay + attachable: true + +volumes: + portainer_data: diff --git a/homenetwork/swarm/start.sh b/homenetwork/swarm/start.sh new file mode 100755 index 0000000..d7b9f63 --- /dev/null +++ b/homenetwork/swarm/start.sh @@ -0,0 +1 @@ +docker stack deploy -c grafana.yml --with-registry-auth tado-exporter