Manyfold logo

Manyfold

Self-hosted digital asset manager for 3D print files

Alternative to: thingiverse, myminifactory, cults3d


Manyfold is an open source, self-hosted web application for managing a collection of 3D models, particularly focused on 3D printing. It scans and organizes STL/OBJ model libraries, renders in-browser 3D previews, and can import models and metadata directly from Thingiverse, MyMiniFactory, and Cults3D.

Manyfold Docker Compose example

Self-host Manyfold on your own server, homelab, or VPS starting from this Docker Compose example. It runs Manyfold in Docker containers using the official manyfold3d/manyfold:latest, postgres:15, redis:7 images, with persistent volumes and automatic restarts preconfigured. Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.

services:
  app:
    image: manyfold3d/manyfold:latest
    restart: unless-stopped
    volumes:
      # Persistent store for your 3D model library. Create a library in the
      # Manyfold UI pointing at the container path /models.
      - models:/models
      # Persistent store for installed plugins (the app's default plugins path).
      - plugins:/usr/src/app/plugins
    environment:
      # ID of the user the app runs as (owns the library/plugin files)
      PUID: "1000"
      # ID of the group the app runs as
      PGID: "1000"
      # Secret used to encrypt sessions/cookies — set a long random string
      SECRET_KEY_BASE: "changeme"
      # Redis connection for background jobs and caching (internal service)
      REDIS_URL: "redis://redis:6379/1"
      # Database driver — postgresql is recommended for best performance
      DATABASE_ADAPTER: "postgresql"
      # Hostname of the database service (internal service)
      DATABASE_HOST: "postgres"
      # Database port
      DATABASE_PORT: "5432"
      # Database user
      DATABASE_USER: "manyfold"
      # Database password (internal service — only reachable inside the stack)
      DATABASE_PASSWORD: "manyfold"
      # Database name
      DATABASE_NAME: "manyfold"
    depends_on:
      - postgres
      - redis

  postgres:
    image: postgres:15
    restart: unless-stopped
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      # Must match the app's DATABASE_USER
      POSTGRES_USER: "manyfold"
      # Must match the app's DATABASE_PASSWORD
      POSTGRES_PASSWORD: "manyfold"
      # Must match the app's DATABASE_NAME
      POSTGRES_DB: "manyfold"

  redis:
    image: redis:7
    restart: unless-stopped

volumes:
  models:
  plugins:
  db_data:

Values set to changeme are required — replace them with your own values before starting Manyfold.

Prefer a managed setup? WinterFlow installs, configures, and updates Manyfold for you using this same Docker Compose configuration.