# 用环境变量启动 NPC

> 在容器或自动化环境中通过服务端地址和验证密钥启动无配置文件 NPC

---

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

---

无配置文件模式下，NPC 可从环境变量读取服务端地址和客户端验证密钥，适合容器、systemd `EnvironmentFile` 或密钥注入平台。

## 支持的变量

| 环境变量          | 含义                   | 示例                     |
| ----------------- | ---------------------- | ------------------------ |
| `NPC_SERVER_ADDR` | NPS 桥接地址，包含端口 | `nps.example.com:8024`   |
| `NPC_SERVER_VKEY` | 客户端验证密钥         | Web 管理中该客户端的密钥 |

Shell 示例：

```shell
export NPC_SERVER_ADDR=nps.example.com:8024
export NPC_SERVER_VKEY='请替换为实际密钥'
./npc
```

只有在未指定配置文件时，这两个变量才会直接启动 NPC。命令行已提供 `-server` 或 `-vkey` 时，对应命令行值优先。连接协议、TLS、代理和超时没有对应环境变量，需要继续使用命令行参数，例如：

```shell
./npc -tls_enable=true -disconnect_timeout=60
```

## systemd 示例

创建仅 root 可读的 `/etc/nps/npc.env`：

```text
NPC_SERVER_ADDR=nps.example.com:8024
NPC_SERVER_VKEY=请替换为实际密钥
```

服务中引用：

```ini
[Service]
EnvironmentFile=/etc/nps/npc.env
ExecStart=/usr/local/bin/npc
```

设置权限并重启服务：

```shell
chmod 600 /etc/nps/npc.env
systemctl daemon-reload
systemctl restart npc
```

## Docker Compose 示例

```yaml
services:
  npc:
    image: your-npc-image
    restart: unless-stopped
    environment:
      NPC_SERVER_ADDR: nps.example.com:8024
      NPC_SERVER_VKEY: ${NPC_SERVER_VKEY}
```

不要把真实密钥提交到 Compose 文件或代码仓库；使用 `.env`、Docker Secret 或部署平台密钥管理。启动后从 NPC 日志和 Web 客户端列表确认连接的是预期地址与客户端。
