Repository navigation
Expand file tree
/
Copy pathecosystem.config.cjs
More file actions
80 lines (77 loc) · 3.03 KB
/
Copy pathecosystem.config.cjs
File metadata and controls
80 lines (77 loc) · 3.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
const fs = require("node:fs");
const path = require("node:path");
const stableEnvironmentFile = process.env.KK_ENV_FILE || "/var/lib/kk-model-monitor/.env";
function readEnvValue(name) {
for (const filePath of [stableEnvironmentFile, path.join(__dirname, ".env"), path.join(__dirname, ".env.local")]) {
try {
const line = fs.readFileSync(filePath, "utf8").split(/\r?\n/).find((item) => item.trim().startsWith(`${name}=`));
if (line) return line.slice(line.indexOf("=") + 1).trim().replace(/^['"]|['"]$/g, "");
} catch {
// The environment file is optional for local development.
}
}
return "";
}
const dataDirectory = process.env.DATA_DIR || readEnvValue("DATA_DIR") || path.join(__dirname, "data");
const trackerDataDirectory = process.env.INSTALL_TRACKER_DATA_DIR
|| readEnvValue("INSTALL_TRACKER_DATA_DIR")
|| path.join(dataDirectory, "install-tracker");
const trackerTimeZone = process.env.INSTALL_TRACKER_TIME_ZONE || readEnvValue("INSTALL_TRACKER_TIME_ZONE") || "Asia/Shanghai";
const trackerTrustProxy = process.env.INSTALL_TRACKER_TRUST_PROXY || readEnvValue("INSTALL_TRACKER_TRUST_PROXY") || "true";
const trustProxy = process.env.TRUST_PROXY || readEnvValue("TRUST_PROXY") || "false";
const trustedProxyAddresses = process.env.TRUSTED_PROXY_ADDRESSES || readEnvValue("TRUSTED_PROXY_ADDRESSES") || "127.0.0.1,::1";
const trustedWebProxyToken = process.env.TRUSTED_WEB_PROXY_TOKEN || readEnvValue("TRUSTED_WEB_PROXY_TOKEN") || "kk-public-web-via-loopback";
module.exports = {
apps: [
{
name: "kangkang-install-tracker",
cwd: __dirname,
script: "services/install-tracker/index.mjs",
interpreter: "node",
autorestart: true,
watch: false,
min_uptime: "10s",
max_restarts: 10,
max_memory_restart: "256M",
kill_timeout: 12000,
env: {
NODE_ENV: "production",
TZ: "Asia/Shanghai",
KANGKANG_INSTALL_TRACKER_MAIN: "true",
INSTALL_TRACKER_HOST: "127.0.0.1",
INSTALL_TRACKER_PORT: "6723",
INSTALL_TRACKER_DATA_DIR: trackerDataDirectory,
INSTALL_TRACKER_TIME_ZONE: trackerTimeZone,
INSTALL_TRACKER_TRUST_PROXY: trackerTrustProxy,
},
},
{
name: "kk-model-monitor",
cwd: __dirname,
script: "server/index.mjs",
interpreter: "node",
autorestart: true,
watch: false,
min_uptime: "10s",
max_restarts: 10,
max_memory_restart: "512M",
kill_timeout: 12000,
env: {
NODE_ENV: "production",
TZ: "Asia/Shanghai",
KANGKANG_WEB_MAIN: "true",
HOST: "127.0.0.1",
PORT: "6722",
KK_ENV_FILE: stableEnvironmentFile,
INSTALL_TRACKER_URL: "http://127.0.0.1:6723",
ATTACHMENT_FALLBACK_MODELS: "claude-opus-4-8",
ATTACHMENT_FALLBACK_PROTOCOLS: "openai-chat",
ATTACHMENT_FALLBACK_ATTEMPTS: "3",
DATA_DIR: dataDirectory,
TRUST_PROXY: trustProxy,
TRUSTED_PROXY_ADDRESSES: trustedProxyAddresses,
TRUSTED_WEB_PROXY_TOKEN: trustedWebProxyToken,
},
},
],
};