Skip to content

Configuration Reference

Two Ways to Configure

MethodWhen to usePriority
Environment variables (recommended)Passed via -e at container startup; secrets never touch the diskHigh
config.yamlA file for many settings, mounted into the containerLow

You can mix both — environment variables override the same-named keys in the YAML.

Quick Reference: The Most Common Settings

In most cases you only need to change these:

bash
docker run -d \
  -e ZIPOLY__SERVER__API_KEY=your-key \             # required! API access password
  -e ZIPOLY__LICENSE__KEY=your-license-key \        # optional, fill in after purchase
  -e ZIPOLY__QUEUE__MAX_CONCURRENT=10 \             # concurrent tasks (raise with more RAM)
  -e ZIPOLY__STORAGE__RETENTION_HOURS=24 \          # file retention (hours)
  zipoly-server:2.1.0

All Configuration Options

Server (server)

Environment variableDefaultDescription
ZIPOLY__SERVER__HOST0.0.0.0Listen address — usually leave as is
ZIPOLY__SERVER__PORT8080Port inside the container — usually leave as is (external port is controlled by -p)
ZIPOLY__SERVER__API_KEY(required)API key. Every request must carry it — it's the service's password
ZIPOLY__SERVER__RATE_LIMIT_PER_MINUTE60Max requests per minute per key — prevents abuse

Storage (storage)

Environment variableDefaultDescription
ZIPOLY__STORAGE__BACKENDlocalStorage backend: local (local disk) or s3 (object storage)
ZIPOLY__STORAGE__RETENTION_HOURS24How long uploaded files and results are kept before auto-cleanup (hours)

File cleanup behavior

Results are deleted automatically after 24 hours by default. If your team downloads late, consider:

  • Intranet use: set 168 (one week)
  • Public service: keep 24 or shorter

Task Queue (queue)

Environment variableDefaultDescription
ZIPOLY__QUEUE__MAX_CONCURRENT10Number of tasks processed simultaneously. With 8G+ RAM you can raise it to 20–30
ZIPOLY__QUEUE__TASK_TIMEOUT_SECONDS600Max execution time per task (seconds); timed-out tasks are terminated. Large models may need more

License (license)

Environment variableDefaultDescription
ZIPOLY__LICENSE__KEYemptyLicense Key — fill in after purchase. Empty = trial mode
ZIPOLY__LICENSE__TRIAL_ENABLEDtrueWhether trial mode is allowed. Set false to force a license

Trial mode limits are described in Server Licensing.

Logging (logging)

Environment variableDefaultDescription
ZIPOLY__LOGGING__LEVELinfoLog level: debug (most verbose) → infowarnerror (least)
ZIPOLY__LOGGING__FORMATjsonOutput format: json (structured, easy to collect) or text (human-readable)

Switch to debug temporarily when troubleshooting:

bash
-e ZIPOLY__LOGGING__LEVEL=debug -e ZIPOLY__LOGGING__FORMAT=text

Configuring with config.yaml (Advanced)

When there are many settings, manage them with a YAML file:

yaml
# config.yaml
server:
  host: "0.0.0.0"
  port: 8080
  api_key: "your-secure-api-key"     # required
  rate_limit_per_minute: 60

storage:
  backend: "local"                   # local or s3
  retention_hours: 24                # file retention (hours)
  local:
    upload_dir: "/tmp/uploads"
    result_dir: "/tmp/results"

queue:
  max_concurrent: 10                  # concurrency
  task_timeout_seconds: 600           # timeout (seconds)

license:
  key: ""                            # License Key (optional)
  trial_enabled: true                # allow trial
  trial_state_path: "./data/trial_state.json"

logging:
  level: "info"                      # debug / info / warn / error
  format: "json"                     # json / text
  file_path: null                    # empty = console only

Mount it into the container:

bash
docker run -d \
  -v ./config.yaml:/app/config.yaml:ro \
  ...other parameters...

:ro mounts the file read-only — the container cannot modify it.

S3 Object Storage (Optional)

For cross-server shared storage or very large data volumes, switch to S3-compatible storage (e.g., MinIO, Alibaba Cloud OSS):

bash
-e ZIPOLY__STORAGE__BACKEND=s3 \
-e ZIPOLY__STORAGE__S3__ENDPOINT=https://oss-cn-hangzhou.aliyuncs.com \
-e ZIPOLY__STORAGE__S3__BUCKET=my-zipoly-bucket \
-e ZIPOLY__STORAGE__S3__ACCESS_KEY_ID=AKxxx \
-e ZIPOLY__STORAGE__S3__SECRET_ACCESS_KEY=SKxxx \
-e ZIPOLY__STORAGE__S3__REGION=cn-hangzhou

Tuning Recommendations

Scenario 1: Daily team use (5–10 people)

bash
-e ZIPOLY__QUEUE__MAX_CONCURRENT=5 \
-e ZIPOLY__STORAGE__RETENTION_HOURS=168   # keep for a week

Scenario 2: CI/CD pipeline integration

bash
-e ZIPOLY__QUEUE__MAX_CONCURRENT=2 \
-e ZIPOLY__QUEUE__TASK_TIMEOUT_SECONDS=300 \
-e ZIPOLY__STORAGE__RETENTION_HOURS=4      # the pipeline fetches results immediately

Scenario 3: High-volume processing (100+ files/day)

bash
-e ZIPOLY__QUEUE__MAX_CONCURRENT=20 \
-e ZIPOLY__LOGGING__LEVEL=warn            # reduce log volume

Built for Web3D developers