RM
Ross Money

Developer

Game Servers

VortexServers.co.uk — Community game server hosting and tooling

Live game server deployments, provisioning, and monitoring for VortexServers.co.uk.

TechDocker, Pelican panel, Go services
OpsProvisioning and telemetry
EnterpriseSSO Auth services, restic backups

Project architecture

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
        -> host Go service

containers
  - portainer_edge_agent
  - portainer
  - server-maintenance-notification-agent-notification-agent-1
  - server-maintenance-notification-agent-docker-socket-proxy-1
  - pelican-panel
  - pelican-database
  - dishorde
  - authentik-authentik-1
  - authentik-redis-1
  - authentik-worker-1
  - authentik-postgres-1
  - bookstack
  - bookstack_db
  - project-zomboid-player-count-discord-bot-1
  - npm
  - discord-gsm
  - archview-archview-1
  - socket-proxy
  - pelican-node
  - vortexservers_co_uk-web-1
  - wg-easy
  - docker-daemon

images
  - ghcr.io/pelican/panel
  - portainer/portainer-ee
  - portainer/agent
  - postgres
  - redis
  - lscr.io/linuxserver/bookstack
  - node
  - lscr.io/linuxserver/mariadb
  - ghcr.io/parkervcp/steamcmd
  - linuxserver/socket-proxy
  - ghcr.io/pelican/wings
  - ghcr.io/parkervcp/yolks
  - ghcr.io/parkervcp/steamcmd
  - ghcr.io/parkervcp/yolks
  - ghcr.io/parkervcp/yolks
  - ghcr.io/parkervcp/yolks
  - ghcr.io/parkervcp/yolks
  - ghcr.io/pterodactyl/yolks
  - specker/discordplayercountbot
  - ghcr.io/tekkifox/vortexservers_co_uk
  - jc21/nginx-proxy-manager
  - ghcr.io/tekkifox/archview
  - portainer/agent
  - ghcr.io/parkervcp/yolks
  - ghcr.io/tekkifox/server-maintenance-notification-agent
  - ghcr.io/goauthentik/server
  - discordgsm/discord-game-server-monitor
  - weejewel/wg-easy
  - mariadb


regions
  - host
  - Ubuntu 25.10
  - x86_64
