manyfold
Self-hosted 3D model library manager for organizing, viewing, and managing 3D print files. Use when the user asks about deploying, configuring, or using Manyfold for managing STL/OBJ/3MF collections. Triggers on phrases like "Manyfold", "3D model library", "manage my 3D prints", "self-hosted model manager", "organize STL files", "3D print collection", or any Docker/homelab deployment involving 3D model organization.
When & Why to Use This Skill
Manyfold is a powerful, self-hosted 3D model library manager designed to streamline the organization, visualization, and management of 3D print files. It serves as a centralized digital asset management (DAM) system for makers and designers, supporting various formats like STL, OBJ, and 3MF with interactive 3D previews. By offering robust Docker deployment options and integration with external platforms like Thingiverse, Manyfold simplifies the workflow from file storage to print preparation in homelab or professional environments.
Use Cases
- Case 1: Deploying a self-hosted 3D model repository using Docker Compose for private homelab use.
- Case 2: Organizing large, unsorted collections of STL and 3MF files into searchable libraries with custom tags and metadata.
- Case 3: Synchronizing 3D model metadata and preview images directly from external sites like Thingiverse, MyMiniFactory, and Cults3D.
- Case 4: Setting up a multi-user 3D asset management platform with OIDC Single Sign-On for collaborative maker spaces or design studios.
- Case 5: Managing 3D print file storage across local directories and S3-compatible cloud storage while maintaining interactive web-based previews.
| name | manyfold |
|---|---|
| description | Self-hosted 3D model library manager for organizing, viewing, and managing 3D print files. Use when the user asks about deploying, configuring, or using Manyfold for managing STL/OBJ/3MF collections. Triggers on phrases like "Manyfold", "3D model library", "manage my 3D prints", "self-hosted model manager", "organize STL files", "3D print collection", or any Docker/homelab deployment involving 3D model organization. |
Manyfold Skill
Manyfold is a self-hosted web application for managing 3D print file collections with interactive previews, metadata organization, and Fediverse federation support.
Quick Reference
Docker Image: ghcr.io/manyfold3d/manyfold:latest
Default Port: 3214
Web UI: http://{server}:3214
Deployment Options
Minimal (Solo with SQLite)
services:
manyfold:
image: ghcr.io/manyfold3d/manyfold-solo:latest
ports:
- "3214:3214"
volumes:
- /path/to/config:/config
- /path/to/models:/libraries
environment:
SECRET_KEY_BASE: <generate-128-char-hex>
PUID: 1000
PGID: 1000
restart: unless-stopped
Production (PostgreSQL + Redis)
services:
manyfold:
image: ghcr.io/manyfold3d/manyfold:latest
ports:
- "3214:3214"
volumes:
- /path/to/models:/libraries
environment:
DATABASE_URL: postgresql://manyfold:password@db/manyfold?pool=5
REDIS_URL: redis://redis:6379/1
SECRET_KEY_BASE: <generate-128-char-hex>
PUID: 1000
PGID: 1000
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
cap_add:
- CHOWN
- DAC_OVERRIDE
- SETUID
- SETGID
depends_on:
- db
- redis
db:
image: postgres:15
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_USER: manyfold
POSTGRES_PASSWORD: password
POSTGRES_DB: manyfold
redis:
image: redis:7
volumes:
db_data:
Required Environment Variables
| Variable | Description |
|---|---|
SECRET_KEY_BASE |
128-char hex string for cookie signing. Generate with openssl rand -hex 64 |
PUID / PGID |
User/group ID for file permissions. Get with id command |
REDIS_URL |
Redis connection (not needed for solo image). Format: redis://host:6379/1 |
Database Configuration
Option 1: DATABASE_URL (recommended)
- PostgreSQL:
postgresql://user:pass@host/dbname?pool=5 - MySQL:
mysql2://user:pass@host/dbname?pool=5 - SQLite:
sqlite3:/config/manyfold.sqlite3?pool=5
Option 2: Individual variables
DATABASE_ADAPTER: postgresql, mysql2, or sqlite3DATABASE_HOST,DATABASE_PORT,DATABASE_USER,DATABASE_PASSWORD,DATABASE_NAME
Key Optional Features
| Variable | Description |
|---|---|
MULTIUSER=enabled |
Enable login, roles, permissions |
FEDERATION=enabled |
ActivityPub/Fediverse support |
HTTPS_ONLY=enabled |
Force HTTPS, set HSTS headers |
DEMO_MODE=enabled |
Disable all destructive operations |
OIDC Single Sign-On
OIDC_CLIENT_ID=<client-id>
OIDC_CLIENT_SECRET=<secret>
OIDC_ISSUER=https://auth.example.com/
OIDC_NAME=Authentik
FORCE_OIDC=enabled # Optional: disable local login
Email (SMTP)
SMTP_SERVER=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME=user
SMTP_PASSWORD=pass
SMTP_FROM_ADDRESS=manyfold@example.com
PUBLIC_HOSTNAME=manyfold.example.com
Performance Tuning
| Variable | Default | Description |
|---|---|---|
WEB_CONCURRENCY |
4 | Web worker processes |
RAILS_MAX_THREADS |
16 | Threads per worker |
DEFAULT_WORKER_CONCURRENCY |
4 | Background job threads |
PERFORMANCE_WORKER_CONCURRENCY |
1 | Heavy job threads (analysis, conversion) |
Security Settings
MAX_FILE_UPLOAD_SIZE=536870912 # 512MB in bytes
MAX_FILE_EXTRACT_SIZE=1073741824 # 1GB in bytes
MIN_PASSWORD_SCORE=4 # 0-4, higher = stricter
Core Concepts
- Library: Storage location (local folder or S3 bucket) containing models
- Model: A folder containing related 3D files (parts, images, docs)
- Creator: Content author/designer
- Collection: Grouping of related models
- Tags: Organizational keywords
User Workflows
Initial Setup
- Access web UI at
http://server:3214 - Create admin account (email, username, password)
- Add first library (path inside container, e.g.,
/libraries) - Scan runs automatically to index existing files
Scanning
- Scan for new files: Detect new folders/files added outside Manyfold
- Rescan all models: Re-check existing models for problems/metadata
Uploading
- Upload ZIP archives (extracted as separate models)
- Upload individual STL/OBJ files (creates single model)
- Progress shown during upload, extraction happens in background
External Integrations (v0.118+)
Import metadata from Thingiverse, MyMiniFactory, Cults3D:
- Configure API keys in Settings > Integrations
- Add link to model page
- Click sync icon to import metadata/images
- Or paste URL in search bar for direct import
Supported File Formats
See references/supported_formats.md for complete list.
3D Models with Preview: STL, OBJ, 3MF, GLTF/GLB, FBX, PLY, 3DS Slicer Files: GCode (preview), Chitubox, Lychee Images: PNG, JPG, GIF, WebP, SVG, TIFF, BMP Documents: PDF, Markdown, TXT Archives: ZIP, RAR, 7z, gzip, bzip2
Troubleshooting
Container won't start
- Ensure
SECRET_KEY_BASEis set - Check
PUID/PGIDhave read/write access to mounted volumes - Verify Redis is accessible (for full image)
Files not appearing
- Check library path matches container mount (not host path)
- Run manual scan from web UI
- Verify file extensions are supported
Permission errors
- Match
PUID/PGIDto owner of library folders - Ensure container has write access for temp files
Health check
wget --no-verbose --tries=1 --spider http://localhost:3214/health
Reverse Proxy
Set RAILS_RELATIVE_URL_ROOT=/manyfold for non-root paths.
Required headers for HTTPS proxy:
X-Forwarded-Proto: httpsX-Forwarded-ForHost
Note: Federation requires domain root (no subpath).
Additional References
- Configuration details: references/configuration.md
- All supported formats: references/supported_formats.md