docs(nac-admin): 建立文档中心 - 各模块运维日志

- README.md: 系统概述、技术栈、功能模块说明
- deploy.log: 完整部署历史和修复记录
- modules/01-dashboard.md: 仪表盘模块运维日志
- modules/02-knowledge-base.md: 知识库模块运维日志
- modules/03-crawlers.md: 采集器监控模块运维日志
- modules/04-approval-cases.md: AI审批案例模块运维日志
- modules/05-tag-engine.md: 标签引擎模块运维日志
- modules/06-protocol-registry.md: 协议注册表模块运维日志
- modules/07-audit-log.md: 权限与审计模块运维日志
- ops/nginx.conf: Nginx配置说明
- ops/systemd.service: systemd服务配置说明
- ops/secrets.md: 密钥管理最佳实践
This commit is contained in:
NAC Admin 2026-02-26 22:15:52 +08:00
parent 3700d1c7dd
commit 6db7a25362
11 changed files with 698 additions and 0 deletions

View File

@ -0,0 +1,62 @@
# NAC 知识引擎管理后台 - 文档中心
**系统名称**NAC Knowledge Engine Admin Console
**访问地址**https://admin.newassetchain.io
**部署服务器**103.96.148.7
**服务端口**9560内部443/80Nginx 代理)
**最后更新**2026-02-26
---
## 系统概述
NAC 知识引擎管理后台是 NAC 公链的合规知识管理中枢,负责管理 RWA 资产合规规则、AI 审批案例、采集器监控、协议族注册等核心业务。系统采用 NAC 原生认证(直连 `nac_id` MySQL 数据库),不依赖任何第三方 OAuth 服务。
## 技术栈
| 层次 | 技术 |
|------|------|
| 前端框架 | React 19 + Tailwind CSS 4 + shadcn/ui |
| 后端框架 | Express 4 + tRPC 11 |
| 数据库 | MySQLnac_id+ MongoDBnac_knowledge_engine|
| 认证 | NAC 原生认证bcrypt + JWT cookie|
| 多语言 | i18nextzh/en/ar/ja/ko/fr/ru 七种语言)|
| 部署 | systemd + Nginx HTTPS 反向代理 |
## 管理员账户
| 字段 | 值 |
|------|-----|
| 邮箱 | admin@newassetchain.io |
| 密码 | Admin@NAC2026 |
| 角色 | adminkyc_level=2, node_status=constitutional|
## 功能模块
1. **全局态势感知仪表盘** - KPI 卡片、审批趋势图、司法辖区覆盖、系统服务状态
2. **知识库管理** - 合规规则 CRUD、辖区/资产类型筛选、多语言内容
3. **采集器监控** - 运行日志、成功率统计、手动触发、采集源管理
4. **AI 审批案例审查** - 时间线、中风险人工审核、一键否决/确认
5. **标签规则治理** - 标签序列管理、人工修正、训练数据标注
6. **协议族注册表** - 协议注册/停用、触发条件、版本管理
7. **权限与审计** - 用户角色管理admin/reviewer/legal/viewer、不可篡改审计日志
## 目录结构
```
docs_center/nac-admin/
├── README.md # 本文件
├── deploy.log # 部署日志
├── modules/
│ ├── 01-dashboard.md # 仪表盘模块运维日志
│ ├── 02-knowledge-base.md # 知识库模块运维日志
│ ├── 03-crawlers.md # 采集器模块运维日志
│ ├── 04-approval-cases.md # AI审批案例模块运维日志
│ ├── 05-tag-engine.md # 标签引擎模块运维日志
│ ├── 06-protocol-registry.md # 协议注册表模块运维日志
│ └── 07-audit-log.md # 权限与审计模块运维日志
└── ops/
├── nginx.conf # Nginx 配置说明
├── systemd.service # systemd 服务说明
└── secrets.md # 密钥管理说明
```

View File

