SparkBox / Guides / Run SparkBox on Windows with WSL2

Run SparkBox on Windows with WSL2 — Install, Setup, and Clean Reinstall

This is a step-by-step, checklist-style guide for running SparkBox on a Windows PC using WSL2 (Windows Subsystem for Linux) and Ubuntu. It's written for someone who's comfortable on Windows but only somewhat comfortable on Linux. Every command is copy-pasteable, the steps are numbered, and there's a full recovery section at the end for when the dashboard won't come up and you just want to start clean.

SparkBox Apps page — one-click install cards for every module
SparkBox Apps page — one-click install cards for every module

Honest heads-up: SparkBox's officially supported homes are a VPS or a NAS — WSL2 is not an official target, and we haven't put it through the same testing. The good news: WSL2 is just a real Ubuntu Linux running on your PC, so the standard Linux install works there. This guide is the standard install with the WSL-specific gotchas called out explicitly. Where we're not 100% sure something behaves the same on WSL as on a real server, we say so plainly and point you to the community. If you have a spare always-on machine or a cheap VPS, those are smoother. WSL2 is best for trying SparkBox out on a PC you already have.

1. Before you start

Check these off before you touch a terminal. Everything here is on the Windows side.

2. Install WSL2 + Ubuntu

This whole section is WSL-specific — it's the part that doesn't exist on a normal server, because here you're building the Linux machine first. Work through it in order.

Step 2.1 — Install WSL2 and Ubuntu

  1. Click Start, type PowerShell, right-click Windows PowerShell, and choose Run as administrator.
  2. Run:
    wsl --install -d Ubuntu
    This installs the WSL2 engine and the Ubuntu distribution in one shot.
  3. Reboot Windows when it asks (or reboot manually). This is required — WSL won't be fully ready until you do.

Step 2.2 — Set up your Ubuntu user

  1. After the reboot, an Ubuntu window usually opens by itself. If it doesn't, click Start and open Ubuntu.
  2. It will ask you to create a UNIX username and password. This is the Linux login, separate from your Windows account. Pick something simple and remember the password — you'll type it for sudo commands. (The password won't show as you type; that's normal.)

Step 2.3 — Turn on systemd (do not skip this)

This is the single most common place WSL users get stuck with SparkBox. SparkBox runs on Docker, and on WSL the Docker Engine that the installer sets up is started by systemd. Fresh Ubuntu-on-WSL doesn't always have systemd turned on, so you turn it on once.

  1. Inside the Ubuntu window, open the config file:
    sudo nano /etc/wsl.conf
  2. Add these two lines (if the file already has a [boot] section, just add the systemd=true line under it):
    [boot]
    systemd=true
  3. Save and exit nano: Ctrl+O, Enter, then Ctrl+X.
  4. Now go back to your PowerShell window (or open a new one) and fully restart WSL so the change takes effect:
    wsl --shutdown
    Wait about 10 seconds, then reopen Ubuntu.
  5. Confirm systemd is running:
    systemctl is-system-running
    You want running (or degraded — that's fine, it just means one unrelated service isn't happy). If you get an error like "System has not been booted with systemd," the wsl.conf change didn't take — recheck the file and run wsl --shutdown again.
Already running Docker Desktop with WSL integration? Then you have another valid path. If you have Docker Desktop installed on Windows with "WSL integration" turned on for this Ubuntu distro, the docker command already works inside Ubuntu. The SparkBox installer checks for an existing Docker first — when it finds one, it logs "Docker already installed" and skips installing its own Docker Engine and the systemd step above isn't strictly required for Docker. (Confirm Docker works first by running docker ps in Ubuntu — if you get a table back, you're set.) If you're not using Docker Desktop, do the systemd step above so the installer's own Docker Engine can start.

3. Install SparkBox

From here on, everything is the same as the standard Linux install — you're running the exact command from our install guide. Do all of this inside the Ubuntu window.

Step 3.1 — Update Ubuntu

sudo apt update && sudo apt upgrade -y

Step 3.2 — Run the installer

This is the one and only install command. Paste it exactly:

curl -fsSL https://get.tomsparkbox.com/install.sh | sudo bash

