{ "v": 1, "node": "ace", "decided": { "site": "home", "address": "10.10.0.2", "public-domain": "zurag.be", "account": "ace", "tunnel": { "interface": "wg0", "unit": "wg-quick@wg0", "config": "/etc/wireguard/wg0.conf", "port": 51820, "address": "10.10.0.2/24", "range": "10.10.0.0/24", "public-key": "zTKYP6Sz1hDwnwxIHgiGXYAeGcWbqti3tcSvKEA0Ew4=" } }, "modules": [ { "module": "avahi" }, { "module": "baserow", "ports": { "80": 20011 }, "bindings": { "postgres-database": { "node": "ace", "module": "postgres" } }, "layer": { "endpoints": { "web": { "label": "baserow", "reach": "public" } } }, "has-layer": true }, { "module": "bazarr", "ports": { "6767": 20020 }, "has-mesh-wide": true, "layer": { "accesses": { "anime": "/storage/media/anime", "downloads": "/storage/downloads", "movies": "/storage/media/movies", "series": "/storage/media/series" }, "endpoints": { "web": { "label": "subs", "reach": "public" } }, "places": { "config": { "owner": "1001:2000", "path": "/var/lib/bazarr/config" } } }, "has-layer": true, "mesh-wide-values": { "pgid": 1000, "puid": 1000 }, "values": { "pgid": 2000, "puid": 1001 } }, { "module": "bookshelf", "ports": { "8787": 20021 }, "has-mesh-wide": true, "layer": { "accesses": { "books": "/data/media/books", "downloads": "/data/downloads" }, "endpoints": { "web": { "label": "books", "reach": "public" } }, "places": { "config": { "owner": "1000:1000", "path": "/var/lib/bookshelf/config" } } }, "has-layer": true, "mesh-wide-values": { "pgid": 1000, "puid": 1000 }, "values": { "downloads": { "jackett-api": { "adopt-hosts": [ "jackett" ] }, "nzbget-api": { "name": "NZBGet" }, "qbittorrent-api": { "name": "qBitTorrent" } }, "pgid": 1000, "puid": 1000 } }, { "module": "buildah" }, { "module": "ca-trust" }, { "module": "car-hunter", "ports": { "3000": 20016 }, "bindings": { "oidc-client": { "node": "novox", "module": "keycloak" }, "postgres-database": { "node": "ace", "module": "postgres" } }, "layer": { "endpoints": { "web": { "label": "car-hunter", "reach": "public" } } }, "has-layer": true }, { "module": "claude-code", "has-mesh-wide": true, "has-layer": true }, { "module": "dbus" }, { "module": "dev-tools" }, { "module": "disk-load" }, { "module": "dnsmasq" }, { "module": "docker" }, { "module": "f1-circuits", "ports": { "8000": 20007 }, "layer": { "endpoints": { "web": { "label": "f1-circuits", "reach": "public" } } }, "has-layer": true }, { "module": "fail2ban" }, { "module": "go" }, { "module": "grafana", "ports": { "3000": 20012 }, "bindings": { "influxdb-api": { "node": "ace", "module": "influxdb" }, "oidc-client": { "node": "novox", "module": "keycloak" } }, "layer": { "endpoints": { "web": { "label": "grafana", "reach": "public" } } }, "has-layer": true }, { "module": "home-assistant", "bindings": { "mqtt-topic": { "node": "ace", "module": "mosquitto" } }, "layer": { "endpoints": { "sonos-events": { "reach": "public" }, "web": { "label": "home-assistant", "reach": "both" }, "webrtc": { "reach": "public" } }, "places": { "config": { "path": "/var/lib/home-assistant/config" } } }, "has-layer": true }, { "module": "hostname", "has-layer": true }, { "module": "icecast", "ports": { "8000": 20005 }, "bindings": { "secret": { "node": "novox", "module": "mesh-vault" } }, "layer": { "endpoints": { "stream": { "label": "icecast", "reach": "public" } } }, "has-layer": true }, { "module": "influxdb", "layer": { "endpoints": { "api": { "label": "influx", "port": 8086, "reach": "internal" } } }, "has-layer": true }, { "module": "jackett", "ports": { "9117": 20004 }, "has-mesh-wide": true, "layer": { "endpoints": { "web": { "label": "indexers", "reach": "public" } } }, "has-layer": true, "mesh-wide-values": { "pgid": 1000, "puid": 1000 } }, { "module": "kernel", "has-layer": true }, { "module": "kometa", "layer": { "places": { "config": { "owner": "1000:1000", "path": "/var/lib/kometa/config" } } }, "has-layer": true, "values": { "libraries": { "Formula 1": { "metadata_files": [ { "url": "https://f1-circuits.zurag.be/kometa/formula-1-metadata.yml" } ] } }, "pgid": 1000, "puid": 1000 } }, { "module": "letta", "ports": { "8283": 20002 }, "bindings": { "postgres-database": { "node": "ace", "module": "postgres" } }, "layer": { "endpoints": { "web": { "label": "letta", "reach": "public" } } }, "has-layer": true }, { "module": "lidarr", "ports": { "8686": 20022 }, "has-mesh-wide": true, "layer": { "accesses": { "downloads": "/storage/downloads", "music": "/storage/media/music" }, "endpoints": { "web": { "label": "lidarr", "reach": "both" } }, "places": { "config": { "owner": "1001:2000", "path": "/var/lib/lidarr/config" }, "custom-cont-init": { "path": "/var/lib/lidarr/custom-cont-init" }, "custom-services": { "path": "/var/lib/lidarr/custom-services" } } }, "has-layer": true, "mesh-wide-values": { "pgid": 1000, "puid": 1000 }, "values": { "downloads": { "jackett-api": { "adopt-hosts": [ "indexers.zurag.be", "jackett" ] }, "nzbget-api": { "name": "NZBGet" }, "qbittorrent-api": { "name": "qBitTorrent" } }, "pgid": 2000, "puid": 1001 } }, { "module": "localization" }, { "module": "logrotate" }, { "module": "matrix", "ports": { "6167": 20008, "80": 20009 }, "layer": { "endpoints": { "client": { "label": "matrix", "reach": "public" }, "web": { "label": "element", "reach": "public" } } }, "has-layer": true }, { "module": "media-importer", "layer": { "accesses": { "downloads": "/storage/downloads" }, "places": { "library": "/storage/media/poc" } }, "has-layer": true }, { "module": "mesh-build-go", "has-layer": true }, { "module": "mesh-build-image" }, { "module": "mesh-build-node", "bindings": { "npm-package-registry": { "node": "novox", "module": "gitea" } } }, { "module": "mesh-cli" }, { "module": "mesh-delivery-assigner" }, { "module": "mesh-files" }, { "module": "mesh-host", "has-layer": true }, { "module": "mesh-provisioner-client" }, { "module": "mesh-reads" }, { "module": "mesh-wireguard" }, { "module": "mosquitto", "layer": { "endpoints": { "mqtt": { "port": 1883, "reach": "public" }, "mqtt-websockets": { "port": 8081, "reach": "internal" } } }, "has-layer": true }, { "module": "mssql", "layer": { "endpoints": { "database": { "port": 4848, "reach": "internal" } } }, "has-layer": true }, { "module": "n8n", "ports": { "5678": 20025 }, "bindings": { "postgres-database": { "node": "ace", "module": "postgres" } }, "layer": { "accesses": { "media": "/storage/media" }, "endpoints": { "web": { "label": "n8n", "reach": "public" } } }, "has-layer": true }, { "module": "netcheck" }, { "module": "networkmanager" }, { "module": "nfs-server", "has-layer": true }, { "module": "nftables" }, { "module": "node-env" }, { "module": "node-tools" }, { "module": "nodejs" }, { "module": "nodered", "ports": { "1880": 20006 }, "bindings": { "mqtt-topic": { "node": "ace", "module": "mosquitto" } }, "layer": { "endpoints": { "web": { "label": "nodered", "reach": "public" } } }, "has-layer": true }, { "module": "nzbgeek" }, { "module": "nzbget", "ports": { "6789": 20017 }, "has-mesh-wide": true, "layer": { "accesses": { "downloads": "/storage/downloads" }, "endpoints": { "web": { "label": "nzbget", "reach": "internal" } }, "places": { "config": { "owner": "1001:2000", "path": "/var/lib/nzbget/config" } } }, "has-layer": true, "mesh-wide-values": { "pgid": 1000, "puid": 1000 }, "values": { "max-download-speed": 10, "options": { "UMask": "0000" }, "pgid": 2000, "puid": 1001, "username": "nzbget" } }, { "module": "ombi", "ports": { "3579": 20024 }, "has-mesh-wide": true, "layer": { "endpoints": { "web": { "label": "ombi", "reach": "public" } }, "places": { "config": { "owner": "1001:2000", "path": "/var/lib/ombi/config" } } }, "has-layer": true, "mesh-wide-values": { "pgid": 1000, "puid": 1000 }, "values": { "pgid": 2000, "puid": 1001 } }, { "module": "pacman", "has-layer": true }, { "module": "plex", "has-mesh-wide": true, "layer": { "accesses": { "anime": "/storage/media/anime", "audiobooks": "/storage/media/audiobooks", "formula-1": "/storage/media/formula-1", "live-shows": "/storage/media/live-shows", "movies": "/storage/media/movies", "music": "/storage/media/music", "series": "/storage/media/series", "sport-games": "/storage/media/sport-games" }, "endpoints": { "gdm-1": { "reach": "public" }, "gdm-2": { "reach": "public" }, "gdm-3": { "reach": "public" }, "gdm-4": { "reach": "public" }, "stream": { "label": "plex" } }, "expose": { "32400": "anywhere" }, "places": { "config": { "owner": "1000:1000", "path": "/mnt/plex/config" }, "data": { "owner": "1000:1000", "path": "/mnt/plex/data" }, "previews": { "owner": "1000:1000", "path": "/storage/plex-media" }, "transcode": { "owner": "1000:1000", "path": "/mnt/plex/temp" } } }, "has-layer": true, "mesh-wide-values": { "pgid": 1000, "puid": 1000 }, "values": { "pgid": 1000, "puid": 1000 } }, { "module": "postgres", "layer": { "endpoints": { "database": { "port": 5434, "reach": "internal" } } }, "has-layer": true }, { "module": "power", "has-mesh-wide": true, "has-layer": true }, { "module": "powerlevel10k" }, { "module": "qbittorrent", "has-mesh-wide": true, "layer": { "accesses": { "downloads": "/storage/downloads" }, "endpoints": { "peers": { "reach": "public" }, "peers-udp": { "reach": "public" }, "web": { "label": "tor", "reach": "public" } }, "places": { "config": { "owner": "1001:2000", "path": "/var/lib/qbittorrent/config" } } }, "has-layer": true, "mesh-wide-values": { "pgid": 1000, "puid": 1000 }, "values": { "max-download-speed": 10, "pgid": 2000, "puid": 1001, "username": "admin" } }, { "module": "radarr", "ports": { "7878": 20019 }, "has-mesh-wide": true, "layer": { "accesses": { "downloads": "/storage/downloads", "movies": "/storage/media/movies" }, "endpoints": { "web": { "label": "movies", "reach": "public" } }, "places": { "config": { "owner": "1001:2000", "path": "/var/lib/radarr/config" } } }, "has-layer": true, "mesh-wide-values": { "pgid": 1000, "puid": 1000 }, "values": { "downloads": { "jackett-api": { "adopt-hosts": [ "jackett" ] }, "nzbget-api": { "name": "NZBGet" }, "qbittorrent-api": { "name": "qBitTorrent" } }, "pgid": 2000, "puid": 1001 } }, { "module": "redis", "ports": { "6379": 20003 }, "bindings": { "secret": { "node": "novox", "module": "mesh-vault" } }, "layer": { "endpoints": { "cache": { "reach": "internal" } } }, "has-layer": true }, { "module": "restic", "layer": { "places": { "repository": "/storage/restic" } }, "has-layer": true }, { "module": "route-proxy" }, { "module": "searxng", "ports": { "8080": 20000 }, "layer": { "endpoints": { "web": { "label": "searxng", "reach": "public" } } }, "has-layer": true }, { "module": "snake", "ports": { "80": 20015 }, "layer": { "endpoints": { "web": { "label": "snake", "reach": "public" } } }, "has-layer": true }, { "module": "sonarr", "ports": { "8989": 20018 }, "has-mesh-wide": true, "layer": { "accesses": { "anime": "/storage/media/anime", "downloads": "/storage/downloads", "series": "/storage/media/series" }, "endpoints": { "web": { "label": "series", "reach": "public" } }, "places": { "config": { "owner": "1001:2000", "path": "/var/lib/sonarr/config" } } }, "has-layer": true, "mesh-wide-values": { "pgid": 1000, "puid": 1000 }, "values": { "downloads": { "jackett-api": { "adopt-hosts": [ "jackett" ] }, "nzbget-api": { "name": "NZBGet" }, "qbittorrent-api": { "name": "qBitTorrent" } }, "pgid": 2000, "puid": 1001 } }, { "module": "ssh-client" }, { "module": "sshd" }, { "module": "sudo" }, { "module": "supabase", "ports": { "8000": 20010 }, "layer": { "endpoints": { "api": { "label": "supabase", "reach": "public" }, "pooler-session": { "port": 5433, "reach": "internal" }, "pooler-transaction": { "port": 6543, "reach": "internal" } } }, "has-layer": true }, { "module": "systemd" }, { "module": "tautulli", "ports": { "8181": 20023 }, "has-mesh-wide": true, "layer": { "endpoints": { "web": { "label": "tautulli", "reach": "public" } }, "places": { "config": { "owner": "1001:2000", "path": "/var/lib/tautulli/config" } } }, "has-layer": true, "mesh-wide-values": { "pgid": 1000, "puid": 1000 }, "values": { "pgid": 2000, "puid": 1001 } }, { "module": "time-sync" }, { "module": "txt-game", "ports": { "3000": 20001 }, "bindings": { "postgres-database": { "node": "ace", "module": "postgres" } }, "layer": { "endpoints": { "web": { "label": "txt", "reach": "public" } } }, "has-layer": true }, { "module": "unifi", "layer": { "endpoints": { "discovery": { "port": 10001, "reach": "public" }, "discovery-l2": { "port": 1902, "reach": "internal" }, "inform": { "port": 8080, "reach": "public" }, "portal": { "port": 8880, "reach": "internal" }, "portal-tls": { "port": 8843, "reach": "internal" }, "speedtest": { "port": 6789, "reach": "internal" }, "stun": { "port": 3478, "reach": "public" }, "syslog": { "port": 5514, "reach": "internal" }, "web": { "label": "unifi", "port": 8443, "reach": "internal" } } }, "has-layer": true }, { "module": "youtube", "layer": { "accesses": { "downloads": "/storage/downloads" }, "places": { "downloads": "/storage/downloads/youtube" } }, "has-layer": true }, { "module": "zsh" }, { "module": "zsh-autosuggestions" }, { "module": "zsh-syntax-highlighting" } ], "pins": { "postgres-database": { "node": "ace", "module": "postgres" }, "wildcard-resolution": { "node": "novox", "module": "dnsmasq" } }, "holds": [ { "claim": "mesh-dns-resolver", "scope": "mesh", "module": "dnsmasq", "site": "home" } ] }