@ -0,0 +1,64 @@
# 模块01全局态势感知仪表盘 - 运维日志
**模块路径**`/`(首页)
**前端文件**`client/src/pages/Dashboard.tsx`
**后端路由**`server/routers.ts` → `dashboard.stats`、`dashboard.jurisdictionStats`
**数据源**MongoDBnac_knowledge_engine+ MySQLnac_id
---
## 功能说明
仪表盘是管理后台的核心监控页面,提供 NAC 知识引擎的全局运行状态视图。
| 指标卡片 | 数据来源 | 说明 |
|----------|----------|------|
| 合规规则总数 | MongoDB compliance_rules | 知识库中的合规规则条目数 |
| 活跃协议 | MongoDB protocols | 状态为 active 的协议族数量 |
| 采集器运行 | MongoDB crawlers | 状态为 running 的采集器数量 |
| 审批通过率 | MongoDB approval_cases | 近30天通过/总数比率 |
| 待人工审核 | MongoDB approval_cases | 状态为 pending_human 的案例数 |
| 系统用户 | MySQL nac_id.users | NAC 注册用户总数 |
| 审计日志 | MySQL audit_logs | 不可篡改审计记录总数 |
| 司法辖区覆盖 | MongoDB compliance_rules | 已覆盖的辖区数量 |
## API 端点
```
GET /api/trpc/dashboard.stats
GET /api/trpc/dashboard.jurisdictionStats
```
## 图表说明
- **审批趋势图近7天**:折线图,显示通过/拒绝/待审三条曲线,使用 Recharts 渲染
- **司法辖区覆盖饼图**显示各辖区SG/HK/CN/AE/EU/US的规则分布
## 系统服务状态监控
| 服务 | 数据库 | 检测方式 |
|------|--------|----------|
| MongoDB 知识引擎 | nac_knowledge_engine | ping 命令 |
| MySQL 认证数据库 | nac_id | SELECT 1 |
| Charter 编译服务 | - | 进程检测 |
| CNNL 神经网络 | - | 进程检测 |
| ACC-20 协议服务 | - | 进程检测 |
| GNACS 资产分类 | - | 进程检测 |
## 已知问题
| 问题 | 状态 | 说明 |
|------|------|------|
| 审批通过率显示 0% | 已知 | 初始数据中无已审批案例,属正常现象 |
| Charter/CNNL 服务状态 | 模拟数据 | 实际服务检测接口待接入 |
## 运维操作
```bash
# 查看仪表盘 API 日志
journalctl -u nac-admin -n 50 | grep "dashboard"
# 手动测试 API
curl -sk https://admin.newassetchain.io/api/trpc/dashboard.stats \
-H "Cookie: nac_admin_token=<token>"
```

View File

@ -0,0 +1,77 @@
# 模块02知识库管理 - 运维日志
**模块路径**`/knowledge-base`
**前端文件**`client/src/pages/KnowledgeBase.tsx`
**后端路由**`server/routers.ts` → `knowledgeBase.*`
**数据源**MongoDBnac_knowledge_engine.compliance_rules
---
## 功能说明
知识库管理模块负责管理 NAC 合规规则数据库,是 AI 审批引擎的核心知识来源。
## 数据模型
```typescript
interface ComplianceRule {
_id: ObjectId;
rule_id: string; // 规则唯一标识,如 "SG-RWA-001"
jurisdiction: string; // 司法辖区SG/HK/CN/AE/EU/US
asset_type: string; // 资产类型real_estate/equity/bond/commodity/fund
content: string; // 规则内容(主语言)
status: "active" | "inactive";
version: string; // 版本号,如 "v2.1"
source: string; // 来源机构
effective_date: Date; // 生效日期
created_at: Date;
updated_at: Date;
}
```
## API 端点
| 端点 | 方法 | 说明 |
|------|------|------|
| `knowledgeBase.list` | Query | 获取规则列表(支持辖区/资产类型/状态筛选)|
| `knowledgeBase.create` | Mutation | 创建新规则 |
| `knowledgeBase.update` | Mutation | 更新规则内容 |
| `knowledgeBase.toggle` | Mutation | 切换规则激活/禁用状态 |
| `knowledgeBase.delete` | Mutation | 删除规则(软删除)|
## 初始数据
系统初始化时预置了以下司法辖区的合规规则:
| 辖区 | 规则数 | 说明 |
|------|--------|------|
| SG新加坡| 1 | MAS 监管框架 |
| HK香港| 1 | SFC 证券及期货条例 |
| CN中国大陆| 1 | 中国人民银行监管 |
| AE阿联酋| 1 | ADGM/DIFC 框架 |
| EU欧盟| 1 | MiCA 法规 |
| US美国| 1 | SEC 监管框架 |
## 多语言升级计划(待实施)
计划升级数据模型,为每条规则添加七种语言内容字段:
- `content_zh`:简体中文
- `content_en`:英文
- `content_ar`:阿拉伯文
- `content_ja`:日文
- `content_ko`:韩文
- `content_fr`:法文
- `content_ru`:俄文
- `translation_status`翻译状态original/ai_translated/human_reviewed
## 运维操作
```bash
# 查看知识库数据
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
--eval "db.compliance_rules.find({}, {rule_id:1, jurisdiction:1, status:1}).pretty()"
# 统计各辖区规则数
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
--eval "db.compliance_rules.aggregate([{$group:{_id:'$jurisdiction', count:{$sum:1}}}]).pretty()"
```

