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.
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
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
- seerr
- ackee
- ackee-mongo
- archview
- socket-proxy
- trivy
- trivy-docker-api
- monitoring-dashboard-1
- watchtower
- portainer_agent
- bookstack
- bookstack_db
- tailscale
- npm
- docker-daemon
images
- ghcr.io/tekkifox/rossmoney_me-cms
- adb-dump
- nickfedor/watchtower
- ghcr.io/tekkifox/archview
- portainer/agent
- ghcr.io/tekkifox/monitoring-dashboard
- ghcr.io/tekkifox/monitoring-trivy
- lscr.io/linuxserver/mariadb
- lscr.io/linuxserver/bookstack
- lscr.io/linuxserver/wireguard
- ghcr.io/tekkifox/rossmoney_me-host-report
- ghcr.io/tekkifox/image-mosaic
- ghcr.io/tekkifox/archview
- ghcr.io/tekkifox/monitoring-lynis-report-converter
- portainer/portainer-ee
- certbot/certbot
- lscr.io/linuxserver/socket-proxy
- mongo
- tailscale/tailscale
- electerious/ackee
- node
- portainer/portainer-ee
- portainer/portainer-ce
- portainer/agent
- docker
- ghcr.io/seerr-team/seerr
- jc21/nginx-proxy-manager
- alpine
- alpine
regions
- host
- Ubuntu 26.04.1 LTS
- aarch64Raw payload
{
"cluster": "archview",
"description": "Separate Go service exposing live Docker daemon, container, image, and Linux host telemetry.",
"docker": {
"containers": [
{
"created": 1793894745,
"id": "505ac9fc85b6",
"image": "ghcr.io/tekkifox/rossmoney_me-cms:latest",
"name": "rossmoney_me-cms-1",
"state": "running"
},
{
"created": 1793854828,
"id": "4b399ce32dbb",
"image": "ghcr.io/seerr-team/seerr:latest",
"name": "seerr",
"state": "running"
},
{
"created": 1793817333,
"id": "15875690b8cd",
"image": "electerious/ackee:3.7.1",
"name": "ackee",
"state": "running"
},
{
"created": 1793817332,
"id": "2c8918f52c08",
"image": "mongo:7",
"name": "ackee-mongo",
"state": "running"
},
{
"created": 1793751518,
"id": "998a09502f9a",
"image": "ghcr.io/tekkifox/archview:latest",
"name": "archview",
"state": "running"
},
{
"created": 1793751517,
"id": "210254b9e1ef",
"image": "lscr.io/linuxserver/socket-proxy:latest",
"name": "socket-proxy",
"state": "running"
},
{
"created": 1793723112,
"id": "e14752383a74",
"image": "ghcr.io/tekkifox/monitoring-trivy:latest",
"name": "trivy",
"state": "running"
},
{
"created": 1793723111,
"id": "29845c01aa56",
"image": "lscr.io/linuxserver/socket-proxy:latest",
"name": "trivy-docker-api",
"state": "running"
},
{
"created": 1793723103,
"id": "8a097b770cf8",
"image": "ghcr.io/tekkifox/monitoring-dashboard:latest",
"name": "monitoring-dashboard-1",
"state": "running"
},
{
"created": 1793720534,
"id": "418ccad88dae",
"image": "sha256:62fb91130ddb493f869cad7e198fa260dd16c5da293ed092cbd5d8781566f7a6",
"name": "watchtower",
"state": "running"
},
{
"created": 1793710185,
"id": "324cda5d0582",
"image": "sha256:cd22e4f904ff0e957a1421d1e9e9b8ca0523ed6b5f79f4d12b2ed0809ef3d734",
"name": "portainer_agent",
"state": "running"
},
{
"created": 1793638184,
"id": "59aad2d9c5a7",
"image": "sha256:da6324232770050b7d5f6222e8f4e223f1c688363b02ebb3c15a7546dd7133d5",
"name": "bookstack",
"state": "running"
},
{
"created": 1793638184,
"id": "3237941589a7",
"image": "sha256:d0f9ffd4d00878b8892888e70cb8ea12f4d2dfa63ac940ceb9fd1b36a1b449e3",
"name": "bookstack_db",
"state": "running"
},
{
"created": 1793600355,
"id": "a7ea2f4ccaa8",
"image": "tailscale/tailscale:latest",
"name": "tailscale",
"state": "running"
},
{
"created": 1793204524,
"id": "596ceec84228",
"image": "jc21/nginx-proxy-manager:2.15.1",
"name": "npm",
"state": "running"
}
],
"daemon": {
"architecture": "aarch64",
"containers": 16,
"containersRunning": 15,
"driver": "overlayfs",
"images": 43,
"memoryTotalBytes": 6187405312,
"ncpu": 1,
"operatingSystem": "Ubuntu 26.04.1 LTS"
},
"images": [
{
"created": 1793881207,
"dangling": false,
"repoTags": [
"ghcr.io/tekkifox/rossmoney_me-cms:latest"
],
"sizeBytes": 404964602
},
{
"created": 1793825046,
"dangling": false,
"repoTags": [
"adb-dump:local"
],
"sizeBytes": 263670943
},
{
"created": 1793795194,
"dangling": false,
"repoTags": [
"nickfedor/watchtower:latest"
],
"sizeBytes": 77435179
},
{
"created": 1793751443,
"dangling": false,
"repoTags": [
"ghcr.io/tekkifox/archview:latest"
],
"sizeBytes": 23893551
},
{
"created": 1793739803,
"dangling": false,
"repoTags": [
"portainer/agent:sts"
],
"sizeBytes": 176046366
},
{
"created": 1793722969,
"dangling": false,
"repoTags": [
"ghcr.io/tekkifox/monitoring-dashboard:latest"
],
"sizeBytes": 93277597
},
{
"created": 1793722500,
"dangling": false,
"repoTags": [
"ghcr.io/tekkifox/monitoring-trivy:latest"
],
"sizeBytes": 248124779
},
{
"created": 1793719889,
"dangling": false,
"repoTags": [
"lscr.io/linuxserver/mariadb:latest"
],
"sizeBytes": 568714960
},
{
"created": 1793666865,
"dangling": false,
"repoTags": [
"lscr.io/linuxserver/bookstack:latest"
],
"sizeBytes": 506870034
},
{
"created": 1793556424,
"dangling": false,
"repoTags": [
"lscr.io/linuxserver/wireguard:latest"
],
"sizeBytes": 182876224
},
{
"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": 1793226338,
"dangling": false,
"repoTags": [
"portainer/portainer-ee:sts"
],
"sizeBytes": 343636944
},
{
"created": 1793222581,
"dangling": false,
"repoTags": [
"certbot/certbot:latest"
],
"sizeBytes": 261725116
},
{
"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": 1792772442,
"dangling": false,
"repoTags": [
"electerious/ackee:3.7.1"
],
"sizeBytes": 329612512
},
{
"created": 1792626862,
"dangling": false,
"repoTags": [
"node:22-alpine"
],
"sizeBytes": 234691144
},
{
"created": 1792625419,
"dangling": false,
"repoTags": [
"portainer/portainer-ee:latest"
],
"sizeBytes": 272444975
},
{
"created": 1792625232,
"dangling": false,
"repoTags": [
"portainer/portainer-ce:sts"
],
"sizeBytes": 190318492
},
{
"created": 1792625182,
"dangling": false,
"repoTags": [
"portainer/agent:latest"
],
"sizeBytes": 187738423
},
{
"created": 1792624338,
"dangling": false,
"repoTags": [
"docker:cli"
],
"sizeBytes": 228092559
},
{
"created": 1792597213,
"dangling": false,
"repoTags": [
"ghcr.io/seerr-team/seerr:latest"
],
"sizeBytes": 1549244746
},
{
"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": 15,
"imageCount": 29
},
"nodes": [
{
"kind": "linux-host",
"name": "archview",
"status": "0.22 load average"
},
{
"details": {
"image": "ghcr.io/tekkifox/rossmoney_me-cms:latest",
"state": "running"
},
"kind": "container",
"name": "rossmoney_me-cms-1",
"status": "running"
},
{
"details": {
"image": "ghcr.io/seerr-team/seerr:latest",
"state": "running"
},
"kind": "container",
"name": "seerr",
"status": "running"
},
{
"details": {
"image": "electerious/ackee:3.7.1",
"state": "running"
},
"kind": "container",
"name": "ackee",
"status": "running"
},
{
"details": {
"image": "mongo:7",
"state": "running"
},
"kind": "container",
"name": "ackee-mongo",
"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/monitoring-trivy:latest",
"state": "running"
},
"kind": "container",
"name": "trivy",
"status": "running"
},
{
"details": {
"image": "lscr.io/linuxserver/socket-proxy:latest",
"state": "running"
},
"kind": "container",
"name": "trivy-docker-api",
"status": "running"
},
{
"details": {
"image": "ghcr.io/tekkifox/monitoring-dashboard:latest",
"state": "running"
},
"kind": "container",
"name": "monitoring-dashboard-1",
"status": "running"
},
{
"details": {
"image": "sha256:62fb91130ddb493f869cad7e198fa260dd16c5da293ed092cbd5d8781566f7a6",
"state": "running"
},
"kind": "container",
"name": "watchtower",
"status": "running"
},
{
"details": {
"image": "sha256:cd22e4f904ff0e957a1421d1e9e9b8ca0523ed6b5f79f4d12b2ed0809ef3d734",
"state": "running"
},
"kind": "container",
"name": "portainer_agent",
"status": "running"
},
{
"details": {
"image": "sha256:da6324232770050b7d5f6222e8f4e223f1c688363b02ebb3c15a7546dd7133d5",
"state": "running"
},
"kind": "container",
"name": "bookstack",
"status": "running"
},
{
"details": {
"image": "sha256:d0f9ffd4d00878b8892888e70cb8ea12f4d2dfa63ac940ceb9fd1b36a1b449e3",
"state": "running"
},
"kind": "container",
"name": "bookstack_db",
"status": "running"
},
{
"details": {
"image": "tailscale/tailscale:latest",
"state": "running"
},
"kind": "container",
"name": "tailscale",
"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 40 minutes"
},
{
"image": "ghcr.io/seerr-team/seerr:latest",
"kind": "container",
"name": "seerr",
"status": "Up 12 hours (healthy)"
},
{
"image": "electerious/ackee:3.7.1",
"kind": "container",
"name": "ackee",
"status": "Up 22 hours (healthy)"
},
{
"image": "mongo:7",
"kind": "container",
"name": "ackee-mongo",
"status": "Up 22 hours"
},
{
"image": "ghcr.io/tekkifox/archview:latest",
"kind": "container",
"name": "archview",
"status": "Up 40 hours (healthy)"
},
{
"image": "lscr.io/linuxserver/socket-proxy:latest",
"kind": "container",
"name": "socket-proxy",
"status": "Up 40 hours (healthy)"
},
{
"image": "ghcr.io/tekkifox/monitoring-trivy:latest",
"kind": "container",
"name": "trivy",
"status": "Up 6 hours (healthy)"
},
{
"image": "lscr.io/linuxserver/socket-proxy:latest",
"kind": "container",
"name": "trivy-docker-api",
"status": "Up 2 days (healthy)"
},
{
"image": "ghcr.io/tekkifox/monitoring-dashboard:latest",
"kind": "container",
"name": "monitoring-dashboard-1",
"status": "Up 2 days (healthy)"
},
{
"image": "sha256:62fb91130ddb493f869cad7e198fa260dd16c5da293ed092cbd5d8781566f7a6",
"kind": "container",
"name": "watchtower",
"status": "Up 2 days (healthy)"
},
{
"image": "sha256:cd22e4f904ff0e957a1421d1e9e9b8ca0523ed6b5f79f4d12b2ed0809ef3d734",
"kind": "container",
"name": "portainer_agent",
"status": "Up 2 days"
},
{
"image": "sha256:da6324232770050b7d5f6222e8f4e223f1c688363b02ebb3c15a7546dd7133d5",
"kind": "container",
"name": "bookstack",
"status": "Up 3 days"
},
{
"image": "sha256:d0f9ffd4d00878b8892888e70cb8ea12f4d2dfa63ac940ceb9fd1b36a1b449e3",
"kind": "container",
"name": "bookstack_db",
"status": "Up 3 days"
},
{
"image": "tailscale/tailscale:latest",
"kind": "container",
"name": "tailscale",
"status": "Up 3 days"
},
{
"image": "jc21/nginx-proxy-manager:2.15.1",
"kind": "container",
"name": "npm",
"status": "Up 47 hours"
},
{
"kind": "daemon",
"name": "docker-daemon",
"status": "16 containers, 43 images"
}
],
"status": "healthy",
"telemetry": {
"hosts": [
{
"cpu": 4,
"cpuCount": 1,
"diskPercent": 44.8,
"diskTotalBytes": 47321268224,
"diskUsedBytes": 21182312448,
"failedLoginUsers": [],
"failedLogins": 0,
"failedLoginsWindow": "1h",
"loadAverage": [
0.22,
0.23,
0.25
],
"memoryPercent": 33.7,
"memoryTotalBytes": 6187405312,
"memoryUsedBytes": 2088157184,
"name": "archview",
"networkRxBytes": 160468045,
"networkTxBytes": 37961969,
"os": "Ubuntu 26.04.1 LTS",
"processes": 256,
"sshLoginUsers": [
{
"user": "root",
"count": 2
},
{
"user": "notify-check",
"count": 1
}
],
"sshLoginUsersToday": [
{
"user": "root",
"count": 229
},
{
"user": "notify-check",
"count": 23
}
],
"sshLogins": 3,
"sshLoginsToday": 252,
"sshLoginsTodaySince": "2026-11-04T23:05:02Z",
"swapFreeBytes": 0,
"swapTotalBytes": 0
}
],
"metrics": {
"cpuAvg": 4,
"diskPercent": 44.8,
"diskTotalBytes": 47321268224,
"diskUsedBytes": 21182312448,
"failedLoginUsers": [],
"failedLogins": 0,
"failedLoginsWindow": "1h",
"hostCount": 1,
"loadAvg": 0.22,
"memoryPercent": 33.7,
"memoryTotalBytes": 6187405312,
"memoryUsedBytes": 2088157184,
"networkRxMB": 153.03425312042236,
"networkTxMB": 36.203354835510254,
"processCount": 256,
"sshLoginUsers": [
{
"user": "root",
"count": 2
},
{
"user": "notify-check",
"count": 1
}
],
"sshLoginUsersToday": [
{
"user": "root",
"count": 229
},
{
"user": "notify-check",
"count": 23
}
],
"sshLogins": 3,
"sshLoginsToday": 252,
"sshLoginsTodaySince": "2026-11-04T23:05:02Z",
"swapFreeBytes": 0,
"swapTotalBytes": 0,
"topOS": "Ubuntu 26.04.1 LTS"
}
},
"title": "Docker + Linux host overview",
"updatedAt": "2026-11-05T16:46:26Z"
}Recent commits
Last few GitHub commits from my portfolio repo.
git log
tekkifox / rossmoney_me
$ git log --oneline -n 5 b4c3dfe chore(deps): update payload to v3.93.0 (#385) 1697dbe fix(cms): start host sampler from server instrumentation (#384) 261394f ci: seed every run and isolate the screenshot build cache (#383) 12197f1 fix(cms): seed a CV document so the CV page is never empty (#382) c57fd24 feat(analytics): enable detailed tracking and count CV downloads (#381)
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.