Project Argus — Phase 1 Consolidated Digest
Generated: 2026-07-07T23:30:00Z
Sources
-
opnsense_filter_rules: /tmp/opnsense-filter-rules.json
-
mikrotik_state: /tmp/mikrotik-state.json
-
compose_files: GitLab group compose-files (30 repos)
-
traefik_config: compose-files/traefik data/config.yml
-
ansible_inventory: machines/ansible-playbooks inventory/hosts.yml
-
network_flows_job: 5173 — success
VLAN Inventory
| VLAN | Name | Subnet |
|---|---|---|
| 10 | Services | 10.67.10.0/24 |
| 20 | Storage | 10.67.20.0/24 |
| 30 | DMZ | 10.67.30.0/24 |
| 40 | Infrastructure | 10.67.40.0/24 |
| 45 | Management | 10.67.45.0/24 |
| 50 | Guest | 10.67.50.0/24 |
| 60 | Endpoints | 10.67.60.0/24 |
| 70 | IoT | 10.67.70.0/24 |
| 71 | ISPRouter | 10.67.71.0/24 |
Host Inventory
| Host | IP | VLAN | Groups | MAC |
|---|---|---|---|---|
| matrix-1 | 10.67.30.24 | DMZ (30) | docker_hosts | bc:24:11:2d:5a:9d |
| newt-1 | 10.67.30.25 | DMZ (30) | docker_hosts | bc:24:11:7c:61:ed |
| appstack-1 | 10.67.10.25 | Services (10) | docker_hosts | bc:24:11:0e:f4:00 |
| arrstack-1 | 10.67.10.26 | Services (10) | docker_hosts | bc:24:11:b9:ef:07 |
| devstack-1 | 10.67.10.31 | Services (10) | docker_hosts | bc:24:11:c3:cc:26 |
| infstack-1 | 10.67.40.25 | Infrastructure (40) | docker_hosts | bc:24:11:39:45:9e |
| mediastack-1 | 10.67.10.27 | Services (10) | docker_hosts | bc:24:11:31:be:43 |
| pangolin-1 | 89.127.232.7 | Unknown (None) | docker_hosts | None |
| nextcloud-1 | 10.67.10.29 | Services (10) | docker_hosts | bc:24:11:96:71:59 |
| monitoring-1 | 10.67.40.27 | Infrastructure (40) | docker_hosts | bc:24:11:61:f7:eb |
| kasm-1 | 10.67.10.28 | Services (10) | docker_hosts | bc:24:11:fe:d2:0b |
| arasaka-1 | 10.67.45.27 | Management (45) | core_infra | bc:30:5b:ed:68:5d |
| datafortress-1 | 10.67.20.24 | Storage (20) | core_infra | ec:f4:bb:c7:0c:c0 |
Public Services via Traefik
| Public Host | Zone | Internal Host | Port | TLS |
|---|---|---|---|---|
| proxmox.eddiequinn.casa | Management | proxmox.mgmt.local.eddiequinn.casa | 8006 | True |
| truenas.eddiequinn.casa | Storage | truenas.str.local.eddiequinn.casa | 80 | False |
| jellyfin.eddiequinn.casa | Services | jellyfin.svc.local.eddiequinn.casa | 8096 | False |
| seer.eddiequinn.casa | Services | seer.svc.local.eddiequinn.casa | 5055 | False |
| sonarr.eddiequinn.casa | Services | sonarr.svc.local.eddiequinn.casa | 8989 | False |
| radarr.eddiequinn.casa | Services | radarr.svc.local.eddiequinn.casa | 7878 | False |
| prowlarr.eddiequinn.casa | Services | prowlarr.svc.local.eddiequinn.casa | 9696 | False |
| syncthing.eddiequinn.casa | Services | syncthing.svc.local.eddiequinn.casa | 8384 | False |
| qui.eddiequinn.casa | Services | qui.svc.local.eddiequinn.casa | 7476 | False |
| gitlab.eddiequinn.casa | Services | gitlab.svc.local.eddiequinn.casa | 80 | False |
| r.gitlab.eddiequinn.casa | Services | r.gitlab.svc.local.eddiequinn.casa | 5050 | True |
| audiobookshelf.eddiequinn.casa | Services | audiobookshelf.svc.local.eddiequinn.casa | 13378 | False |
| immich.eddiequinn.casa | Services | immich.svc.local.eddiequinn.casa | 2283 | False |
| sx.eddiequinn.casa | Services | searxng.svc.local.eddiequinn.casa | 8087 | False |
| jobsync.eddiequinn.casa | Services | jobsync.svc.local.eddiequinn.casa | 3737 | False |
| kasm.eddiequinn.casa | Services | kasm.svc.local.eddiequinn.casa | 443 | False |
| nextcloud-aio.eddiequinn.casa | Services | nextcloud-aio.svc.local.eddiequinn.casa | 8080 | False |
| nextcloud.eddiequinn.casa | Services | nextcloud.svc.local.eddiequinn.casa | 11000 | False |
| ntfy.eddiequinn.casa | Services | ntfy.svc.local.eddiequinn.casa | 8086 | False |
| pdu.eddiequinn.casa | Management | pdu.mgmt.local.eddiequinn.casa | 443 | False |
| omada.eddiequinn.casa | Infrastructure | omada.infra.local.eddiequinn.casa | 8043 | False |
| grafana.eddiequinn.casa | Infrastructure | grafana.infra.local.eddiequinn.casa | 3000 | False |
| prometheus.eddiequinn.casa | Infrastructure | prometheus.infra.local.eddiequinn.casa | 9090 | False |
| dbackup.eddiequinn.casa | Infrastructure | dbackup.infra.local.eddiequinn.casa | 3050 | False |
| home.eddiequinn.casa | Services | homepage.svc.local.eddiequinn.casa | 3000 | False |
| komodo.eddiequinn.casa | Services | komodo.svc.local.eddiequinn.casa | 9120 | False |
| infisical.eddiequinn.casa | Infrastructure | infisical.infra.local.eddiequinn.casa | 8080 | False |
| reader.eddiequinn.casa | Services | reader.svc.local.eddiequinn.casa | 8082 | False |
| opnsense.eddiequinn.casa | Management | opnsense.mgmt.local.eddiequinn.casa | 443 | False |
| auth.eddiequinn.casa | Infrastructure | authentik.infra.local.eddiequinn.casa | 9000 | False |
| fmd.eddiequinn.casa | Services | fmd.svc.local.eddiequinn.casa | 8080 | False |
Live Network Flows Summary
Job 5173 captured 11 hosts, 230 listening sockets, 116 publicly bound.
| Host | IP | Listening | Containers | Komodo Stacks |
|---|---|---|---|---|
| appstack-1 | 10.67.10.25 | 39 | 35 | ai-stack, commafeed, fmd-foss, homepage, immich… |
| arrstack-1 | 10.67.10.26 | 24 | 16 | arr-stack, syncthing |
| devstack-1 | 10.67.10.31 | 20 | 14 | gitlab, renovate |
| infstack-1 | 10.67.40.25 | 52 | 32 | authentik, bind9, dbackup, infisical, omada… |
| kasm-1 | 10.67.10.28 | 8 | 13 | NO_KOMODO_REPO_ROOT |
| matrix-1 | 10.67.30.24 | 22 | 16 | synapse |
| mediastack-1 | 10.67.10.27 | 14 | 14 | audiobookshelf, jelly-stack, matrix-synapse |
| monitoring-1 | 10.67.40.27 | 15 | 12 | |
| newt-1 | 10.67.30.25 | 7 | 8 | |
| nextcloud-1 | 10.67.10.29 | 12 | 17 | nextcloud-aio, nextcloud |
| pangolin-1 | 89.127.232.7 | 17 | 12 |
Top Listening Ports
| Port | Occurrences | Sample Hosts |
|---|---|---|
| 18080 | 20 | appstack-1, arrstack-1, devstack-1, infstack-1, matrix-1 |
| 8120 | 18 | appstack-1, arrstack-1, devstack-1, infstack-1, matrix-1 |
| 22 | 16 | appstack-1, arrstack-1, devstack-1, infstack-1, kasm-1 |
| 25 | 12 | appstack-1, arrstack-1, devstack-1, infstack-1, matrix-1 |
| 53 | 12 | infstack-1, kasm-1, monitoring-1, newt-1, nextcloud-1 |
| 9100 | 10 | appstack-1, arrstack-1, devstack-1, infstack-1, matrix-1 |
| 443 | 10 | devstack-1, infstack-1, kasm-1, matrix-1, pangolin-1 |
| 8080 | 8 | appstack-1, devstack-1, infstack-1, nextcloud-1 |
| 80 | 8 | devstack-1, infstack-1, matrix-1, pangolin-1 |
| 111 | 6 | appstack-1, arrstack-1, infstack-1 |
| 5432 | 5 | appstack-1, infstack-1, matrix-1 |
| 9000 | 4 | appstack-1, infstack-1 |
| 3000 | 4 | appstack-1, monitoring-1 |
| 2424 | 4 | devstack-1, pangolin-1 |
| 9115 | 4 | infstack-1, monitoring-1 |
| 9090 | 4 | infstack-1, monitoring-1 |
| 8448 | 4 | matrix-1, pangolin-1 |
| 8642 | 2 | appstack-1 |
| 8765 | 2 | appstack-1 |
| 9119 | 2 | appstack-1 |
| 9001 | 2 | appstack-1 |
| 5678 | 2 | appstack-1 |
| 8086 | 2 | appstack-1 |
| 8087 | 2 | appstack-1 |
| 8082 | 2 | appstack-1 |
| 3737 | 2 | appstack-1 |
| 2283 | 2 | appstack-1 |
| 22000 | 2 | arrstack-1 |
| 8989 | 2 | arrstack-1 |
| 8384 | 2 | arrstack-1 |
Compose Stacks
| Repo | Hint VLAN | Services |
|---|---|---|
| compose-files/fmd-foss | Services | fmd |
| compose-files/ntfy | Services | ntfy |
| compose-files/ai-stack | Services | honcho-api, honcho-deriver, honcho-db, honcho-redis, hermes |
| compose-files/authentik | Infrastructure | postgresql, server, worker |
| compose-files/bind9 | Infrastructure | bind9, rpz-updater |
| compose-files/omada | Infrastructure | omada-controller |
| compose-files/jobsync | Services | app |
| compose-files/omnisearch | Services | omnisearch |
| compose-files/dbackup | Infrastructure | dbackup |
| compose-files/commafeed | Unknown | commafeed |
| compose-files/homepage | Services | homepage |
| compose-files/the-lounge | Services | thelounge |
| compose-files/radicale | Services | radicale |
| compose-files/gitlab | Services | gitlab, gitlab-runner |
| compose-files/searxng | Services | redis, searxng |
| compose-files/immich | Services | immich-server, immich-machine-learning, redis, database |
| compose-files/n8n | Services | n8n |
| compose-files/synapse | Unknown | synapse-db-18, synapse, caddy, coturn, maubot, hookshot, synapse-admin |
| compose-files/nextcloud | Services | nextcloud-aio-mastercontainer |
| compose-files/infisical | Infrastructure | backend, redis, db |
| compose-files/renovate | Infrastructure | renovate-ce |
| compose-files/syncthing | Services | syncthing |
| compose-files/jelly-stack | Services | jellyfin, seerr |
| compose-files/freshrss | Services | freshrss |
| compose-files/audiobookshelf | Services | audiobookshelf |
| compose-files/arr-stack | Services | prowlarr, flaresolverr, radarr, sonarr, qui |
| compose-files/traefik | Services | traefik |
| compose-files/cloudflare-utils | Infrastructure | cloudflare-ddns |
| compose-files/uptimekuma | Services | uptime-kuma |
| compose-files/semaphore | Infrastructure | semaphore |
OPNsense User Rules
| Description | Interface | Action | Protocol | Source | Destination | Port |
|---|---|---|---|---|---|---|
| Matrix HTTPS | WAN | pass | tcp | any | wanip | 443 |
| Matrix Federation | WAN | pass | tcp | any | wanip | 8448 |
| Syncthing | WAN | pass | tcp/udp | any | 10.67.10.26 | 22000 |
| Temporary allow all - migration | Services | pass | any | any | ||
| Allow Services to Storage | Services | pass | 10.67.10.0/24 | 10.67.20.0/24 | ||
| Temporary allow all - migration | Storage | pass | any | any | ||
| Allow Services to Storage | Storage | pass | 10.67.20.0/24 | 10.67.10.0/24 | ||
| Temporary allow all - migration | DMZ | pass | any | any | ||
| Matrix HTTPS | DMZ | pass | tcp | any | wanip | 443 |
| Matrix Federation | DMZ | pass | tcp | any | wanip | 8448 |
| Temporary allow all - migration | Infrastructure | pass | any | any | ||
| Temporary allow all - migration | Management | pass | any | any | ||
| Temporary allow all - migration | Guest | pass | any | any | ||
| Temporary allow all - migration | Endpoints | pass | any | any | ||
| Allow DNS to adguard | Endpoints | pass | udp | any | any | 53 |
| Temporary allow all - migration | IoT | pass | any | any | ||
| Block to internal 10/8 | ISPRouter | block | 10.67.81.0/24 | 10.0.0.0/8 | ||
| Block to internal 172.16/12 | ISPRouter | block | 10.67.81.0/24 | 172.16.0.0/12 | ||
| Block to internal 192.168.0/16 | ISPRouter | block | 10.67.81.0/24 | 192.168.0.0/16 | ||
| Allow to WAN | ISPRouter | pass | 10.67.81.0/24 | any |
MikroTik VLAN Port Map
| VLAN | Tagged | Untagged |
|---|---|---|
| 10 | ether4,ether13 | |
| 20 | ether4,ether13 | ether11 |
| 30 | ether4,ether13 | |
| 40 | ether4,ether13 | ether7 |
| 45 | ether4,ether13,bridge | ether9,ether1,ether12,ether5 |
| 50 | ether4,ether7,ether13 | |
| 60 | ether4,ether7,ether13 | ether17 |
| 70 | ether4,ether7,ether13 | |
| 1 | ether4 | ether7 |
| 1 | bridge,ether13 | |
| 71 | ether4 | ether15 |
Observations
- Every internal VLAN has a “Temporary allow all - migration” pass rule on OPNsense.
- MikroTik has no L3 firewall rules; all inter-VLAN filtering is delegated to OPNsense.
- VLAN 45 (Management) has four untagged access ports on MikroTik: ether1, ether5, ether9, ether12.
- MikroTik bridge retains legacy 10.0.1.34/16 address.
- VLAN 71 (ISPRouter / 10.67.81.0/24) is present but not in original Blackwall design.
- 31 public hostnames are exposed through Traefik on Infrastructure host (grafana/infisical/authentik) or Services host (all others).
- 30 compose-files repos define deployed stacks; ai-stack, synapse, arr-stack, immich, authentik are multi-service.
- Live network-flows job captured 11 hosts with 230 listening sockets (116 publicly bound).
- Port 18080 is the most common public bind, likely Traefik metrics or a common app port.
- Port 22 (SSH) is open on most hosts; port 25 (postfix/master) appears on several hosts bound to 127.0.0.1 only.
- Port 9100 (node_exporter) is present across infrastructure/hosts.
- Docker proxy processes bind the vast majority of public ports; host networking is minimal.
Recommended Next Steps
- Run ansible-discover-network-flows CI job to collect live sockets, containers, and /etc/komodo/repos state.
- Replace temporary allow-all OPNsense rules with explicit allowlist per argus-phase1-diff.md section 7.
- Audit MikroTik untagged VLAN 45 ports and remove legacy bridge IP.
- Map TrueNAS shares to exact initiator subnets once network-flows job runs.
Verify this post
This page is published as a PGP clearsigned document. You can verify it like this:
gpg --keyserver hkps://keys.openpgp.org --recv-keys CA98D5946FA3A374BA7E2D8FB254FBF3F060B796
curl -fsSL 'https://eddiequinn.xyz/sigs/posts/drafts/project-argus/data/argus-phase1-digest.txt' | gpg --verify