View File

@ -0,0 +1,61 @@
# 模块03采集器监控 - 运维日志
**模块路径**`/crawlers`
**前端文件**`client/src/pages/Crawlers.tsx`
**后端路由**`server/routers.ts` → `crawler.*`
**数据源**MongoDBnac_knowledge_engine.crawlers
---
## 功能说明
采集器监控模块管理 NAC 知识引擎的数据采集任务,负责从各司法辖区的监管机构网站自动抓取最新合规规则。
## 数据模型
```typescript
interface Crawler {
_id: ObjectId;
name: string; // 采集器名称
source_url: string; // 采集源 URL
jurisdiction: string; // 目标辖区
status: "running" | "stopped" | "error";
last_run: Date; // 最后运行时间
success_rate: number; // 成功率0-100
items_collected: number; // 已采集条目数
schedule: string; // Cron 表达式
created_at: Date;
}
```
## 预置采集器8个
| 采集器 | 来源 | 辖区 | 状态 |
|--------|------|------|------|
| MAS 监管规则采集器 | mas.gov.sg | SG | running |
| SFC 合规规则采集器 | sfc.hk | HK | running |
| 人民银行规则采集器 | pbc.gov.cn | CN | running |
| ADGM 规则采集器 | adgm.com | AE | running |
| DIFC 规则采集器 | difc.ae | AE | running |
| MiCA 法规采集器 | esma.europa.eu | EU | running |
| SEC 规则采集器 | sec.gov | US | running |
| FINMA 规则采集器 | finma.ch | CH | stopped |
## API 端点
| 端点 | 方法 | 说明 |
|------|------|------|
| `crawler.list` | Query | 获取采集器列表 |
| `crawler.trigger` | Mutation | 手动触发采集任务 |
| `crawler.updateConfig` | Mutation | 更新采集器配置 |
## 运维操作
```bash
# 查看采集器状态
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
--eval "db.crawlers.find({}, {name:1, status:1, last_run:1, success_rate:1}).pretty()"
# 查看采集日志
journalctl -u nac-admin -n 100 | grep "crawler"
```

View File

@ -0,0 +1,66 @@
# 模块04AI 审批案例审查 - 运维日志
**模块路径**`/approval-cases`
**前端文件**`client/src/pages/ApprovalCases.tsx`
**后端路由**`server/routers.ts` → `approvalCase.*`
**数据源**MongoDBnac_knowledge_engine.approval_cases
---
## 功能说明
AI 审批案例审查模块是 NAC 合规引擎的核心,处理 RWA 资产上链的合规审批流程。AI 自动审批高置信度案例,中风险案例转人工审核。
## 审批流程
```
RWA 资产申请
AI 合规引擎分析ACC-20 协议)
高置信度(>90%)→ 自动通过/拒绝
中风险60-90%)→ 人工审核队列
低置信度(<60% 自动拒绝
审计日志记录(不可篡改)
```
## 数据模型
```typescript
interface ApprovalCase {
_id: ObjectId;
case_id: string; // 案例编号,如 "CASE-2026-001"
asset_type: string; // 资产类型
jurisdiction: string; // 申请辖区
applicant: string; // 申请人/机构
ai_score: number; // AI 置信度评分0-100
ai_decision: "approve" | "reject" | "pending_human";
human_decision?: "approve" | "reject";
status: "pending" | "approved" | "rejected" | "pending_human";
risk_factors: string[]; // 风险因素列表
timeline: TimelineEvent[]; // 审批时间线
created_at: Date;
reviewed_at?: Date;
reviewer?: string;
}
```
## API 端点
| 端点 | 方法 | 说明 |
|------|------|------|
| `approvalCase.list` | Query | 获取案例列表(支持状态筛选)|
| `approvalCase.review` | Mutation | 人工审核(通过/拒绝)|
## 运维操作
```bash
# 查看待审案例
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
--eval "db.approval_cases.find({status:'pending_human'}).count()"
# 查看审批统计
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
--eval "db.approval_cases.aggregate([{$group:{_id:'$status', count:{$sum:1}}}]).pretty()"
```