The installer will:

  1. Install Docker and required system packages (skipped if you already have Docker).
  2. Download SparkBox to /opt/sparkbox.
  3. Generate a .env file with random secrets.
  4. Bring up the core services + the dashboard.

This takes a few minutes. When it finishes, it prints a one-time bootstrap token (16 hex characters) and the dashboard URL. Copy the token somewhere — you need it to claim the dashboard.

If the install fails right at "bringing up" / Docker errors: nine times out of ten on WSL that's the systemd/Docker step from 2.3. Confirm Docker is actually running with docker ps. If that errors with something about the daemon not running, go back and finish Step 2.3 (systemd) or start Docker Desktop, then re-run the install command — it's safe to run again.

Step 3.3 — Claim the dashboard

  1. Open a browser on Windows (Chrome, Edge, whatever) and go to:
    http://localhost:8443
    WSL2 forwards localhost from Windows into Ubuntu, so this normally just works. If localhost:8443 doesn't load, get your Ubuntu IP by running this in the Ubuntu window:
    wsl hostname -I
    Take the first IP it prints (e.g. 172.x.x.x) and open http://THAT-IP:8443 in your browser instead.
  2. You'll see a "Claim your SparkBox" form. Paste the bootstrap token from the installer and pick an admin password.
  3. Lost the token? Get it back from the Ubuntu window:
    sudo sparkbox bootstrap-token
    If it says it's already been claimed, just log in with the admin password you set. Forgot that too?
    sudo sparkbox reset-password

After you claim it, the dashboard walks you through a short first-run wizard: your timezone, a profile (Privacy / Media / Full / Custom), and which modules to turn on. Pick Custom if you just want to start small with the core + dashboard and add apps later.

4. Open your dashboard + enable your first apps

You're now looking at the SparkBox dashboard — one screen listing every app you can install as tiles. Adding an app is: click the tile, click Install, wait, click Launch. The dashboard generates the password for you and shows it in the Launch popup, so there's nothing to write down in advance.

Homarr — a home dashboard for all your self-hosted apps
Homarr — a home dashboard for all your self-hosted apps
Vaultwarden — your own private password manager
Vaultwarden — your own private password manager
SparkBox dashboard home with app launcher tiles and system stats
SparkBox dashboard home with app launcher tiles and system stats

New to all of this? The self-hosting dashboard for beginners guide walks through the dashboard and the five-click app install in plain English.

5. Setting up media (optional)

If you enabled the Media Center profile (Jellyfin + the *arr stack + qBittorrent behind a VPN), there are two things to know:

The full walkthrough — including how to pull VPN credentials for each provider — is in the media docs. See the Jellyfin setup guide and the in-dashboard media docs rather than reinventing it here.

6. "It's jammed up" — troubleshooting

The dashboard won't load, or an app shows a red dot instead of green. Work through these in order, all from the Ubuntu window. Most of the time you never get past the first two.

Step 6.1 — See what's actually running

sparkbox status

This shows which modules are enabled and which containers are up. A healthy stack shows everything running. Note anything that's stopped or restarting.

Step 6.2 — Try just bringing it back up

