Docker

Persist panel data at /ql/data. This command uses the Alpine image:

docker run -dit \
  -v "$PWD/ql/data:/ql/data" \
  -p 5700:5700 \
  -e QlBaseUrl="/" \
  -e QlPort="5700" \
  --name qinglong \
  --hostname qinglong \
  --restart unless-stopped \
  whyour/qinglong:latest

Open http://localhost:5700 to initialize the panel. QlBaseUrl is an optional deployment prefix such as /test. QlPort controls the listening port and defaults to 5700; the right side of -p must match it.

Debian and non-root execution

Use whyour/qinglong:debian for dependencies unsupported by Alpine or to run as a non-root user. Alpine's crond requires root. Ensure the mounted host directory is writable by the container's qinglong user before running:

docker run -dit \
  -v "$PWD/ql/data:/ql/data" \
  -p 5700:5700 \
  --user qinglong \
  --name qinglong \
  --restart unless-stopped \
  whyour/qinglong:debian

These are alternative configurations; do not create both with the same container name. After deployment, use the remote CLI for management or built-in commands for in-container execution.