View File

@ -0,0 +1,66 @@
# 模块05标签规则治理 - 运维日志
**模块路径**`/tag-engine`
**前端文件**`client/src/pages/TagEngine.tsx`
**后端路由**`server/routers.ts` → `tagEngine.*`
**数据源**MongoDBnac_knowledge_engine.tag_rules, tag_corrections
---
## 功能说明
标签引擎模块管理 NAC 知识引擎的语义标签体系,为合规规则、资产类型和审批案例提供标准化标签序列,支持 GNACS 资产分类系统。
## 标签体系
NAC 使用三层标签体系:
1. **一级标签**资产大类real_estate/equity/bond/commodity/fund
2. **二级标签**合规属性kyc_required/aml_check/accredited_only 等)
3. **三级标签**辖区特定标签sg_mas_approved/hk_sfc_licensed 等)
## 数据模型
```typescript
interface TagRule {
_id: ObjectId;
rule_id: string;
name: string;
tag_sequence: string[]; // 标签序列
asset_types: string[]; // 适用资产类型
jurisdictions: string[]; // 适用辖区
confidence: number; // 规则置信度
status: "active" | "inactive";
training_count: number; // 训练样本数
created_at: Date;
}
interface TagCorrection {
_id: ObjectId;
original_tags: string[]; // 原始标签序列
corrected_tags: string[]; // 修正后标签序列
reason: string; // 修正原因
reviewer: string; // 审核人
created_at: Date;
}
```
## API 端点
| 端点 | 方法 | 说明 |
|------|------|------|
| `tagEngine.listRules` | Query | 获取标签规则列表 |
| `tagEngine.createRule` | Mutation | 创建新标签规则 |
| `tagEngine.correctTag` | Mutation | 提交标签修正(训练数据)|
| `tagEngine.listCorrections` | Query | 获取修正记录列表 |
## 运维操作
```bash
# 查看标签规则
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
--eval "db.tag_rules.find({status:'active'}, {name:1, tag_sequence:1, confidence:1}).pretty()"
# 查看修正记录
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
--eval "db.tag_corrections.find().sort({created_at:-1}).limit(10).pretty()"
```

View File

@ -0,0 +1,55 @@
# 模块06协议族注册表 - 运维日志
**模块路径**`/protocol-registry`
**前端文件**`client/src/pages/ProtocolRegistry.tsx`
**后端路由**`server/routers.ts` → `protocol.*`
**数据源**MongoDBnac_knowledge_engine.protocols
---
## 功能说明
协议族注册表管理 NAC 公链的核心协议,包括 ACC-20、CBPP、CSNP、GNACS、CNNL 等原生协议的版本注册和状态管理。
## 预置协议4个活跃
| 协议 | 版本 | 说明 | 状态 |
|------|------|------|------|
| ACC-20 | v2.0 | 资产合规协议 | active |
| CBPP | v1.5 | 宪政区块生产协议 | active |
| CSNP | v1.2 | 合规安全网络协议 | active |
| GNACS | v1.0 | 全球资产分类系统 | active |
| CNNL | v0.9 | 宪政神经网络语言 | inactive |
## 数据模型
```typescript
interface Protocol {
_id: ObjectId;
protocol_id: string; // 协议标识,如 "ACC-20"
name: string; // 协议全名
version: string; // 当前版本
description: string; // 协议说明
trigger_conditions: string[]; // 触发条件
status: "active" | "inactive" | "deprecated";
registered_at: Date;
updated_at: Date;
}
```
## API 端点
| 端点 | 方法 | 说明 |
|------|------|------|
| `protocol.list` | Query | 获取协议列表 |
| `protocol.register` | Mutation | 注册新协议 |
| `protocol.toggle` | Mutation | 切换协议状态 |
| `protocol.updateVersion` | Mutation | 更新协议版本 |
## 运维操作
```bash
# 查看协议状态
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
--eval "db.protocols.find({}, {protocol_id:1, version:1, status:1}).pretty()"
```