Raw snapshot
{
  "cluster": "aaab8fe08e76",
  "description": "Separate Go service exposing live Docker daemon, container, image, and Linux host telemetry.",
  "diagram": "host linux system\n  -> docker daemon\n     -> container: portainer_edge_agent (running)\n     -> container: portainer (running)\n     -> container: server-maintenance-notification-agent-notification-agent-1 (running)\n     -> container: server-maintenance-notification-agent-docker-socket-proxy-1 (running)\n     -> container: pelican-panel (running)\n     -> container: pelican-database (running)\n     -> container: dishorde (running)\n     -> container: authentik-authentik-1 (running)\n     -> container: authentik-redis-1 (running)\n     -> container: authentik-worker-1 (running)\n     -> container: authentik-postgres-1 (running)\n     -> container: bookstack (running)\n     -> container: bookstack_db (running)\n     -> container: project-zomboid-player-count-discord-bot-1 (running)\n     -> container: npm (running)\n     -> container: discord-gsm (running)\n     -> container: archview-archview-1 (running)\n     -> container: socket-proxy (running)\n     -> container: pelican-node (running)\n     -> container: vortexservers_co_uk-web-1 (running)\n     -> container: wg-easy (running)\n",
  "docker": {
    "containers": [
      {
        "command": "./agent",
        "created": 1792693354,
        "id": "09a604218248184714b6979219bbc3167e63e3ac80c82cf4ab69ca95f9f22daa",
        "image": "portainer/agent:latest",
        "labels": {
          "com.docker.compose.config-hash": "cfed91caa9b1def47c1132d072d3fcb2ab7bdefde8ed3ddde1d73ccca1cf637d",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:24d8555f79794b08daf78307f6e0a2487e2613d4100213876383ae071ca29b6e",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "portainer",
          "com.docker.compose.project.config_files": "/mnt/portainer/compose.yaml",
          "com.docker.compose.project.working_dir": "/mnt/portainer",
          "com.docker.compose.service": "portainer_edge_agent",
          "com.docker.compose.version": "2.40.3",
          "git_commit": "e5a61af",
          "io.portainer.agent": "true",
          "org.opencontainers.image.created": "2026-10-21T23:25:09Z",
          "org.opencontainers.image.description": "Portainer agent for managing environments.",
          "org.opencontainers.image.documentation": "https://docs.portainer.io",
          "org.opencontainers.image.revision": "e5a61af",
          "org.opencontainers.image.title": "Portainer Agent",
          "org.opencontainers.image.url": "https://www.portainer.io",
          "org.opencontainers.image.vendor": "Portainer.io"
        },
        "name": "portainer_edge_agent",
        "ports": [],
        "state": "running",
        "status": "Up 24 hours"
      },
      {
        "command": "/portainer",
        "created": 1792693354,
        "id": "d6e0e59acfbf2b13f2eaca327499990091224879d62e45a6b31ff8c0b752119d",
        "image": "portainer/portainer-ee:sts",
        "labels": {
          "com.docker.compose.config-hash": "d81b1a9ab6c0e78b83dcb46fd879353309b968d15846e5a5b063fadbd3ed49cb",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:60eb584512e614e90ac22533904103821a3ee1be496609d7157b32b3bb893fc4",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "portainer",
          "com.docker.compose.project.config_files": "/mnt/portainer/compose.yaml",
          "com.docker.compose.project.working_dir": "/mnt/portainer",
          "com.docker.compose.service": "portainer",
          "com.docker.compose.version": "2.40.3",
          "git_commit": "e5a61af",
          "io.portainer.server": "true",
          "org.opencontainers.image.created": "2026-10-21T23:29:43Z",
          "org.opencontainers.image.description": "Portainer Business Edition server.",
          "org.opencontainers.image.documentation": "https://docs.portainer.io",
          "org.opencontainers.image.revision": "e5a61af",
          "org.opencontainers.image.title": "Portainer EE",
          "org.opencontainers.image.url": "https://www.portainer.io",
          "org.opencontainers.image.vendor": "Portainer.io"
        },
        "name": "portainer",
        "ports": [
          {
            "ip": "",
            "privatePort": 8000,
            "publicPort": 0,
            "type": "tcp"
          },
          {
            "ip": "",
            "privatePort": 9000,
            "publicPort": 0,
            "type": "tcp"
          },
          {
            "ip": "0.0.0.0",
            "privatePort": 9443,
            "publicPort": 9443,
            "type": "tcp"
          },
          {
            "ip": "::",
            "privatePort": 9443,
            "publicPort": 9443,
            "type": "tcp"
          }
        ],
        "state": "running",
        "status": "Up 24 hours"
      },
      {
        "command": "/app/notification-agent",
        "created": 1792692900,
        "id": "81804368237d93991fdf2e6eaa444a430b4d771cc9f76c6910affe4f23273182",
        "image": "ghcr.io/tekkifox/server-maintenance-notification-agent:latest",
        "labels": {
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "a6ad3e82b0bf42f0d1a2e6dbd55324bf3990961374fd51013087d9b193022801",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "docker-socket-proxy:service_started:false",
          "com.docker.compose.image": "sha256:3746fbb148abcd2faa9d57f90ab6b82fb1fbb8c273dd5dfd9c1e980dc2166e4f",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "server-maintenance-notification-agent",
          "com.docker.compose.project.config_files": "/data/compose/33/v11/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/33/v11",
          "com.docker.compose.replace": "notification-agent-1",
          "com.docker.compose.service": "notification-agent",
          "com.docker.compose.version": "",
          "org.opencontainers.image.created": "2026-07-15T16:32:54.791Z",
          "org.opencontainers.image.description": "",
          "org.opencontainers.image.licenses": "",
          "org.opencontainers.image.revision": "b33d28e6bf7a335a66545b5f3e0c842f7e572f28",
          "org.opencontainers.image.source": "https://github.com/tekkifox/server-maintenance-notification-agent",
          "org.opencontainers.image.title": "server-maintenance-notification-agent",
          "org.opencontainers.image.url": "https://github.com/tekkifox/server-maintenance-notification-agent",
          "org.opencontainers.image.version": "latest"
        },
        "name": "server-maintenance-notification-agent-notification-agent-1",
        "ports": [
          {
            "ip": "127.0.0.1",
            "privatePort": 8080,
            "publicPort": 8080,
            "type": "tcp"
          }
        ],
        "state": "running",
        "status": "Up 24 hours"
      },
      {
        "command": "/docker-entrypoint.sh",
        "created": 1792692900,
        "id": "ca66843d0c4f678f9d133c057d0052636268ff009bf0c57b90744ad07fc4caf9",
        "image": "linuxserver/socket-proxy:latest",
        "labels": {
          "build_version": "Linuxserver.io version:- 3.4.7-r0-ls103 Build-date:- 2026-10-15T17:26:28+00:00",
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "44b21425768f8ce7060bc5ac5993a2fa8a1d9eb51d4e11cbaf82a416c3b05f4f",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:8b658bcd9e084679f50b29ca1860c37ffb4b8a25e6569e2356e01463fbb4469d",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "server-maintenance-notification-agent",
          "com.docker.compose.project.config_files": "/data/compose/33/v11/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/33/v11",
          "com.docker.compose.replace": "docker-socket-proxy-1",
          "com.docker.compose.service": "docker-socket-proxy",
          "com.docker.compose.version": "",
          "maintainer": "thespad",
          "org.opencontainers.image.authors": "linuxserver.io",
          "org.opencontainers.image.created": "2026-10-15T17:26:28+00:00",
          "org.opencontainers.image.description": "The Socket Proxy is a security-enhanced proxy which allows you to apply access rules to the Docker socket, limiting the attack surface for containers such as watchtower or Traefik that need to use it.",
          "org.opencontainers.image.documentation": "https://docs.linuxserver.io/images/docker-socket-proxy",
          "org.opencontainers.image.licenses": "GPL-3.0-only",
          "org.opencontainers.image.ref.name": "9dbb3f2c1b934cadef565c6d98cb8760245d4b9c",
          "org.opencontainers.image.revision": "9dbb3f2c1b934cadef565c6d98cb8760245d4b9c",
          "org.opencontainers.image.source": "https://github.com/linuxserver/docker-socket-proxy",
          "org.opencontainers.image.title": "Socket-proxy",
          "org.opencontainers.image.url": "https://github.com/linuxserver/docker-socket-proxy/packages",
          "org.opencontainers.image.vendor": "linuxserver.io",
          "org.opencontainers.image.version": "3.4.7-r0-ls103"
        },
        "name": "server-maintenance-notification-agent-docker-socket-proxy-1",
        "ports": [],
        "state": "running",
        "status": "Up 24 hours"
      },
      {
        "command": "/bin/ash /entrypoint.sh supervisord -n -c /etc/supervisord.conf",
        "created": 1792692872,
        "id": "15f66777aba8525b6d9bec5e7c94d0606fb2ecd81eadf8f5f3385c65ba131215",
        "image": "ghcr.io/pelican/panel:latest",
        "labels": {
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "3cf2bc259ba6b285c66d1eba601094164705d88848787c5b6d1c18b0ea5cdfc8",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "mariadb:service_started:false",
          "com.docker.compose.image": "sha256:66734055036eb07872a63fc69427b171a9bef5c9641d6d91973143f579791a64",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "pelican-panel",
          "com.docker.compose.project.config_files": "/data/compose/11/v17/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/11/v17",
          "com.docker.compose.replace": "pelican-panel",
          "com.docker.compose.service": "panel",
          "com.docker.compose.version": "",
          "org.opencontainers.image.created": "2026-10-22T16:30:43.409Z",
          "org.opencontainers.image.description": "Free, open source game server management panel built on Laravel and Docker.",
          "org.opencontainers.image.licenses": "AGPL-3.0",
          "org.opencontainers.image.revision": "f64a167eea349bfbb89cda8732eacf682a82a4b3",
          "org.opencontainers.image.source": "https://github.com/pelican/panel",
          "org.opencontainers.image.title": "panel",
          "org.opencontainers.image.url": "https://github.com/pelican/panel",
          "org.opencontainers.image.version": "v1.0.0-rc.2"
        },
        "name": "pelican-panel",
        "ports": [
          {
            "ip": "",
            "privatePort": 80,
            "publicPort": 0,
            "type": "tcp"
          },
          {
            "ip": "",
            "privatePort": 9000,
            "publicPort": 0,
            "type": "tcp"
          },
          {
            "ip": "",
            "privatePort": 443,
            "publicPort": 0,
            "type": "tcp"
          }
        ],
        "state": "running",
        "status": "Up 24 hours (healthy)"
      },
      {
        "command": "docker-entrypoint.sh mariadbd",
        "created": 1792692872,
        "id": "6af95a98761171400c07f63a28907950afed37789b0ae0bbe8df2f4cdc94e175",
        "image": "docker.io/library/mariadb:10.6.7",
        "labels": {
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "937dcc0366bed9ee4b4b7dabd363ef3f7acd0d87159578542754194099f6fbba",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:3a25dc0f17778b385ee12f40b5dadd398ec4fb710ccde51e7e4af2c9c5555d3f",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "pelican-panel",
          "com.docker.compose.project.config_files": "/data/compose/11/v17/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/11/v17",
          "com.docker.compose.replace": "pelican-database",
          "com.docker.compose.service": "mariadb",
          "com.docker.compose.version": ""
        },
        "name": "pelican-database",
        "ports": [
          {
            "ip": "",
            "privatePort": 3306,
            "publicPort": 0,
            "type": "tcp"
          }
        ],
        "state": "running",
        "status": "Up 24 hours"
      },
      {
        "command": "docker-entrypoint.sh /dishorde/run.sh",
        "created": 1792692849,
        "id": "3f28aee8e88a8aa47c8ed456f74386077c017893337bde9a1f02a2f2fedf124a",
        "image": "node",
        "labels": {
          "com.docker.compose.config-hash": "ef1a99f4f6e95258207527d28bcb2341517535628e054321eedb0bc517bf3301",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:c6b31813c699adcb93aca652962ed8044ad51e88e23a362bd1791c6991763b3b",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "dishorde-7dtd-discord-connector",
          "com.docker.compose.project.config_files": "/data/compose/23/v3/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/23/v3",
          "com.docker.compose.replace": "dishorde",
          "com.docker.compose.service": "dishorde",
          "com.docker.compose.version": ""
        },
        "name": "dishorde",
        "ports": [],
        "state": "running",
        "status": "Up 24 hours"
      },
      {
        "command": "dumb-init -- ak server",
        "created": 1792692838,
        "id": "eeafdb563e144f86bbe4ec3d567ec59efb286cca76123736f0ecd5486b211c02",
        "image": "ghcr.io/goauthentik/server:2026.5.0",
        "labels": {
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "bb4403bc632a56baf18ef0eb99d964c0d04dec87b483f4f9db7fe82d159c8b65",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:c509858a51771f2a1b94b57eb4443fcef95f4abda6b4a935e0e16918a05bd705",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "authentik",
          "com.docker.compose.project.config_files": "/data/compose/31/v9/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/31/v9",
          "com.docker.compose.replace": "authentik-authentik-1",
          "com.docker.compose.service": "authentik",
          "com.docker.compose.version": "",
          "org.opencontainers.image.authors": "Authentik Security Inc.",
          "org.opencontainers.image.description": "goauthentik.io Main server image, see https://goauthentik.io for more info.",
          "org.opencontainers.image.documentation": "https://docs.goauthentik.io",
          "org.opencontainers.image.licenses": "https://github.com/goauthentik/authentik/blob/main/LICENSE",
          "org.opencontainers.image.revision": "",
          "org.opencontainers.image.source": "https://github.com/goauthentik/authentik",
          "org.opencontainers.image.title": "authentik server image",
          "org.opencontainers.image.url": "https://goauthentik.io",
          "org.opencontainers.image.vendor": "Authentik Security Inc.",
          "org.opencontainers.image.version": "refs/tags/version/2026.5.0"
        },
        "name": "authentik-authentik-1",
        "ports": [],
        "state": "running",
        "status": "Up 24 hours (healthy)"
      },
      {
        "command": "docker-entrypoint.sh --save 60 1 --loglevel warning",
        "created": 1792692838,
        "id": "656d94cb6da2a33af9e98772f258a32f813a93c918312da57f7ab4b659dbd7c9",
        "image": "docker.io/library/redis:alpine",
        "labels": {
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "3d7a108c676420ec98964045e16f649ae652e01d80e2a92a5d644539654409db",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:6cfed4c686145bcd5807ef3ac1d2bf3384503cb3da30b0d308b4f25eb50dc373",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "authentik",
          "com.docker.compose.project.config_files": "/data/compose/31/v9/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/31/v9",
          "com.docker.compose.replace": "authentik-redis-1",
          "com.docker.compose.service": "redis",
          "com.docker.compose.version": ""
        },
        "name": "authentik-redis-1",
        "ports": [
          {
            "ip": "",
            "privatePort": 6379,
            "publicPort": 0,
            "type": "tcp"
          }
        ],
        "state": "running",
        "status": "Up 24 hours (healthy)"
      },
      {
        "command": "dumb-init -- ak worker",
        "created": 1792692838,
        "id": "b81587b6af69aa97a9eb1e8807cdbdd4d7f7d745f29a290be9a25ce4f6bb32c5",
        "image": "ghcr.io/goauthentik/server:2026.5.0",
        "labels": {
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "7413f1cca0c011e0b5aa475374955df8fa2cdd264ec69f6db337c5a3aa6682cf",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:c509858a51771f2a1b94b57eb4443fcef95f4abda6b4a935e0e16918a05bd705",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "authentik",
          "com.docker.compose.project.config_files": "/data/compose/31/v9/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/31/v9",
          "com.docker.compose.replace": "authentik-worker-1",
          "com.docker.compose.service": "worker",
          "com.docker.compose.version": "",
          "org.opencontainers.image.authors": "Authentik Security Inc.",
          "org.opencontainers.image.description": "goauthentik.io Main server image, see https://goauthentik.io for more info.",
          "org.opencontainers.image.documentation": "https://docs.goauthentik.io",
          "org.opencontainers.image.licenses": "https://github.com/goauthentik/authentik/blob/main/LICENSE",
          "org.opencontainers.image.revision": "",
          "org.opencontainers.image.source": "https://github.com/goauthentik/authentik",
          "org.opencontainers.image.title": "authentik server image",
          "org.opencontainers.image.url": "https://goauthentik.io",
          "org.opencontainers.image.vendor": "Authentik Security Inc.",
          "org.opencontainers.image.version": "refs/tags/version/2026.5.0"
        },
        "name": "authentik-worker-1",
        "ports": [],
        "state": "running",
        "status": "Up 24 hours (healthy)"
      },
      {
        "command": "docker-entrypoint.sh postgres",
        "created": 1792692838,
        "id": "f1521e6e309e807b68c2976b09f841b64e6fe999dfc5f63cd3a58d4e679c26e2",
        "image": "docker.io/library/postgres:16-alpine",
        "labels": {
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "65573874153573b81da9c879eaef43d307acaafda0c86af1c76ce8c7b11b1408",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:6a2e324ebe59af6031c4c1cd96c1d5072c2ebc36563d2196365e43b8297c062d",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "authentik",
          "com.docker.compose.project.config_files": "/data/compose/31/v9/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/31/v9",
          "com.docker.compose.replace": "authentik-postgres-1",
          "com.docker.compose.service": "postgresql",
          "com.docker.compose.version": ""
        },
        "name": "authentik-postgres-1",
        "ports": [
          {
            "ip": "",
            "privatePort": 5432,
            "publicPort": 0,
            "type": "tcp"
          }
        ],
        "state": "running",
        "status": "Up 24 hours (healthy)"
      },
      {
        "command": "/init",
        "created": 1792692828,
        "id": "30fa7e142821f0f3801fd6e594f00018a6757426b9d1c8da0bfdb5b4ad0ea224",
        "image": "lscr.io/linuxserver/bookstack:latest",
        "labels": {
          "build_version": "Linuxserver.io version:- v26.09.2-ls292 Build-date:- 2026-10-21T20:25:22+00:00",
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "e9c5f90d226068469d3f0d1d813a3793c763149e0ca1fdfa8b40a835c7d03b61",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "bookstack_db:service_started:false",
          "com.docker.compose.image": "sha256:60d5be611c15ef8856a1ccecf58f968730bc09f6c2dd5b69c05750d946408ca0",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "bookstack",
          "com.docker.compose.project.config_files": "/data/compose/25/v10/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/25/v10",
          "com.docker.compose.replace": "bookstack",
          "com.docker.compose.service": "bookstack",
          "com.docker.compose.version": "",
          "maintainer": "thespad",
          "org.opencontainers.image.authors": "linuxserver.io",
          "org.opencontainers.image.created": "2026-10-21T20:25:22+00:00",
          "org.opencontainers.image.description": "[Bookstack](https://codeberg.org/bookstack/bookstack) is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease.    Powered by SQL and including a Markdown editor for those who prefer it, BookStack is geared towards making documentation more of a pleasure than a chore.    For more information on BookStack visit their website and check it out: https://www.bookstackapp.com  ",
          "org.opencontainers.image.documentation": "https://docs.linuxserver.io/images/docker-bookstack",
          "org.opencontainers.image.licenses": "GPL-3.0-only",
          "org.opencontainers.image.ref.name": "45704cc9c0ac490706ed047a46ae8a1dce4014f3",
          "org.opencontainers.image.revision": "45704cc9c0ac490706ed047a46ae8a1dce4014f3",
          "org.opencontainers.image.source": "https://github.com/linuxserver/docker-bookstack",
          "org.opencontainers.image.title": "Bookstack",
          "org.opencontainers.image.url": "https://github.com/linuxserver/docker-bookstack/packages",
          "org.opencontainers.image.vendor": "linuxserver.io",
          "org.opencontainers.image.version": "v26.09.2-ls292"
        },
        "name": "bookstack",
        "ports": [
          {
            "ip": "",
            "privatePort": 443,
            "publicPort": 0,
            "type": "tcp"
          },
          {
            "ip": "",
            "privatePort": 80,
            "publicPort": 0,
            "type": "tcp"
          }
        ],
        "state": "running",
        "status": "Up 24 hours"
      },
      {
        "command": "/init",
        "created": 1792692824,
        "id": "5a209174b0cfb47ed665581e78eb8bdfb7f6e5c5178868d54450b61425bc15c7",
        "image": "lscr.io/linuxserver/mariadb:latest",
        "labels": {
          "build_version": "Linuxserver.io version:- 11.8.9-r0-ls237 Build-date:- 2026-10-20T23:36:01+00:00",
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "a44d288df38da8d329dd8bc4eef849c8731abd78f63b1a99f5e7bccb3d110c04",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:49f0f94932e5be9bc61e6f549a38c5274aec19144985ca40e583e4071c71df4f",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "bookstack",
          "com.docker.compose.project.config_files": "/data/compose/25/v10/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/25/v10",
          "com.docker.compose.replace": "bookstack_db",
          "com.docker.compose.service": "bookstack_db",
          "com.docker.compose.version": "",
          "maintainer": "thelamer,nemchik",
          "org.opencontainers.image.authors": "linuxserver.io",
          "org.opencontainers.image.created": "2026-10-20T23:36:01+00:00",
          "org.opencontainers.image.description": "[Mariadb](https://mariadb.org/) is one of the most popular database servers. Made by the original developers of MySQL.",
          "org.opencontainers.image.documentation": "https://docs.linuxserver.io/images/docker-mariadb",
          "org.opencontainers.image.licenses": "GPL-3.0-only",
          "org.opencontainers.image.ref.name": "8ace94a32a7805bb2a758643b3e797c7de1229e0",
          "org.opencontainers.image.revision": "8ace94a32a7805bb2a758643b3e797c7de1229e0",
          "org.opencontainers.image.source": "https://github.com/linuxserver/docker-mariadb",
          "org.opencontainers.image.title": "Mariadb",
          "org.opencontainers.image.url": "https://github.com/linuxserver/docker-mariadb/packages",
          "org.opencontainers.image.vendor": "linuxserver.io",
          "org.opencontainers.image.version": "11.8.9-r0-ls237"
        },
        "name": "bookstack_db",
        "ports": [
          {
            "ip": "",
            "privatePort": 3306,
            "publicPort": 0,
            "type": "tcp"
          }
        ],
        "state": "running",
        "status": "Up 24 hours"
      },
      {
        "command": "dotnet DiscordPlayerCountBot.dll",
        "created": 1792598880,
        "id": "961b8a06ec14fdaef53a377276143adc8c0bc338cbbd4010cbcc214e89567d5f",
        "image": "specker/discordplayercountbot",
        "labels": {
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "08e41f776749c07e2373bb09003cccc927beff0dafaf77c2da9ea8d2cf732fe3",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:1cbe3eefdd1dde203bcb23320ad7fba79919c845cb2cdda93ca03724701eb022",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "project-zomboid-player-count",
          "com.docker.compose.project.config_files": "/data/compose/15/v4/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/15/v4",
          "com.docker.compose.replace": "discord-bot-1",
          "com.docker.compose.service": "discord-bot",
          "com.docker.compose.version": ""
        },
        "name": "project-zomboid-player-count-discord-bot-1",
        "ports": [],
        "state": "running",
        "status": "Up 2 days"
      },
      {
        "command": "/init",
        "created": 1792598797,
        "id": "43f1354f66a75bc5bfe07f426d3fc02ba5186101f402b175c1778c67540ca927",
        "image": "jc21/nginx-proxy-manager:latest",
        "labels": {
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "d3d51c2e7e6dc5948b98a2650be33af1a24e87b287a5a85eed251ecc2b1dfc3c",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:5c80aaf5e26c1f45a6ce9f58ad00edceabb717d68236ff5b06d6f4d1f1271742",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "nginx-proxy-manager",
          "com.docker.compose.project.config_files": "/data/compose/16/v10/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/16/v10",
          "com.docker.compose.replace": "npm",
          "com.docker.compose.service": "nginx-proxy-manager",
          "com.docker.compose.version": "",
          "maintainer": "Jamie Curnow <jc@jc21.com>",
          "org.label-schema.cmd": "docker run --rm -ti jc21/nginx-proxy-manager:latest",
          "org.label-schema.description": "Docker container for managing Nginx proxy hosts with a simple, powerful interface ",
          "org.label-schema.license": "MIT",
          "org.label-schema.name": "nginx-proxy-manager",
          "org.label-schema.schema-version": "1.0",
          "org.label-schema.url": "https://github.com/jc21/nginx-proxy-manager",
          "org.label-schema.vcs-url": "https://github.com/jc21/nginx-proxy-manager.git"
        },
        "name": "npm",
        "ports": [
          {
            "ip": "0.0.0.0",
            "privatePort": 443,
            "publicPort": 443,
            "type": "tcp"
          },
          {
            "ip": "::",
            "privatePort": 443,
            "publicPort": 443,
            "type": "tcp"
          },
          {
            "ip": "0.0.0.0",
            "privatePort": 80,
            "publicPort": 80,
            "type": "tcp"
          },
          {
            "ip": "::",
            "privatePort": 80,
            "publicPort": 80,
            "type": "tcp"
          },
          {
            "ip": "",
            "privatePort": 81,
            "publicPort": 0,
            "type": "tcp"
          }
        ],
        "state": "running",
        "status": "Up 2 days"
      },
      {
        "command": "python main.py",
        "created": 1792598738,
        "id": "24b6ca6f8b12c5f624ff89da7093d21c6e7028e3baba576784ca53df792d8364",
        "image": "discordgsm/discord-game-server-monitor:latest",
        "labels": {
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "1240a32a82e12042b29ea515a01636240d793bcebfde6422bce3952ae8cd45c0",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:0e4f2d933d0fab64de1460a63f9c0f9c51bf855e1b9377945136cd7b8f48e552",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "discordgsm",
          "com.docker.compose.project.config_files": "/data/compose/2/v4/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/2/v4",
          "com.docker.compose.replace": "discord-gsm",
          "com.docker.compose.service": "discord-gsm",
          "com.docker.compose.version": "",
          "org.opencontainers.image.created": "2026-01-09T06:19:48.797Z",
          "org.opencontainers.image.description": "📺 A discord bot that monitors your game server and tracks the live data of your game servers. Supports over 260 game servers.",
          "org.opencontainers.image.licenses": "MIT",
          "org.opencontainers.image.revision": "17d2e124a3d7a4b4cc4b64bada325f363fb162da",
          "org.opencontainers.image.source": "https://github.com/DiscordGSM/GameServerMonitor",
          "org.opencontainers.image.title": "GameServerMonitor",
          "org.opencontainers.image.url": "https://github.com/DiscordGSM/GameServerMonitor",
          "org.opencontainers.image.version": "2.20.1"
        },
        "name": "discord-gsm",
        "ports": [],
        "state": "running",
        "status": "Up 2 days"
      },
      {
        "command": "/app/archview",
        "created": 1792598627,
        "id": "aaab8fe08e7643756268314fa8b7d78490f34b71c06bf0009636e189ab2e6275",
        "image": "ghcr.io/tekkifox/archview:latest",
        "labels": {
          "com.docker.compose.config-hash": "3edd2912ef79c548e4d6a9b7337b22ad7166681d5958d026fd7553e5a417278f",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "socket-proxy:service_healthy:false",
          "com.docker.compose.image": "sha256:099a8fac15a0f665ffb014c714fdb635d36bda33be1308b0546065c54429b14a",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "archview",
          "com.docker.compose.project.config_files": "/data/compose/38/v3/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/38/v3",
          "com.docker.compose.replace": "archview-1",
          "com.docker.compose.service": "archview",
          "com.docker.compose.version": "",
          "org.opencontainers.image.created": "2026-09-17T19:36:27.865Z",
          "org.opencontainers.image.description": "Go service to view architecture of system",
          "org.opencontainers.image.licenses": "",
          "org.opencontainers.image.revision": "51ed0939c76a052b70d815e1f481220202a648dd",
          "org.opencontainers.image.source": "https://github.com/tekkifox/archview",
          "org.opencontainers.image.title": "archview",
          "org.opencontainers.image.url": "https://github.com/tekkifox/archview",
          "org.opencontainers.image.version": "latest"
        },
        "name": "archview-archview-1",
        "ports": [
          {
            "ip": "",
            "privatePort": 8080,
            "publicPort": 0,
            "type": "tcp"
          }
        ],
        "state": "running",
        "status": "Up 2 days"
      },
      {
        "command": "/docker-entrypoint.sh",
        "created": 1792598627,
        "id": "a4f4aa8e43158bddef5635537f573a390bf63ac58652b3b4e468e2a6059554a6",
        "image": "lscr.io/linuxserver/socket-proxy:latest",
        "labels": {
          "build_version": "Linuxserver.io version:- 3.4.7-r0-ls103 Build-date:- 2026-10-15T17:26:28+00:00",
          "com.docker.compose.config-hash": "032919e014c3527fc4dff1340dc015b32858281f4cc38ebcf469fc8074f77d7b",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:8b658bcd9e084679f50b29ca1860c37ffb4b8a25e6569e2356e01463fbb4469d",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "archview",
          "com.docker.compose.project.config_files": "/data/compose/38/v3/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/38/v3",
          "com.docker.compose.replace": "socket-proxy",
          "com.docker.compose.service": "socket-proxy",
          "com.docker.compose.version": "",
          "maintainer": "thespad",
          "org.opencontainers.image.authors": "linuxserver.io",
          "org.opencontainers.image.created": "2026-10-15T17:26:28+00:00",
          "org.opencontainers.image.description": "The Socket Proxy is a security-enhanced proxy which allows you to apply access rules to the Docker socket, limiting the attack surface for containers such as watchtower or Traefik that need to use it.",
          "org.opencontainers.image.documentation": "https://docs.linuxserver.io/images/docker-socket-proxy",
          "org.opencontainers.image.licenses": "GPL-3.0-only",
          "org.opencontainers.image.ref.name": "9dbb3f2c1b934cadef565c6d98cb8760245d4b9c",
          "org.opencontainers.image.revision": "9dbb3f2c1b934cadef565c6d98cb8760245d4b9c",
          "org.opencontainers.image.source": "https://github.com/linuxserver/docker-socket-proxy",
          "org.opencontainers.image.title": "Socket-proxy",
          "org.opencontainers.image.url": "https://github.com/linuxserver/docker-socket-proxy/packages",
          "org.opencontainers.image.vendor": "linuxserver.io",
          "org.opencontainers.image.version": "3.4.7-r0-ls103"
        },
        "name": "socket-proxy",
        "ports": [],
        "state": "running",
        "status": "Up 2 days (healthy)"
      },
      {
        "command": "/usr/bin/wings --config /etc/pelican/config.yml",
        "created": 1791763297,
        "id": "26a7d4f2baf6f6ff5e32d7a52e54da9066d313dea85bdebce1b7b37418422740",
        "image": "ghcr.io/pelican/wings:latest",
        "labels": {
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "5883981792d7fe2d10493ac45be7003ef5dc23f85e10d170f67bbaebb4044027",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:58b66ced3e40831e611416cb31b41ccc4e4169c5a45b4443e1e9d51fe64d064a",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "pelican-node",
          "com.docker.compose.project.config_files": "/data/compose/14/v15/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/14/v15",
          "com.docker.compose.replace": "pelican-node",
          "com.docker.compose.service": "wings",
          "com.docker.compose.version": "",
          "org.opencontainers.image.created": "2026-10-10T20:37:02.707Z",
          "org.opencontainers.image.description": "Pelican's server control daemon: runs each game server in its own Docker container.",
          "org.opencontainers.image.licenses": "MIT",
          "org.opencontainers.image.revision": "7b489da7b8196d0b4baef3e2db062c06d743e2f9",
          "org.opencontainers.image.source": "https://github.com/pelican/wings",
          "org.opencontainers.image.title": "wings",
          "org.opencontainers.image.url": "https://github.com/pelican/wings",
          "org.opencontainers.image.version": "v1.0.0-rc.1"
        },
        "name": "pelican-node",
        "ports": [
          {
            "ip": "0.0.0.0",
            "privatePort": 2022,
            "publicPort": 2022,
            "type": "tcp"
          },
          {
            "ip": "::",
            "privatePort": 2022,
            "publicPort": 2022,
            "type": "tcp"
          },
          {
            "ip": "",
            "privatePort": 8080,
            "publicPort": 0,
            "type": "tcp"
          }
        ],
        "state": "running",
        "status": "Up 4 days"
      },
      {
        "command": "docker-entrypoint.sh npm start -- -H 0.0.0.0 -p 3000",
        "created": 1790694311,
        "id": "eca2c1757911d67182217078b5c501a9a3ea7aab0afb7f7159695dc3f52d65e8",
        "image": "ghcr.io/tekkifox/vortexservers_co_uk:latest",
        "labels": {
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "a65c4fc4e820ac18f9f5ae2ed1fd0996dceb0e81ba172d85aa31d65a318a3302",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:ed24d11fc12058f3c4f14180d6f0c734d0bee77f84cc9dd2638f7d1484e9016b",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "vortexservers_co_uk",
          "com.docker.compose.project.config_files": "/data/compose/32/v9/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/32/v9",
          "com.docker.compose.replace": "web-1",
          "com.docker.compose.service": "web",
          "com.docker.compose.version": "",
          "org.opencontainers.image.created": "2026-09-29T15:04:08.717Z",
          "org.opencontainers.image.description": "Website for personal game server host",
          "org.opencontainers.image.licenses": "",
          "org.opencontainers.image.revision": "c1601579717fe4fe698ca792a492de32454a26c8",
          "org.opencontainers.image.source": "https://github.com/tekkifox/vortexservers_co_uk",
          "org.opencontainers.image.title": "vortexservers_co_uk",
          "org.opencontainers.image.url": "https://github.com/tekkifox/vortexservers_co_uk",
          "org.opencontainers.image.version": "latest"
        },
        "name": "vortexservers_co_uk-web-1",
        "ports": [
          {
            "ip": "",
            "privatePort": 3000,
            "publicPort": 0,
            "type": "tcp"
          }
        ],
        "state": "running",
        "status": "Up 4 days"
      },
      {
        "command": "docker-entrypoint.sh /usr/bin/dumb-init node server.js",
        "created": 1786314207,
        "id": "98313997a24d62faa5e4f99d0bafc82a68d58401c7100fae0d1a54d60ed24ac4",
        "image": "weejewel/wg-easy",
        "labels": {
          "com.centurylinklabs.watchtower.enable": "true",
          "com.docker.compose.config-hash": "467115ce689b624af4bde0a74948b462d8ff8bbd8b2a115537e452d1d8f8fc93",
          "com.docker.compose.container-number": "1",
          "com.docker.compose.depends_on": "",
          "com.docker.compose.image": "sha256:c90b263d8a383ac55905e4edbe1513ba87b1a479bcaa8bb471412137b9541751",
          "com.docker.compose.oneoff": "False",
          "com.docker.compose.project": "wireguard",
          "com.docker.compose.project.config_files": "/data/compose/17/v2/docker-compose.yml",
          "com.docker.compose.project.working_dir": "/data/compose/17/v2",
          "com.docker.compose.replace": "wg-easy",
          "com.docker.compose.service": "wg-easy",
          "com.docker.compose.version": ""
        },
        "name": "wg-easy",
        "ports": [
          {
            "ip": "0.0.0.0",
            "privatePort": 51820,
            "publicPort": 51820,
            "type": "udp"
          },
          {
            "ip": "::",
            "privatePort": 51820,
            "publicPort": 51820,
            "type": "udp"
          },
          {
            "ip": "0.0.0.0",
            "privatePort": 51821,
            "publicPort": 51821,
            "type": "tcp"
          },
          {
            "ip": "::",
            "privatePort": 51821,
            "publicPort": 51821,
            "type": "tcp"
          }
        ],
        "state": "running",
        "status": "Up 4 days"
      }
    ],
    "daemon": {
      "apiVersion": "",
      "architecture": "x86_64",
      "containers": 41,
      "containersRunning": 35,
      "dockerRootDir": "/var/lib/docker",
      "driver": "overlay2",
      "images": 33,
      "kernelVersion": "6.17.0-41-generic",
      "memoryTotalBytes": 67217682432,
      "ncpu": 20,
      "operatingSystem": "Ubuntu 25.10",
      "serverVersion": "29.1.3"
    },
    "images": [
      {
        "created": 1792686724,
        "dangling": false,
        "id": "sha256:66734055036eb07872a63fc69427b171a9bef5c9641d6d91973143f579791a64",
        "repoTags": [
          "ghcr.io/pelican/panel:latest"
        ],
        "sizeBytes": 538131549
      },
      {
        "created": 1792625390,
        "dangling": false,
        "id": "sha256:60eb584512e614e90ac22533904103821a3ee1be496609d7157b32b3bb893fc4",
        "repoTags": [
          "portainer/portainer-ee:sts"
        ],
        "sizeBytes": 223988617
      },
      {
        "created": 1792625118,
        "dangling": false,
        "id": "sha256:24d8555f79794b08daf78307f6e0a2487e2613d4100213876383ae071ca29b6e",
        "repoTags": [
          "portainer/agent:latest"
        ],
        "sizeBytes": 153320245
      },
      {
        "created": 1792623430,
        "dangling": false,
        "id": "sha256:6a2e324ebe59af6031c4c1cd96c1d5072c2ebc36563d2196365e43b8297c062d",
        "repoTags": [
          "postgres:16-alpine"
        ],
        "sizeBytes": 294301549
      },
      {
        "created": 1792617738,
        "dangling": false,
        "id": "sha256:6cfed4c686145bcd5807ef3ac1d2bf3384503cb3da30b0d308b4f25eb50dc373",
        "repoTags": [
          "redis:alpine"
        ],
        "sizeBytes": 118845025
      },
      {
        "created": 1792614419,
        "dangling": false,
        "id": "sha256:60d5be611c15ef8856a1ccecf58f968730bc09f6c2dd5b69c05750d946408ca0",
        "repoTags": [
          "lscr.io/linuxserver/bookstack:latest"
        ],
        "sizeBytes": 453475150
      },
      {
        "created": 1792582499,
        "dangling": false,
        "id": "sha256:c6b31813c699adcb93aca652962ed8044ad51e88e23a362bd1791c6991763b3b",
        "repoTags": [
          "node:latest"
        ],
        "sizeBytes": 1247199685
      },
      {
        "created": 1792539487,
        "dangling": false,
        "id": "sha256:49f0f94932e5be9bc61e6f549a38c5274aec19144985ca40e583e4071c71df4f",
        "repoTags": [
          "lscr.io/linuxserver/mariadb:latest"
        ],
        "sizeBytes": 420992046
      },
      {
        "created": 1792498031,
        "dangling": false,
        "id": "sha256:506c1efdeb857cbc58e241033faa2bb709f50755c726e394b98416a657a65c62",
        "repoTags": [
          "ghcr.io/parkervcp/steamcmd:debian"
        ],
        "sizeBytes": 891904326
      },
      {
        "created": 1792085272,
        "dangling": false,
        "id": "sha256:8b658bcd9e084679f50b29ca1860c37ffb4b8a25e6569e2356e01463fbb4469d",
        "repoTags": [
          "linuxserver/socket-proxy:latest",
          "lscr.io/linuxserver/socket-proxy:latest"
        ],
        "sizeBytes": 15995577
      },
      {
        "created": 1791664764,
        "dangling": false,
        "id": "sha256:58b66ced3e40831e611416cb31b41ccc4e4169c5a45b4443e1e9d51fe64d064a",
        "repoTags": [
          "ghcr.io/pelican/wings:latest"
        ],
        "sizeBytes": 42942696
      },
      {
        "created": 1791177044,
        "dangling": false,
        "id": "sha256:944f4ce1bba607dc93a4b13a3861ccb1e6fb5960051df2851ffc49a9b5b200bf",
        "repoTags": [
          "ghcr.io/parkervcp/yolks:dotnet_9"
        ],
        "sizeBytes": 1288563836
      },
      {
        "created": 1791174529,
        "dangling": false,
        "id": "sha256:5ead7c63009935449cad39c92f1fe5f9d6be0a925eaf00f1a3a7fc74857699c6",
        "repoTags": [
          "ghcr.io/parkervcp/steamcmd:proton"
        ],
        "sizeBytes": 3357949470
      },
      {
        "created": 1791173964,
        "dangling": false,
        "id": "sha256:169cf433b73926eeb16dc682c88a5083dcd232c97047dcc2675cb14b2bb91b61",
        "repoTags": [
          "ghcr.io/parkervcp/yolks:mariadb_10.3"
        ],
        "sizeBytes": 427873504
      },
      {
        "created": 1791171581,
        "dangling": false,
        "id": "sha256:9982955a5ead65637c267ab35116ecbde4a9228004f0124f2d14c93dd015cd0a",
        "repoTags": [
          "ghcr.io/parkervcp/yolks:java_25"
        ],
        "sizeBytes": 545421040
      },
      {
        "created": 1791170125,
        "dangling": false,
        "id": "sha256:3e89da6cb85fb55c47692394bd7e795a01d4ecf72401d83af319b5a1e38f3842",
        "repoTags": [
          "ghcr.io/parkervcp/yolks:debian"
        ],
        "sizeBytes": 664915089
      },
      {
        "created": 1791168875,
        "dangling": false,
        "id": "sha256:ee349485c860f405827126dd727957996dd3130a9a8c4f0fd97c0df02de47b60",
        "repoTags": [
          "ghcr.io/parkervcp/yolks:wine_staging"
        ],
        "sizeBytes": 3693134829
      },
      {
        "created": 1790825214,
        "dangling": false,
        "id": "sha256:adfe54944d4aeec9ca895793d98cb22e1a040d0f8f16f5a4ccb6fe1f3bab676f",
        "repoTags": [
          "ghcr.io/pterodactyl/yolks:java_8"
        ],
        "sizeBytes": 516533993
      },
      {
        "created": 1790815155,
        "dangling": false,
        "id": "sha256:1cbe3eefdd1dde203bcb23320ad7fba79919c845cb2cdda93ca03724701eb022",
        "repoTags": [
          "specker/discordplayercountbot:latest"
        ],
        "sizeBytes": 232469742
      },
      {
        "created": 1790694285,
        "dangling": false,
        "id": "sha256:ed24d11fc12058f3c4f14180d6f0c734d0bee77f84cc9dd2638f7d1484e9016b",
        "repoTags": [
          "ghcr.io/tekkifox/vortexservers_co_uk:latest"
        ],
        "sizeBytes": 482879370
      },
      {
        "created": 1790243023,
        "dangling": false,
        "id": "sha256:5c80aaf5e26c1f45a6ce9f58ad00edceabb717d68236ff5b06d6f4d1f1271742",
        "repoTags": [
          "jc21/nginx-proxy-manager:latest"
        ],
        "sizeBytes": 1286898222
      },
      {
        "created": 1789673804,
        "dangling": false,
        "id": "sha256:099a8fac15a0f665ffb014c714fdb635d36bda33be1308b0546065c54429b14a",
        "repoTags": [
          "ghcr.io/tekkifox/archview:latest"
        ],
        "sizeBytes": 19316877
      },
      {
        "created": 1787805061,
        "dangling": false,
        "id": "sha256:301c1d744ec8f4268056ba749c51af9dbdddbdc9d5cce05b4cb8a9163a9e2c20",
        "repoTags": [
          "portainer/agent:2.45.0"
        ],
        "sizeBytes": 153199236
      },
      {
        "created": 1786324645,
        "dangling": false,
        "id": "sha256:e083ac39ef6b36ec4abd2bb3c5cbbaf7ef726ab6010a4bb4283969aa524b3ae1",
        "repoTags": [
          "ghcr.io/parkervcp/yolks:java_21"
        ],
        "sizeBytes": 598638658
      },
      {
        "created": 1784133224,
        "dangling": false,
        "id": "sha256:3746fbb148abcd2faa9d57f90ab6b82fb1fbb8c273dd5dfd9c1e980dc2166e4f",
        "repoTags": [
          "ghcr.io/tekkifox/server-maintenance-notification-agent:latest"
        ],
        "sizeBytes": 36400001
      },
      {
        "created": 1779411151,
        "dangling": false,
        "id": "sha256:c509858a51771f2a1b94b57eb4443fcef95f4abda6b4a935e0e16918a05bd705",
        "repoTags": [
          "ghcr.io/goauthentik/server:2026.5.0"
        ],
        "sizeBytes": 1247606149
      },
      {
        "created": 1767939608,
        "dangling": false,
        "id": "sha256:0e4f2d933d0fab64de1460a63f9c0f9c51bf855e1b9377945136cd7b8f48e552",
        "repoTags": [
          "discordgsm/discord-game-server-monitor:latest"
        ],
        "sizeBytes": 90778224
      },
      {
        "created": 1656235856,
        "dangling": false,
        "id": "sha256:c90b263d8a383ac55905e4edbe1513ba87b1a479bcaa8bb471412137b9541751",
        "repoTags": [
          "weejewel/wg-easy:latest"
        ],
        "sizeBytes": 141586777
      },
      {
        "created": 1651281536,
        "dangling": false,
        "id": "sha256:3a25dc0f17778b385ee12f40b5dadd398ec4fb710ccde51e7e4af2c9c5555d3f",
        "repoTags": [
          "mariadb:10.6.7"
        ],
        "sizeBytes": 412844662
      }
    ]
  },
  "environment": "docker",
  "extra": {
    "containerCount": 21,
    "imageCount": 29
  },
  "nodes": [
    {
      "details": {
        "kernel": "Linux version 6.17.0-41-generic (buildd@lcy02-amd64-047) (x86_64-linux-gnu-gcc (Ubuntu 15.2.0-4ubuntu4) 15.2.0, GNU ld (GNU Binutils for Ubuntu) 2.45) #41-Ubuntu SMP PREEMPT_DYNAMIC Sat Jun 20 18:01:40 UTC 2026",
        "os": "Ubuntu 25.10"
      },
      "kind": "linux-host",
      "name": "aaab8fe08e76",
      "status": "2.77 load average"
    },
    {
      "details": {
        "image": "portainer/agent:latest"
      },
      "kind": "container",
      "name": "portainer_edge_agent",
      "status": "running"
    },
    {
      "details": {
        "image": "portainer/portainer-ee:sts"
      },
      "kind": "container",
      "name": "portainer",
      "status": "running"
    },
    {
      "details": {
        "image": "ghcr.io/tekkifox/server-maintenance-notification-agent:latest"
      },
      "kind": "container",
      "name": "server-maintenance-notification-agent-notification-agent-1",
      "status": "running"
    },
    {
      "details": {
        "image": "linuxserver/socket-proxy:latest"
      },
      "kind": "container",
      "name": "server-maintenance-notification-agent-docker-socket-proxy-1",
      "status": "running"
    },
    {
      "details": {
        "image": "ghcr.io/pelican/panel:latest"
      },
      "kind": "container",
      "name": "pelican-panel",
      "status": "running"
    },
    {
      "details": {
        "image": "docker.io/library/mariadb:10.6.7"
      },
      "kind": "container",
      "name": "pelican-database",
      "status": "running"
    },
    {
      "details": {
        "image": "node"
      },
      "kind": "container",
      "name": "dishorde",
      "status": "running"
    },
    {
      "details": {
        "image": "ghcr.io/goauthentik/server:2026.5.0"
      },
      "kind": "container",
      "name": "authentik-authentik-1",
      "status": "running"
    },
    {
      "details": {
        "image": "docker.io/library/redis:alpine"
      },
      "kind": "container",
      "name": "authentik-redis-1",
      "status": "running"
    },
    {
      "details": {
        "image": "ghcr.io/goauthentik/server:2026.5.0"
      },
      "kind": "container",
      "name": "authentik-worker-1",
      "status": "running"
    },
    {
      "details": {
        "image": "docker.io/library/postgres:16-alpine"
      },
      "kind": "container",
      "name": "authentik-postgres-1",
      "status": "running"
    },
    {
      "details": {
        "image": "lscr.io/linuxserver/bookstack:latest"
      },
      "kind": "container",
      "name": "bookstack",
      "status": "running"
    },
    {
      "details": {
        "image": "lscr.io/linuxserver/mariadb:latest"
      },
      "kind": "container",
      "name": "bookstack_db",
      "status": "running"
    },
    {
      "details": {
        "image": "specker/discordplayercountbot"
      },
      "kind": "container",
      "name": "project-zomboid-player-count-discord-bot-1",
      "status": "running"
    },
    {
      "details": {
        "image": "jc21/nginx-proxy-manager:latest"
      },
      "kind": "container",
      "name": "npm",
      "status": "running"
    },
    {
      "details": {
        "image": "discordgsm/discord-game-server-monitor:latest"
      },
      "kind": "container",
      "name": "discord-gsm",
      "status": "running"
    },
    {
      "details": {
        "image": "ghcr.io/tekkifox/archview:latest"
      },
      "kind": "container",
      "name": "archview-archview-1",
      "status": "running"
    },
    {
      "details": {
        "image": "lscr.io/linuxserver/socket-proxy:latest"
      },
      "kind": "container",
      "name": "socket-proxy",
      "status": "running"
    },
    {
      "details": {
        "image": "ghcr.io/pelican/wings:latest"
      },
      "kind": "container",
      "name": "pelican-node",
      "status": "running"
    },
    {
      "details": {
        "image": "ghcr.io/tekkifox/vortexservers_co_uk:latest"
      },
      "kind": "container",
      "name": "vortexservers_co_uk-web-1",
      "status": "running"
    },
    {
      "details": {
        "image": "weejewel/wg-easy"
      },
      "kind": "container",
      "name": "wg-easy",
      "status": "running"
    }
  ],
  "region": "Ubuntu 25.10",
  "regions": [
    "host",
    "Ubuntu 25.10",
    "x86_64"
  ],
  "services": [
    {
      "image": "portainer/agent:latest",
      "kind": "container",
      "labels": {
        "com.docker.compose.config-hash": "cfed91caa9b1def47c1132d072d3fcb2ab7bdefde8ed3ddde1d73ccca1cf637d",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:24d8555f79794b08daf78307f6e0a2487e2613d4100213876383ae071ca29b6e",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "portainer",
        "com.docker.compose.project.config_files": "/mnt/portainer/compose.yaml",
        "com.docker.compose.project.working_dir": "/mnt/portainer",
        "com.docker.compose.service": "portainer_edge_agent",
        "com.docker.compose.version": "2.40.3",
        "git_commit": "e5a61af",
        "io.portainer.agent": "true",
        "org.opencontainers.image.created": "2026-10-21T23:25:09Z",
        "org.opencontainers.image.description": "Portainer agent for managing environments.",
        "org.opencontainers.image.documentation": "https://docs.portainer.io",
        "org.opencontainers.image.revision": "e5a61af",
        "org.opencontainers.image.title": "Portainer Agent",
        "org.opencontainers.image.url": "https://www.portainer.io",
        "org.opencontainers.image.vendor": "Portainer.io"
      },
      "name": "portainer_edge_agent",
      "status": "Up 24 hours"
    },
    {
      "image": "portainer/portainer-ee:sts",
      "kind": "container",
      "labels": {
        "com.docker.compose.config-hash": "d81b1a9ab6c0e78b83dcb46fd879353309b968d15846e5a5b063fadbd3ed49cb",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:60eb584512e614e90ac22533904103821a3ee1be496609d7157b32b3bb893fc4",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "portainer",
        "com.docker.compose.project.config_files": "/mnt/portainer/compose.yaml",
        "com.docker.compose.project.working_dir": "/mnt/portainer",
        "com.docker.compose.service": "portainer",
        "com.docker.compose.version": "2.40.3",
        "git_commit": "e5a61af",
        "io.portainer.server": "true",
        "org.opencontainers.image.created": "2026-10-21T23:29:43Z",
        "org.opencontainers.image.description": "Portainer Business Edition server.",
        "org.opencontainers.image.documentation": "https://docs.portainer.io",
        "org.opencontainers.image.revision": "e5a61af",
        "org.opencontainers.image.title": "Portainer EE",
        "org.opencontainers.image.url": "https://www.portainer.io",
        "org.opencontainers.image.vendor": "Portainer.io"
      },
      "name": "portainer",
      "ports": [
        {
          "ip": "",
          "privatePort": 8000,
          "publicPort": 0,
          "type": "tcp"
        },
        {
          "ip": "",
          "privatePort": 9000,
          "publicPort": 0,
          "type": "tcp"
        },
        {
          "ip": "0.0.0.0",
          "privatePort": 9443,
          "publicPort": 9443,
          "type": "tcp"
        },
        {
          "ip": "::",
          "privatePort": 9443,
          "publicPort": 9443,
          "type": "tcp"
        }
      ],
      "status": "Up 24 hours"
    },
    {
      "image": "ghcr.io/tekkifox/server-maintenance-notification-agent:latest",
      "kind": "container",
      "labels": {
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "a6ad3e82b0bf42f0d1a2e6dbd55324bf3990961374fd51013087d9b193022801",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "docker-socket-proxy:service_started:false",
        "com.docker.compose.image": "sha256:3746fbb148abcd2faa9d57f90ab6b82fb1fbb8c273dd5dfd9c1e980dc2166e4f",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "server-maintenance-notification-agent",
        "com.docker.compose.project.config_files": "/data/compose/33/v11/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/33/v11",
        "com.docker.compose.replace": "notification-agent-1",
        "com.docker.compose.service": "notification-agent",
        "com.docker.compose.version": "",
        "org.opencontainers.image.created": "2026-07-15T16:32:54.791Z",
        "org.opencontainers.image.description": "",
        "org.opencontainers.image.licenses": "",
        "org.opencontainers.image.revision": "b33d28e6bf7a335a66545b5f3e0c842f7e572f28",
        "org.opencontainers.image.source": "https://github.com/tekkifox/server-maintenance-notification-agent",
        "org.opencontainers.image.title": "server-maintenance-notification-agent",
        "org.opencontainers.image.url": "https://github.com/tekkifox/server-maintenance-notification-agent",
        "org.opencontainers.image.version": "latest"
      },
      "name": "server-maintenance-notification-agent-notification-agent-1",
      "ports": [
        {
          "ip": "127.0.0.1",
          "privatePort": 8080,
          "publicPort": 8080,
          "type": "tcp"
        }
      ],
      "status": "Up 24 hours"
    },
    {
      "image": "linuxserver/socket-proxy:latest",
      "kind": "container",
      "labels": {
        "build_version": "Linuxserver.io version:- 3.4.7-r0-ls103 Build-date:- 2026-10-15T17:26:28+00:00",
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "44b21425768f8ce7060bc5ac5993a2fa8a1d9eb51d4e11cbaf82a416c3b05f4f",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:8b658bcd9e084679f50b29ca1860c37ffb4b8a25e6569e2356e01463fbb4469d",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "server-maintenance-notification-agent",
        "com.docker.compose.project.config_files": "/data/compose/33/v11/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/33/v11",
        "com.docker.compose.replace": "docker-socket-proxy-1",
        "com.docker.compose.service": "docker-socket-proxy",
        "com.docker.compose.version": "",
        "maintainer": "thespad",
        "org.opencontainers.image.authors": "linuxserver.io",
        "org.opencontainers.image.created": "2026-10-15T17:26:28+00:00",
        "org.opencontainers.image.description": "The Socket Proxy is a security-enhanced proxy which allows you to apply access rules to the Docker socket, limiting the attack surface for containers such as watchtower or Traefik that need to use it.",
        "org.opencontainers.image.documentation": "https://docs.linuxserver.io/images/docker-socket-proxy",
        "org.opencontainers.image.licenses": "GPL-3.0-only",
        "org.opencontainers.image.ref.name": "9dbb3f2c1b934cadef565c6d98cb8760245d4b9c",
        "org.opencontainers.image.revision": "9dbb3f2c1b934cadef565c6d98cb8760245d4b9c",
        "org.opencontainers.image.source": "https://github.com/linuxserver/docker-socket-proxy",
        "org.opencontainers.image.title": "Socket-proxy",
        "org.opencontainers.image.url": "https://github.com/linuxserver/docker-socket-proxy/packages",
        "org.opencontainers.image.vendor": "linuxserver.io",
        "org.opencontainers.image.version": "3.4.7-r0-ls103"
      },
      "name": "server-maintenance-notification-agent-docker-socket-proxy-1",
      "status": "Up 24 hours"
    },
    {
      "image": "ghcr.io/pelican/panel:latest",
      "kind": "container",
      "labels": {
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "3cf2bc259ba6b285c66d1eba601094164705d88848787c5b6d1c18b0ea5cdfc8",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "mariadb:service_started:false",
        "com.docker.compose.image": "sha256:66734055036eb07872a63fc69427b171a9bef5c9641d6d91973143f579791a64",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "pelican-panel",
        "com.docker.compose.project.config_files": "/data/compose/11/v17/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/11/v17",
        "com.docker.compose.replace": "pelican-panel",
        "com.docker.compose.service": "panel",
        "com.docker.compose.version": "",
        "org.opencontainers.image.created": "2026-10-22T16:30:43.409Z",
        "org.opencontainers.image.description": "Free, open source game server management panel built on Laravel and Docker.",
        "org.opencontainers.image.licenses": "AGPL-3.0",
        "org.opencontainers.image.revision": "f64a167eea349bfbb89cda8732eacf682a82a4b3",
        "org.opencontainers.image.source": "https://github.com/pelican/panel",
        "org.opencontainers.image.title": "panel",
        "org.opencontainers.image.url": "https://github.com/pelican/panel",
        "org.opencontainers.image.version": "v1.0.0-rc.2"
      },
      "name": "pelican-panel",
      "ports": [
        {
          "ip": "",
          "privatePort": 80,
          "publicPort": 0,
          "type": "tcp"
        },
        {
          "ip": "",
          "privatePort": 9000,
          "publicPort": 0,
          "type": "tcp"
        },
        {
          "ip": "",
          "privatePort": 443,
          "publicPort": 0,
          "type": "tcp"
        }
      ],
      "status": "Up 24 hours (healthy)"
    },
    {
      "image": "docker.io/library/mariadb:10.6.7",
      "kind": "container",
      "labels": {
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "937dcc0366bed9ee4b4b7dabd363ef3f7acd0d87159578542754194099f6fbba",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:3a25dc0f17778b385ee12f40b5dadd398ec4fb710ccde51e7e4af2c9c5555d3f",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "pelican-panel",
        "com.docker.compose.project.config_files": "/data/compose/11/v17/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/11/v17",
        "com.docker.compose.replace": "pelican-database",
        "com.docker.compose.service": "mariadb",
        "com.docker.compose.version": ""
      },
      "name": "pelican-database",
      "ports": [
        {
          "ip": "",
          "privatePort": 3306,
          "publicPort": 0,
          "type": "tcp"
        }
      ],
      "status": "Up 24 hours"
    },
    {
      "image": "node",
      "kind": "container",
      "labels": {
        "com.docker.compose.config-hash": "ef1a99f4f6e95258207527d28bcb2341517535628e054321eedb0bc517bf3301",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:c6b31813c699adcb93aca652962ed8044ad51e88e23a362bd1791c6991763b3b",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "dishorde-7dtd-discord-connector",
        "com.docker.compose.project.config_files": "/data/compose/23/v3/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/23/v3",
        "com.docker.compose.replace": "dishorde",
        "com.docker.compose.service": "dishorde",
        "com.docker.compose.version": ""
      },
      "name": "dishorde",
      "status": "Up 24 hours"
    },
    {
      "image": "ghcr.io/goauthentik/server:2026.5.0",
      "kind": "container",
      "labels": {
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "bb4403bc632a56baf18ef0eb99d964c0d04dec87b483f4f9db7fe82d159c8b65",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:c509858a51771f2a1b94b57eb4443fcef95f4abda6b4a935e0e16918a05bd705",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "authentik",
        "com.docker.compose.project.config_files": "/data/compose/31/v9/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/31/v9",
        "com.docker.compose.replace": "authentik-authentik-1",
        "com.docker.compose.service": "authentik",
        "com.docker.compose.version": "",
        "org.opencontainers.image.authors": "Authentik Security Inc.",
        "org.opencontainers.image.description": "goauthentik.io Main server image, see https://goauthentik.io for more info.",
        "org.opencontainers.image.documentation": "https://docs.goauthentik.io",
        "org.opencontainers.image.licenses": "https://github.com/goauthentik/authentik/blob/main/LICENSE",
        "org.opencontainers.image.revision": "",
        "org.opencontainers.image.source": "https://github.com/goauthentik/authentik",
        "org.opencontainers.image.title": "authentik server image",
        "org.opencontainers.image.url": "https://goauthentik.io",
        "org.opencontainers.image.vendor": "Authentik Security Inc.",
        "org.opencontainers.image.version": "refs/tags/version/2026.5.0"
      },
      "name": "authentik-authentik-1",
      "status": "Up 24 hours (healthy)"
    },
    {
      "image": "docker.io/library/redis:alpine",
      "kind": "container",
      "labels": {
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "3d7a108c676420ec98964045e16f649ae652e01d80e2a92a5d644539654409db",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:6cfed4c686145bcd5807ef3ac1d2bf3384503cb3da30b0d308b4f25eb50dc373",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "authentik",
        "com.docker.compose.project.config_files": "/data/compose/31/v9/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/31/v9",
        "com.docker.compose.replace": "authentik-redis-1",
        "com.docker.compose.service": "redis",
        "com.docker.compose.version": ""
      },
      "name": "authentik-redis-1",
      "ports": [
        {
          "ip": "",
          "privatePort": 6379,
          "publicPort": 0,
          "type": "tcp"
        }
      ],
      "status": "Up 24 hours (healthy)"
    },
    {
      "image": "ghcr.io/goauthentik/server:2026.5.0",
      "kind": "container",
      "labels": {
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "7413f1cca0c011e0b5aa475374955df8fa2cdd264ec69f6db337c5a3aa6682cf",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:c509858a51771f2a1b94b57eb4443fcef95f4abda6b4a935e0e16918a05bd705",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "authentik",
        "com.docker.compose.project.config_files": "/data/compose/31/v9/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/31/v9",
        "com.docker.compose.replace": "authentik-worker-1",
        "com.docker.compose.service": "worker",
        "com.docker.compose.version": "",
        "org.opencontainers.image.authors": "Authentik Security Inc.",
        "org.opencontainers.image.description": "goauthentik.io Main server image, see https://goauthentik.io for more info.",
        "org.opencontainers.image.documentation": "https://docs.goauthentik.io",
        "org.opencontainers.image.licenses": "https://github.com/goauthentik/authentik/blob/main/LICENSE",
        "org.opencontainers.image.revision": "",
        "org.opencontainers.image.source": "https://github.com/goauthentik/authentik",
        "org.opencontainers.image.title": "authentik server image",
        "org.opencontainers.image.url": "https://goauthentik.io",
        "org.opencontainers.image.vendor": "Authentik Security Inc.",
        "org.opencontainers.image.version": "refs/tags/version/2026.5.0"
      },
      "name": "authentik-worker-1",
      "status": "Up 24 hours (healthy)"
    },
    {
      "image": "docker.io/library/postgres:16-alpine",
      "kind": "container",
      "labels": {
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "65573874153573b81da9c879eaef43d307acaafda0c86af1c76ce8c7b11b1408",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:6a2e324ebe59af6031c4c1cd96c1d5072c2ebc36563d2196365e43b8297c062d",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "authentik",
        "com.docker.compose.project.config_files": "/data/compose/31/v9/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/31/v9",
        "com.docker.compose.replace": "authentik-postgres-1",
        "com.docker.compose.service": "postgresql",
        "com.docker.compose.version": ""
      },
      "name": "authentik-postgres-1",
      "ports": [
        {
          "ip": "",
          "privatePort": 5432,
          "publicPort": 0,
          "type": "tcp"
        }
      ],
      "status": "Up 24 hours (healthy)"
    },
    {
      "image": "lscr.io/linuxserver/bookstack:latest",
      "kind": "container",
      "labels": {
        "build_version": "Linuxserver.io version:- v26.09.2-ls292 Build-date:- 2026-10-21T20:25:22+00:00",
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "e9c5f90d226068469d3f0d1d813a3793c763149e0ca1fdfa8b40a835c7d03b61",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "bookstack_db:service_started:false",
        "com.docker.compose.image": "sha256:60d5be611c15ef8856a1ccecf58f968730bc09f6c2dd5b69c05750d946408ca0",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "bookstack",
        "com.docker.compose.project.config_files": "/data/compose/25/v10/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/25/v10",
        "com.docker.compose.replace": "bookstack",
        "com.docker.compose.service": "bookstack",
        "com.docker.compose.version": "",
        "maintainer": "thespad",
        "org.opencontainers.image.authors": "linuxserver.io",
        "org.opencontainers.image.created": "2026-10-21T20:25:22+00:00",
        "org.opencontainers.image.description": "[Bookstack](https://codeberg.org/bookstack/bookstack) is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease.    Powered by SQL and including a Markdown editor for those who prefer it, BookStack is geared towards making documentation more of a pleasure than a chore.    For more information on BookStack visit their website and check it out: https://www.bookstackapp.com  ",
        "org.opencontainers.image.documentation": "https://docs.linuxserver.io/images/docker-bookstack",
        "org.opencontainers.image.licenses": "GPL-3.0-only",
        "org.opencontainers.image.ref.name": "45704cc9c0ac490706ed047a46ae8a1dce4014f3",
        "org.opencontainers.image.revision": "45704cc9c0ac490706ed047a46ae8a1dce4014f3",
        "org.opencontainers.image.source": "https://github.com/linuxserver/docker-bookstack",
        "org.opencontainers.image.title": "Bookstack",
        "org.opencontainers.image.url": "https://github.com/linuxserver/docker-bookstack/packages",
        "org.opencontainers.image.vendor": "linuxserver.io",
        "org.opencontainers.image.version": "v26.09.2-ls292"
      },
      "name": "bookstack",
      "ports": [
        {
          "ip": "",
          "privatePort": 443,
          "publicPort": 0,
          "type": "tcp"
        },
        {
          "ip": "",
          "privatePort": 80,
          "publicPort": 0,
          "type": "tcp"
        }
      ],
      "status": "Up 24 hours"
    },
    {
      "image": "lscr.io/linuxserver/mariadb:latest",
      "kind": "container",
      "labels": {
        "build_version": "Linuxserver.io version:- 11.8.9-r0-ls237 Build-date:- 2026-10-20T23:36:01+00:00",
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "a44d288df38da8d329dd8bc4eef849c8731abd78f63b1a99f5e7bccb3d110c04",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:49f0f94932e5be9bc61e6f549a38c5274aec19144985ca40e583e4071c71df4f",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "bookstack",
        "com.docker.compose.project.config_files": "/data/compose/25/v10/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/25/v10",
        "com.docker.compose.replace": "bookstack_db",
        "com.docker.compose.service": "bookstack_db",
        "com.docker.compose.version": "",
        "maintainer": "thelamer,nemchik",
        "org.opencontainers.image.authors": "linuxserver.io",
        "org.opencontainers.image.created": "2026-10-20T23:36:01+00:00",
        "org.opencontainers.image.description": "[Mariadb](https://mariadb.org/) is one of the most popular database servers. Made by the original developers of MySQL.",
        "org.opencontainers.image.documentation": "https://docs.linuxserver.io/images/docker-mariadb",
        "org.opencontainers.image.licenses": "GPL-3.0-only",
        "org.opencontainers.image.ref.name": "8ace94a32a7805bb2a758643b3e797c7de1229e0",
        "org.opencontainers.image.revision": "8ace94a32a7805bb2a758643b3e797c7de1229e0",
        "org.opencontainers.image.source": "https://github.com/linuxserver/docker-mariadb",
        "org.opencontainers.image.title": "Mariadb",
        "org.opencontainers.image.url": "https://github.com/linuxserver/docker-mariadb/packages",
        "org.opencontainers.image.vendor": "linuxserver.io",
        "org.opencontainers.image.version": "11.8.9-r0-ls237"
      },
      "name": "bookstack_db",
      "ports": [
        {
          "ip": "",
          "privatePort": 3306,
          "publicPort": 0,
          "type": "tcp"
        }
      ],
      "status": "Up 24 hours"
    },
    {
      "image": "specker/discordplayercountbot",
      "kind": "container",
      "labels": {
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "08e41f776749c07e2373bb09003cccc927beff0dafaf77c2da9ea8d2cf732fe3",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:1cbe3eefdd1dde203bcb23320ad7fba79919c845cb2cdda93ca03724701eb022",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "project-zomboid-player-count",
        "com.docker.compose.project.config_files": "/data/compose/15/v4/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/15/v4",
        "com.docker.compose.replace": "discord-bot-1",
        "com.docker.compose.service": "discord-bot",
        "com.docker.compose.version": ""
      },
      "name": "project-zomboid-player-count-discord-bot-1",
      "status": "Up 2 days"
    },
    {
      "image": "jc21/nginx-proxy-manager:latest",
      "kind": "container",
      "labels": {
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "d3d51c2e7e6dc5948b98a2650be33af1a24e87b287a5a85eed251ecc2b1dfc3c",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:5c80aaf5e26c1f45a6ce9f58ad00edceabb717d68236ff5b06d6f4d1f1271742",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "nginx-proxy-manager",
        "com.docker.compose.project.config_files": "/data/compose/16/v10/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/16/v10",
        "com.docker.compose.replace": "npm",
        "com.docker.compose.service": "nginx-proxy-manager",
        "com.docker.compose.version": "",
        "maintainer": "Jamie Curnow <jc@jc21.com>",
        "org.label-schema.cmd": "docker run --rm -ti jc21/nginx-proxy-manager:latest",
        "org.label-schema.description": "Docker container for managing Nginx proxy hosts with a simple, powerful interface ",
        "org.label-schema.license": "MIT",
        "org.label-schema.name": "nginx-proxy-manager",
        "org.label-schema.schema-version": "1.0",
        "org.label-schema.url": "https://github.com/jc21/nginx-proxy-manager",
        "org.label-schema.vcs-url": "https://github.com/jc21/nginx-proxy-manager.git"
      },
      "name": "npm",
      "ports": [
        {
          "ip": "0.0.0.0",
          "privatePort": 443,
          "publicPort": 443,
          "type": "tcp"
        },
        {
          "ip": "::",
          "privatePort": 443,
          "publicPort": 443,
          "type": "tcp"
        },
        {
          "ip": "0.0.0.0",
          "privatePort": 80,
          "publicPort": 80,
          "type": "tcp"
        },
        {
          "ip": "::",
          "privatePort": 80,
          "publicPort": 80,
          "type": "tcp"
        },
        {
          "ip": "",
          "privatePort": 81,
          "publicPort": 0,
          "type": "tcp"
        }
      ],
      "status": "Up 2 days"
    },
    {
      "image": "discordgsm/discord-game-server-monitor:latest",
      "kind": "container",
      "labels": {
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "1240a32a82e12042b29ea515a01636240d793bcebfde6422bce3952ae8cd45c0",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:0e4f2d933d0fab64de1460a63f9c0f9c51bf855e1b9377945136cd7b8f48e552",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "discordgsm",
        "com.docker.compose.project.config_files": "/data/compose/2/v4/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/2/v4",
        "com.docker.compose.replace": "discord-gsm",
        "com.docker.compose.service": "discord-gsm",
        "com.docker.compose.version": "",
        "org.opencontainers.image.created": "2026-01-09T06:19:48.797Z",
        "org.opencontainers.image.description": "📺 A discord bot that monitors your game server and tracks the live data of your game servers. Supports over 260 game servers.",
        "org.opencontainers.image.licenses": "MIT",
        "org.opencontainers.image.revision": "17d2e124a3d7a4b4cc4b64bada325f363fb162da",
        "org.opencontainers.image.source": "https://github.com/DiscordGSM/GameServerMonitor",
        "org.opencontainers.image.title": "GameServerMonitor",
        "org.opencontainers.image.url": "https://github.com/DiscordGSM/GameServerMonitor",
        "org.opencontainers.image.version": "2.20.1"
      },
      "name": "discord-gsm",
      "status": "Up 2 days"
    },
    {
      "image": "ghcr.io/tekkifox/archview:latest",
      "kind": "container",
      "labels": {
        "com.docker.compose.config-hash": "3edd2912ef79c548e4d6a9b7337b22ad7166681d5958d026fd7553e5a417278f",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "socket-proxy:service_healthy:false",
        "com.docker.compose.image": "sha256:099a8fac15a0f665ffb014c714fdb635d36bda33be1308b0546065c54429b14a",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "archview",
        "com.docker.compose.project.config_files": "/data/compose/38/v3/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/38/v3",
        "com.docker.compose.replace": "archview-1",
        "com.docker.compose.service": "archview",
        "com.docker.compose.version": "",
        "org.opencontainers.image.created": "2026-09-17T19:36:27.865Z",
        "org.opencontainers.image.description": "Go service to view architecture of system",
        "org.opencontainers.image.licenses": "",
        "org.opencontainers.image.revision": "51ed0939c76a052b70d815e1f481220202a648dd",
        "org.opencontainers.image.source": "https://github.com/tekkifox/archview",
        "org.opencontainers.image.title": "archview",
        "org.opencontainers.image.url": "https://github.com/tekkifox/archview",
        "org.opencontainers.image.version": "latest"
      },
      "name": "archview-archview-1",
      "ports": [
        {
          "ip": "",
          "privatePort": 8080,
          "publicPort": 0,
          "type": "tcp"
        }
      ],
      "status": "Up 2 days"
    },
    {
      "image": "lscr.io/linuxserver/socket-proxy:latest",
      "kind": "container",
      "labels": {
        "build_version": "Linuxserver.io version:- 3.4.7-r0-ls103 Build-date:- 2026-10-15T17:26:28+00:00",
        "com.docker.compose.config-hash": "032919e014c3527fc4dff1340dc015b32858281f4cc38ebcf469fc8074f77d7b",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:8b658bcd9e084679f50b29ca1860c37ffb4b8a25e6569e2356e01463fbb4469d",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "archview",
        "com.docker.compose.project.config_files": "/data/compose/38/v3/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/38/v3",
        "com.docker.compose.replace": "socket-proxy",
        "com.docker.compose.service": "socket-proxy",
        "com.docker.compose.version": "",
        "maintainer": "thespad",
        "org.opencontainers.image.authors": "linuxserver.io",
        "org.opencontainers.image.created": "2026-10-15T17:26:28+00:00",
        "org.opencontainers.image.description": "The Socket Proxy is a security-enhanced proxy which allows you to apply access rules to the Docker socket, limiting the attack surface for containers such as watchtower or Traefik that need to use it.",
        "org.opencontainers.image.documentation": "https://docs.linuxserver.io/images/docker-socket-proxy",
        "org.opencontainers.image.licenses": "GPL-3.0-only",
        "org.opencontainers.image.ref.name": "9dbb3f2c1b934cadef565c6d98cb8760245d4b9c",
        "org.opencontainers.image.revision": "9dbb3f2c1b934cadef565c6d98cb8760245d4b9c",
        "org.opencontainers.image.source": "https://github.com/linuxserver/docker-socket-proxy",
        "org.opencontainers.image.title": "Socket-proxy",
        "org.opencontainers.image.url": "https://github.com/linuxserver/docker-socket-proxy/packages",
        "org.opencontainers.image.vendor": "linuxserver.io",
        "org.opencontainers.image.version": "3.4.7-r0-ls103"
      },
      "name": "socket-proxy",
      "status": "Up 2 days (healthy)"
    },
    {
      "image": "ghcr.io/pelican/wings:latest",
      "kind": "container",
      "labels": {
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "5883981792d7fe2d10493ac45be7003ef5dc23f85e10d170f67bbaebb4044027",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:58b66ced3e40831e611416cb31b41ccc4e4169c5a45b4443e1e9d51fe64d064a",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "pelican-node",
        "com.docker.compose.project.config_files": "/data/compose/14/v15/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/14/v15",
        "com.docker.compose.replace": "pelican-node",
        "com.docker.compose.service": "wings",
        "com.docker.compose.version": "",
        "org.opencontainers.image.created": "2026-10-10T20:37:02.707Z",
        "org.opencontainers.image.description": "Pelican's server control daemon: runs each game server in its own Docker container.",
        "org.opencontainers.image.licenses": "MIT",
        "org.opencontainers.image.revision": "7b489da7b8196d0b4baef3e2db062c06d743e2f9",
        "org.opencontainers.image.source": "https://github.com/pelican/wings",
        "org.opencontainers.image.title": "wings",
        "org.opencontainers.image.url": "https://github.com/pelican/wings",
        "org.opencontainers.image.version": "v1.0.0-rc.1"
      },
      "name": "pelican-node",
      "ports": [
        {
          "ip": "0.0.0.0",
          "privatePort": 2022,
          "publicPort": 2022,
          "type": "tcp"
        },
        {
          "ip": "::",
          "privatePort": 2022,
          "publicPort": 2022,
          "type": "tcp"
        },
        {
          "ip": "",
          "privatePort": 8080,
          "publicPort": 0,
          "type": "tcp"
        }
      ],
      "status": "Up 4 days"
    },
    {
      "image": "ghcr.io/tekkifox/vortexservers_co_uk:latest",
      "kind": "container",
      "labels": {
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "a65c4fc4e820ac18f9f5ae2ed1fd0996dceb0e81ba172d85aa31d65a318a3302",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:ed24d11fc12058f3c4f14180d6f0c734d0bee77f84cc9dd2638f7d1484e9016b",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "vortexservers_co_uk",
        "com.docker.compose.project.config_files": "/data/compose/32/v9/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/32/v9",
        "com.docker.compose.replace": "web-1",
        "com.docker.compose.service": "web",
        "com.docker.compose.version": "",
        "org.opencontainers.image.created": "2026-09-29T15:04:08.717Z",
        "org.opencontainers.image.description": "Website for personal game server host",
        "org.opencontainers.image.licenses": "",
        "org.opencontainers.image.revision": "c1601579717fe4fe698ca792a492de32454a26c8",
        "org.opencontainers.image.source": "https://github.com/tekkifox/vortexservers_co_uk",
        "org.opencontainers.image.title": "vortexservers_co_uk",
        "org.opencontainers.image.url": "https://github.com/tekkifox/vortexservers_co_uk",
        "org.opencontainers.image.version": "latest"
      },
      "name": "vortexservers_co_uk-web-1",
      "ports": [
        {
          "ip": "",
          "privatePort": 3000,
          "publicPort": 0,
          "type": "tcp"
        }
      ],
      "status": "Up 4 days"
    },
    {
      "image": "weejewel/wg-easy",
      "kind": "container",
      "labels": {
        "com.centurylinklabs.watchtower.enable": "true",
        "com.docker.compose.config-hash": "467115ce689b624af4bde0a74948b462d8ff8bbd8b2a115537e452d1d8f8fc93",
        "com.docker.compose.container-number": "1",
        "com.docker.compose.depends_on": "",
        "com.docker.compose.image": "sha256:c90b263d8a383ac55905e4edbe1513ba87b1a479bcaa8bb471412137b9541751",
        "com.docker.compose.oneoff": "False",
        "com.docker.compose.project": "wireguard",
        "com.docker.compose.project.config_files": "/data/compose/17/v2/docker-compose.yml",
        "com.docker.compose.project.working_dir": "/data/compose/17/v2",
        "com.docker.compose.replace": "wg-easy",
        "com.docker.compose.service": "wg-easy",
        "com.docker.compose.version": ""
      },
      "name": "wg-easy",
      "ports": [
        {
          "ip": "0.0.0.0",
          "privatePort": 51820,
          "publicPort": 51820,
          "type": "udp"
        },
        {
          "ip": "::",
          "privatePort": 51820,
          "publicPort": 51820,
          "type": "udp"
        },
        {
          "ip": "0.0.0.0",
          "privatePort": 51821,
          "publicPort": 51821,
          "type": "tcp"
        },
        {
          "ip": "::",
          "privatePort": 51821,
          "publicPort": 51821,
          "type": "tcp"
        }
      ],
      "status": "Up 4 days"
    },
    {
      "kind": "daemon",
      "labels": {
        "endpoint": "http://socket-proxy:2375"
      },
      "name": "docker-daemon",
      "status": "41 containers, 33 images"
    }
  ],
  "status": "healthy",
  "telemetry": {
    "hosts": [
      {
        "cpu": 13.9,
        "cpuCount": 20,
        "diskPercent": 71.2,
        "diskTotalBytes": 970257801216,
        "diskUsedBytes": 690538373120,
        "kernel": "Linux version 6.17.0-41-generic (buildd@lcy02-amd64-047) (x86_64-linux-gnu-gcc (Ubuntu 15.2.0-4ubuntu4) 15.2.0, GNU ld (GNU Binutils for Ubuntu) 2.45) #41-Ubuntu SMP PREEMPT_DYNAMIC Sat Jun 20 18:01:40 UTC 2026",
        "loadAverage": [
          2.77,
          3.1,
          3.42
        ],
        "memoryPercent": 65.5,
        "memoryTotalBytes": 67217682432,
        "memoryUsedBytes": 44017278976,
        "name": "aaab8fe08e76",
        "networkRxBytes": 6604383,
        "networkTxBytes": 5095866,
        "os": "Ubuntu 25.10",
        "processes": 600,
        "swapFreeBytes": 34324078592,
        "swapTotalBytes": 34324082688
      }
    ],
    "metrics": {
      "cpuAvg": 13.9,
      "diskPercent": 71.2,
      "diskTotalBytes": 970257801216,
      "diskUsedBytes": 690538373120,
      "hostCount": 1,
      "loadAvg": 2.77,
      "memoryPercent": 65.5,
      "memoryTotalBytes": 67217682432,
      "memoryUsedBytes": 44017278976,
      "networkRxMB": 6.298430442810059,
      "networkTxMB": 4.859796524047852,
      "processCount": 600,
      "swapFreeBytes": 34324078592,
      "swapPercent": 0,
      "swapTotalBytes": 34324082688,
      "topOS": "Ubuntu 25.10"
    }
  },
  "title": "Docker + Linux host overview",
  "updatedAt": "2026-10-23T18:09:18Z"
}

Recent commits

Recent changes

$ git log --oneline -n 5
c160157 Scope unsafe-eval to the admin routes (#8)
590d987 Security/security headers (#7)
7d6bd8c Security/security headers (#6)
8bf20f7 Add security headers via middleware (#5)
595cec2 Update readme and docker compose

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.