RM
Ross Money

Developer

Available for devops and developer roles

Building dependable systems with operational discipline.

I design and ship resilient developer experiences, automation layers, and production-ready interfaces. This portfolio can now be edited in Payload CMS and persisted in MongoDB.

99.95%availability target
24/7operations mindset
DXdeveloper experience focus

Selected work

Real roles and projects from my CV.

Backend developer across Laravel and legacy PHP

Morphsites

Built and maintained new Laravel projects and older PHP/Statamic sites, while handling support tickets autonomously through Jira.

PHP Developer with DevOps responsibility

Rawnet Ltd.

Supported in-house developers and AWS infrastructure, built local Docker setup commands, handled WAF blocking, monitored uptime, and managed Ubuntu patching with Canonical Landscape.

Full stack PHP and Vue work for business tooling

Project Better Energy

Worked in a small team maintaining Laravel applications, built Vue.js finance wizards, and delivered a stockist map feature for EV chargers.

Experience

Recent delivery history.

2024 - Present

Personal infrastructure · Homelab and service automation

Building portfolio tooling, reverse-proxy deployments, and containerized services that I can operate end-to-end.

2021 - 2024

Platform support · Managed hosting and application teams

Kept production systems stable, handled support workloads, and improved developer delivery paths across PHP and AWS stacks.

Live architecture example

Live architecture snapshot

Topology

Docker + Linux host overview

Updated

Separate Go service exposing live Docker daemon, container, image, and Linux host telemetry.

