尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

croc 如何用 Disco 部署 croc-web 与中继服务并配置环境变量?

croc 如何用 Disco 部署 croc-web 与中继服务并配置环境变量? croc 如何用 Disco 部署 croc-web 与中继服务并配置环境变量【免费下载链接】crocEasily and securely send things from one computer to another :crocodile: :package:项目地址: https://gitcode.com/GitHub_Trending/cr/croc这篇文章面向需要自建 croc 服务的人把croc-web网页客户端和crocTCP 中继部署为两个 Disco 服务并配置好SITE_URL、CROC_RELAY_PORTS、CROC_PASS等环境变量。部署完成后你可以用浏览器访问自建站点收发文件并让 CLI 客户端通过自己的中继--relay传输。部署对象同一份镜像构建出的两个服务根目录的 Dockerfile 与 disco.json 是 Disco 部署的全部定义文件。Dockerfile 是多阶段构建第一阶段用golang:1.27-alpine编译出两个产物/out/croc与/out/croc-web后者来自 cmd/croc-web/main.go并通过npm ci与npm run embed生成前端资产最终镜像基于alpine:latest以USER nobody运行ENTRYPOINT为 croc-entrypoint.shCMD为[relay]。disco.json 把这份镜像拆成两个服务relay 服务命令为--debug relay以 TCP 协议发布 9009–9017 共 9 个端口web 服务声明port: 8080命令为web --debug --bind 0.0.0.0:8080 --store-dir /www/croc/storage挂载名为croc-store的命名卷到/www/croc/storage并额外发布一个 9020 端口映射到容器内未使用的 65535 端口。按 README 的说明Disco 负责把网站以 HTTPS 方式对外提供而 9009–9017 这些中继端口是作为裸 TCP 端口直接发布的。配置部署环境变量环境变量通过disco env:set设置README 给出的命令是yoururl.com、yourpass替换为你自己的域名与口令disco env:set \ SITE_URLyoururl.com \ CROC_RELAY_PORTS9009,9010,9011,9012,9013,9014,9015,9016,9017 \ CROC_PASSyourpass \ --project croc三个变量的含义和约束SITE_URL公网网站主机名不带https://。入口脚本会把非空的SITE_URL作为位置参数追加给croc-web。CROC_RELAY_PORTS逗号分隔的中继端口列表。它必须与 disco.json 中relay服务的publishedPorts条目一致且不要包含 web 服务部署专用的 9020 端口。原因是 Disco 无法从环境变量生成宿主端口映射端口发布只能来自disco.json环境变量只用来驱动启动命令。CROC_PASS中继口令非空时入口脚本会以--pass $CROC_PASS的形式加到最前面对 relay 和 web 两个服务都生效。--project crocDisco 项目名如果你的项目不叫croc要改成实际的项目名。这些变量最终如何变成启动参数可以在 croc-entrypoint.sh 中逐行核对第一个参数为web、croc-web或serve时选择 web 服务否则在参数中找到relay关键字即选择 relay 服务relay_ports取${CROC_RELAY_PORTS:-${CROC_PORTS:-}}即CROC_RELAY_PORTS未设置时回退到CROC_PORTSweb 服务还会在显式未传--store-dir时读取STORE_DIR环境变量补上该参数。存储卷与 9020 端口的设计意图web服务挂载的croc-store命名卷指向/www/croc/storage这正是其启动命令里的--store-dir。--store-dir用于开启加密临时存储默认关闭因此 stored 密文与元数据可以在容器替换和重新部署后保留。src/docs/STORED_TRANSFERS.md 的运维要求与这个部署方式相关存储目录由独占锁保护不要让多个进程指向同一目录服务应以非特权账户运行镜像内已是USER nobody需要监控磁盘余量和 HTTP429/507响应备份时应排除密文以免破坏删除语义。--store-dir相关的限额参数在 src/webcli/webcli.go 中有默认值--store-max-transfer1GiB、--store-quota5GiB、--store-min-free512MiB、--store-max-files100、--store-downloads1Disco 部署未显式覆盖时使用这些值。9020 端口值得单独说明web服务发布了 9020 并把它映射到容器内未使用的 65535 端口这是一个刻意的端口冲突——它使 Disco 在启动新的 web 服务之前先停止旧的、持有croc-store卷的服务避免两个 web 进程并发访问同一存储目录。9020 上不承载任何应用流量README 明确要求在服务器防火墙中保持封禁。验证部署结果验证分三层前两层是 disco.json 中定义好的健康检查relay 服务健康检查用nc逐个探测每个中继端口端口列表来自CROC_RELAY_PORTS回退CROC_PORTS再回退默认值 9009–9017任一端口语义上连不通即判定失败。web 服务健康检查为wget -qO- http://127.0.0.1:8080/healthz即要求GET /healthz端点可用。端到端传输在另一台机器上用 croc CLI 走自建中继发文件README 给出的方式是croc --pass yourpass --relay yourhost.example.com:9009 send [filename]发送端输出的 code phrase 在接收端输入即可完成接收Linux/macOS 上建议 CROC_SECRET*** 方式传入口令避免口令出现在进程列表中。同时确认两件事服务器防火墙或云安全组已放行 9009–9017 的 TCP 端口Disco 只负责发布端口网络策略仍要自己放行9020 端口仍被防火墙封禁。限制与边界修改中继端口时CROC_RELAY_PORTS和 disco.json 中relay服务的publishedPorts必须同步保持一致二者不一致会导致发布端口与启动端口对不上。9020 是部署机制专用端口不能挪作他用一旦对外可达违背了“由端口冲突强制停旧起新”的设计。中继端口数量至少 2 个README 在自托管中继一节中的要求本文的 Disco 部署固定使用 9 个端口 9009–9017。部署文档没有给出容量规划或性能指标存储限额、配额等以 src/docs/STORED_TRANSFERS.md 中列出的参数和默认值为准。【免费下载链接】crocEasily and securely send things from one computer to another :crocodile: :package:项目地址: https://gitcode.com/GitHub_Trending/cr/croc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表