配置参考
SlotServe 读取 SLOTSERVE_* 环境变量,或工作目录下的 .env 文件。Docker Compose 会自动加载 .env。
Compose 变量
这些变量只在 docker-compose.yml 中使用,描述的是宿主机。
| 变量 |
默认值 |
说明 |
LLAMA_CPP_DIR |
必填 |
llama-server 所在目录,只读挂载到 /opt/llama.cpp |
MODELS_DIR |
必填 |
.gguf 模型目录,挂载到 /models |
DATA_DIR |
./data |
SQLite 数据库与日志,挂载到 /data |
PORT |
8000 |
对外端口 |
CUDA_IMAGE |
nvidia/cuda:12.8.1-runtime-ubuntu24.04 |
基础镜像;CUDA 主版本需与 llama.cpp 编译时一致 |
llama-server
对于 llama.cpp 模型,SlotServe 运行 SLOTSERVE_LLAMA_SERVER_CMD;在 Docker 中它是 /opt/llama.cpp/llama-server,即 LLAMA_CPP_DIR 中的 llama-server。健康检查 engine(以及设置进度中的推理引擎)会显示是否找到了它。找不到时:LLAMA_CPP_DIR 必须是直接包含 llama-server 的目录(通常是 llama.cpp/build/bin),该文件必须可执行并且是为本机构建的,动态库构建还需要把 lib*.so 放在它旁边。不使用 Docker 时,把 SLOTSERVE_LLAMA_SERVER_CMD 设为完整路径。
SlotServe 设置
除部署参数外,所有设置都可由管理员在管理 → 系统设置中直接修改,无需重启:修改保存在数据库中,优先于 .env;点恢复默认即可取消覆盖。每次修改都会以修改前后的值记入审计日志(密钥只记录指纹),并且可以撤销。层级表示设置出现的位置:常用在策略卡片上,进阶在完整列表中,专家默认折叠。标有 ⚠️ 的设置可以在宿主机上以 root 身份执行命令(推理后端命令、挂载目录、转发镜像):修改会记为敏感修改并通知所有管理员(之后的版本还会要求再次输入密码)。部署参数在启动时读取:请在 .env 中修改并重启。
注册与访问
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_REGISTRATION_OPEN |
true |
常用 |
是否允许凭邀请码注册 |
SLOTSERVE_INVITE_CODE |
change-me |
常用 |
注册所需邀请码;为 change-me(或为空)时只有第一个管理员能注册(使用初始化码) |
SLOTSERVE_APPROVAL_MODE |
off |
常用 |
off、long 或 all:哪些预约需要管理员审批 |
SLOTSERVE_APPROVAL_HOURS |
4 |
进阶 |
long 模式下,超过这个时长的预约需要审批 |
SLOTSERVE_API_KEY_REVEAL |
false |
进阶 |
为新建的 API 密钥保存加密副本,所有者之后可以再次查看 |
预约与公平使用
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_QUOTA_WEEKLY_HOURS |
0 |
常用 |
每人每周可预约小时数(0 不限,管理员不受限;管理员可为个人临时增加额度) |
SLOTSERVE_MAX_RESERVATION_HOURS |
8 |
常用 |
单次预约最长时长 |
SLOTSERVE_MAX_ADVANCE_DAYS |
30 |
常用 |
最多可提前几天预约 |
SLOTSERVE_QUOTA_UPCOMING |
0 |
进阶 |
每人可持有的未结束预约数(0 不限) |
SLOTSERVE_SLOT_MINUTES |
30 |
进阶 |
日历时间粒度 |
SLOTSERVE_REMINDER_MINUTES |
10 |
进阶 |
开始和结束提醒的提前量(分钟) |
通知与时间
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_TIMEZONE |
UTC |
常用 |
IANA 时区,用于通知和每周配额 |
SLOTSERVE_PUBLIC_URL |
空 |
常用 |
大家访问 SlotServe 的地址,用于链接及识别 SlotServe 自己的页面 |
SLOTSERVE_CHAT_DEFAULT_LOCALE |
en |
进阶 |
en 或 zh-CN:群机器人 Webhook、群聊和尚未绑定的聊天使用的语言 |
SLOTSERVE_TELEGRAM_BOT_TOKEN |
空 |
进阶 |
Telegram 机器人 Token,留空则不启用 |
SLOTSERVE_TELEGRAM_PROXY |
空 |
进阶 |
连接 Telegram 的 http:// 或 socks5:// 代理 |
开发环境
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_DEVENV_ENABLED |
false |
常用 |
开发环境:把 GPU 时段预约成带 SSH 的 Docker 容器 |
SLOTSERVE_DEVENV_CPU_ENABLED |
true |
进阶 |
允许以无 GPU 模式启动开发环境(无需预约) |
SLOTSERVE_DEVENV_CPU_PER_USER |
2 |
常用 |
每人同时可运行的无 GPU 环境数 |
SLOTSERVE_DEVENV_CPU_CORES |
4 |
常用 |
单个无 GPU 环境可用的 CPU 核心数(0 表示整个共享池) |
SLOTSERVE_DEVENV_CPU_MEMORY_GB |
16 |
常用 |
单个无 GPU 环境可用的内存(0 表示主机内存减去 max(4 GB, 10%)) |
SLOTSERVE_DEVENV_CPU_MEMORY_POOL_GB |
0 |
专家 |
所有无 GPU 环境合计可占用的内存(0 表示不限) |
SLOTSERVE_DEVENV_CPU_CORES_PER_GPU |
8 |
专家 |
每个通道按每块 GPU 为其预约保留的 CPU 核心数(cpuset);0 表示不保留 |
SLOTSERVE_DEVENV_SSH_HOST |
空 |
进阶 |
ssh 命令中显示的主机名;留空则使用浏览器访问的地址 |
SLOTSERVE_DEVENV_SSH_PORTS |
2200-2299 |
进阶 |
分配给开发环境的宿主机端口 |
SLOTSERVE_DEVENV_PASSWORD_LOGIN |
true |
进阶 |
除公钥外也允许用环境密码 SSH 登录 |
SLOTSERVE_DEVENV_CPUS |
0 |
进阶 |
单个 GPU 环境的 CPU 上限(0 表示不限) |
SLOTSERVE_DEVENV_MEMORY_GB |
0 |
进阶 |
单个 GPU 环境的内存上限(0 表示主机内存减去 max(4 GB, 10%)) |
SLOTSERVE_DEVENV_PIDS_LIMIT |
4096 |
专家 |
单个开发环境可同时运行的进程数(fork 炸弹只影响它自己的容器) |
SLOTSERVE_DEVENV_SHM_GB |
8 |
进阶 |
单个环境的共享内存(/dev/shm) |
SLOTSERVE_DEVENV_CUSTOM_IMAGES |
true |
进阶 |
允许用户用任意镜像新建模板 |
SLOTSERVE_DEVENV_ALLOWED_REGISTRIES |
空 |
进阶 |
允许的镜像仓库,逗号分隔;留空表示不限 |
SLOTSERVE_DEVENV_SAVED_IMAGES |
3 |
进阶 |
每人可保存的环境镜像数 |
SLOTSERVE_DEVENV_PULL_MINUTES |
60 |
专家 |
预约开始前多久下载镜像 |
SLOTSERVE_DEVENV_PROJECTS |
3 |
进阶 |
每人可保留(暂停)的环境数;0 表示不允许 |
SLOTSERVE_DEVENV_PROJECT_DAYS |
0 |
进阶 |
自动删除闲置这么多天的保留环境(0 表示从不) |
SLOTSERVE_DEVENV_PUBLIC_PORTS_ENABLED |
true |
进阶 |
允许用户把容器端口直接发布到宿主机端口(无需登录 SlotServe) |
SLOTSERVE_DEVENV_PUBLIC_PORTS |
2300-2399 |
进阶 |
直连端口使用的宿主机端口(与 SSH 端口分开) |
SLOTSERVE_DEVENV_PUBLIC_PORT_LIMIT |
5 |
进阶 |
每人直连端口数;管理员不受限制;0 表示只有管理员 |
SLOTSERVE_DEVENV_WEB_URL |
空 |
专家 |
浏览器访问开发环境网页端口的地址,例如经过反向代理时;留空则为同一主机的 DEVENV_WEB_PORT |
SLOTSERVE_DEVENV_WEB_COMPAT |
false |
专家 |
兼容模式:用于在共享网页源的环境隔离规则下无法正常工作的网页应用(会削弱环境之间的隔离) |
SLOTSERVE_DEVENV_PLATFORM_CONTEXT |
true |
进阶 |
新环境内提供 SLOTSERVE_* 变量、登录提示(剩余时间、/workspace、如何调用模型)以及指向容器侧网关的 OPENAI_BASE_URL |
SLOTSERVE_DEVENV_LLM_KEY |
true |
专家 |
为每个个人环境发放专属 LLM 密钥(llm 权限,环境停止即吊销;以 0600 文件提供,登录 shell 中导出为 OPENAI_API_KEY,从不放进容器环境变量;共享环境不发放) |
SLOTSERVE_DEVENV_FORWARDER_IMAGE |
alpine/socat:1.8.1.1 |
专家 |
⚠️ 以 root 身份在宿主机上执行。 每个端口的转发容器所用镜像(PATH 中需要有 socat) |
SLOTSERVE_DEVENV_STORAGE_DIR |
空 |
专家 |
⚠️ 以 root 身份在宿主机上执行。 Docker 主机上存放持久数据的目录(绑定挂载);留空则使用 Docker 命名卷。系统目录(/etc、/root、/var/lib/docker、/proc、/sys、/boot、/usr、/bin、/lib*、/var/run 等)会被拒绝 |
模型与下载
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_DEFAULT_LLAMA_ARGS |
-ngl 99 -c 8192 |
常用 |
新登记模型的默认启动参数 |
SLOTSERVE_HF_ENDPOINT |
https://huggingface.co |
常用 |
Hugging Face 地址或镜像 |
SLOTSERVE_HF_TOKEN |
空 |
进阶 |
受限或私有仓库所需的 Token |
SLOTSERVE_DOWNLOAD_MIN_FREE_GB |
2 |
进阶 |
下载完成后磁盘至少保留的空间 |
SLOTSERVE_PLAYGROUND_ENABLED |
true |
进阶 |
网页上与模型对话的试用页(使用浏览器会话,不使用密钥) |
SLOTSERVE_PLAYGROUND_RATE_PER_MINUTE |
20 |
进阶 |
每人每分钟的试用请求数;0 表示不限 |
SLOTSERVE_PLAYGROUND_DEFAULT_MODEL_ONLY |
false |
进阶 |
试用页只使用默认模型,不使用其他已加载的模型 |
模型加载
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_PRELOAD_MIN_MINUTES |
3 |
进阶 |
预约的模型至少提前多少分钟开始加载 |
SLOTSERVE_LOAD_TIMEOUT_SECONDS |
1800 |
进阶 |
超过此时间仍未就绪则判定加载失败 |
SLOTSERVE_DRAIN_SECONDS |
30 |
进阶 |
切换模型前等待进行中请求完成的最长时间 |
SLOTSERVE_PRELOAD_BUFFER_SECONDS |
60 |
专家 |
预加载时额外预留的时间 |
SLOTSERVE_STOP_TIMEOUT_SECONDS |
20 |
专家 |
强制结束推理进程前的等待时间 |
SLOTSERVE_DISK_READ_MBPS |
150 |
专家 |
模型首次加载前用于估算加载时间 |
SLOTSERVE_SCHEDULER_INTERVAL_SECONDS |
5 |
专家 |
调度器重新评估的间隔 |
推理后端
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_VLLM_CMD |
vllm serve |
专家 |
⚠️ 以 root 身份在宿主机上执行。 vLLM 后端的启动命令 |
SLOTSERVE_SGLANG_CMD |
python -m sglang.launch_server |
专家 |
⚠️ 以 root 身份在宿主机上执行。 SGLang 后端的启动命令 |
SLOTSERVE_CUSTOM_ENGINE_CMD |
空 |
专家 |
⚠️ 以 root 身份在宿主机上执行。 自定义后端命令模板:{model} {host} {port} {name} |
SLOTSERVE_CUSTOM_ENGINE_HEALTH |
/health |
专家 |
轮询判断自定义后端就绪的路径 |
飞书 / Lark
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_FEISHU_ENABLED |
false |
进阶 |
飞书 / Lark 机器人(配置方法) |
SLOTSERVE_FEISHU_APP_ID |
空 |
进阶 |
飞书应用的 App ID |
SLOTSERVE_FEISHU_APP_SECRET |
空 |
进阶 |
飞书应用的 App Secret |
SLOTSERVE_FEISHU_DOMAIN |
https://open.feishu.cn |
专家 |
开放平台地址;Lark 使用 https://open.larksuite.com |
钉钉
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_DINGTALK_ENABLED |
false |
进阶 |
钉钉 Stream 模式机器人 |
SLOTSERVE_DINGTALK_CLIENT_ID |
空 |
进阶 |
钉钉应用的 Client ID(AppKey) |
SLOTSERVE_DINGTALK_CLIENT_SECRET |
空 |
进阶 |
钉钉应用的 Client Secret(AppSecret) |
SLOTSERVE_DINGTALK_ROBOT_CODE |
空 |
专家 |
RobotCode;留空即 Client ID |
企业微信
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_WECOM_ENABLED |
false |
进阶 |
企业微信自建应用 |
SLOTSERVE_WECOM_CORP_ID |
空 |
进阶 |
企业 ID(CorpID) |
SLOTSERVE_WECOM_AGENT_ID |
空 |
进阶 |
应用的 AgentId |
SLOTSERVE_WECOM_SECRET |
空 |
进阶 |
应用的 Secret |
SLOTSERVE_WECOM_TOKEN |
空 |
进阶 |
回调 Token;只在接收命令时需要 |
SLOTSERVE_WECOM_AES_KEY |
空 |
进阶 |
回调 EncodingAESKey(43 位);只在接收命令时需要 |
QQ
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_QQ_ENABLED |
false |
进阶 |
QQ 官方机器人 |
SLOTSERVE_QQ_APP_ID |
空 |
进阶 |
QQ 机器人的 AppID |
SLOTSERVE_QQ_APP_SECRET |
空 |
进阶 |
QQ 机器人的 AppSecret |
SLOTSERVE_QQ_SANDBOX |
false |
专家 |
使用 QQ 沙箱环境 |
群机器人 Webhook
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_GROUP_EVENTS |
admin_alerts,announcements |
进阶 |
发到群里的内容:admin_alerts、approvals、announcements |
SLOTSERVE_FEISHU_WEBHOOK_URL |
空 |
进阶 |
飞书 / Lark 群机器人 Webhook |
SLOTSERVE_FEISHU_WEBHOOK_SECRET |
空 |
进阶 |
飞书 / Lark 群机器人的签名密钥 |
SLOTSERVE_DINGTALK_WEBHOOK_URL |
空 |
进阶 |
钉钉群机器人 Webhook |
SLOTSERVE_DINGTALK_WEBHOOK_SECRET |
空 |
进阶 |
钉钉群机器人的加签密钥 |
SLOTSERVE_WECOM_WEBHOOK_URL |
空 |
进阶 |
企业微信群机器人 Webhook |
监控
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_METRICS_TOKEN |
空 |
专家 |
/metrics 的 Bearer Token,留空则关闭 |
SLOTSERVE_USAGE_BUSY_PERCENT |
10 |
专家 |
某一分钟内 GPU 利用率不低于此值时计为“使用中”(对新采样生效) |
清理与备份
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_USAGE_RETENTION_DAYS |
365 |
进阶 |
逐条请求记录保留天数,之后合并为按天汇总(0 表示永久;否则至少 90) |
SLOTSERVE_USAGE_SAMPLE_DAYS |
30 |
专家 |
按分钟的 GPU 使用采样保留天数,之后合并为按小时汇总(0 表示不合并) |
SLOTSERVE_AUDIT_RETENTION_DAYS |
730 |
进阶 |
审计日志保留天数(0 表示永久) |
SLOTSERVE_BACKUP_KEEP |
7 |
进阶 |
保留的每日备份包份数(0 表示关闭自动备份) |
SLOTSERVE_BACKUP_TARGET |
空 |
常用 |
每个备份包另外复制到哪里:绝对路径或 storage:<id>(留空表示不复制到本机以外) |
SLOTSERVE_BACKUP_HOUR |
3 |
进阶 |
每日备份的本地时间(小时;-1 表示从启动起每 24 小时一次) |
部署参数(重启后生效)
| 变量 |
默认值 |
层级 |
说明 |
SLOTSERVE_DEVENV_GATEWAY_PORT |
8002 |
专家 |
容器侧网关的端口:只提供 /v1 接口,供开发环境使用(http://slotserve-gw:<端口>/v1);0 表示关闭 |
SLOTSERVE_DEVENV_GATEWAY_HOST |
空 |
专家 |
容器侧网关监听的地址;留空时,SlotServe 直接运行在主机上则为 Docker 网桥地址(docker0),运行在容器中则为所有地址 |
SLOTSERVE_SECRET_KEY |
自动生成 |
专家 |
会话 Cookie 签名与已存密钥加密所用的密钥。未设置、为空或为 change-me 时,SlotServe 首次启动会生成随机密钥并保存在 DATA_DIR/secret_key(仅属主可读)。显式设置的值始终优先 |
SLOTSERVE_HOST |
0.0.0.0 |
专家 |
监听地址 |
SLOTSERVE_PORT |
8000 |
专家 |
监听端口 |
SLOTSERVE_COOKIE_SECURE |
false |
专家 |
Cookie 加 Secure 标记;在 HTTPS 后面时设为 true |
SLOTSERVE_FORWARDED_ALLOW_IPS |
127.0.0.1 |
专家 |
信任其 X-Forwarded-For 的反向代理地址(逗号分隔,* 表示任意),以便登录限速和日志看到真实客户端地址 |
SLOTSERVE_DATA_DIR |
data |
专家 |
数据库与日志目录 |
SLOTSERVE_MODELS_DIR |
models |
专家 |
模型目录(扫描及下载目标) |
SLOTSERVE_STATIC_DIR |
内置 |
专家 |
前端构建产物目录 |
SLOTSERVE_LLAMA_SERVER_CMD |
llama-server |
专家 |
⚠️ 以 root 身份在宿主机上执行。 启动 llama-server 的命令,可带前缀,如 taskset -c 0-15 llama-server |
SLOTSERVE_LLAMA_HOST |
127.0.0.1 |
专家 |
推理进程监听地址(请保持本地) |
SLOTSERVE_LLAMA_PORT |
8081 |
专家 |
第一个通道推理进程的端口;第 N 个通道为此值 + N - 1 |
SLOTSERVE_DOCKER_HOST |
unix:///var/run/docker.sock |
专家 |
⚠️ 以 root 身份在宿主机上执行。 开发环境使用的 Docker(或 Podman)接口 |
SLOTSERVE_DROPBEAR_PATH |
/opt/slotserve/bin/dropbearmulti |
专家 |
复制进每个开发环境的静态 Dropbear(dropbearmulti);镜像中已自带 |
SLOTSERVE_DEVENV_WEB_PORT |
8001 |
专家 |
开发环境网页界面的端口,作为独立的源(0 表示在 PORT 上提供,不推荐) |
SLOTSERVE_STORAGE_HELPER_IMAGE |
busybox:1.37 |
专家 |
检查存储并在其中创建目录的临时辅助容器所用的镜像(从不使用个人的镜像;缺少时自动拉取) |
SLOTSERVE_STORAGE_CHECK_MINUTES |
30 |
专家 |
多久检查一次存储(可用空间、每人用量);0 表示只在手动检查时 |
SLOTSERVE_TELEGRAM_API_BASE |
https://api.telegram.org |
专家 |
Telegram Bot API 地址,用于自建的 Bot API 服务 |
SLOTSERVE_DINGTALK_API_BASE |
https://api.dingtalk.com |
专家 |
钉钉 API 地址(仅用于代理或测试) |
SLOTSERVE_WECOM_API_BASE |
https://qyapi.weixin.qq.com |
专家 |
企业微信 API 地址(仅用于代理或测试) |
SLOTSERVE_QQ_API_BASE |
https://api.sgroup.qq.com |
专家 |
QQ 机器人 API 地址(仅用于代理或测试) |
SLOTSERVE_QQ_TOKEN_URL |
https://bots.qq.com/app/getAppAccessToken |
专家 |
QQ 机器人 Token 地址(仅用于代理或测试) |
每个模型的启动参数
每个模型有一行自由填写的参数,会追加到命令末尾。llama.cpp 模型的命令为:
<SLOTSERVE_LLAMA_SERVER_CMD> -m <文件> --host 127.0.0.1 --port 8081 --alias <名称> <你的参数>
vLLM、SGLang 和自定义后端以同样方式拼接命令,见多 GPU 与推理后端。
-m、--host、--port、--alias 始终由 SlotServe 设置,你参数里的同名项会被忽略。常用参数:
| 目的 |
参数 |
| 全部层放到 GPU |
-ngl 99 |
| 上下文长度 |
-c 16384 |
| 并发请求 |
-np 4(上下文在各 slot 间平分) |
| Flash Attention |
--flash-attn on |
| 视觉模型 |
--mmproj /models/mmproj-model-f16.gguf |
| 向量模型 |
--embedding --pooling mean |
| KV 缓存量化 |
-ctk q8_0 -ctv q8_0 |
完整列表见 llama-server --help。修改了当前已加载模型的参数后,在总览页点击重新加载模型即可生效。
备份与恢复
SlotServe 每天在 SLOTSERVE_BACKUP_HOUR 向 data/backups/ 写出一个备份包(数据库、自动生成的会话密钥、SSH 主机密钥、清单),保留最新的 SLOTSERVE_BACKUP_KEEP 份;设置了 SLOTSERVE_BACKUP_TARGET(挂载的路径或 storage:<id>)时,每个备份包还会复制到那里。管理 → 概览 → 备份中可以查看和立即备份。每次数据库升级前也会做一份快照,这类快照不会被自动删除。slotserve restore <备份包> 可以把备份放回去(需先停止服务),下次启动时会显示核对报告。
workspace、保留环境的数据、保存的镜像和模型不在备份内。详细说明、异地副本和恢复步骤见备份和从备份恢复。
初始化码与第一个管理员
还没有管理员账号时,SlotServe 每次启动都会在日志中打印一个一次性的初始化码:
docker compose logs slotserve | grep -A4 "No admin account"
docker compose exec slotserve slotserve setup-code # 或直接查询
打开 SlotServe,注册表单会要求填写初始化码(而不是邀请码),注册的账号即成为管理员。一旦存在管理员,初始化码立即失效;已经有管理员的安装不会要求填写。其他人用邀请码注册(或由管理员在管理 → 用户中创建)。
来自其他页面的请求
SlotServe 拒绝不是由自己页面发出的修改类请求(POST、PUT、PATCH、DELETE):Origin 必须是 SlotServe 自己的地址(浏览器访问用的主机,或 SLOTSERVE_PUBLIC_URL),Origin: null 一律拒绝;带会话 Cookie 但没有 Origin 的请求必须带 X-SlotServe: 1 请求头(网页界面会自动带上)。这样开发环境端口上的页面或其他网站无法冒用已登录用户的身份。API 客户端不受影响:使用 API 密钥的 /v1、/metrics、聊天平台回调,以及不带会话 Cookie 的脚本。
在反向代理之后,请转发原始主机名(nginx:proxy_set_header Host $host;)或设置 SLOTSERVE_PUBLIC_URL,否则在网页上的修改会被拒绝(提示“不是从 SlotServe 页面发出的”)。
管理员命令行
日常的账号管理在管理 → 用户中完成。命令行用于没有管理员能登录的情况:
docker compose exec slotserve slotserve setup-code # 创建第一个管理员所需的初始化码
docker compose exec slotserve slotserve reset-password <用户名>
docker compose exec slotserve slotserve set-admin <用户名>
docker compose exec slotserve slotserve set-admin <用户名> --revoke
docker compose exec slotserve slotserve doctor # 运行健康检查(有错误时退出码为 1)
docker compose run --rm --no-deps slotserve slotserve restore <备份包> # 需先停止服务
什么时候用哪个命令,见运维手册。