Skip to content

Self Hosting

Anand edited this page Oct 14, 2026 · 1 revision

Run your own Whittle server to use it from any browser on several computers, or to share it with family, a team or a classroom. Each person gets their own design library with full version history.

whittle-server is one small program with no dependencies. All modelling runs in the browser, so the server needs very little: a Raspberry Pi 4, a 1-CPU LXC container or a small VM with 512 MB of RAM is plenty.

Just want to use Whittle on your own computer? You don't need a server. Install the desktop app.

Quick start: Linux (bare metal, VM or LXC)

On the machine or inside the container, as root or a user with sudo:

curl -fsSL https://raw.githubusercontent.com/anand34577/whittle/main/install.sh | sh -s -- --server

Then open http://<server-address>:8080/ and create the first account. The first account becomes the administrator.

That's it. The installer:

  • downloads the right build for your processor (x86_64 or arm64/aarch64) and checks its checksum,
  • creates a whittle system user,
  • installs the program to /opt/whittle, keeps data in /var/lib/whittle, and writes settings to /etc/whittle/whittle.env,
  • starts it as a systemd service (Debian, Ubuntu, Fedora…) or an OpenRC service (Alpine), so it runs at boot.

Works on any distribution: the builds are static, so even Alpine and old releases are fine. Needs curl and tar.

Prefer Docker? See Docker.

Install by hand (no pipe to shell)

ARCH=$(uname -m)        # x86_64 or aarch64
VERSION=0.2.0           # see https://github.com/anand34577/whittle/releases
curl -LO https://github.com/anand34577/whittle/releases/download/v$VERSION/whittle-server-$VERSION-linux-$ARCH.tar.gz
tar xzf whittle-server-$VERSION-linux-$ARCH.tar.gz
cd whittle-server-$VERSION-linux-$ARCH
sudo ./deploy/install.sh

Next steps

  1. Choose how people sign in. By default it's username and password, and only an administrator can add people. Options: let anyone sign up, use single sign-on, or turn sign-in off for a trusted home network. See Configuration and Single Sign-On.
  2. Add HTTPS if it's reachable from outside your home or office: HTTPS and Reverse Proxy.
  3. Add people: Users and Administration.
  4. Set up backups: Backups and Upgrades.

Everyday commands

systemd OpenRC (Alpine)
Status systemctl status whittle rc-service whittle status
Logs journalctl -u whittle -f tail -f /var/log/whittle.log
Restart after changing settings sudo systemctl restart whittle sudo rc-service whittle restart
Edit settings sudo nano /etc/whittle/whittle.env same

Check it's alive: curl http://localhost:8080/api/health

Proxmox LXC

  1. Create an unprivileged container from a Debian 12, Ubuntu 24.04 or Alpine template. 1 CPU, 512 MB RAM and 4 GB of disk is plenty for a small team (designs are usually well under 1 MB each).
  2. Start it, open its console, and install curl if the template lacks it: apt update && apt install -y curl (Alpine: apk add curl).
  3. Run the one-line server install above.
  4. Open http://<container-ip>:8080/.

Notes:

  • The service starts without systemd's sandboxing options so it works in unprivileged containers. If your container has nesting enabled, or you run on a VM, you can uncomment the Protect* lines in /etc/systemd/system/whittle.service for extra isolation, then systemctl daemon-reload && systemctl restart whittle.
  • Proxmox backups of the container include /var/lib/whittle, which holds everything (with PostgreSQL, back up the database too).
  • Both x86_64 and ARM64 hosts (for example Proxmox on a Raspberry Pi or Ampere server) are supported.

What the server gives you

  • Sign-in your way: local accounts, single sign-on (OIDC), both, or none.
  • A design library per person, with thumbnails and search.
  • Version history: every save is kept (the newest 50 per design by default). Restoring adds a new version, so nothing is lost.
  • Safe saving: if a design was saved from another tab or computer meanwhile, you're asked before anything is overwritten.
  • SQLite by default (nothing to set up) or PostgreSQL.
  • Admin tools in the app and on the command line.
  • Secure by default: Argon2id passwords, HttpOnly SameSite cookies (Secure behind HTTPS), lockout after repeated failed sign-ins, CSRF protection, a strict Content-Security-Policy, and isolated per-user storage.

Run it on Windows or macOS?

The server is built for Linux. On Windows or macOS, run it with Docker (Docker Desktop), or build it from source: it compiles and runs there too.

Clone this wiki locally