github-actions[bot] 90205c5ab5 chore(extension): release 1.2.0
# [thingport-grab-v1.2.0](https://github.com/TautvydasDerzinskas/Thingport/compare/thingport-grab-v1.1.2...thingport-grab-v1.2.0) (2026-10-01)

### Bug Fixes

* **extension:** drop unneeded tabs permission ([9549148](https://github.com/TautvydasDerzinskas/Thingport/commit/9549148dfd38e642e7374f4e21748360cb73b9e6))
* **extension:** include captcha related header ([7d51458](https://github.com/TautvydasDerzinskas/Thingport/commit/7d5145898862f4220a77cb277973489bd2863cd0))
* **extension:** send devmodelname and match makerworld button design ([955513c](https://github.com/TautvydasDerzinskas/Thingport/commit/955513c5c52e63294f15d1e6816c3ca6063d3114))
* **extension:** show print profile choices after navigating within MakerWorld ([484efff](https://github.com/TautvydasDerzinskas/Thingport/commit/484efff1c956b7cc1967cbb4699bab78955b40e2))

### Features

* **extension:** add normalized download for MakerWorld ([2380c56](https://github.com/TautvydasDerzinskas/Thingport/commit/2380c566e54cd9ba0225689cf58f2899597a15d7))
* **extension:** automate publishing to Chrome Web Store ([e37073c](https://github.com/TautvydasDerzinskas/Thingport/commit/e37073cf531e55c15f917cf44e6595dc29d661af))
* **extension:** choose which MakerWorld print profiles to import ([fc612b3](https://github.com/TautvydasDerzinskas/Thingport/commit/fc612b30c0dd7e8fe6df1801d67e790e420ac1c8))
* **extension:** send MakerWorld page data with imports ([c3a189e](https://github.com/TautvydasDerzinskas/Thingport/commit/c3a189ea7fdba849c257b05c1dc16f95a3a83a2f))
2026-10-01 06:05:23 +00:00
2026-10-01 06:05:23 +00:00
2026-09-07 09:12:37 +02:00

Thingport

Your personal 3D model library.

Collect, organize, preview, and manage your 3D printing models
from the places where you discover them.

Website · Docs · Features · Blog

Website Website build Frontend Backend Slicer Bridge Thingport Grab

About

If you do 3D printing, you probably discover models across MakerWorld, Printables, Thingiverse, and other 3D model platforms.

Over time, those bookmarks, downloads, ZIP files, and random folders become a mess.

Thingport is your personal, self-hosted 3D model library.

Bring your models together in one place, keep them organized, and preview them directly in your browser.

Instead of having your collection scattered across different websites and your filesystem, Thingport gives you a single place to manage the models you actually want to keep.

Features

  • 🌐 Import from MakerWorld, Printables and Thingiverse — paste a link, or use the Thingport Grab browser extension. Whole collections, likes and MakerWorld print profiles come across with their title, description, tags, photos and author.
  • 📤 Upload your own files — STL, 3MF, STEP, OBJ and LightBurn files, or a ZIP to pick files from.
  • 🧊 3D previews — STL, 3MF, OBJ and STEP in the browser, with a thumbnail for every plate of a multi-plate 3MF. Very complex models can be simplified for the preview only.
  • 🗂️ Organize and search — nested categories, collections, tags, favourites and browsing history, with full-text search across names, tags, notes and authors.
  • 👤 Author pages — every model you've saved from an author, with a preview card when you hover their name.
  • 🖨️ Open in your slicer — Bambu Studio, OrcaSlicer, PrusaSlicer, Cura, Creality Print, Anycubic Slicer Next, Elegoo Slicer and Snapmaker Orca, choosing the file when a model has several.
  • 💡 Normalized MakerWorld 3MFs — slicers that mis-read Bambu Studio projects get an "Open normalized" option that keeps painted colours, plates and the designer's print settings.
  • 📎 Everything to print it — keep instructions, notes and a sliced, ready-to-print file next to the model.
  • 💾 Plain files on your disk — choose the folder layout, mount folders you already have, and back up with any tool.
  • 👥 Multi-user — a separate library per person, open or invite-only registration, optional email verification and captcha, and admin logs.
  • 🌍 Light and dark themes, in English and Lithuanian.
  • 🐳 Self-hosted — runs anywhere Docker does, from a NAS to a spare PC.

Screenshots

Dashboard
Dashboard
Models
Models
Model details
Model Details
3D preview
3D Preview
Collections
Collections
Tags
Tags
Downloads
Downloads
My models
My Models
Dark theme
Dark Theme
Thingport Grab on Printables
Thingport Grab — Printables
Thingport Grab on Thingiverse
Thingport Grab — Thingiverse
Thingport Grab on MakerWorld
Thingport Grab — MakerWorld

Companion Apps

Thingport ships two small companion tools, each downloadable from the in-app Download page or GitHub Releases:

  • Thingport Bridge — a lightweight desktop helper that makes "Open in {Slicer}" work for slicers (Bambu Studio, PrusaSlicer, Cura, Anycubic Slicer Next) whose own URL-protocol handlers won't accept a link from a self-hosted domain.
  • Thingport Grab — a browser extension for Chrome, Edge and Firefox that imports MakerWorld, Thingiverse, and Printables models straight from their own pages, without leaving the site (see the screenshots above). Even without a Thingport instance, it adds a "Download normalized" button to MakerWorld model pages that converts Bambu Studio projects into 3MFs other slicers open with their colours and settings. Get it from the Chrome Web Store, Firefox Add-ons or Microsoft Edge Add-ons.

Provider Setup

Printables imports work with no setup. MakerWorld and Thingiverse each need a credential from your own account first -- see docs/PROVIDER_SETUP.md for how to create a Thingiverse Access Token and how to grab a MakerWorld session cookie.

Installation

Step-by-step guides for Docker Compose, Unraid, TrueNAS SCALE and CasaOS are also on the Thingport website.

Docker Compose

Runs entirely from the pre-built images on GHCR -- no local build, no git clone needed. Works on any Docker host, including a NAS (Synology, QNAP, Unraid, etc).

Unraid users: see docs/install/unraid/README.md for an Unraid-flavored compose file (appdata paths, Docker tab icons/WebUI) and Compose plugin setup steps.

TrueNAS SCALE users: see docs/install/truenas/README.md for a TrueNAS-flavored compose file (dataset-backed appdata paths) and both the Custom App (YAML) and SSH setup steps.

CasaOS users: see docs/install/casaos/README.md for a CasaOS-flavored compose file (/DATA/AppData appdata paths) and both the customized-app and SSH setup steps.

Create a folder for Thingport and add these two files to it:

docker-compose.yml
services:
  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      - POSTGRES_USER=${POSTGRES_USER:-thingport}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-thingport}
      - POSTGRES_DB=${POSTGRES_DB:-thingport}
    volumes:
      - thingport_db:/var/lib/postgresql/data
    networks:
      - app-net
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-thingport}"]
      interval: 5s
      timeout: 5s
      retries: 10

  flaresolverr:
    image: ghcr.io/flaresolverr/flaresolverr:latest
    restart: unless-stopped
    environment:
      - LOG_LEVEL=${FLARESOLVERR_LOG_LEVEL:-info}
      - TZ=${TZ:-UTC}
    networks:
      - app-net

  backend:
    image: ghcr.io/tautvydasderzinskas/thingport-backend:latest
    restart: unless-stopped
    environment:
      - PUID=${PUID:-1000}
      - PGID=${PGID:-1000}
      - AUTH_SECRET=${AUTH_SECRET:-changeme-secret}
      - AUTH_TOKEN_TTL=${AUTH_TOKEN_TTL:-43200}
      - PUBLIC_URL=${PUBLIC_URL:-}
      - SMTP_HOST=${SMTP_HOST:-}
      - SMTP_PORT=${SMTP_PORT:-587}
      - SMTP_SECURE=${SMTP_SECURE:-false}
      - SMTP_USER=${SMTP_USER:-}
      - SMTP_PASS=${SMTP_PASS:-}
      - SMTP_FROM=${SMTP_FROM:-Thingport <no-reply@localhost>}
      - FILE_STORAGE=/app/storage
      - DATABASE_URL=postgresql://${POSTGRES_USER:-thingport}:${POSTGRES_PASSWORD:-thingport}@db:5432/${POSTGRES_DB:-thingport}?schema=public
      - CORS_ORIGINS=${CORS_ORIGINS:-}
      - FLARESOLVERR_URL=${FLARESOLVERR_URL:-http://flaresolverr:8191/v1}
    depends_on:
      db:
        condition: service_healthy
      flaresolverr:
        condition: service_started
    volumes:
      - thingport_storage:/app/storage
    networks:
      - app-net

  frontend:
    image: ghcr.io/tautvydasderzinskas/thingport-frontend:latest
    restart: unless-stopped
    ports:
      - "${WEB_PORT:-80}:80"
    depends_on:
      - backend
    networks:
      - app-net

volumes:
  thingport_storage:
  thingport_db:

networks:
  app-net:
    driver: bridge
.env
# Required
# AUTH_SECRET signs login tokens -- use your own random value
AUTH_SECRET=b1193c7014e833a063f750d6e4644d615e90e6ee81dbde619e1818e9675a3374
POSTGRES_PASSWORD=change-this-password

# Optional (defaults shown)
PUID=1000
PGID=1000
WEB_PORT=80
POSTGRES_USER=thingport
POSTGRES_DB=thingport
# e.g. https://thingport.example.com -- needed for links in verification emails
PUBLIC_URL=
# login token lifetime, in seconds
AUTH_TOKEN_TTL=43200
SMTP_HOST=
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=
SMTP_PASS=
SMTP_FROM=Thingport <no-reply@localhost>
FLARESOLVERR_URL=http://flaresolverr:8191/v1
TZ=UTC

Then start it:

docker compose up -d

Thingport will be available at http://<host>:<WEB_PORT> (default port 80). The first account you register becomes the admin account.

Just want to try it? On Linux or macOS, one command creates a thingport folder with the same two files, generates the secrets in .env and starts Thingport on port 80:

curl -fsSL https://thingport.net/install.sh | sh

Edit .env there and run docker compose up -d again to change settings. Pick the folder and port up front with curl -fsSL https://thingport.net/install.sh | WEB_PORT=8080 sh -s -- ~/thingport. The script is install.sh in this repo.

Building from source instead
git clone https://github.com/TautvydasDerzinskas/Thingport.git
cd Thingport
cp .env.example .env
docker compose up -d

This builds the images locally rather than pulling from GHCR.

Contributing

Bug reports and pull requests are welcome. See CONTRIBUTING.md for the branch, commit and pull request workflow, and docs/DEVELOPMENT.md for how to run Thingport locally with hot reload.

Support

If Thingport is useful to you, consider supporting its development:

License

Copyright (C) 2026 Tautvydas Deržinskas

Thingport is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License, version 3 (AGPL-3.0-only), as published by the Free Software Foundation.

Thingport is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

If you run a modified version of Thingport as a network service, the AGPL requires you to offer its users the corresponding source code.

S
Description
Collect, organize, preview, and manage your 3D printing models from the places where you discover them.
Readme AGPL-3.0
99 MiB
0 Stars 1 Watchers 0 Forks
2026-10-17 21:40:22 -05:00
Languages
TypeScript 94.4%
Astro 2.2%
JavaScript 1.1%
Go 0.6%
SCSS 0.5%
Other 1%