selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

PrintStash logo

Self-host PrintStash

v0.15.0

File manager for 3D printing files, STL, 3MF, and G-code

BetaOpen SourceAGPL-3.0
Updated6 days ago
LanguagePython
Setup difficultyModerate
MobileResponsive
ThemeDark mode
Stars
230
CPU
AMD64 or ARM64 host
RAM
1 GB minimum, 2 GB or more recommended
Storage
Persistent volume at /data
Ports
3000 (HTTP web UI (frontend nginx)), 8000 (API internal (not exposed to host in advanced deployment))
Docker
ghcr.io/xiao-villamor/printstash
Install with Docker Compose
Model detail view with 3D preview, recommended G-code, slicer settings, and printer actionsModel library with collections, filters, favorites, and model previewsG-code revisions with needs-test and known-good labelsMoonraker printer showing print progress, temperatures, and controlsAnimated demo of library, model details, revisions, and printer workflow

What is PrintStash?

PrintStash is a self-hosted application for managing 3D printing files. It organizes models, their sliced G-code revisions, and print history in one place. The software provides a web interface where you can upload various mesh and G-code formats, group them into collections, add tags, and mark favorites. It renders 3D previews of meshes and shows G-code layer views with slicer settings. Printer integration works with Moonraker/Klipper as the primary stable option, plus Bambu Lab, PrusaLink, OctoPrint, and Elegoo printers in beta. You can track filament usage and costs, optionally syncing with Spoolman for spool inventory and automatic consumption write-back. Backups are verified and can be stored locally or sent to S3, WebDAV, SFTP, or Google Drive. User accounts support granular permissions, API keys, and OpenID Connect single sign-on. Optional AI search enables semantic queries across the library. The standard deployment uses a single Docker container with SQLite; an advanced Compose file adds PostgreSQL, background workers, and S3-compatible storage. GPU acceleration is available for previews and AI workloads but CPU fallback always works.

Should you self-host PrintStash?

PrintStash scores 49/100 on selfhost.directory (how scoring works) and ranks #14 of 22 in 3D Printing. It has 230 GitHub stars.

It shipped 10 stable releases in the past year. The latest, v0.15.0, came out on 22 October 2026. New versions land roughly every 8 days.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is Octoprint (73/100, 9 166 stars). It scores higher overall, so compare the two before you pick. See PrintStash vs Octoprint side by side.

Features

  • 3D mesh and G-code preview
  • 3D model library management
  • AI-powered semantic searchOptional, requires compatible hardware or inference server
  • Browser capture import
  • Filament tracking and cost calculationSpoolman integration optional
  • Flexible Storage BackendsS3 stable; others beta
  • GPU acceleration for previews and AIRequires compatible hardware; CPU processing remains available
  • Library sources and NAS indexing
  • Multipart model support
  • OpenID Connect SSO
  • OrcaSlicer integration
  • Printer monitoring and controlMoonraker/Klipper stable; others beta
  • User permissions and API keys
  • Verified backups and restore

PrintStash README

How to install PrintStash

Install PrintStash with Docker Compose

Environment variables
PRINTSTASH_VERSION, PRINTSTASH_HTTP_PORT, PRINTSTASH_IMAGE

mkdir -p printstash && cd printstash curl -fsSL https://raw.githubusercontent.com/xiao-villamor/PrintStash/main/docker-compose.yml -o docker-compose.yml printf 'PRINTSTASH_VERSION=0.14.0\n' > .env docker compose up -d

Single container with SQLite, default port 3000. Pin PRINTSTASH_VERSION to a release tag.

How to configure PrintStash

  • PRINTSTASH_HTTP_PORT3000Host port for the web UI. Default 3000.

    Host port for the web UI. Default 3000.

    values: Any free host port

  • PRINTSTASH_IMAGEghcr.io/xiao-villamor/printstashSelects a fork's GHCR namespace or a locally built image.

    Selects a fork's GHCR namespace or a locally built image.

    values: Any valid image reference

  • PRINTSTASH_VERSIONlatestTag of the prebuilt GHCR images the Compose files pull. Pin a specific release for reproducible deploys.

    Tag of the prebuilt GHCR images the Compose files pull. Pin a specific release for reproducible deploys.

    values: Release tags like 0.14.0, 0.15.0

  • VAULT_COMPUTE_MODEautoCompute mode for GPU/CPU processing.

    Compute mode for GPU/CPU processing.

    values: auto, cpu, gpu

  • VAULT_DB_URLsqlite:///data/db/printstash.sqlitePostgreSQL connection URL when using PostgreSQL instead of SQLite.

    PostgreSQL connection URL when using PostgreSQL instead of SQLite.

    values: postgresql+psycopg://user:pass@host:5432/db

  • VAULT_JWT_SECRETgenerated on first startSigns login tokens. If not supplied, generated on first boot and persisted.

    Signs login tokens. If not supplied, generated on first boot and persisted.

    values: Any long random string (e.g., openssl rand -hex 32)

  • VAULT_MAX_UPLOAD_MB512Per-file upload cap in MB. Also raise VAULT_MAX_REQUEST_MB on frontend.

    Per-file upload cap in MB. Also raise VAULT_MAX_REQUEST_MB on frontend.

    values: 1-1024+

  • VAULT_OIDC_CLIENT_IDOIDC client ID.

    OIDC client ID.

    values: OIDC client ID

  • VAULT_OIDC_CLIENT_SECRETOIDC client secret.

    OIDC client secret.

    values: OIDC client secret

  • VAULT_OIDC_ENABLEDfalseEnable OpenID Connect single sign-on.

    Enable OpenID Connect single sign-on.

    values: true, false

  • VAULT_OIDC_ISSUER_URLOIDC provider issuer URL.

    OIDC provider issuer URL.

    values: Valid OIDC issuer URL

  • VAULT_PROCESS_ROLEallProcess role: all (API + jobs), api (HTTP only), or worker (background jobs only).

    Process role: all (API + jobs), api (HTTP only), or worker (background jobs only).

    values: all, api, worker

  • VAULT_SECRETS_KEYgenerated key fileEncrypts stored integration credentials. If empty, a key file is created at /data/db/.printstash-secrets-key.

    Encrypts stored integration credentials. If empty, a key file is created at /data/db/.printstash-secrets-key.

    values: Any long random string

  • VAULT_SESSION_COOKIE_SECUREfalseSet true when PrintStash is served over HTTPS so the browser sends the session cookie only over TLS.

    Set true when PrintStash is served over HTTPS so the browser sends the session cookie only over TLS.

    values: true, false

  • VAULT_SETUP_MODEtrusted_networkFirst-run registration mode: trusted_network (browser from private addresses), environment (from VAULT_SETUP_ADMIN_* variables), or disabled.

    First-run registration mode: trusted_network (browser from private addresses), environment (from VAULT_SETUP_ADMIN_* variables), or disabled.

    values: trusted_network, environment, disabled

  • VAULT_STORAGE_PROVIDERlocalStorage provider ID for managed storage (local, s3, nextcloud, webdav, sftp, googledrive).

    Storage provider ID for managed storage (local, s3, nextcloud, webdav, sftp, googledrive).

    values: local, s3, nextcloud, webdav, sftp, googledrive

PrintStash releases & version history

More in 3D Printing

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…