# @fnndsc/porter 中文文档

规范地址：https://npmcn.com/package/%40fnndsc/porter/

版本：0\.13\.3
npm 元数据更新时间：2026-11-15T02:04:34.442Z
中文译文更新时间：2026-11-15T03:39:19.595Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40fnndsc/porter
原文对照：https://npmcn.com/package/%40fnndsc/porter/?lang=original
项目主页：https://github.com/HARBOR-Medical-AI/mise#readme
源码仓库：https://github.com/HARBOR-Medical-AI/mise

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：581 kB，78 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：11 个
- 首次发布：2026-09-22T13:40:21.985Z
- 最新版本发布：2026-11-15T02:04:34.272Z
- 近 30 天下载量：5635（2026-10-15 至 2026-11-13，npm 官方下载统计）
- 已发布版本数：65（近 12 个月 65 个）

## 中文简介

PORTER: mise 显示管理器 —— 记录操作员输入、找到或启动他们的卡路里普索, 并将其显示为 argus

## 安装

```sh
npm install @fnndsc/porter
```

也可以使用：`pnpm add @fnndsc/porter`、`yarn add @fnndsc/porter`、`bun add @fnndsc/porter`

## README

# @ fnndsc/ porter (英语)

PORTER是 mise 显示管理器——gdm到ARGUS的桌面. 它将一个操作员登录到一个 CUBE, 在这个主机上找到或开始他们的 Calypso 会话, 并显示他们的浏览器到 ARGUS 下 `/s/<key>/`,持有附加符号,这样浏览器就永远不会这样做.

