Game Servers
VortexServers.co.uk — Community game server hosting and tooling
Live game server deployments, provisioning, and monitoring for VortexServers.co.uk.
Project architecture
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.vortexservers.co.uk/api/architecture)
-> host Go service
containers
- vortexservers_co_uk-web-1
- archview
- npm
- authentik-authentik-1
- authentik-redis-1
- pelican-node
- pelican-panel
- pelican-database
- bookstack
- bookstack_db
- portainer
- monitoring-dashboard-1
- trivy
- trivy-docker-api
- server-maintenance-notification-agent-notification-agent-1
- socket-proxy
- server-maintenance-notification-agent-docker-socket-proxy-1
- portainer_edge_agent
- dishorde
- authentik-worker-1
- authentik-postgres-1
- project-zomboid-player-count-discord-bot-1
- discord-gsm
- wg-easy
- docker-daemon
images
- ghcr.io/tekkifox/vortexservers_co_uk
- ghcr.io/parkervcp/yolks
- ghcr.io/parkervcp/yolks
- ghcr.io/parkervcp/yolks
- ghcr.io/tekkifox/monitoring-dashboard
- ghcr.io/parkervcp/yolks
- ghcr.io/parkervcp/yolks
- ghcr.io/parkervcp/steamcmd
- ghcr.io/pelican/panel
- ghcr.io/tekkifox/monitoring-trivy
- ghcr.io/pterodactyl/yolks
- ghcr.io/tekkifox/archview
- ghcr.io/tekkifox/monitoring-lynis-report-converter
- lscr.io/linuxserver/bookstack
- portainer/portainer-ee
- node
- ghcr.io/tekkifox/server-maintenance-notification-agent
- lscr.io/linuxserver/mariadb
- linuxserver/socket-proxy
- redis
- portainer/agent
- postgres
- alpine
- ghcr.io/pelican/wings
- ghcr.io/parkervcp/steamcmd
- specker/discordplayercountbot
- jc21/nginx-proxy-manager
- ghcr.io/parkervcp/yolks
- ghcr.io/goauthentik/server
- discordgsm/discord-game-server-monitor
- containrrr/watchtower
- weejewel/wg-easy
- mariadb
regions
- host
- Ubuntu 25.10
- x86_64Raw snapshot
{
"cluster": "archview",
"description": "Separate Go service exposing live Docker daemon, container, image, and Linux host telemetry.",
"docker": {
"containers": [
{
"created": 1793602645,
"id": "02f850edb72e",
"image": "ghcr.io/tekkifox/vortexservers_co_uk:latest",
"name": "vortexservers_co_uk-web-1",
"state": "running"
},
{
"created": 1793593073,
"id": "3d978f78a2a0",
"image": "ghcr.io/tekkifox/archview:latest",
"name": "archview",
"state": "running"
},
{
"created": 1793577847,
"id": "075ddf52488c",
"image": "jc21/nginx-proxy-manager:latest",
"name": "npm",
"state": "running"
},
{
"created": 1793577555,
"id": "d3cd9d768f5c",
"image": "ghcr.io/goauthentik/server:2026.5.0",
"name": "authentik-authentik-1",
"state": "running"
},
{
"created": 1793577555,
"id": "6cdd4e17d18a",
"image": "docker.io/library/redis:alpine",
"name": "authentik-redis-1",
"state": "running"
},
{
"created": 1793577481,
"id": "85c921629873",
"image": "ghcr.io/pelican/wings:latest",
"name": "pelican-node",
"state": "running"
},
{
"created": 1793577363,
"id": "c4cb569e96f6",
"image": "sha256:ebcfdae24fa9af2a89f4d77a15d204d0d0d42f5b83b851903b583370a6d59b80",
"name": "pelican-panel",
"state": "running"
},
{
"created": 1793577363,
"id": "0b2135aa3c14",
"image": "docker.io/library/mariadb:10.6.7",
"name": "pelican-database",
"state": "running"
},
{
"created": 1793577178,
"id": "96ad85fd54f8",
"image": "lscr.io/linuxserver/bookstack:latest",
"name": "bookstack",
"state": "running"
},
{
"created": 1793577175,
"id": "5dbf5826f331",
"image": "lscr.io/linuxserver/mariadb:latest",
"name": "bookstack_db",
"state": "running"
},
{
"created": 1793575455,
"id": "5dd671ea4a2f",
"image": "portainer/portainer-ee:sts",
"name": "portainer",
"state": "running"
},
{
"created": 1793471450,
"id": "8763eedc43f7",
"image": "sha256:4448897a322488315dd80a5433bc106ba33149a32ec701a1e0c850eff12b2e32",
"name": "monitoring-dashboard-1",
"state": "running"
},
{
"created": 1793471395,
"id": "0ebf48eb4414",
"image": "sha256:b4422bd7bed10e8d4e47e796b046af123d01c25e931df96769825298456172fa",
"name": "trivy",
"state": "running"
},
{
"created": 1793471395,
"id": "df6fb5abe1cd",
"image": "lscr.io/linuxserver/socket-proxy:latest",
"name": "trivy-docker-api",
"state": "running"
},
{
"created": 1793322024,
"id": "d454360b4343",
"image": "ghcr.io/tekkifox/server-maintenance-notification-agent:latest",
"name": "server-maintenance-notification-agent-notification-agent-1",
"state": "running"
},
{
"created": 1793310377,
"id": "21e161fcc737",
"image": "lscr.io/linuxserver/socket-proxy:latest",
"name": "socket-proxy",
"state": "running"
},
{
"created": 1793140729,
"id": "959cf5113239",
"image": "linuxserver/socket-proxy:latest",
"name": "server-maintenance-notification-agent-docker-socket-proxy-1",
"state": "running"
},
{
"created": 1792693354,
"id": "09a604218248",
"image": "portainer/agent:latest",
"name": "portainer_edge_agent",
"state": "running"
},
{
"created": 1792692849,
"id": "3f28aee8e88a",
"image": "sha256:c6b31813c699adcb93aca652962ed8044ad51e88e23a362bd1791c6991763b3b",
"name": "dishorde",
"state": "running"
},
{
"created": 1792692838,
"id": "b81587b6af69",
"image": "ghcr.io/goauthentik/server:2026.5.0",
"name": "authentik-worker-1",
"state": "running"
},
{
"created": 1792692838,
"id": "f1521e6e309e",
"image": "docker.io/library/postgres:16-alpine",
"name": "authentik-postgres-1",
"state": "running"
},
{
"created": 1792598880,
"id": "961b8a06ec14",
"image": "specker/discordplayercountbot",
"name": "project-zomboid-player-count-discord-bot-1",
"state": "running"
},
{
"created": 1792598738,
"id": "24b6ca6f8b12",
"image": "discordgsm/discord-game-server-monitor:latest",
"name": "discord-gsm",
"state": "running"
},
{
"created": 1786314207,
"id": "98313997a24d",
"image": "weejewel/wg-easy",
"name": "wg-easy",
"state": "running"
}
],
"daemon": {
"architecture": "x86_64",
"containers": 45,
"containersRunning": 38,
"driver": "overlay2",
"images": 48,
"memoryTotalBytes": 67217694720,
"ncpu": 20,
"operatingSystem": "Ubuntu 25.10"
},
"images": [
{
"created": 1793602506,
"dangling": false,
"repoTags": [
"ghcr.io/tekkifox/vortexservers_co_uk:latest"
],
"sizeBytes": 612915746
},
{
"created": 1793597086,
"dangling": false,
"repoTags": [
"ghcr.io/parkervcp/yolks:dotnet_9"
],
"sizeBytes": 1280955490
},
{
"created": 1793593732,
"dangling": false,
"repoTags": [
"ghcr.io/parkervcp/yolks:wine_staging"
],
"sizeBytes": 3708735470
},
{
"created": 1793593064,
"dangling": false,
"repoTags": [
"ghcr.io/parkervcp/yolks:debian"
],
"sizeBytes": 657767858
},
{
"created": 1793592806,
"dangling": false,
"repoTags": [
"ghcr.io/tekkifox/monitoring-dashboard:latest"
],
"sizeBytes": 63000873
},
{
"created": 1793591143,
"dangling": false,
"repoTags": [
"ghcr.io/parkervcp/yolks:mariadb_10.3"
],
"sizeBytes": 427873612
},
{
"created": 1793590761,
"dangling": false,
"repoTags": [
"ghcr.io/parkervcp/yolks:java_25"
],
"sizeBytes": 539799446
},
{
"created": 1793590265,
"dangling": false,
"repoTags": [
"ghcr.io/parkervcp/steamcmd:debian"
],
"sizeBytes": 886284941
},
{
"created": 1793578125,
"dangling": false,
"repoTags": [
"ghcr.io/pelican/panel:latest"
],
"sizeBytes": 536373737
},
{
"created": 1793540333,
"dangling": false,
"repoTags": [
"ghcr.io/tekkifox/monitoring-trivy:latest"
],
"sizeBytes": 199139810
},
{
"created": 1793504373,
"dangling": false,
"repoTags": [
"ghcr.io/pterodactyl/yolks:java_8"
],
"sizeBytes": 516534097
},
{
"created": 1793362616,
"dangling": false,
"repoTags": [
"ghcr.io/tekkifox/archview:latest"
],
"sizeBytes": 16126906
},
{
"created": 1793300886,
"dangling": false,
"repoTags": [
"ghcr.io/tekkifox/monitoring-lynis-report-converter:latest"
],
"sizeBytes": 168699721
},
{
"created": 1793230163,
"dangling": false,
"repoTags": [
"lscr.io/linuxserver/bookstack:latest"
],
"sizeBytes": 342616303
},
{
"created": 1793226456,
"dangling": false,
"repoTags": [
"portainer/portainer-ee:sts"
],
"sizeBytes": 274966473
},
{
"created": 1793220966,
"dangling": false,
"repoTags": [
"node:latest"
],
"sizeBytes": 1247750964
},
{
"created": 1793141550,
"dangling": false,
"repoTags": [
"ghcr.io/tekkifox/server-maintenance-notification-agent:latest"
],
"sizeBytes": 38372058
},
{
"created": 1793108131,
"dangling": false,
"repoTags": [
"lscr.io/linuxserver/mariadb:latest"
],
"sizeBytes": 420986583
},
{
"created": 1793059580,
"dangling": false,
"repoTags": [
"linuxserver/socket-proxy:latest",
"lscr.io/linuxserver/socket-proxy:latest"
],
"sizeBytes": 16000836
},
{
"created": 1793032960,
"dangling": false,
"repoTags": [
"redis:alpine"
],
"sizeBytes": 119615280
},
{
"created": 1792625118,
"dangling": false,
"repoTags": [
"portainer/agent:latest"
],
"sizeBytes": 153320245
},
{
"created": 1792623430,
"dangling": false,
"repoTags": [
"postgres:16-alpine"
],
"sizeBytes": 294301549
},
{
"created": 1792622242,
"dangling": false,
"repoTags": [
"alpine:latest"
],
"sizeBytes": 8427299
},
{
"created": 1791664764,
"dangling": false,
"repoTags": [
"ghcr.io/pelican/wings:latest"
],
"sizeBytes": 42942696
},
{
"created": 1791174529,
"dangling": false,
"repoTags": [
"ghcr.io/parkervcp/steamcmd:proton"
],
"sizeBytes": 3357949470
},
{
"created": 1790815155,
"dangling": false,
"repoTags": [
"specker/discordplayercountbot:latest"
],
"sizeBytes": 232469742
},
{
"created": 1790243023,
"dangling": false,
"repoTags": [
"jc21/nginx-proxy-manager:latest"
],
"sizeBytes": 1286898222
},
{
"created": 1786324645,
"dangling": false,
"repoTags": [
"ghcr.io/parkervcp/yolks:java_21"
],
"sizeBytes": 598638658
},
{
"created": 1779411151,
"dangling": false,
"repoTags": [
"ghcr.io/goauthentik/server:2026.5.0"
],
"sizeBytes": 1247606149
},
{
"created": 1767939608,
"dangling": false,
"repoTags": [
"discordgsm/discord-game-server-monitor:latest"
],
"sizeBytes": 90778224
},
{
"created": 1699728697,
"dangling": false,
"repoTags": [
"containrrr/watchtower:latest"
],
"sizeBytes": 14682465
},
{
"created": 1656235856,
"dangling": false,
"repoTags": [
"weejewel/wg-easy:latest"
],
"sizeBytes": 141586777
},
{
"created": 1651281536,
"dangling": false,
"repoTags": [
"mariadb:10.6.7"
],
"sizeBytes": 412844662
}
]
},
"endpoints": [
{
"name": "architecture",
"url": "https://archview.vortexservers.co.uk/api/architecture"
},
{
"name": "docker",
"url": "https://archview.vortexservers.co.uk/api/docker"
},
{
"name": "system",
"url": "https://archview.vortexservers.co.uk/api/system"
},
{
"name": "healthz",
"url": "https://archview.vortexservers.co.uk/healthz"
},
{
"name": "readyz",
"url": "https://archview.vortexservers.co.uk/readyz"
},
{
"name": "docs",
"url": "https://archview.vortexservers.co.uk/docs"
}
],
"environment": "docker",
"extra": {
"containerCount": 24,
"imageCount": 33
},
"nodes": [
{
"kind": "linux-host",
"name": "archview",
"status": "5.73 load average"
},
{
"details": {
"image": "ghcr.io/tekkifox/vortexservers_co_uk:latest",
"state": "running"
},
"kind": "container",
"name": "vortexservers_co_uk-web-1",
"status": "running"
},
{
"details": {
"image": "ghcr.io/tekkifox/archview:latest",
"state": "running"
},
"kind": "container",
"name": "archview",
"status": "running"
},
{
"details": {
"image": "jc21/nginx-proxy-manager:latest",
"state": "running"
},
"kind": "container",
"name": "npm",
"status": "running"
},
{
"details": {
"image": "ghcr.io/goauthentik/server:2026.5.0",
"state": "running"
},
"kind": "container",
"name": "authentik-authentik-1",
"status": "running"
},
{
"details": {
"image": "docker.io/library/redis:alpine",
"state": "running"
},
"kind": "container",
"name": "authentik-redis-1",
"status": "running"
},
{
"details": {
"image": "ghcr.io/pelican/wings:latest",
"state": "running"
},
"kind": "container",
"name": "pelican-node",
"status": "running"
},
{
"details": {
"image": "sha256:ebcfdae24fa9af2a89f4d77a15d204d0d0d42f5b83b851903b583370a6d59b80",
"state": "running"
},
"kind": "container",
"name": "pelican-panel",
"status": "running"
},
{
"details": {
"image": "docker.io/library/mariadb:10.6.7",
"state": "running"
},
"kind": "container",
"name": "pelican-database",
"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": "portainer/portainer-ee:sts",
"state": "running"
},
"kind": "container",
"name": "portainer",
"status": "running"
},
{
"details": {
"image": "sha256:4448897a322488315dd80a5433bc106ba33149a32ec701a1e0c850eff12b2e32",
"state": "running"
},
"kind": "container",
"name": "monitoring-dashboard-1",
"status": "running"
},
{
"details": {
"image": "sha256:b4422bd7bed10e8d4e47e796b046af123d01c25e931df96769825298456172fa",
"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/server-maintenance-notification-agent:latest",
"state": "running"
},
"kind": "container",
"name": "server-maintenance-notification-agent-notification-agent-1",
"status": "running"
},
{
"details": {
"image": "lscr.io/linuxserver/socket-proxy:latest",
"state": "running"
},
"kind": "container",
"name": "socket-proxy",
"status": "running"
},
{
"details": {
"image": "linuxserver/socket-proxy:latest",
"state": "running"
},
"kind": "container",
"name": "server-maintenance-notification-agent-docker-socket-proxy-1",
"status": "running"
},
{
"details": {
"image": "portainer/agent:latest",
"state": "running"
},
"kind": "container",
"name": "portainer_edge_agent",
"status": "running"
},
{
"details": {
"image": "sha256:c6b31813c699adcb93aca652962ed8044ad51e88e23a362bd1791c6991763b3b",
"state": "running"
},
"kind": "container",
"name": "dishorde",
"status": "running"
},
{
"details": {
"image": "ghcr.io/goauthentik/server:2026.5.0",
"state": "running"
},
"kind": "container",
"name": "authentik-worker-1",
"status": "running"
},
{
"details": {
"image": "docker.io/library/postgres:16-alpine",
"state": "running"
},
"kind": "container",
"name": "authentik-postgres-1",
"status": "running"
},
{
"details": {
"image": "specker/discordplayercountbot",
"state": "running"
},
"kind": "container",
"name": "project-zomboid-player-count-discord-bot-1",
"status": "running"
},
{
"details": {
"image": "discordgsm/discord-game-server-monitor:latest",
"state": "running"
},
"kind": "container",
"name": "discord-gsm",
"status": "running"
},
{
"details": {
"image": "weejewel/wg-easy",
"state": "running"
},
"kind": "container",
"name": "wg-easy",
"status": "running"
}
],
"region": "Ubuntu 25.10",
"regions": [
"host",
"Ubuntu 25.10",
"x86_64"
],
"services": [
{
"image": "ghcr.io/tekkifox/vortexservers_co_uk:latest",
"kind": "container",
"name": "vortexservers_co_uk-web-1",
"status": "Up 4 hours"
},
{
"image": "ghcr.io/tekkifox/archview:latest",
"kind": "container",
"name": "archview",
"status": "Up 7 hours (healthy)"
},
{
"image": "jc21/nginx-proxy-manager:latest",
"kind": "container",
"name": "npm",
"status": "Up 11 hours"
},
{
"image": "ghcr.io/goauthentik/server:2026.5.0",
"kind": "container",
"name": "authentik-authentik-1",
"status": "Up 11 hours (healthy)"
},
{
"image": "docker.io/library/redis:alpine",
"kind": "container",
"name": "authentik-redis-1",
"status": "Up 11 hours (healthy)"
},
{
"image": "ghcr.io/pelican/wings:latest",
"kind": "container",
"name": "pelican-node",
"status": "Up 11 hours"
},
{
"image": "sha256:ebcfdae24fa9af2a89f4d77a15d204d0d0d42f5b83b851903b583370a6d59b80",
"kind": "container",
"name": "pelican-panel",
"status": "Up 11 hours (healthy)"
},
{
"image": "docker.io/library/mariadb:10.6.7",
"kind": "container",
"name": "pelican-database",
"status": "Up 11 hours"
},
{
"image": "lscr.io/linuxserver/bookstack:latest",
"kind": "container",
"name": "bookstack",
"status": "Up 11 hours"
},
{
"image": "lscr.io/linuxserver/mariadb:latest",
"kind": "container",
"name": "bookstack_db",
"status": "Up 11 hours"
},
{
"image": "portainer/portainer-ee:sts",
"kind": "container",
"name": "portainer",
"status": "Up 12 hours"
},
{
"image": "sha256:4448897a322488315dd80a5433bc106ba33149a32ec701a1e0c850eff12b2e32",
"kind": "container",
"name": "monitoring-dashboard-1",
"status": "Up 11 hours (healthy)"
},
{
"image": "sha256:b4422bd7bed10e8d4e47e796b046af123d01c25e931df96769825298456172fa",
"kind": "container",
"name": "trivy",
"status": "Up 13 hours (healthy)"
},
{
"image": "lscr.io/linuxserver/socket-proxy:latest",
"kind": "container",
"name": "trivy-docker-api",
"status": "Up 13 hours (healthy)"
},
{
"image": "ghcr.io/tekkifox/server-maintenance-notification-agent:latest",
"kind": "container",
"name": "server-maintenance-notification-agent-notification-agent-1",
"status": "Up 13 hours"
},
{
"image": "lscr.io/linuxserver/socket-proxy:latest",
"kind": "container",
"name": "socket-proxy",
"status": "Up 13 hours (healthy)"
},
{
"image": "linuxserver/socket-proxy:latest",
"kind": "container",
"name": "server-maintenance-notification-agent-docker-socket-proxy-1",
"status": "Up 13 hours"
},
{
"image": "portainer/agent:latest",
"kind": "container",
"name": "portainer_edge_agent",
"status": "Up 12 hours"
},
{
"image": "sha256:c6b31813c699adcb93aca652962ed8044ad51e88e23a362bd1791c6991763b3b",
"kind": "container",
"name": "dishorde",
"status": "Up 13 hours"
},
{
"image": "ghcr.io/goauthentik/server:2026.5.0",
"kind": "container",
"name": "authentik-worker-1",
"status": "Up 13 hours (healthy)"
},
{
"image": "docker.io/library/postgres:16-alpine",
"kind": "container",
"name": "authentik-postgres-1",
"status": "Up 13 hours (healthy)"
},
{
"image": "specker/discordplayercountbot",
"kind": "container",
"name": "project-zomboid-player-count-discord-bot-1",
"status": "Up 13 hours"
},
{
"image": "discordgsm/discord-game-server-monitor:latest",
"kind": "container",
"name": "discord-gsm",
"status": "Up 13 hours"
},
{
"image": "weejewel/wg-easy",
"kind": "container",
"name": "wg-easy",
"status": "Up 13 hours"
},
{
"kind": "daemon",
"name": "docker-daemon",
"status": "45 containers, 48 images"
}
],
"status": "healthy",
"telemetry": {
"hosts": [
{
"cpu": 28.7,
"cpuCount": 20,
"diskPercent": 72.3,
"diskTotalBytes": 970257801216,
"diskUsedBytes": 701962878976,
"loadAverage": [
5.73,
4.08,
3.55
],
"memoryPercent": 59.4,
"memoryTotalBytes": 67217694720,
"memoryUsedBytes": 39942811648,
"name": "archview",
"networkRxBytes": 2909374,
"networkTxBytes": 1234305,
"os": "Ubuntu 25.10",
"processes": 628,
"swapFreeBytes": 34319478784,
"swapTotalBytes": 34324082688
}
],
"metrics": {
"cpuAvg": 28.7,
"diskPercent": 72.3,
"diskTotalBytes": 970257801216,
"diskUsedBytes": 701962878976,
"hostCount": 1,
"loadAvg": 5.73,
"memoryPercent": 59.4,
"memoryTotalBytes": 67217694720,
"memoryUsedBytes": 39942811648,
"networkRxMB": 2.774595260620117,
"networkTxMB": 1.1771249771118164,
"processCount": 628,
"swapFreeBytes": 34319478784,
"swapPercent": 0,
"swapTotalBytes": 34324082688,
"topOS": "Ubuntu 25.10"
}
},
"title": "Docker + Linux host overview",
"updatedAt": "2026-11-02T11:19:01Z"
}Recent commits
Recent changes
$ git log --oneline -n 5 b34f4c6 chore(deps): lock file maintenance (#52) 55b5e7e Add sitemap.xml and robots.txt (#51) f155d19 chore(deps): update actions/download-artifact action to v8 (#48) eeddc06 chore(deps): update dependency ubuntu to v26 (#50) ac933d6 chore(deps): update actions/upload-artifact action to v7 (#49)
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.