Game Servers
VortexServers.co.uk — Community game server hosting and tooling
Live game server deployments, provisioning, and monitoring for VortexServers.co.uk.
Project architecture
Live architecture snapshot
Topology
Docker + Linux host overview
Separate Go service exposing live Docker daemon, container, image, and Linux host telemetry.
client
-> portfolio site
-> /api/architecture
-> 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_64Raw 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.