sha256:cae95f0de4972ffa3183d61cb67fc4a503075bcaee89ad26c9a1b93a10a7a768
Last pushed
10 days by ficstkeyfx
Type
Compose
Manifest digest
sha256:cae95f0de4972ffa3183d61cb67fc4a503075bcaee89ad26c9a1b93a10a7a768
{
"name": "kc-sdwan-lab",
"services": {
"controller": {
"image": "ficstkeyfx/kc-sdwan-lab:controller-2026.10.31.4",
"restart": "unless-stopped",
"environment": {
"KC_LIVE_LAB": "1"
},
"networks": {
"management": {
"ipv4_address": "172.29.250.10"
},
"console": {}
},
"ports": [
{
"host_ip": "127.0.0.1",
"published": "${KC_LAB_HTTP_PORT:-18088}",
"target": 8080,
"protocol": "tcp"
},
{
"host_ip": "127.0.0.1",
"published": "${KC_LAB_HTTPS_PORT:-18444}",
"target": 8444,
"protocol": "tcp"
}
],
"volumes": [
"controller-data:/data",
"bootstrap-a:/lab/edge-a",
"bootstrap-b:/lab/edge-b",
"mail-data:/app/artifacts/private/docker-flow"
],
"healthcheck": {
"test": [
"CMD",
"python",
"-c",
"import urllib.request;urllib.request.urlopen('http://127.0.0.1:8080/admin/login/',timeout=5)"
],
"interval": "15s",
"timeout": "8s",
"start_period": "900s",
"retries": 8
}
},
"edge-a": {
"image": "ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1",
"restart": "unless-stopped",
"environment": {
"KC_ROLE": "edge-a"
},
"cap_add": [
"NET_ADMIN",
"NET_RAW",
"SYS_ADMIN"
],
"networks": {
"management": {
"ipv4_address": "172.29.250.11"
},
"lan-a": {
"ipv4_address": "10.84.1.1",
"ipv6_address": "fd84:7:1::1"
},
"wan0-a": {
"ipv4_address": "192.0.2.2"
},
"wan1-a": {
"ipv4_address": "198.51.100.2"
}
},
"volumes": [
"bootstrap-a:/bootstrap:ro",
"edge-a-state:/state"
],
"tmpfs": [
"/run",
"/run/lock"
],
"cgroup": "private",
"stop_grace_period": "30s",
"cpus": 2,
"mem_limit": "1536m",
"healthcheck": {
"test": [
"CMD",
"/usr/bin/python3",
"/opt/kc-live/health.py"
],
"interval": "15s",
"timeout": "5s",
"start_period": "900s",
"retries": 8
}
},
"edge-b": {
"image": "ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1",
"restart": "unless-stopped",
"environment": {
"KC_ROLE": "edge-b"
},
"cap_add": [
"NET_ADMIN",
"NET_RAW",
"SYS_ADMIN"
],
"networks": {
"management": {
"ipv4_address": "172.29.250.12"
},
"lan-b": {
"ipv4_address": "10.84.2.1",
"ipv6_address": "fd84:7:2::1"
},
"wan0-b": {
"ipv4_address": "192.0.2.10"
},
"wan1-b": {
"ipv4_address": "198.51.100.10"
}
},
"volumes": [
"bootstrap-b:/bootstrap:ro",
"edge-b-state:/state"
],
"tmpfs": [
"/run",
"/run/lock"
],
"cgroup": "private",
"stop_grace_period": "30s",
"cpus": 2,
"mem_limit": "1536m",
"healthcheck": {
"test": [
"CMD",
"/usr/bin/python3",
"/opt/kc-live/health.py"
],
"interval": "15s",
"timeout": "5s",
"start_period": "900s",
"retries": 8
}
},
"isp1": {
"image": "ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1",
"restart": "unless-stopped",
"environment": {
"KC_ROLE": "isp1"
},
"cap_add": [
"NET_ADMIN",
"NET_RAW",
"SYS_ADMIN"
],
"networks": {
"wan0-a": {
"ipv4_address": "192.0.2.1"
},
"wan0-b": {
"ipv4_address": "192.0.2.9"
}
}
},
"isp2": {
"image": "ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1",
"restart": "unless-stopped",
"environment": {
"KC_ROLE": "isp2"
},
"cap_add": [
"NET_ADMIN",
"NET_RAW",
"SYS_ADMIN"
],
"networks": {
"wan1-a": {
"ipv4_address": "198.51.100.1"
},
"wan1-b": {
"ipv4_address": "198.51.100.9"
}
}
},
"client1": {
"image": "ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1",
"restart": "unless-stopped",
"environment": {
"KC_ROLE": "client1"
},
"cap_add": [
"NET_ADMIN",
"NET_RAW"
],
"networks": {
"lan-a": {
"ipv4_address": "10.84.1.101",
"ipv6_address": "fd84:7:1::101"
}
},
"healthcheck": {
"test": [
"CMD",
"curl",
"--noproxy",
"*",
"-fsS",
"--max-time",
"5",
"http://10.84.2.10:8080/"
],
"interval": "15s",
"timeout": "7s",
"start_period": "900s",
"retries": 8
}
},
"client2": {
"image": "ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1",
"restart": "unless-stopped",
"environment": {
"KC_ROLE": "client2"
},
"cap_add": [
"NET_ADMIN",
"NET_RAW"
],
"networks": {
"lan-a": {
"ipv4_address": "10.84.1.102",
"ipv6_address": "fd84:7:1::102"
}
},
"healthcheck": {
"test": [
"CMD",
"curl",
"--noproxy",
"*",
"-fsS",
"--max-time",
"5",
"http://10.84.2.10:8080/"
],
"interval": "15s",
"timeout": "7s",
"start_period": "900s",
"retries": 8
}
},
"client3": {
"image": "ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1",
"restart": "unless-stopped",
"environment": {
"KC_ROLE": "client3"
},
"cap_add": [
"NET_ADMIN",
"NET_RAW"
],
"networks": {
"lan-a": {
"ipv4_address": "10.84.1.103",
"ipv6_address": "fd84:7:1::103"
}
},
"healthcheck": {
"test": [
"CMD",
"curl",
"--noproxy",
"*",
"-fsS",
"--max-time",
"5",
"http://10.84.2.10:8080/"
],
"interval": "15s",
"timeout": "7s",
"start_period": "900s",
"retries": 8
}
},
"server-b": {
"image": "ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1",
"restart": "unless-stopped",
"environment": {
"KC_ROLE": "server-b"
},
"cap_add": [
"NET_ADMIN",
"NET_RAW"
],
"networks": {
"lan-b": {
"ipv4_address": "10.84.2.10",
"ipv6_address": "fd84:7:2::10"
}
}
},
"mail-inbox": {
"image": "ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1",
"entrypoint": [
"/usr/bin/python3",
"/opt/kc-live/mail.py"
],
"working_dir": "/app",
"restart": "unless-stopped",
"networks": [
"management"
],
"volumes": [
"mail-data:/app/artifacts/private/docker-flow"
]
}
},
"networks": {
"management": {
"internal": true,
"ipam": {
"config": [
{
"subnet": "172.29.250.0/24",
"gateway": "172.29.250.254"
}
]
}
},
"lan-a": {
"internal": false,
"ipam": {
"config": [
{
"subnet": "10.84.1.0/24",
"gateway": "10.84.1.254"
},
{
"subnet": "fd84:7:1::/64",
"gateway": "fd84:7:1::fe"
}
]
},
"enable_ipv6": true
},
"lan-b": {
"internal": false,
"ipam": {
"config": [
{
"subnet": "10.84.2.0/24",
"gateway": "10.84.2.254"
},
{
"subnet": "fd84:7:2::/64",
"gateway": "fd84:7:2::fe"
}
]
},
"enable_ipv6": true
},
"wan0-a": {
"internal": false,
"ipam": {
"config": [
{
"subnet": "192.0.2.0/29",
"gateway": "192.0.2.6"
}
]
}
},
"wan0-b": {
"internal": false,
"ipam": {
"config": [
{
"subnet": "192.0.2.8/29",
"gateway": "192.0.2.14"
}
]
}
},
"wan1-a": {
"internal": false,
"ipam": {
"config": [
{
"subnet": "198.51.100.0/29",
"gateway": "198.51.100.6"
}
]
}
},
"wan1-b": {
"internal": false,
"ipam": {
"config": [
{
"subnet": "198.51.100.8/29",
"gateway": "198.51.100.14"
}
]
}
},
"console": {}
},
"volumes": {
"controller-data": {},
"bootstrap-a": {},
"bootstrap-b": {},
"edge-a-state": {},
"edge-b-state": {},
"mail-data": {}
}
}services:
client1:
image: docker.io/ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1@sha256:04453d2042886b2923460af81fdb2524e8baa0a79aa3bfd5ab06aa1dfc5a7ede
client2:
image: docker.io/ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1@sha256:04453d2042886b2923460af81fdb2524e8baa0a79aa3bfd5ab06aa1dfc5a7ede
client3:
image: docker.io/ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1@sha256:04453d2042886b2923460af81fdb2524e8baa0a79aa3bfd5ab06aa1dfc5a7ede
controller:
image: docker.io/ficstkeyfx/kc-sdwan-lab:controller-2026.10.31.4@sha256:ca43d132b8db3caf52ac50b9c2ef4ea6234a419614b894c5c9aea96e62f893d6
edge-a:
image: docker.io/ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1@sha256:04453d2042886b2923460af81fdb2524e8baa0a79aa3bfd5ab06aa1dfc5a7ede
edge-b:
image: docker.io/ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1@sha256:04453d2042886b2923460af81fdb2524e8baa0a79aa3bfd5ab06aa1dfc5a7ede
isp1:
image: docker.io/ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1@sha256:04453d2042886b2923460af81fdb2524e8baa0a79aa3bfd5ab06aa1dfc5a7ede
isp2:
image: docker.io/ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1@sha256:04453d2042886b2923460af81fdb2524e8baa0a79aa3bfd5ab06aa1dfc5a7ede
mail-inbox:
image: docker.io/ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1@sha256:04453d2042886b2923460af81fdb2524e8baa0a79aa3bfd5ab06aa1dfc5a7ede
server-b:
image: docker.io/ficstkeyfx/kc-sdwan-lab:edge-2026.11.01.1@sha256:04453d2042886b2923460af81fdb2524e8baa0a79aa3bfd5ab06aa1dfc5a7ede
docker compose -f oci://ficstkeyfx/kc-sdwan-lab:latest upUse the above command to pull and run the Compose file. Learn more.