The most common fix by far. This re-starts everything that should be running and self-heals a lot of common problems (it's safe to run any time):

sudo sparkbox up

On WSL specifically, if the dashboard went away after you closed all your Ubuntu windows or rebooted the PC, that's expected — WSL stops the distro when nothing's using it. Open Ubuntu and run sudo sparkbox up to bring it back. (If you want it to come back on its own, that's a WSL auto-start topic outside this guide — ask in the community for the current best approach.)

Step 6.3 — Run the doctor

This pattern-matches common problems (wrong install path, Docker not reachable, port conflicts, missing config) and tells you what's wrong and how to fix it, in plain language:

sudo sparkbox doctor

Step 6.4 — Read the logs for the one app that's broken

If one specific container won't start, look at its logs. Use the container name from sparkbox status (they all start with sb-):

sparkbox logs sb-dashboard
sparkbox logs sb-jellyfin-media

The last 20-or-so lines usually say what's wrong in English.

WSL-specific things to double-check

7. Clean slate / start over — the recovery ladder

If you can't get the dashboard up and you'd rather wipe and start over, here's the ladder from least destructive to most destructive. Start at the top and only move down if the previous step didn't get you there. Run all of these from the Ubuntu window.

Read the "what it removes" line before you run any of these. The bottom two on this ladder delete data permanently with no undo. The two destructive ones ask you to type YES to confirm (add --yes only if you're certain).

Rung 1 — Just bring it back up (removes nothing)

sudo sparkbox up

Removes: nothing. Use when: always try this first. Re-starts everything and self-heals common issues.

Rung 2 — Soft reset (keeps all your data)

sudo sparkbox reset --soft

Removes: stops and deletes the SparkBox containers and their Docker networks. Keeps: all your data, settings (.env), state, and backups. Use when: a container is wedged or in a bad state and a plain up didn't fix it. Afterward, run sudo sparkbox up to start everything fresh. (Note: sparkbox reset with no flag does the same thing as --soft.)

Rung 3 — Factory reset (keeps your media + login, wipes app settings)

sudo sparkbox factory-reset

Removes: per-app settings — it wipes state/, every app's config and per-app data, and resets you back to core + dashboard only, so the dashboard boots into the first-run wizard again. Keeps: your .env (so your admin password and license still work), your backups, and your top-level media files. It automatically runs sparkbox up for you at the end, so core services come straight back. Use when: you set things up in the wrong order or your app config got tangled and you want a clean first-run wizard without losing your media or having to re-claim the box.

Rung 4 — Hard reset (DELETES EVERYTHING except the install folder)

⚠ No undo. This permanently deletes your data and settings.
sudo sparkbox reset --hard

Removes: the containers/networks plus /data (media, configs, databases), .env (passwords, license key, secrets), state/, your backups/, and module configs. Keeps: only the SparkBox install directory itself. Use when: you want a completely fresh configuration and you're sure you don't need the existing data or backups. You'll type YES to confirm. Afterward, re-run the install command (Step 3.2) to reconfigure. Good to know: this also tells our license server to free this machine's activation slot, so wiping and reinstalling won't burn one of your license activations.

Rung 5 — Nuke + full reinstall (removes SparkBox entirely)

⚠ No undo. This is the most destructive option — a full fresh install is required afterward.
sudo sparkbox reset --nuke

Removes: everything in --hard mode, plus the entire SparkBox install directory (/opt/sparkbox), the sparkbox command shortcut, and the Docker images SparkBox pulled. Keeps: Docker itself stays installed. Use when: the install is so broken that even a hard reset won't reconfigure cleanly, and you want a truly blank slate. Then do a completely fresh install:

curl -fsSL https://get.tomsparkbox.com/install.sh | sudo bash
WSL nuclear option (rare): if Ubuntu itself is so broken that you can't even run these commands, you can reset the whole Ubuntu distro from PowerShell on Windows — but be aware this deletes everything in that distro, SparkBox and all your data included: wsl --unregister Ubuntu then wsl --install -d Ubuntu, and start this guide over from Step 2. Only do this if the in-Ubuntu commands above won't run at all.

Most of these are also available inside the dashboard under Settings → Server Management (Soft Reset / Reset to Defaults / Factory Reset) — but if the dashboard won't load, the Ubuntu-window commands above are how you recover.

8. Still stuck? Ask on d/sparkbox

If you've worked down the troubleshooting list and you're still stuck — especially on anything WSL-specific where this guide hedged — post in the SparkBox community at d/sparkbox. Include a screenshot and, if you can, the output of sudo sparkbox doctor and sparkbox status. Real humans answer (often Tom), and we track where people get stuck so we can fix the dashboard or improve the guide. WSL2 isn't our primary target, so your reports genuinely help.

Next steps

One screen, every app, no Docker config.

SparkBox is the free, open-source self-hosting platform built for people who don't want to learn Linux. Once it's running on WSL2, adding an app is one tile click — and there's a real community when something goes wrong.

Get SparkBox → Or read the beginner dashboard tour →

About this guide: The SparkBox install, dashboard-claim, and recovery commands described here are taken straight from the SparkBox CLI and install guide. WSL2 is not an officially tested SparkBox target — the WSL-specific steps (systemd, localhost forwarding, distro reset) follow standard WSL2 practice and are flagged where we're not certain they behave identically to a real server. If anything here doesn't match what you see, tell us in d/sparkbox and we'll fix it.