WireHub

Self-hosting essentials

The full guide is Self-hosting (full). These are the choices that matter on day one.

What runs#

ServiceWhat it does
wirehubThe app: interface and API. The only published port.
postgresPostgreSQL 18: the library, designs, versions, accounts and history
garageS3-compatible storage for uploaded photos, datasheets and 3D models
workerBackground jobs: imports, 3D model conversion, housekeeping
bootstrap, migrate, garage-initOne-shots that prepare secrets, the database and storage

A machine with 2 GB of memory runs the stack; 4 GB leaves room for 3D model conversion.

Public URL and TLS#

By default the app binds to 127.0.0.1:5183. For anyone else, put a reverse proxy that terminates TLS in front of it, and set the public URL in .env:

WIREHUB_PUBLIC_URL=https://wirehub.example.com

Sign-in cookies and links in invitations use this address. Set WIREHUB_TRUST_PROXY to match your proxy, because it decides how clients are identified for rate limits.

Your own PostgreSQL or S3#

Delete the bundled postgres or garage blocks from compose.yaml and set DATABASE_ADMIN_URL or the S3_* variables. The config generator does both for you.

Backups#

Set COMPOSE_PROFILES=backup for restic backups through Backrest on port 9898 (bound to localhost). It dumps the database and mirrors the file store. A backup you have not restored is a guess, so restore once to a scratch stack before you rely on it.

Upgrades#

Change the image tag in .env (WIREHUB_IMAGE) and run docker compose up -d. The migrate service applies pending migrations before the app starts. Read the release notes first; the upgrade section of the full guide covers each version's notes.

Settings in the app#

Sign-in methods, alerts, webhooks, job limits, document branding and validation rules live under Settings and apply without a redeploy. Only what must exist before the app starts is an environment variable.

VariableDoes
WIREHUB_PUBLIC_URLThe address people use
WIREHUB_PORT, WIREHUB_BINDThe published port and interface
COMPOSE_PROFILESOptional parts: backup, pdf
WIREHUB_DOCS_URLWhere the in-app help links go; set it to host these docs yourself

Printed PDFs#

Printing works in the browser as is. COMPOSE_PROFILES=pdf adds a headless Chromium (Gotenberg) that prints the same HTML sheets to PDF on the server, for exact output regardless of the viewer's browser.