apps.header.allAppsCount
PrusaSlicer
apps.detail.types.app from junkerderprovinz's Repository
apps.detail.sections.overview
Readme
View on GitHub
PrusaSlicer, in your browser. Slice from any device — no VNC client, no local install.
This runs the full PrusaSlicer desktop app inside a single container and streams it to your
browser over Selkies (WebRTC), so the
3D plate stays smooth to rotate, zoom and drag — the part of slicing where the old noVNC
containers feel laggy.
Table of Contents
- What is this?
- Screenshots
- Why Selkies?
- Install on Unraid
- Configuration
- First use
- How it works
- Credits
- License
1. What is this?
An own-image container that packages PrusaSlicer — the FDM/SLA slicer from Prusa Research — on top of LinuxServer.io's baseimage-selkies and serves its desktop UI straight to your browser. No X client, no VNC viewer, no separate install on your workstation: open the WebUI and slice.
LinuxServer ship OrcaSlicer and Cura on Selkies, but not PrusaSlicer, and the only other browser-based PrusaSlicer images are years-old, abandoned noVNC builds. This is a maintained, modern Selkies (WebRTC) build for amd64 and arm64.
PrusaSlicer itself is installed from Debian trixie's prusa-slicer package (PrusaSlicer no
longer ships a Linux AppImage), so it tracks Debian's security updates and works natively on
both architectures.
2. Screenshots
The plater — place and arrange models on the 3D build plate, right in your browser over Selkies.
Sliced preview — colour-coded toolpaths, a per-feature breakdown and the print-time / filament estimate, then export the G-code.
3. Why Selkies?
Slicing is a 3D-viewport workflow: you rotate the plate, zoom into overhangs, drag and orient models, and scrub the layer/tool-path preview. Over the older noVNC stack that continuous canvas feels laggy because the whole frame is re-encoded on every change. Selkies streams the desktop over WebRTC, the same reason LinuxServer moved Orca, Cura, Blender and FreeCAD onto it — so the plate stays responsive. When the host has a GPU the base wires it through; without one it falls back to software rendering so it still works.
4. Install on Unraid
Requires Unraid 6.12+. Install via Community Applications — search for PrusaSlicer
(look for the junkerderprovinz maintainer). Or add the template repository manually under
Docker → Add Container → Template repositories:
https://github.com/junkerderprovinz/unraid-apps
Then open the WebUI on the mapped HTTPS port (default 3001).
5. Configuration
| Variable | Required | Description |
|---|---|---|
CUSTOM_USER |
No | WebUI login user. Leave empty (with PASSWORD) for no login on a trusted LAN. |
PASSWORD |
No | WebUI login password. Empty = no login; set both to enable HTTP basic auth on the WebUI. |
CUSTOM_HTTPS_PORT |
No | HTTPS port the WebUI is served on (default 3001). |
PUID / PGID |
No | User/group the app runs as, so files it writes match your share ownership. The Unraid template sets 99/100 (nobody/users). |
TZ |
No | Timezone (e.g. Europe/Berlin). |
Mount your models/G-code folder to /storage (the Unraid template defaults it to /mnt/user,
giving access to all shares) so imports and slices land on your array. PrusaSlicer's own
configuration (printer/filament/print profiles) persists under /config.
[!NOTE] The WebUI has no login by default for trusted-LAN use. Never expose it directly to the internet — put it behind a VPN or a reverse proxy that adds authentication, or set
CUSTOM_USER+PASSWORDto enable the built-in basic auth.
6. First use
- Open the WebUI — PrusaSlicer starts maximised, ready to slice.
- Run the Configuration Assistant (first launch) and pick your printer(s) and filament(s).
- Import a model (
File → Import, or drag it onto the plate from your mounted folder), slice, and export the G-code to your mounted output folder. - Prefer a dark UI? PrusaSlicer has its own Dark mode under Preferences → General → Dark mode; the container's GTK chrome is already dark.
Closing the PrusaSlicer window simply reopens a fresh instance — it is the container's single app (kiosk model), so there is nothing else to manage.
7. How it works
Browser ──WebRTC (Selkies)──> PrusaSlicer container
├─ nginx (Selkies WebUI, HTTPS :3001)
├─ openbox + Selkies desktop
└─ /usr/bin/prusa-slicer (Debian trixie package)
└─ /config (printer/filament/print profiles, persisted)
Built on ghcr.io/linuxserver/baseimage-selkies:debiantrixie. A small s6 overlay seeds the
openbox autostart (which launches PrusaSlicer as the session's single app), keeps the WebUI
login-free unless you set credentials, and prints a PRUSASLICER IS READY banner to the
container log once the WebUI is serving. Images are built natively per architecture, boot-smoke
tested (the binary is present and the WebUI answers) before publishing, and scanned for CVEs.
8. Credits
- PrusaSlicer by Prusa Research (AGPL-3.0) — the
slicer this image packages. Installed from the Debian
prusa-slicerpackage. This project is not affiliated with or endorsed by Prusa Research. - LinuxServer.io baseimage-selkies (GPL-3.0) — the Selkies web-desktop base.
- Selkies — the WebRTC desktop streaming stack.
See NOTICE for the full bundled-software license list. This repository's own wrapper
(Dockerfile, rootfs, scripts, artwork) is AGPL-3.0; see LICENSE.
9. License
Copyright (C) 2026 Junker der Provinz.
This repository packages PrusaSlicer as a container for Unraid. The packaging in this repository (Dockerfile, scripts, theme, web assets and everything else original here) is free software under the GNU Affero General Public License v3.0 (AGPL-3.0); see LICENSE. If you distribute it, or run a modified version as a network service, you must release your source under the same AGPL-3.0 terms and keep the existing copyright and attribution notices intact.
Scope. The AGPL applies to this repository's own code and assets. PrusaSlicer itself is a separate project under its own license and name; this repository does not claim it. The banner, logo, theme and other branding original to this repository remain reserved: a fork must use its own branding and may not present itself as this project.
If this saved you a slicer setup, consider buying me a coffee:
apps.marketingCta.appInstallTitle
apps.marketingCta.appInstallDescription
apps.detail.sections.categories
apps.downloadStats.title
apps.detail.sections.related
apps.detail.related.exploreCategories
apps.detail.related.exploreAllapps.detail.sections.links
apps.detail.sections.details
junkerderprovinz/prusaslicer:latestapps.detail.sections.runtime
- apps.detail.details.webui
https://[IP]:[PORT:3001]/- apps.detail.details.network
bridge- apps.detail.details.shell
bash- apps.detail.details.privileged
- false
- apps.detail.details.extraParams
--restart=unless-stopped --shm-size=1gb
apps.detail.sections.configuration
HTTPS port of the Selkies WebUI (self-signed cert). This is the default WebUI — HTTPS is required for clipboard support in the browser. Accept the self-signed certificate once.
- apps.detail.config.target
- 3001
- apps.detail.config.default
- 3001
- apps.detail.config.value
- 3001
HTTP port of the Selkies WebUI. For a reverse proxy that terminates TLS in front of the container — NOT for direct browser access. The Selkies web client requires a secure context, so opening http://IP:3000 directly shows a 'requires a secure connection (HTTPS)' error. For direct access use the HTTPS port 3001.
- apps.detail.config.target
- 3000
- apps.detail.config.default
- 3000
- apps.detail.config.value
- 3000
Persistent PrusaSlicer configuration: printer, filament and print profiles, history and preferences.
- apps.detail.config.target
- /config
- apps.detail.config.default
- /mnt/user/appdata/prusaslicer
- apps.detail.config.value
- /mnt/user/appdata/prusaslicer
Where you keep your STL/3MF models and where sliced G-code is saved. Default /mnt/user gives access to all shares. Import models and export G-code under /storage inside PrusaSlicer's file dialogs.
- apps.detail.config.target
- /storage
- apps.detail.config.default
- /mnt/user
- apps.detail.config.value
- /mnt/user
Optional. Username for HTTP-basic-auth on the WebUI. Leave EMPTY together with the password for no login. Set both fields to enable login (recommended outside trusted LANs).
- apps.detail.config.target
- CUSTOM_USER
Optional. Password for HTTP-basic-auth on the WebUI. Leave EMPTY together with the username for no login. STRONGLY recommended whenever the container is reachable from outside your LAN.
- apps.detail.config.target
- PASSWORD
Container timezone (affects log timestamps and file mtimes). Use this instead of a /etc/localtime bind-mount — the LSIO base image manages /etc/localtime internally via TZ.
- apps.detail.config.target
- TZ
- apps.detail.config.default
- Europe/Vienna
- apps.detail.config.value
- Europe/Vienna
User-ID PrusaSlicer runs as. Default 99 (nobody on Unraid).
- apps.detail.config.target
- PUID
- apps.detail.config.default
- 99
- apps.detail.config.value
- 99
Group-ID. Default 100 (users on Unraid).
- apps.detail.config.target
- PGID
- apps.detail.config.default
- 100
- apps.detail.config.value
- 100
Permission mask for newly created files. Use 000 if you want every container user to read/write everything.
- apps.detail.config.default
- 022|000|002|077
- apps.detail.config.value
- 022