Home›Developers›On-Premise Installation

On-Premise Installation

Running Labelixa on your own server: environment variables, Docker deployment, custom fonts and the stateless architecture.

The rendering service is deliberately stateless: incoming ZPL is never written to disk or logged. This matters for data protection (GDPR) and makes horizontal scaling easy — you just add workers or servers.

Environment variables

VariablePurposeDefault
LABELIXA_DBSQLite database path (account/usage)./labelixa.db
DATABASE_URLPostgreSQL connection (instead of SQLite)none
LABELIXA_DATABASE_URL_GOCSeparate PostgreSQL connection for migrations (DDL-capable role; falls back to DATABASE_URL)none
LABELIXA_FONTCustom text font (TTF path)Liberation Sans Bold
STRIPE_SECRET_KEYStripe secret key (subscriptions)none
STRIPE_WEBHOOK_SECRETStripe webhook signing secretnone
STRIPE_PRICE_STARTERStripe price ID for the Starter plannone
STRIPE_PRICE_PROStripe price ID for the Professional plannone
STRIPE_PRICE_ENTERPRISEEnterprise (on-prem) price IDnone
STRIPE_PRICE_*_YEARLYAnnual price IDs for the plansnone
SITE_URLPublic address: canonical domain plus sign-in/invite links, OAuth and payment return URLs. REQUIRED in production — without it those links return 503 (never built from the request Host header)none (development: localhost only)
CORS_ORIGINSAllowed origins (comma-separated)* (everyone)
LABELIXA_VEKILReverse-proxy topology (which identity header is trusted); set to 'genel' unless you run behind Cloudflarecloudflare
LOG_JSONOne JSON object per log line0
LOG_LEVELLog level (DEBUG|INFO|WARNING|ERROR)INFO
METRICS_TOKENEnables the Prometheus /metrics endpoint (closed without it)none
WEB_CONCURRENCYuvicorn worker count2

Licence

On-premise deployment is an Enterprise licence: single server, single production environment, billed yearly; multiple servers, high availability and a contractual SLA are quoted separately. The container image and the Dockerfile below are delivered under that licence — the source repository is not public. For an evaluation install use the Enterprise contact on the pricing page.

Running with Docker

The licensed Dockerfile builds a single image:

bash
docker build -t labelixa .
docker run -p 8000:8000 \
  -e LABELIXA_DB=/data/labelixa.db \
  -e LABELIXA_FONT=/fonts/MyFont.ttf \
  -v $PWD/data:/data -v $PWD/fonts:/fonts labelixa

Custom font

Zebra's built-in fonts (font 0 = CG Triumvirate Bold Condensed) are proprietary and are not part of the ZPL code; the ZPL only carries the font's number, height and width. By default the closest open font by width, Liberation Sans Bold, is used. If you need the output to match down to the stroke weight, define your licensed font with LABELIXA_FONT and the engine uses it for all text. If the path is wrong the service does not silently fall back — the font.sorun field and the status page warn you.

Health check

GET /health returns the component status as JSON; /durum is a human-readable status page. /health can be used for load-balancer health probes.