kineuroExperimental Neuroradiology Research
Karolinska Institutet

Infrastructure

Designed, built and run by us, on open source.

We designed this platform ourselves and put it together in house: two machines, a set of open-source services arranged in layers, and the procedures to run them. Asgard computes, Midgard stores, and nothing on either is reachable directly. This page shows how the layers fit together and which projects they are built on.

The layers

People
Registered computers only

A member’s computer is known by its SSH key, registered by an administrator; a lost laptop is revoked in a minute. Browser logins use the kineuro account with a mandatory second factor. There are no passwords for the machines and no self-registration; from any network, always over TLS.

The doors
EdgeTraefik

Traefik terminates TLS for every name with Let’s Encrypt certificates and routes each to its service. Only HTTPS is exposed; the machines, their management controllers and the storage network are not reachable from the Internet.

GatewayWarpgate

Warpgate is the SSH and web bastion: key-only access, one target per role, every session recorded, repeated failures banned. No password can reach a machine.

IdentityAuthentik

Authentik is the single sign-on for everything in a browser, with a mandatory second factor; groups decide who may open what, and accounts are created only by an administrator.

Imaging data serviceNILS

NILS is our own registry for imaging data: every scan digested and classified by a rule pack, every person pseudonymous, every question a stored document with a hash, every release described before it is made. It runs in its own container with the GPUs and the source data beside it, and the desk is behind the portal login.

Data bridgeBifrost

Bifrost is our own door for exchanging data with partners: a link per collaboration with direction, space, expiry and checksums, in the browser or with a small command for terabytes. It runs in its own virtual machine that sees one exchange area and nothing else; nothing enters a study until an administrator accepts it.

OverlayHeadscale

Headscale (the open Tailscale control server) and our own relay connect the other sites and administrators’ devices without opening more ports.

Compute: Asgard
HypervisorProxmox VE

Proxmox VE runs one Debian container per person, each with both GPUs visible, its own root, Docker inside, and the person’s home and data mounted from outside. A rebuild takes minutes and loses nothing.

GPUsNVIDIA

Two NVIDIA RTX PRO 6000 Blackwell (96 GB each), shared at run time by everyone; the driver is shared, each environment pins its own CUDA.

Fast storageOpenZFS

ZFS on four NVMe drives (56 TB) for homes, scratch, working sets and the fast copy of the current data release.

Storage: Midgard
Archive and resultsTrueNAS

TrueNAS with a ZFS pool of 32 hard drives (640 TB) in four RAIDZ2 groups: source data, dated BIDS releases, results and backups, with snapshots and monthly scrubs.

FabricNFS over 400G

Four bonded 100 Gbit/s links between the two machines; NFS 4.2 carries the data, measured at over 4 GB/s in and 17 GB/s out.

BackupsProxmox Backup Server

Proxmox Backup Server keeps nightly copies of the platform containers on Midgard; the imaging data has its snapshot history on Midgard itself.

Watching it
Metrics and alertsPrometheus

Prometheus collects from both machines’ management controllers, the GPUs, the hypervisor, every door and a watchdog that tracks updates; Alertmanager posts to Teams.

DashboardsGrafana

Grafana shows the platform’s health at a glance and in depth, behind the same login.

This site
Website and portalAstro

Astro renders these pages from files in a GitHub repository; members write news in Keystatic; the staff portal reads who you are from the login.

CodeGitHub

Our software lives in the kineuro organization on GitHub.

Traffic enters only at the top and is checked at every layer on the way down: encrypted at the edge, authenticated and recorded at the gateway, authorised by group, isolated per person in its own container, with the data and the storage network never exposed.

The machines

AsgardcomputeSupermicro AS-5126GS-TNRT · 2 × AMD EPYC 9745 (256 cores, 512 threads) · 3 TB RAM · 2 × NVIDIA RTX PRO 6000 Blackwell 96 GB · 4 × NVMe in ZFS (56 TB) · 4 × 100 GbE to Midgard
MidgardstorageSupermicro SSG-542B-E1CR90 · Intel Xeon 6520P · 512 GB RAM · 32 × 20 TB hard drives in ZFS (640 TB raw, four RAIDZ2 groups) · 4 × 100 GbE to Asgard
Fractallegacy siteAMD Threadripper PRO 5995WX (64 cores) · 512 GB RAM · 2 × NVIDIA RTX A6000 48 GB · 146 TB ZFS · Ubuntu. Our earlier workstation and archive; it joins the overlay and its data moves to Midgard’s source pool.

Other sites: our legacy storage server and Fractal reach Asgard over the overlay only, on SSH, to push data into Midgard’s source pool. The bridge that moves their archives is the next piece of work.