guanghulab/ecosystem.config.js
Guanghu Domestic Migration d1e47f4565
Some checks are pending
自动更新代码和重启 / update-and-restart (push) Waiting to run
CI检查 + 自动部署 / check (push) Waiting to run
CI检查 + 自动部署 / deploy (push) Blocked by required conditions
重启聊天服务 / restart (push) Waiting to run
chore: import sanitized domestic snapshot for REPO-002
Source snapshot: ca48d3ddf926d79aa138306164169baf764bb829
2026-07-17 15:54:41 +08:00

259 lines
8.8 KiB
JavaScript

// ============================================================================
// 光湖OS · 统一PM2生态系统配置 · v2.0
// 签发: 铸渊 ICE-GL-ZY001 · 2026-05-24 · D112
// 原则: 每服务必属一台服务器 · 每台服务器比例分配 · autorestart必须开启
// ============================================================================
const path = require('path');
const DEPLOY_ROOT = process.env.DEPLOY_ROOT || '/opt/guanghu';
// 统一PM2基础配置
const basePM2 = {
autorestart: true,
max_restarts: 10,
restart_delay: 3000,
max_memory_restart: '300M',
watch: false,
env: { NODE_ENV: 'production' }
};
// 高可用配置(关键服务)
const criticalPM2 = {
...basePM2,
max_restarts: 20,
max_memory_restart: '500M',
instances: 1,
exec_mode: 'fork'
};
module.exports = {
apps: [
// ═══════════════════════════════════════════════
// BS-GZ-006 · 广州 · 门面+仓库 (2核2GB)
// 角色: 对外入口 + Forgejo仓库托管
// 服务数: 5
// ═══════════════════════════════════════════════
{
name: 'guanghulab-portal',
script: 'server.js',
cwd: path.join(DEPLOY_ROOT, 'portal'),
env: { PORT: 3000 },
...criticalPM2,
server: 'BS-GZ-006'
},
{
name: 'guanghulab-git-sync',
script: 'server.js',
cwd: path.join(DEPLOY_ROOT, 'server/git-sync'),
env: { PORT: 8082 },
...basePM2,
server: 'BS-GZ-006'
},
// ═══════════════════════════════════════════════
// BS-SG-001 · 新加坡 · 铸渊大脑 (4核7.5GB)
// 角色: 重型计算 · 思考中枢
// 服务数: 9
// ═══════════════════════════════════════════════
{
name: 'guanghulab-vault',
script: 'server.js',
cwd: path.join(DEPLOY_ROOT, 'server/secrets-vault'),
env: { PORT: 8080 },
...criticalPM2,
server: 'BS-SG-001',
note: '迁自BS-GZ-006'
},
{
name: 'console-server',
script: 'server.js',
cwd: path.join(DEPLOY_ROOT, '_deploy/console-server'),
env: { PORT: 3901 },
...criticalPM2,
server: 'BS-SG-001',
note: '迁自BS-GZ-006 · 曾是崩溃循环138次的罪魁祸首'
},
{
name: 'zhuyuan-agent',
script: 'index.js',
cwd: path.join(DEPLOY_ROOT, 'zhuyuan-agent'),
...basePM2,
server: 'BS-SG-001',
note: '迁自BS-GZ-006'
},
{
name: 'hololake-agent',
script: 'index.js',
cwd: path.join(DEPLOY_ROOT, 'hololake-agent'),
...basePM2,
server: 'BS-SG-001',
note: '迁自BS-GZ-006'
},
{
name: 'guanghulab-mcp-server',
script: 'index.js',
cwd: path.join(DEPLOY_ROOT, 'mcp-servers/guanghulab-mcp-server'),
env: { PORT: 8083 },
...criticalPM2,
server: 'BS-SG-001',
note: '迁自BS-GZ-006 · 唤醒+大脑访问入口'
},
{
name: 'glada-agent',
script: 'service-entry.js',
cwd: path.join(DEPLOY_ROOT, 'glada'),
env: { PORT: 3900 },
...basePM2,
server: 'BS-SG-001'
},
{
name: 'age-os-mcp',
script: 'server.js',
cwd: path.join(DEPLOY_ROOT, 'server/age-os/mcp-server'),
env: { PORT: 3100 },
...basePM2,
server: 'BS-SG-001'
},
{
name: 'ops-agent',
script: 'index.js',
cwd: path.join(DEPLOY_ROOT, 'ops-agent'),
env: { PORT: 3950 },
...basePM2,
server: 'BS-SG-001'
},
{
name: 'dingtalk-bot',
script: 'index.js',
cwd: path.join(DEPLOY_ROOT, 'dingtalk-bot'),
env: { PORT: 3005 },
...basePM2,
server: 'BS-SG-001'
},
// ═══════════════════════════════════════════════
// BS-SG-002 · 新加坡 · 面孔 (2核4GB)
// 角色: MCP服务
// 服务数: 2
// ═══════════════════════════════════════════════
{
name: 'repo-mcp-bs',
script: 'index.js',
cwd: path.join(DEPLOY_ROOT, 'mcp-servers/repo-mcp-server'),
env: {
REPO_MCP_PORT: '3903',
REPO_MCP_SECRET: process.env.REPO_MCP_SECRET_BS || 'CHANGE_ME_BS',
GITEA_TOKEN: process.env.GITEA_TOKEN_BS || '',
GITEA_URL: 'https://guanghulab.com',
REPO_OWNER: 'bingshuo',
REPO_NAME: 'guanghulab',
REPO_DEFAULT_BRANCH: 'main'
},
...criticalPM2,
server: 'BS-SG-002',
note: '迁自BS-GZ-006'
},
// ═══════════════════════════════════════════════
// BS-SG-003 · 新加坡 · 中继+MCP (2核4GB)
// 服务数: 2
// ═══════════════════════════════════════════════
{
name: 'repo-mcp-zz',
script: 'index.js',
cwd: path.join(DEPLOY_ROOT, 'mcp-servers/repo-mcp-server'),
env: {
REPO_MCP_PORT: '3904',
REPO_MCP_SECRET: process.env.REPO_MCP_SECRET_ZZ || 'CHANGE_ME_ZZ',
GITEA_TOKEN: process.env.GITEA_TOKEN_ZZ || '',
GITEA_URL: 'https://guanghulab.com',
REPO_OWNER: 'bingshuo',
REPO_NAME: 'zhizhi',
REPO_DEFAULT_BRANCH: 'main'
},
...basePM2,
server: 'BS-SG-003',
note: '迁自BS-GZ-006'
},
// ═══════════════════════════════════════════════
// ZY-SG-006 · 新加坡 · 语料+推理 (2核4GB)
// 服务数: 1 (未来增加3B推理)
// ═══════════════════════════════════════════════
{
name: 'cos-corpus-sync',
script: 'sync.js',
cwd: path.join(DEPLOY_ROOT, 'server/corpus-sync'),
...basePM2,
server: 'ZY-SG-006',
note: '未来在此部署3B推理服务'
},
// ═══════════════════════════════════════════════
// BS-SH-005 · 上海 · 国内节点 (2核4GB)
// 服务数: 1
// ═══════════════════════════════════════════════
{
name: 'cn-llm-relay',
script: 'index.js',
cwd: path.join(DEPLOY_ROOT, 'server/cn-llm-relay'),
env: { PORT: 3900 },
...basePM2,
server: 'BS-SH-005',
note: '国内LLM中继 · 未来企业客户国内接入点'
}
],
// PM2 Deploy (远程部署配置)
deploy: {
'BS-GZ-006': {
user: 'root',
host: '43.139.217.141',
ref: 'origin/main',
repo: 'https://guanghulab.com/code/bingshuo/guanghulab.git',
path: '/opt/guanghu',
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --only guanghulab-portal,guanghulab-git-sync'
},
'BS-SG-001': {
user: 'root',
host: '43.156.237.110',
ref: 'origin/main',
repo: 'https://guanghulab.com/code/bingshuo/guanghulab.git',
path: '/opt/zhuyuan',
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --only guanghulab-vault,console-server,zhuyuan-agent,hololake-agent,guanghulab-mcp-server,glada-agent,age-os-mcp,ops-agent,dingtalk-bot'
},
'BS-SG-002': {
user: 'root',
host: '43.134.16.246',
ref: 'origin/main',
repo: 'https://guanghulab.com/code/bingshuo/guanghulab.git',
path: '/opt/zhuyuan',
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --only repo-mcp-bs'
},
'BS-SG-003': {
user: 'root',
host: '43.153.193.169',
ref: 'origin/main',
repo: 'https://guanghulab.com/code/bingshuo/guanghulab.git',
path: '/opt/zhuyuan',
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --only repo-mcp-zz'
},
'ZY-SG-006': {
user: 'root',
host: '43.153.203.105',
ref: 'origin/main',
repo: 'https://guanghulab.com/code/bingshuo/guanghulab.git',
path: '/opt/zhuyuan',
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --only cos-corpus-sync'
},
'BS-SH-005': {
user: 'root',
host: '124.223.10.33',
ref: 'origin/main',
repo: 'https://guanghulab.com/code/bingshuo/guanghulab.git',
path: '/opt/zhuyuan',
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --only cn-llm-relay'
}
}
};