client
  -> portfolio site
     -> /api/architecture (https://archview.rossmoney.me/api/architecture)
        -> host Go service

containers
  - rossmoney_me-cms-1
  - bookstack
  - bookstack_db
  - archview
  - socket-proxy
  - archview-dev
  - watchtower
  - tailscale
  - monitoring-dashboard-1
  - trivy
  - portainer
  - trivy-docker-api
  - npm
  - docker-daemon

images
  - ghcr.io/tekkifox/rossmoney_me-cms
  - ghcr.io/tekkifox/archview
  - ghcr.io/tekkifox/monitoring-dashboard
  - ghcr.io/tekkifox/monitoring-trivy
  - ghcr.io/tekkifox/rossmoney_me-host-report
  - ghcr.io/tekkifox/image-mosaic
  - ghcr.io/tekkifox/archview
  - ghcr.io/tekkifox/monitoring-lynis-report-converter
  - lscr.io/linuxserver/bookstack
  - portainer/portainer-ee
  - lscr.io/linuxserver/mariadb
  - lscr.io/linuxserver/socket-proxy
  - mongo
  - tailscale/tailscale
  - nickfedor/watchtower
  - portainer/portainer-ee
  - portainer/portainer-ce
  - docker
  - jc21/nginx-proxy-manager
  - alpine
  - alpine


regions
  - host
  - Ubuntu 26.04.1 LTS
  - aarch64
Raw payload
{
  "cluster": "archview",
  "description": "Separate Go service exposing live Docker daemon, container, image, and Linux host telemetry.",
  "docker": {
    "containers": [
      {
        "created": 1793643506,
        "id": "8bb7010555d5",
        "image": "ghcr.io/tekkifox/rossmoney_me-cms:latest",
        "name": "rossmoney_me-cms-1",
        "state": "running"
      },
      {
        "created": 1793638184,
        "id": "59aad2d9c5a7",
        "image": "lscr.io/linuxserver/bookstack:latest",
        "name": "bookstack",
        "state": "running"
      },
      {
        "created": 1793638184,
        "id": "3237941589a7",
        "image": "lscr.io/linuxserver/mariadb:latest",
        "name": "bookstack_db",
        "state": "running"
      },
      {
        "created": 1793633420,
        "id": "b06544b70e34",
        "image": "ghcr.io/tekkifox/archview:latest",
        "name": "archview",
        "state": "running"
      },
      {
        "created": 1793633420,
        "id": "bb9ecc86e68e",
        "image": "lscr.io/linuxserver/socket-proxy:latest",
        "name": "socket-proxy",
        "state": "running"
      },
      {
        "created": 1793631207,
        "id": "c5c926d7f0b8",
        "image": "ghcr.io/tekkifox/archview:dev",
        "name": "archview-dev",
        "state": "running"
      },
      {
        "created": 1793601977,
        "id": "c7f76f1b699f",
        "image": "nickfedor/watchtower",
        "name": "watchtower",
        "state": "running"
      },
      {
        "created": 1793600355,
        "id": "a7ea2f4ccaa8",
        "image": "tailscale/tailscale:latest",
        "name": "tailscale",
        "state": "running"
      },
      {
        "created": 1793592818,
        "id": "52cb161f55b4",
        "image": "ghcr.io/tekkifox/monitoring-dashboard:latest",
        "name": "monitoring-dashboard-1",
        "state": "running"
      },
      {
        "created": 1793592813,
        "id": "828ffcd9b483",
        "image": "ghcr.io/tekkifox/monitoring-trivy:latest",
        "name": "trivy",
        "state": "running"
      },
      {
        "created": 1793590975,
        "id": "64d994458994",
        "image": "portainer/portainer-ee:sts",
        "name": "portainer",
        "state": "running"
      },
      {
        "created": 1793474536,
        "id": "75b531860fb4",
        "image": "lscr.io/linuxserver/socket-proxy:latest",
        "name": "trivy-docker-api",
        "state": "running"
      },
      {
        "created": 1793204524,
        "id": "596ceec84228",
        "image": "jc21/nginx-proxy-manager:2.15.1",
        "name": "npm",
        "state": "running"
      }
    ],
    "daemon": {
      "architecture": "aarch64",
      "containers": 14,
      "containersRunning": 13,
      "driver": "overlayfs",
      "images": 56,
      "memoryTotalBytes": 6187405312,
      "ncpu": 1,
      "operatingSystem": "Ubuntu 26.04.1 LTS"
    },
    "images": [
      {
        "created": 1793643399,
        "dangling": false,
        "repoTags": [
          "ghcr.io/tekkifox/rossmoney_me-cms:latest"
        ],
        "sizeBytes": 378535786
      },
      {
        "created": 1793630319,
        "dangling": false,
        "repoTags": [
          "ghcr.io/tekkifox/archview:latest"
        ],
        "sizeBytes": 23664757
      },
      {
        "created": 1793592806,
        "dangling": false,
        "repoTags": [
          "ghcr.io/tekkifox/monitoring-dashboard:latest"
        ],
        "sizeBytes": 93277502
      },
      {
        "created": 1793540333,
        "dangling": false,
        "repoTags": [
          "ghcr.io/tekkifox/monitoring-trivy:latest"
        ],
        "sizeBytes": 248124688
      },
      {
        "created": 1793408191,
        "dangling": false,
        "repoTags": [
          "ghcr.io/tekkifox/rossmoney_me-host-report:latest"
        ],
        "sizeBytes": 276197451
      },
      {
        "created": 1793362704,
        "dangling": false,
        "repoTags": [
          "ghcr.io/tekkifox/image-mosaic:latest"
        ],
        "sizeBytes": 51484100
      },
      {
        "created": 1793316171,
        "dangling": false,
        "repoTags": [
          "ghcr.io/tekkifox/archview:dev"
        ],
        "sizeBytes": 23667909
      },
      {
        "created": 1793300941,
        "dangling": false,
        "repoTags": [
          "ghcr.io/tekkifox/monitoring-lynis-report-converter:latest"
        ],
        "sizeBytes": 274159353
      },
      {
        "created": 1793230185,
        "dangling": false,
        "repoTags": [
          "lscr.io/linuxserver/bookstack:latest"
        ],
        "sizeBytes": 506669770
      },
      {
        "created": 1793226338,
        "dangling": false,
        "repoTags": [
          "portainer/portainer-ee:sts"
        ],
        "sizeBytes": 343636944
      },
      {
        "created": 1793108149,
        "dangling": false,
        "repoTags": [
          "lscr.io/linuxserver/mariadb:latest"
        ],
        "sizeBytes": 568707130
      },
      {
        "created": 1793059591,
        "dangling": false,
        "repoTags": [
          "lscr.io/linuxserver/socket-proxy:latest"
        ],
        "sizeBytes": 25882804
      },
      {
        "created": 1793057442,
        "dangling": false,
        "repoTags": [
          "mongo:7"
        ],
        "sizeBytes": 1128268175
      },
      {
        "created": 1793054302,
        "dangling": false,
        "repoTags": [
          "tailscale/tailscale:latest"
        ],
        "sizeBytes": 179464923
      },
      {
        "created": 1792640652,
        "dangling": false,
        "repoTags": [
          "nickfedor/watchtower:latest"
        ],
        "sizeBytes": 75669999
      },
      {
        "created": 1792625419,
        "dangling": false,
        "repoTags": [
          "portainer/portainer-ee:latest"
        ],
        "sizeBytes": 272444975
      },
      {
        "created": 1792625232,
        "dangling": false,
        "repoTags": [
          "portainer/portainer-ce:sts"
        ],
        "sizeBytes": 190318492
      },
      {
        "created": 1792624338,
        "dangling": false,
        "repoTags": [
          "docker:cli"
        ],
        "sizeBytes": 228092559
      },
      {
        "created": 1780461197,
        "dangling": false,
        "repoTags": [
          "jc21/nginx-proxy-manager:2.15.1"
        ],
        "sizeBytes": 1807680173
      },
      {
        "created": 1776383604,
        "dangling": false,
        "repoTags": [
          "alpine:3.20"
        ],
        "sizeBytes": 13660215
      },
      {
        "created": 0,
        "dangling": false,
        "repoTags": [
          "alpine:latest"
        ],
        "sizeBytes": 13026061
      }
    ]
  },
  "endpoints": [
    {
      "name": "architecture",
      "url": "https://archview.rossmoney.me/api/architecture"
    },
    {
      "name": "docker",
      "url": "https://archview.rossmoney.me/api/docker"
    },
    {
      "name": "system",
      "url": "https://archview.rossmoney.me/api/system"
    },
    {
      "name": "healthz",
      "url": "https://archview.rossmoney.me/healthz"
    },
    {
      "name": "readyz",
      "url": "https://archview.rossmoney.me/readyz"
    },
    {
      "name": "docs",
      "url": "https://archview.rossmoney.me/docs"
    }
  ],
  "environment": "docker",
  "extra": {
    "containerCount": 13,
    "imageCount": 21
  },
  "nodes": [
    {
      "kind": "linux-host",
      "name": "archview",
      "status": "1.25 load average"
    },
    {
      "details": {
        "image": "ghcr.io/tekkifox/rossmoney_me-cms:latest",
        "state": "running"
      },
      "kind": "container",
      "name": "rossmoney_me-cms-1",
      "status": "running"
    },
    {
      "details": {
        "image": "lscr.io/linuxserver/bookstack:latest",
        "state": "running"
      },
      "kind": "container",
      "name": "bookstack",
      "status": "running"
    },
    {
      "details": {
        "image": "lscr.io/linuxserver/mariadb:latest",
        "state": "running"
      },
      "kind": "container",
      "name": "bookstack_db",
      "status": "running"
    },
    {
      "details": {
        "image": "ghcr.io/tekkifox/archview:latest",
        "state": "running"
      },
      "kind": "container",
      "name": "archview",
      "status": "running"
    },
    {
      "details": {
        "image": "lscr.io/linuxserver/socket-proxy:latest",
        "state": "running"
      },
      "kind": "container",
      "name": "socket-proxy",
      "status": "running"
    },
    {
      "details": {
        "image": "ghcr.io/tekkifox/archview:dev",
        "state": "running"
      },
      "kind": "container",
      "name": "archview-dev",
      "status": "running"
    },
    {
      "details": {
        "image": "nickfedor/watchtower",
        "state": "running"
      },
      "kind": "container",
      "name": "watchtower",
      "status": "running"
    },
    {
      "details": {
        "image": "tailscale/tailscale:latest",
        "state": "running"
      },
      "kind": "container",
      "name": "tailscale",
      "status": "running"
    },
    {
      "details": {
        "image": "ghcr.io/tekkifox/monitoring-dashboard:latest",
        "state": "running"
      },
      "kind": "container",
      "name": "monitoring-dashboard-1",
      "status": "running"
    },
    {
      "details": {
        "image": "ghcr.io/tekkifox/monitoring-trivy:latest",
        "state": "running"
      },
      "kind": "container",
      "name": "trivy",
      "status": "running"
    },
    {
      "details": {
        "image": "portainer/portainer-ee:sts",
        "state": "running"
      },
      "kind": "container",
      "name": "portainer",
      "status": "running"
    },
    {
      "details": {
        "image": "lscr.io/linuxserver/socket-proxy:latest",
        "state": "running"
      },
      "kind": "container",
      "name": "trivy-docker-api",
      "status": "running"
    },
    {
      "details": {
        "image": "jc21/nginx-proxy-manager:2.15.1",
        "state": "running"
      },
      "kind": "container",
      "name": "npm",
      "status": "running"
    }
  ],
  "region": "Ubuntu 26.04.1 LTS",
  "regions": [
    "host",
    "Ubuntu 26.04.1 LTS",
    "aarch64"
  ],
  "services": [
    {
      "image": "ghcr.io/tekkifox/rossmoney_me-cms:latest",
      "kind": "container",
      "name": "rossmoney_me-cms-1",
      "status": "Up 57 minutes"
    },
    {
      "image": "lscr.io/linuxserver/bookstack:latest",
      "kind": "container",
      "name": "bookstack",
      "status": "Up 2 hours"
    },
    {
      "image": "lscr.io/linuxserver/mariadb:latest",
      "kind": "container",
      "name": "bookstack_db",
      "status": "Up 2 hours"
    },
    {
      "image": "ghcr.io/tekkifox/archview:latest",
      "kind": "container",
      "name": "archview",
      "status": "Up 4 hours (healthy)"
    },
    {
      "image": "lscr.io/linuxserver/socket-proxy:latest",
      "kind": "container",
      "name": "socket-proxy",
      "status": "Up 4 hours (healthy)"
    },
    {
      "image": "ghcr.io/tekkifox/archview:dev",
      "kind": "container",
      "name": "archview-dev",
      "status": "Up 4 hours (healthy)"
    },
    {
      "image": "nickfedor/watchtower",
      "kind": "container",
      "name": "watchtower",
      "status": "Up 12 hours (healthy)"
    },
    {
      "image": "tailscale/tailscale:latest",
      "kind": "container",
      "name": "tailscale",
      "status": "Up 13 hours"
    },
    {
      "image": "ghcr.io/tekkifox/monitoring-dashboard:latest",
      "kind": "container",
      "name": "monitoring-dashboard-1",
      "status": "Up 15 hours (healthy)"
    },
    {
      "image": "ghcr.io/tekkifox/monitoring-trivy:latest",
      "kind": "container",
      "name": "trivy",
      "status": "Up 9 hours (healthy)"
    },
    {
      "image": "portainer/portainer-ee:sts",
      "kind": "container",
      "name": "portainer",
      "status": "Up 16 hours"
    },
    {
      "image": "lscr.io/linuxserver/socket-proxy:latest",
      "kind": "container",
      "name": "trivy-docker-api",
      "status": "Up 2 days (healthy)"
    },
    {
      "image": "jc21/nginx-proxy-manager:2.15.1",
      "kind": "container",
      "name": "npm",
      "status": "Up 15 hours"
    },
    {
      "kind": "daemon",
      "name": "docker-daemon",
      "status": "14 containers, 56 images"
    }
  ],
  "status": "healthy",
  "telemetry": {
    "hosts": [
      {
        "cpu": 125,
        "cpuCount": 1,
        "diskPercent": 36.1,
        "diskTotalBytes": 47321268224,
        "diskUsedBytes": 17070649344,
        "loadAverage": [
          1.25,
          0.75,
          0.52
        ],
        "memoryPercent": 25.8,
        "memoryTotalBytes": 6187405312,
        "memoryUsedBytes": 1598783488,
        "name": "archview",
        "networkRxBytes": 15796878,
        "networkTxBytes": 3334375,
        "os": "Ubuntu 26.04.1 LTS",
        "processes": 251,
        "swapFreeBytes": 0,
        "swapTotalBytes": 0
      }
    ],
    "metrics": {
      "cpuAvg": 125,
      "diskPercent": 36.1,
      "diskTotalBytes": 47321268224,
      "diskUsedBytes": 17070649344,
      "hostCount": 1,
      "loadAvg": 1.25,
      "memoryPercent": 25.8,
      "memoryTotalBytes": 6187405312,
      "memoryUsedBytes": 1598783488,
      "networkRxMB": 15.06507682800293,
      "networkTxMB": 3.17990779876709,
      "processCount": 251,
      "swapFreeBytes": 0,
      "swapTotalBytes": 0,
      "topOS": "Ubuntu 26.04.1 LTS"
    }
  },
  "title": "Docker + Linux host overview",
  "updatedAt": "2026-11-02T19:15:37Z"
}

Recent commits

Last few GitHub commits from my portfolio repo.

git log

tekkifox / rossmoney_me

$ git log --oneline -n 5
23185d1 feat(payload-cms): report archview source failures instead of falling back (#307)
59c69ed fix(payload-cms): seed Map link in header nav (#305)
c61967e feat(cms): let pages choose their own template (#301)
3c88442 fix(map): tighten vertical rhythm and drop address-free copy (#303)
490e500 fix(payload-cms): allow the map diagram through the image optimiser (#299)

Contact

Open to platform, DevOps, and development work.

I am available for contract and full-time work, and I enjoy collaborating with teams to improve delivery and reliability.