View File

@ -0,0 +1,89 @@
# 模块07权限与审计 - 运维日志
**模块路径**`/audit-log`
**前端文件**`client/src/pages/AuditLog.tsx`
**后端路由**`server/routers.ts` → `rbac.*`
**数据源**MySQLnac_id.users, nac_id.audit_logs
---
## 功能说明
权限与审计模块管理系统用户的角色权限,并维护不可篡改的操作审计日志。所有管理操作均自动记录到审计日志。
## 角色体系RBAC
| 角色 | 说明 | 权限范围 |
|------|------|----------|
| admin | 系统管理员 | 全部权限(需 kyc_level≥2 + node_status=constitutional|
| reviewer | 审批审核员 | 可审核 AI 审批案例 |
| legal | 法务专员 | 可查看合规规则和审批案例 |
| viewer | 只读用户 | 只读访问所有模块 |
## 角色判断逻辑
```typescript
// 基于 nac_id.users 表字段判断角色
function getUserRole(user: NacUser): string {
if (user.kyc_level >= 2 && user.node_status === 'constitutional') {
return 'admin';
}
if (user.kyc_level >= 1) {
return 'reviewer';
}
return 'viewer';
}
```
## 审计日志数据模型
```sql
CREATE TABLE audit_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
action VARCHAR(100) NOT NULL, -- 操作类型,如 "LOGIN", "UPDATE_RULE"
resource VARCHAR(100), -- 操作资源
resource_id VARCHAR(100), -- 资源 ID
details TEXT, -- 操作详情JSON
ip_address VARCHAR(45), -- 操作 IP
user_agent VARCHAR(500), -- 浏览器信息
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
## API 端点
| 端点 | 方法 | 说明 |
|------|------|------|
| `rbac.listUsers` | Query | 获取用户列表(含角色)|
| `rbac.auditLogs` | Query | 获取审计日志(支持用户/操作类型筛选)|
## 审计日志操作类型
| 操作类型 | 说明 |
|----------|------|
| LOGIN | 用户登录 |
| LOGOUT | 用户退出 |
| CREATE_RULE | 创建合规规则 |
| UPDATE_RULE | 更新合规规则 |
| DELETE_RULE | 删除合规规则 |
| APPROVE_CASE | 审批通过案例 |
| REJECT_CASE | 审批拒绝案例 |
| TRIGGER_CRAWLER | 手动触发采集器 |
| REGISTER_PROTOCOL | 注册新协议 |
## 运维操作
```bash
# 查看最近审计日志
mysql -u root -pvaingkvf nac_id -e \
"SELECT action, resource, ip_address, created_at FROM audit_logs ORDER BY created_at DESC LIMIT 20;"
# 查看用户角色分布
mysql -u root -pvaingkvf nac_id -e \
"SELECT kyc_level, node_status, COUNT(*) as count FROM users GROUP BY kyc_level, node_status;"
# 提升用户为管理员
mysql -u root -pvaingkvf nac_id -e \
"UPDATE users SET kyc_level=2, node_status='constitutional' WHERE email='user@example.com';"
```

View File

@ -0,0 +1,54 @@
# Nginx 配置说明
**配置文件路径**`/www/server/panel/vhost/nginx/admin.newassetchain.io.conf`
## 当前配置
```nginx
server {
listen 80;
server_name admin.newassetchain.io;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name admin.newassetchain.io;
ssl_certificate /root/ssl/_.newassetchain.io.pem;
ssl_certificate_key /root/ssl/_.newassetchain.io.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://127.0.0.1:9560;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
```
## 重要说明
- `X-Forwarded-Proto $scheme` 必须设置,否则 Express `trust proxy` 无法正确识别 HTTPS 请求,导致 cookie `Secure` 标志判断失败
- SSL 证书使用通配符证书 `_.newassetchain.io`,覆盖所有子域名
- 服务内部端口为 9560,不对外暴露
## 常用操作
```bash
# 测试 Nginx 配置
nginx -t
# 重载 Nginx 配置
nginx -s reload
# 查看 Nginx 错误日志
tail -f /www/wwwlogs/admin.newassetchain.io.error.log
```

View File

@ -0,0 +1,54 @@
# 密钥管理说明
**密钥文件路径**`/opt/nac/services/nac-admin/.env`
## 必要密钥列表
| 环境变量 | 说明 | 示例值 |
|----------|------|--------|
| `NAC_MYSQL_URL` | MySQL 连接字符串nac_id 数据库)| `mysql://root:password@localhost:3306/nac_id` |
| `NAC_MONGO_URL` | MongoDB 连接字符串(知识引擎数据库)| `mongodb://root:password@localhost:27017/nac_knowledge_engine?authSource=admin` |
| `NAC_JWT_SECRET` | JWT 签名密钥至少32位随机字符串| `<随机生成>` |
## .env 文件格式
```bash
NAC_MYSQL_URL=mysql://root:vaingkvf@localhost:3306/nac_id
NAC_MONGO_URL=mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin
NAC_JWT_SECRET=<生产环境随机密钥>
```
## 密钥管理最佳实践
1. **不要将密钥写入 systemd 服务文件的 `Environment=` 行**,应使用 `EnvironmentFile=` 指向 `.env` 文件
2. **`.env` 文件权限**应设置为 `600`(仅 root 可读):`chmod 600 /opt/nac/services/nac-admin/.env`
3. **定期轮换 JWT_SECRET**每90天更换一次更换后需要重启服务所有用户需重新登录
4. **MongoDB 密码**:使用宝塔面板数据库管理界面修改,修改后同步更新 `.env` 文件
5. **MySQL 密码**:使用宝塔面板数据库管理界面修改,修改后同步更新 `.env` 文件
## 密钥迁移步骤(从 systemd 内联迁移到 .env 文件)
```bash
# 1. 创建 .env 文件
cat > /opt/nac/services/nac-admin/.env << 'EOF'
NAC_MYSQL_URL=mysql://root:vaingkvf@localhost:3306/nac_id
NAC_MONGO_URL=mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin
NAC_JWT_SECRET=<生产环境随机密钥>
EOF
# 2. 设置文件权限
chmod 600 /opt/nac/services/nac-admin/.env
chown root:root /opt/nac/services/nac-admin/.env
# 3. 修改 systemd 服务文件,移除内联密钥,添加 EnvironmentFile
# 编辑 /etc/systemd/system/nac-admin.service
# 删除所有 Environment=NAC_* 行
# 添加 EnvironmentFile=/opt/nac/services/nac-admin/.env
# 4. 重载并重启
systemctl daemon-reload
systemctl restart nac-admin
# 5. 验证服务正常
systemctl status nac-admin
```

View File

@ -0,0 +1,50 @@
# systemd 服务配置说明
****`/etc/systemd/system/nac-admin.service`
## 当前配置
```ini
[Unit]
Description=NAC Knowledge Engine Admin Console
After=network.target
[Service]
Type=simple
User=www
WorkingDirectory=/opt/nac/services/nac-admin
ExecStart=/usr/bin/node dist/index.js
Restart=always
RestartSec=5
Environment=NODE_ENV=production
Environment=PORT=9560
EnvironmentFile=/opt/nac/services/nac-admin/.env
[Install]
WantedBy=multi-user.target
```
## 重要说明
`EnvironmentFile` `.env` `ops/secrets.md`
## 常用操作
```bash
# 查看服务状态
systemctl status nac-admin
# 启动/停止/重启服务
systemctl start nac-admin
systemctl stop nac-admin
systemctl restart nac-admin
# 查看实时日志
journalctl -u nac-admin -f
# 查看最近100行日志
journalctl -u nac-admin -n 100
# 重载 systemd 配置(修改服务文件后执行)
systemctl daemon-reload
```