QuickShare 0.11.4 Docker Compose 部署指南

QuickShare 0.11.4 Docker Compose 部署指南:官方发行包校验、自建镜像、Compose 编排、管理员初始化、上传下载全链路与重启持久化实测,含 4 个启动排障实录

QuickShareQuickShare文件传输文件分享自托管2026/10/31

QuickShare 0.11.4 Docker Compose 部署指南

目标:在一台 Ubuntu 22.04 服务器上,基于官方 v0.11.4 发行包从零部署 QuickShare 文件分享服务,完成发行包校验、自建镜像、Compose 编排、管理员初始化、Web/API 登录、上传下载全链路验证与重启持久化实测。全部命令与回显均在 2026-10-31 于 Ubuntu 22.04 实机实测通过。

一、环境信息

本文实测所用的服务器环境与软件版本如下(查询/实测日期 2026-10-31):

  • 操作系统:Ubuntu 22.04(x86_64)
  • QuickShare 版本:0.11.4(官方最新稳定版,发布于 2026-01-30,来源:GitHub Releases 与 releases.atom 实查,查询日期 2026-10-31)
  • Docker:24.x 与 Docker Compose v2(docker compose 子命令形态,实测 Docker Compose version v2.29.7)
  • 交付形态:官方 zip 发行包(quickshare_0.11.4_linux_amd64.zip,15.3MB)内含单二进制 quickshare(32.7MB);官方不发布 Docker 镜像,本文以官方二进制 + debian:bookworm-slim 基础镜像自建(见「二、镜像选型说明」)
  • Web 对外端口:8129(映射到服务的 8686 端口;0.11.x 默认监听 8686)
  • 自定义网络:quickshare-0.11.4-net(10.89.56.0/24)
  • 数据目录:部署目录下 data/(挂载到服务的 /opt/quickshare/quickshare,含文件、SQLite 库、日志与文件索引)
  • 管理员账号:admin / q1w2e3r4(由环境变量 DEFAULTADMIN/DEFAULTADMINPWD 首次启动自动创建,实测有效)
  • 项目背景与同类对比见 《QuickShare 介绍与选型指南》

二、镜像选型说明

QuickShare 官方不发布 Docker 镜像(Docker Hub 查询 ihexxa/quickshare 返回 object not found,查询日期 2026-10-31),仓库中也没有 Dockerfile。官方交付形态是各平台 zip 发行包,包内是一个内嵌了 React 前端静态资源的单文件 Go 二进制。因此容器化部署采用「官方发行包 + 官方基础镜像」的自建方案:

  • 基础镜像:debian:bookworm-slim——Go 静态编译二进制无运行时依赖,选 slim 版把体积压到最低;不选 alpine 是因为其 musl libc 与部分 DNS 行为差异可能引入隐性兼容问题,官方二进制以 glibc 环境为测试基准;
  • 内容物:仅 COPY 官方 zip 解压出的 quickshare 二进制与 lan.yml(语言包)两个文件,不引入任何第三方层;
  • 版本固定:镜像 tag 显式命名为 quickshare-local:0.11.4,与发行包版本一一对应,升级是显式动作。

该方案的优势是:二进制来源始终是官方 Releases(可校验 sha256),镜像内容透明可审计;代价是升级版本需重新构建镜像(一次 docker compose build 即可)。

