Self-hosting
The PDM is made to run on your servers, for your team, with your data staying on your network.
There's no install package yet, so for now you build the PDM from source; these pages say what that takes. There's no sign-in yet either: until there is, the PDM belongs on a network you trust. See Users and sign-in.
What runs
| Part | What it does | Runs as | Port |
|---|---|---|---|
| Reverse proxy | HTTPS; serves the web app, forwards /api and the editor's WebSocket | nginx, Caddy, … | 443 |
| Web app | The PDM in the browser, Buerligons included | static files | |
| API | Documents, versions, releases, references, jobs, files; runs its database migrations on start | Node 20 | 3333 |
| Postgres | Metadata, versions, references, the audit log | Postgres 16 | 5432 |
| File store | Every file once, named by its SHA-256 | a folder | |
| Job workers | Take jobs from the API and run them on ClassCAD; render pictures; run generators | Node 20, as many as you like | |
| Scheduler | One port in front of the engines: sessions, placement, scaling, restarts | classcad-scheduler | 9091 |
| Engines | ClassCAD, one process each, started by the scheduler | classcad-cli worker | 9094 and up |
How they connect:
browser ──https──▶ reverse proxy ──▶ web app (static files)
├── /api ──▶ API :3333 ──▶ Postgres, file store
└── wss ───▶ scheduler :9091 (the editor, when it runs on the server)
job workers ──▶ API :3333 claim jobs, upload results
job workers ──▶ scheduler :9091 ──▶ engines :9094, :9095, …
engines ──────▶ API :3333 fetch the parts of an assembly
The only call out of your network is an engine fetching its key from classcad.ch at start. Machines without internet use an offline key instead.
How big
One server is enough to start: API, Postgres, workers, scheduler and engines all on one machine. The engines are what needs the room. Each is a process of its own, and its memory grows with the models it holds; by default the scheduler stops sending new work to an engine above 3 GB. More people editing at once means more engines, and the scheduler starts them as needed, up to the limit you set.
In this chapter
Requirements · Install · Configuration · Database · File store · The scheduler · Job workers · The editor · Reverse proxy · Users and sign-in · Running it