设计日志 : [`docs/porter.adoc`](https://npmcn.com/package/%40fnndsc/porter/docs/porter.adoc)。 。 。 .

```sh
PORTER_CUBE_URL=https://cube.example.org/api/v1/ porter
open http://localhost:4180/login          # the door: log in, land on the session
curl -s -c jar -X POST localhost:4180/login -H 'content-type: application/json' -d '{"username":"chris","password":"…"}'
curl -b jar -N localhost:4180/boot/<key>
```

```sh
npm install -g @fnndsc/porter        # brings chell, calypso and argus beneath it
PORTER_CUBE_URL=https://cube.example.org/api/v1/ porter
```

或从取出: `make porter CUBE_URL=…`。在 [`deploy/`](https://npmcn.com/package/%40fnndsc/porter/deploy/)。 。 。 .

## 贝斯

在一次演讲中,每个人的会话都用一个泊位进行:他们自己的集装箱从机场出发 `mise-berth` 图像,由泊位发射装置启动,是控制容器发动机的一个过程(`docs/dev-bastion.adoc`,站着。 发射装置是这个包裹的第二个程序:

```sh
BERTH_LAUNCHER_SECRET_FILE=/etc/mise/launcher.secret \
BERTH_LAUNCHER_LISTEN=/run/mise/launcher.sock \
berth-launcher
```

写着 `BERTH_DOCKER_SOCKET` (单位:千美元)`/var/run/docker.sock`, (中文(简体) ), `BERTH_IMAGE` (密苏里州) `latest`, (中文(简体) ), `BERTH_PREFIX` (单位:千美元)`mise-berth`, (中文(简体) ), `BERTH_CUBE_NETWORK` (单位:千美元)`<prefix>-cube-net`, (中文(简体) ), `BERTH_PORTER_CONTAINER` (porter的容器,当porter是一;当porter运行在主机上时未设置), `BERTH_POLICY_FILE` \[杰森: `cpus`, (中文(简体) ), `memoryGib`, (中文(简体) ), `pids`, (中文(简体) ), `holds`和 `BERTH_PROFILE` (单位:千美元)`minimal`) (中文(简体) ). 它的API,仅用于搬运工和携带秘密,是一个人的泊位的起步,起止和状态;一个起步名称集合(一个种子的ID) `/incoming` 财务报告和审定财务报表 `/outgoing` 是用来,或者没有.

电线是 `docs/berths.adoc`地形学: 每一个泊位都挂出自家的桥上, `<prefix>-net-<user>`,当泊位起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起 发射装置开始去除之前的跑道: 帮助者,和没有泊位的电线.

卷:每人1所住房(`/home/<user>`个人和组群持有1卷 `incoming/` 财务报告和审定财务报表 `outgoing/`,挂载在 `/incoming` (只读)和 `/outgoing`以另一伙人为开始,他们又停泊在另一对人上,而那对人将留在家里, `…-cohort-none`。 。 。 .

图像是一个常数, `BERTH_IMAGE_DEFAULT` 内 `src/launcher/launcher.ts`数字 : `ghcr.io/harbor-medical-ai/mise-berth:latest`,标记 Berth 图像工作流程在主干线上移动(`images/mise-berth/README.md`) (中文(简体) ). 什么都没有被钉住。 发射机在从中取出泊位之前拉出图像,因此在标记移动后所取出的一个泊位运行了没有重新部署的更新的图像;已经运行的泊位按原样交还. 出故障的拉出(注册后离开,两分钟内无回复)是发射台日志中的一行,泊位取自主机所持的复制品;没有拒绝复制的开始,说明原因.

当部署时,一个搬运工会在泊位开始;没有它,它就会在旁边开始:

```sh
PORTER_BERTHS=launcher PORTER_LAUNCHER=/run/mise/launcher.sock PORTER_LAUNCHER_SECRET_FILE=/etc/mise/launcher.secret porter
```

在登录时,它用他们的代号读取了这个人的CUBE id,向发射台询问他们的泊位(uid和gid that id),并通过门显示泊位的卡利普索;后来登录的代号已经到达了泊位;登录停放泊位并保持了它的卷. 秘密文件为模式0600,发射装置拒绝其他用户可以读取的一个.

操作员看每个人的泊位 `GET /berths`,询问与 `Authorization: Token <CUBE token>` 或管理员的基本证书:

```sh
curl -s -u chris:… https://porter.example.org/berths
# {"at":"2026-11-09T10:00:00.000Z","berths":[{"user":"ana","state":"running","cohort":"none","cpuPercent":3,"memoryBytes":220200960,"memoryLimitBytes":2147483648},{"user":"benito","state":"stopped","cohort":null,"cpuPercent":null,"memoryBytes":null,"memoryLimitBytes":null}]}
```

搬运工将证书交给 CUBE 的 API 根, 只回答一个 CUBE 管理员( 根名它) `admin` 仅链接到一个管理员 : 401 没有证书或一个CUBE拒绝, 403 对于一个不是管理员的CUBE用户, 502 当CUBE(或从它转出)或发射机不回答时. 客户端地址每分钟可询问十次;过去是429次 `Retry-After`,而CUBE没有被询问。 CUBE对一个案件的判决 `Authorization` 标题(绝不是证书;保留在它的sha256下)被记为30 s. 正在运行的泊位载有其CPU(一个CPU的百分之一)和内存的样本;被停止的泊位是其家庭体积停留的人;没有同时存在的人缺席. 发射器在它的当地API上读取了泊位(`GET /berths/access?cubeUrl=…`),因此搬运工从不触及容器引擎;它仅通过身份显示这个搬运工的CUBE的人,因此没有显示早期CUBE URL留下的泊位或家用,并且3 s范围内的泊位没有取样,其用法未读而运行. 不设泊位的搬运工(`PORTER_BERTHS` 未设定)答案 `{"berths": null, "why": "this porter starts no berths"}`,作为答案`berths are off`)而不是读取失败。 stratus读这个是为了 `chris status`并且阿格斯显示它作为Host Access 在它的用户.

## 常见问题

### @fnndsc/porter 是什么？

PORTER: mise 显示管理器 —— 记录操作员输入、找到或启动他们的卡路里普索, 并将其显示为 argus

### 如何安装 @fnndsc/porter？

在项目目录运行 npm install @fnndsc/porter，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 porter、berth-launcher，可以用 npx porter 直接运行。

### @fnndsc/porter 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @fnndsc/porter 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @fnndsc/porter 可以商用吗？

@fnndsc/porter 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @fnndsc/porter 的下载量有多少？

根据 npm 官方下载统计，@fnndsc/porter 在 2026/10/15 – 2026/11/13 这 30 天内被下载 5,635 次，日均约 188 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @fnndsc/porter 还在维护吗？

最新版本 0\.13\.3 发布于 2026/11/15（今天）；至今共发布 65 个版本，其中过去 12 个月发布了 65 个；首次发布于 2026/09/22。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