三、前置条件

  1. 一台 x86_64 的 Ubuntu 22.04 服务器,具备 sudo 权限;
  2. 已安装 Docker Engine 与 Docker Compose v2;
  3. 对外服务端口未被占用(本文取 8129,可用 ss -ltn 自查);
  4. 磁盘剩余空间:镜像约 80MB 量级,另需为 data/ 预留业务文件容量(受用户空间配额约束,管理员默认 1GB、普通用户默认 100MB);
  5. 服务器可访问 GitHub Releases 下载发行包(若直连缓慢可走代理,本文实测下载走 http://192.168.1.72:7897 代理,见下方 ⚠️ 网络说明)。

确认环境:

docker compose version

实测回显:

Docker Compose version v2.29.7
ss -ltn | grep 8129 || echo "8129 free"

实测回显:

8129 free

⚠️ 网络说明:GitHub Releases 直连在本环境实测超时,本文实际通过代理 http://192.168.1.72:7897 完成下载(2026-10-31 实测可用)。国内网络环境如无代理,可改用镜像加速站下载同一发行包后校验 sha256 一致性。

四、部署步骤

本节从空目录开始:下载校验发行包 → 编写镜像构建文件与配置 → 编排启动 → 验证健康与登录 → 上传下载全链路验证。

4.1 创建部署目录并下载发行包

mkdir -p /opt/quickshare && cd /opt/quickshare
wget -O quickshare_0.11.4_linux_amd64.zip "https://github.com/ihexxa/quickshare/releases/download/v0.11.4/quickshare_0.11.4_linux_amd64.zip"

实测回显(经代理下载,输出节选):

--2026-10-31 11:10:35--  https://github.com/ihexxa/quickshare/releases/download/v0.11.4/quickshare_0.11.4_linux_amd64.zip
HTTP request sent, awaiting response... 200 OK
Length: 15316185 (15M) [application/octet-stream]
Saving to: 'quickshare_0.11.4_linux_amd64.zip'
'quickshare_0.11.4_linux_amd64.zip' saved [15316185/15316185]

校验发行包(sha256 实测值,作为读者核对基准):

sha256sum quickshare_0.11.4_linux_amd64.zip

实测回显:

36256309c20e5494bafc499f5b9288c41c3d12ac63c4ffced25aae6754ae4ce0  quickshare_0.11.4_linux_amd64.zip

解压并确认包内结构:

unzip -o -q quickshare_0.11.4_linux_amd64.zip -d unpack
find unpack -type f -exec ls -la {} \;

实测回显:

-rw-r--r-- 1 root root   1017 Jan 30 20:28 unpack/dist/quickshare_linux_amd64/lan.yml
-rwxr-xr-x 1 root root 32680904 Jan 30 20:28 unpack/dist/quickshare_linux_amd64/quickshare

包内只有两个文件:quickshare 主程序与 lan.yml 语言包。

4.2 编写镜像构建文件 Dockerfile

在 /opt/quickshare 下创建 Dockerfile:

vim Dockerfile

写入以下内容:

FROM debian:bookworm-slim

COPY quickshare /opt/quickshare/bin/quickshare
COPY lan.yml /opt/quickshare/bin/lan.yml

WORKDIR /opt/quickshare

EXPOSE 8686

ENTRYPOINT ["/opt/quickshare/bin/quickshare", "-c", "/opt/quickshare/config.json"]

两个构建要点:

  • ENTRYPOINT 必须带 -c /opt/quickshare/config.json:QuickShare 不会自动读取工作目录下的配置文件,不带 -c 时验证码等配置保持默认开启(排障实录见「十一、常见问题」问题 2);
  • 二进制放在 bin/ 子目录而不是 /opt/quickshare 根:程序启动时要在工作目录创建名为 quickshare 的数据目录,二进制与数据目录同名会直接 panic(排障实录见「十一、常见问题」问题 1)。

把二进制与语言包复制到构建上下文:

cp unpack/dist/quickshare_linux_amd64/quickshare .
cp unpack/dist/quickshare_linux_amd64/lan.yml .

实测回显:

(cp 无输出即成功)

4.3 编写服务配置文件 config.json

创建 config.json(完整参数逐项详解见 《QuickShare 0.11.4 配置参数详解》):

vim config.json

写入以下内容:

{
  "Server": {
    "Host": "0.0.0.0",
    "Port": 8686,
    "Dynamic": {
      "ClientCfg": {
        "SiteName": "Quickshare",
        "SiteDesc": "Quick and simple file sharing",
        "AutoTheme": true
      }
    }
  },
  "Users": {
    "CaptchaEnabled": false,
    "MinPwdLen": 8
  },
  "Fs": {
    "Root": "quickshare",
    "InitFileIndex": true,
    "SearchResultLimit": 16
  },
  "Db": {
    "DbPath": "quickshare.sqlite"
  },
  "Workers": {
    "WorkerCount": 2,
    "QueueSize": 1024
  }
}

配置要点逐项说明:

  • Server.Port: 8686:0.11.x 官方默认端口(0.0.x 时代的 8888 已废弃),与编排文件的端口映射对应;
  • Users.CaptchaEnabled: false:关闭登录图形验证码。验证码默认开启,浏览器登录无影响;但命令行/API 脚本化登录需要先取验证码图片再人工识别,自动化运维不便,内网部署建议关闭(公网部署建议保留开启);
  • Fs.Root: quickshare:数据目录名,即容器内 /opt/quickshare/quickshare,与编排文件的数据挂载点对应;
  • Db.DbPath: quickshare.sqlite:SQLite 数据库文件名,落在工作目录(即数据挂载点内)。

⚠️ 注意:SiteName 等站点外观项只在首次初始化时从配置文件写入数据库;此后修改站点名应调用 PATCH /v1/settings/client API(实测修改 config.json 重启后站点名不变化,实测过程见「十一、常见问题」问题 4)。

4.4 编写 docker-compose.yml

创建 docker-compose.yml(显式项目名与自定义网段,避免多套部署互相干扰):

vim docker-compose.yml

写入以下内容:

name: quickshare-0.11.4-stack

services:
  quickshare:
    build:
      context: .
      dockerfile: Dockerfile
    image: quickshare-local:0.11.4
    container_name: quickshare-0.11.4-server
    hostname: quickshare
    restart: unless-stopped
    ports:
      - "8129:8686"
    environment:
      DEFAULTADMIN: admin
      DEFAULTADMINPWD: q1w2e3r4
    volumes:
      - ./config.json:/opt/quickshare/config.json:ro
      - ./data:/opt/quickshare/quickshare
    networks:
      qs-net:
        ipv4_address: 10.89.56.10

networks:
  qs-net:
    driver: bridge
    ipam:
      config:
        - subnet: 10.89.56.0/24

编排文件逐项说明:

  • name: quickshare-0.11.4-stack:显式 Compose 项目名,docker compose down 只影响本项目资源;
  • image: quickshare-local:0.11.4 + build::本地构建并打固定版本 tag;
  • ports: "8129:8686":宿主 8129 → 服务 8686;
  • environment:DEFAULTADMIN/DEFAULTADMINPWD 是首次初始化管理员账号的环境变量(变量名为配置字段名大写)。不提供时首次启动会交互式询问管理员名并生成随机密码;
  • volumes:config.json 只读挂载进服务根目录;./data 挂载为数据目录(首次启动自动建目录);
  • networks:自定义网段 10.89.56.0/24 并固定地址 10.89.56.10,便于内部联调与防火墙放行。

4.5 构建镜像并启动

mkdir -p data
docker compose build

实测回显(输出节选):

#10 exporting to image
#10 writing image sha256:8d2d8c8a4a4e... done
#10 naming to docker.io/library/quickshare-local:0.11.4 done
docker compose up -d

实测回显:

 Container quickshare-0.11.4-server Created
 Container quickshare-0.11.4-server Starting
 Container quickshare-0.11.4-server Started

启动后确认运行状态与初始化日志:

docker compose ps

实测回显:

NAME                       STATUS         PORTS
quickshare-0.11.4-server   Up 4 seconds   0.0.0.0:8129->8686/tcp, [::]:8129->8686/tcp
docker logs quickshare-0.11.4-server 2>&1 | head -6

实测回显:

warning: Database does not exist in (quickshare.sqlite), skipped
{"level":"warn","ts":1793416573.0867908,"msg":"index file not found"}
{"level":"info","ts":1793416573.086967,"msg":"file index inited(false)"}
{"level":"info","ts":1793416573.0874772,"msg":"quickshare is starting","hostname:port":"0.0.0.0:8686"}

日志解读:Database does not exist ... skipped 表示首次启动数据库尚未创建(正常);注意日志中没有出现 Please input admin name 与 password is generated 提示,说明 DEFAULTADMIN/DEFAULTADMINPWD 环境变量已生效,管理员账号以 admin/q1w2e3r4 静默创建。

4.6 验证健康检查与登录

健康检查(公开端点,无需登录):

curl -s -X OPTIONS -o /dev/null -w 'health http=%{http_code}\n' http://127.0.0.1:8129/v2/public/settings/health

实测回显:

health http=200

登录获取会话(tk 为 JWT 会话 cookie):

curl -s -D headers.txt -X POST http://127.0.0.1:8129/v2/public/login \
  -H 'Content-Type: application/json' \
  -d '{"user":"admin","pwd":"q1w2e3r4","captcha_id":"","captcha_input":""}' \
  -w 'login http=%{http_code}\n'

实测回显:

{"msg":"OK"}
login http=200

提取会话令牌并查询当前用户信息:

TOKEN=$(grep -i set-cookie headers.txt | sed 's/.*tk=\([^;]*\).*/\1/')
echo "token length: ${#TOKEN}"
curl -s -H "Cookie: tk=$TOKEN" http://127.0.0.1:8129/v2/my/self

实测回显(输出节选):

token length: 250
{"id":"0","name":"admin","role":"admin","quota":{"spaceLimit":"1073741824","uploadSpeedLimit":52428800,"downloadSpeedLimit":52428800},"usedSpace":"0","preferences":{...}}

管理员默认配额实测值:空间 1GB(1073741824 字节)、上传/下载限速 50MB/s(52428800 字节/秒),与普通用户默认配额(100MB/1MB/s)不同。

⚠️ 注意:curl -c cookies.txt 对 QuickShare 的会话 cookie(名为 tk、无显式 Domain 属性的 HttpOnly cookie)存在保存不稳定的问题,脚本化操作建议像上文一样从响应头手工提取 tk 值并用 -H "Cookie: tk=$TOKEN" 携带(排障实录见「十一、常见问题」问题 3)。

4.7 上传与下载全链路验证

上传采用「创建任务 → 分块传输」两步协议(分块内容 base64 编码,offset 必须与服务端已收字节数一致):

TOKEN=$(grep -i set-cookie headers.txt | sed 's/.*tk=\([^;]*\).*/\1/')

# 第一步:创建上传任务(声明路径与大小)
curl -s -H "Cookie: tk=$TOKEN" -X POST http://127.0.0.1:8129/v1/fs/files \
  -H 'Content-Type: application/json' \
  -d '{"path":"hello.txt","fileSize":12}' -w ' http=%{http_code}\n'

实测回显:

{"msg":"OK"} http=200
# 第二步:传输分块(content 为文件内容的 base64 编码)
B64=$(printf 'hello world!' | base64 -w0)
curl -s -H "Cookie: tk=$TOKEN" -X PATCH http://127.0.0.1:8129/v1/fs/files/chunks \
  -H 'Content-Type: application/json' \
  -d "{\"path\":\"hello.txt\",\"content\":\"$B64\",\"offset\":0}" -w '\nhttp=%{http_code}\n'

实测回显:

{"path":"hello.txt","isDir":false,"fileSize":12,"uploaded":12}
http=200

uploaded:12 与 fileSize:12 相等,文件已自动从暂存区落盘。

下载验证(fp 为文件路径参数):

curl -s -H "Cookie: tk=$TOKEN" "http://127.0.0.1:8129/v1/fs/files?fp=hello.txt" -w '\nhttp=%{http_code}\n'

实测回显:

hello world!
http=200

再验证根目录列表(确认文件与数据库、日志同层可见):

curl -s -H "Cookie: tk=$TOKEN" "http://127.0.0.1:8129/v1/fs/dirs?path=" 

实测回显:

{"cwd":".","metadatas":[{"name":"admin","size":4096,"modTime":"2026-10-31T03:16:13.087352318Z","isDir":true,"sha1":""},{"name":"fileindex.jsonl","size":32,"modTime":"2026-10-31T03:17:01.800851574Z","isDir":false,"sha1":""},{"name":"hello.txt","size":12,"modTime":"2026-10-31T03:20:47.030460279Z","isDir":false,"sha1":"430ce34d020724ed75a196dfc2ad67c77772d169"},{"name":"quickshare.log","size":2673,"modTime":"2026-10-31T03:20:47.055461047Z","isDir":false,"sha1":""},{"name":"quickshare.sqlite","size":65536,"modTime":"2026-10-31T03:20:47.038460525Z","isDir":false,"sha1":""}]}

浏览器访问 http://<服务器IP>:8129 即可使用 Web 界面(用 admin/q1w2e3r4 登录)。

五、数据持久化说明

QuickShare 的全部状态收敛在数据目录一个挂载点上,重启与升级不丢数据:

数据位置(容器内 = 宿主 ./data/)说明
业务文件files/上传完成的正式文件
上传暂存uploadings/分块上传中未完成的临时分片
元数据库quickshare.sqlite用户、配额、分享、站点配置
文件索引fileindex.jsonl搜索用文件索引(可重建)
服务日志quickshare.log应用日志

重启持久化实测(docker compose restart 后原会话令牌仍有效、数据仍在):

docker compose restart
sleep 3
curl -s -H "Cookie: tk=$TOKEN" http://127.0.0.1:8129/v2/my/self -o /dev/null -w 'self after restart http=%{http_code}\n'
curl -s -H "Cookie: tk=$TOKEN" "http://127.0.0.1:8129/v1/fs/files?fp=hello.txt" -w '\nhttp=%{http_code}\n'

实测回显:

self after restart http=200

hello world!
http=200

重启后既不需要重新登录(会话令牌仍有效),文件内容也原样保留,持久化验证通过。备份时打包整个 ./data/ 目录即可同时带走文件与元数据。

六、环境变量表

QuickShare 0.11.4 通过配置结构体字段名大写化的约定注入环境变量(仅标注了 env 注入的字段生效):

环境变量作用默认值本文取值
DEFAULTADMIN首次初始化的管理员账号名;未提供时首次启动交互式询问(stdin)无admin
DEFAULTADMINPWD首次初始化的管理员密码;未提供时自动生成随机密码打印在日志无(随机)q1w2e3r4
TOKENSECRET会话令牌签名密钥;留空时自动生成自动生成未设置
PORT监听端口(覆盖 Server.Port)8686未设置

⚠️ 注意:DEFAULTADMIN/DEFAULTADMINPWD 只在数据库未初始化时(首次启动)生效;账号一旦建好,修改这两个变量不会更新已有账号密码(改密走 PATCH /v1/users/pwd API 或管理员强制重置 PATCH /v2/admin/users/pwd/force-set)。TOKENSECRET 自动生成时存于配置态,若更换部署方式后旧会话失效,重新登录即可。

七、配置参数说明

本文 Compose 方案采用「配置文件 + 环境变量 + 命令行参数」三层配置的组合:

  1. 配置文件 config.json:随镜像以 -c 指定加载,承载端口、验证码开关、目录、数据库路径、工作线程等运行参数,支持 JSON/YAML 格式,可叠加多份(后面的覆盖前面的);
  2. 环境变量:见第六节表格,用于部署敏感项(管理员初始账号)与密钥注入;
  3. 命令行参数:-h/--host、-p/--port、-d/--db、-c/--configs,优先级最高,可临时覆盖端口与数据库路径(常用法见 《QuickShare 0.11.4 配置参数详解》)。

加载优先级实测结论:命令行参数 > 配置文件 > 数据库内站点配置 > 程序默认值。站点外观(站点名/背景/主题)属数据库内配置,首次初始化写入后以 API 修改为准。

八、配置文件挂载

docker-compose.yml 中的两处挂载承担了「配置进、数据存」两个方向:

volumes:
  - ./config.json:/opt/quickshare/config.json:ro
  - ./data:/opt/quickshare/quickshare
  • config.json 以 :ro 只读挂载:服务只读配置,修改配置在宿主侧编辑后 docker compose restart 生效(实测:关闭验证码的配置重启后生效,GET /v2/public/settings/client 返回 "captchaEnabled":false);
  • ./data 挂载为数据目录 Fs.Root:文件、SQLite 库、索引、日志全部落宿主目录,删除服务本身不影响数据。

配置修改生效验证(重启后确认站点客户端配置):

curl -s http://127.0.0.1:8129/v2/public/settings/client

实测回显:

{"clientCfg":{"siteName":"Quickshare","siteDesc":"Quick and simple file sharing","bg":{"url":"","repeat":"repeat","position":"center","align":"fixed","bgColor":""},"allowSetBg":false,"autoTheme":true},"captchaEnabled":false}

九、等价 docker run

与上述 Compose 等价的一次性 docker run 命令(便于理解各参数的容器化映射):

docker run -d \
  --name quickshare-0.11.4-server \
  -p 8129:8686 \
  -e DEFAULTADMIN=admin \
  -e DEFAULTADMINPWD=q1w2e3r4 \
  -v /opt/quickshare/config.json:/opt/quickshare/config.json:ro \
  -v /opt/quickshare/data:/opt/quickshare/quickshare \
  --restart unless-stopped \
  quickshare-local:0.11.4

与 Compose 版的差异:无自定义网络与固定 IP(使用默认 bridge)、无项目名聚合管理。生产建议仍用 Compose 形态编排。

十、常用运维命令

在 /opt/quickshare 部署目录下:

# 查看服务状态
docker compose ps

实测回显:

NAME                       STATUS         PORTS
quickshare-0.11.4-server   Up 4 seconds   0.0.0.0:8129->8686/tcp, [::]:8129->8686/tcp
# 查看实时日志
docker compose logs -f --tail 20

实测回显(输出节选):

quickshare-0.11.4-server  | {"level":"info","ts":1793416573.0874772,"msg":"quickshare is starting","hostname:port":"0.0.0.0:8686"}
quickshare-0.11.4-server  | [GIN] 2026/10/31 - 03:16:27 | 200 |      47.433µs |      10.89.56.1 | OPTIONS  "/v2/public/settings/health"
quickshare-0.11.4-server  | [GIN] 2026/10/31 - 03:16:27 | 403 |     102.112µs |      10.89.56.1 | POST     "/v2/public/login"
# 重启服务(配置修改后)
docker compose restart

# 停止服务
docker compose down

实测回显:

 Container quickshare-0.11.4-server Stopping
 Container quickshare-0.11.4-server Stopped
# 升级版本:替换发行包 → 重建镜像 → 重建服务(数据在 ./data 不受影响)
sha256sum quickshare_<新版本>_linux_amd64.zip
cp unpack/dist/quickshare_linux_amd64/quickshare .
docker compose build
docker compose up -d

十一、常见问题

Q1:启动直接 panic,报 can not create quickshare folder: there is a file with same name?

原因:程序启动时要在当前工作目录创建名为 quickshare 的数据目录,若工作目录下已存在同名文件(最典型的就是把二进制命名为 quickshare 并放在工作目录根),目录创建失败直接 panic。实测复现回显:

warning: Database does not exist in (quickshare.sqlite), skipped
{"level":"fatal","ts":1793416318.59893,"msg":"can not create quickshare folder: there is a file with same name"}

解决:把二进制放在 bin/ 子目录(如本文 Dockerfile 的 /opt/quickshare/bin/quickshare),工作目录 /opt/quickshare 下不出现同名文件;或换一个独立的数据工作目录。

Q2:登录始终返回 403 login failed,账号密码确认无误?

原因:0.11.x 登录默认开启图形验证码(Users.CaptchaEnabled 默认 true),JSON 请求里 captcha_id/captcha_input 为空时验证失败返回 403。且 QuickShare 不会自动读取工作目录下的 config.json,必须用 -c 参数显式指定——本文 ENTRYPOINT 已带 -c;若手动 docker run 或裸机启动漏掉 -c,配置文件等于没挂。实测回显:

{"error":"login failed"}
http=403

解决:配置文件带 -c 加载并设置 "CaptchaEnabled": false(内网);或保留验证码走浏览器登录。

Q3:脚本化调用 API 返回 403 access denied,浏览器却正常?

原因:未携带会话 cookie。QuickShare 的会话 cookie 名为 tk(JWT),且实测 curl -c/-b 对这种无 Domain 属性的 HttpOnly cookie 保存不稳定,导致后续请求变成匿名访问——匿名(visitor 角色)无文件操作权限。实测回显:

{"error":"access denied"}
http=403

解决:从登录响应头提取 tk 值,每个请求用 -H "Cookie: tk=$TOKEN" 显式携带(见 4.6/4.7 节实测命令)。

Q4:修改 config.json 里的 SiteName 并重启,站点名没变?

原因:站点外观(站点名/描述/背景/主题)属于数据库内的动态配置,首次初始化时从配置文件写入 SQLite,此后以数据库为准,改配置文件不再生效。实测重启后 GET /v2/public/settings/client 仍返回旧站点名。解决:调用设置 API 修改(实测生效):

curl -s -H "Cookie: tk=$TOKEN" -X PATCH http://127.0.0.1:8129/v1/settings/client \
  -H 'Content-Type: application/json' \
  -d '{"clientCfg":{"siteName":"QSDemo","siteDesc":"Quick and simple file sharing","bg":{"url":"","repeat":"repeat","position":"center","align":"fixed","bgColor":""},"allowSetBg":false,"autoTheme":true}}' -w ' http=%{http_code}\n'

实测回显:

{"msg":"OK"} http=200

Q5:./quickshare -h 想看帮助,结果 panic?

原因:-h 短参数同时被定义为 --host(监听地址),参数解析器把缺值的 -h 视为用法错误直接 panic,帮助信息反而无法通过 -h 查看。实测回显:

Usage:
  quickshare [OPTIONS]

Application Options:
  -h, --host=    server hostname
  ...
panic: Usage:
	  quickshare [OPTIONS]
...
goroutine 1 [running]:
main.main()
	/home/runner/work/quickshare/quickshare/cmd/start/main.go:18 +0x185

解决:这实际是 0.11.4 的参数解析缺陷,帮助信息已随 panic 打印在输出里;正常运行传长参数形式(--host=、--port=)不触发(详见 《QuickShare 0.11.4 配置参数详解》)。

十二、参考链接

QuickShare 0.11.4 Docker Compose 部署指南 - Quzuo