Skip to content

Self-hosting

The web build is static, with no backend. Serve it from a web server or run the container.

Each release ships the prebuilt site as *_web.zip. Unpack it into the document root: asset paths are absolute, so a subdirectory will not work.

Build it yourself:

Terminal window
docker build -t zplab .
docker run -p 8080:8080 zplab

The base image is nginxinc/nginx-unprivileged, so nginx runs as a non-root user on port 8080.

From v0.7.0 every release publishes the image for amd64 and arm64, and latest follows the newest release:

Terminal window
docker run -p 8080:8080 ghcr.io/u8array/zplab:0.7.0

The container holds the same files as the zip; printing and previews happen in the browser. Parts of the Rust backend should move into it at some point.

Previews go to api.labelary.com. That and whatever printer or Browser Print agent a user configures are the only outbound calls.

VITE_THIRD_PARTY_LABELARY=false removes previews for every user of that build, and VITE_LABELARY_API_URL points them at another endpoint, which a user can still override in Settings. Both are read at build time:

Terminal window
docker build --build-arg VITE_THIRD_PARTY_LABELARY=false -t zplab .

To build the web bundle without Docker, see Building from source.