# 在群晖 NAS 上运行 NPC

> 使用 Container Manager 部署 NPC 并正确访问 NAS 和局域网服务

---

LLMS 索引： [llms.txt](/llms.txt)

---

在支持 Container Manager 的群晖 NAS 上，建议使用 NPC 容器。官方镜像提供 `linux/amd64`、`linux/arm` 和 `linux/arm64` 平台；实际可用性仍取决于 NAS 型号、DSM 版本以及 Container Manager 支持范围。

## 部署前准备

1. 在 NPS Web 管理中新增客户端，记录 NPS 桥接地址和客户端验证密钥。
2. 确认 NAS 能主动访问 NPS 桥接端口。NPC 不需要在路由器上做入站端口映射。
3. 在群晖套件中心安装 Container Manager，然后打开“项目”功能。

## 用 Compose 启动

新建项目并填入以下 Compose 内容，将占位值替换为真实配置：

```yaml
services:
  npc:
    image: yisier1/npc:latest
    container_name: npc
    network_mode: host
    restart: unless-stopped
    command:
      - -server=nps.example.com:8024
      - -vkey=<客户端验证密钥>
```

`network_mode: host` 让 NPC 直接使用 NAS 的网络。因此隧道的 `target_addr=127.0.0.1:<端口>` 可以访问监听在 NAS 本机的服务，也可以填写其他局域网设备的 IP 和端口。

生产环境建议将 `latest` 改为已验证的具体版本标签，避免重建容器时自动跨版本升级。客户端验证密钥不应公开或提交到代码仓库。

## 使用 npc.conf

需要在 NAS 上声明多条隧道时，先创建例如 `/volume1/docker/npc/conf/npc.conf` 的配置文件，然后改用：

```yaml
services:
  npc:
    image: yisier1/npc:latest
    container_name: npc
    network_mode: host
    restart: unless-stopped
    volumes:
      - /volume1/docker/npc/conf:/conf:ro
    command:
      - -config=/conf/npc.conf
```

挂载为只读可以防止容器修改 NAS 上的配置。请确认 Container Manager 能读取该目录；配置中含有 `vkey` 和其他凭据时，不要给普通 DSM 用户授予读取权限。

## 验证连接

1. 在 Container Manager 中查看 `npc` 容器日志，确认出现成功连接 NPS 的记录。
2. 在 NPS Web 管理的客户端列表中确认该客户端在线。
3. 从 NAS 上确认目标服务可达。如果目标在另一台局域网设备上，检查该设备的防火墙是否允许来自 NAS 的连接。
4. 从公网实际访问隧道，不要只以“客户端在线”判定后端服务可用。

## 第三方套件

不能使用 Container Manager 的机型，可自行评估“我不是矿神”套件源：<https://spk7.imnks.com/>。该套件源由第三方维护，不属于 NPS 项目的发布和更新链路。安装前应核对支持的 DSM 版本、CPU 架构、包签名和更新来源；对供应链有严格要求时，请使用官方镜像或发布页中与 NAS 架构匹配的 Linux 客户端。
