Commit f33c80a6 by Archer Committed by GitHub

perf: deploy (#6972)

* perf: deploy

* doc
parent 14373770
......@@ -2,59 +2,36 @@
### 正常更新(不动服务,只改版本)
1. 更新 `args.json` 中的版本号
2.`FastGPT` 目录执行 `pnpm run gen:deploy` 即可
1. 更新 `version/{version}/args.json` 中的版本号,例如 `version/v4.14/args.json``version/main/args.json`
2.`FastGPT` 目录执行 `node deploy/init.mjs` 即可
3. 脚本会同时更新 `deploy/dev``document/public/deploy/install.sh``document/public/deploy/docker/{version}` 下的 Docker 部署文件
### 加版本
比如要添加 `v4.15` 稳定版:
1. 创建 `version/v4.15`
2. 添加 `version/v4.15/args.json`
3. 添加 `version/v4.15/docker-compose.template.yml`
4. 执行 `node deploy/init.mjs`,脚本会自动扫描并生成 `document/public/deploy/docker/v4.15`
### 加服务
比如要添加 `example` 服务:
1. `init.mjs``Services Enum` 中添加 fastgptExample: fastgpt-example
2.`args.json` 中添加 image 和 tag, 注意 `args.json``key` 值,要和 `init.mjs``value` 值一致。
3. 更新 templates/docker-compose.[dev|prod].yml 文件,把服务的相关配置加进去,并且:服务的 image 改为 ${{example.image}}:${{example.tag}}
2. 在所有 `version/*/args.json` 中添加 image 和 tag, 注意 `args``key` 值,要和 `init.mjs``value` 值一致。
3. 更新所有需要生效的 `version/*/docker-compose.template.yml` 文件,把服务的相关配置加进去,并且:服务的 image 改为 ${{example.image}}:${{example.tag}}
4. 如需同步开发环境,再更新 `templates/docker-compose.dev.yml`
5. 执行 `node deploy/init.mjs` 重新生成部署文件
### 加向量库
比如添加 `exampleDB` 向量库:
1. 添加 vector service 配置在 `templates/vector` 下面,例如 `templates/vector/exampleDB.txt` 内容可以参考其他 txt,注意缩进,image 名字也要替换成 ${{exampleDB.image}}:${{exampleDB:tag}}, service name 必须是 `vectorDB`
2.`args.json` 中添加 `exampleDB` 的配置
3. init.mjs vector enum 中添加 `vector`
4. init.mjs 中添加 vector 的相关配置:
```ts
const vector = {
// pg, milvus, ob ...
vector: {
db: '', // 空即可
config: `/
VECTOR_URL:vectordb://xxxxx
`, //注意 第一行反引号后面的 / 不能少(去除首个换行符); 左边的两个空格的缩进不能变,否则会语法错误
extra: `` // 额外的配置,可以看 ob 的那个,需要一个 config 字段引入 init.sql
}
}
```
5. init.mjs 读入 vector 配置
```json
{ // 这是个块作用域, 直接搜 read in Vectors
// read in Vectors
// pg, ob ....
const vectordb = fs.readFileSync(path.join(process.cwd(), 'templates', 'vector', 'vector.txt'));
vector.vector.db = String(vectordb);
}
```
6. init.mjs 最后生成的时候,需要添加
```ts
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'cn', 'docker-compose.vector.yml'),
replace(template, 'cn', VectorEnum.vector)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'global', 'docker-compose.zilliz.yml'),
replace(template, 'global', VectorEnum.vector)
),
```
2. 在所有 `version/*/args.json` 中添加 `exampleDB` 的配置
3. 添加连接配置片段,例如 `templates/vector/exampleDB.config.txt`
4. 如需额外 `configs`,添加 `templates/vector/exampleDB.extra.txt`
5.`templates/vector/config.json` 中添加向量库配置,声明输出文件名、service 片段、连接配置和 extra 片段
6. 执行 `node deploy/init.mjs` 重新生成部署文件
## yaml 的锚点和引用
......
......@@ -174,7 +174,7 @@ services:
retries: 3
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.15.0-beta1
ports:
- 3002:3000
networks:
......@@ -220,7 +220,7 @@ services:
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.15.0-beta1
ports:
- 3003:3000
networks:
......@@ -281,7 +281,7 @@ services:
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.2.0
profiles:
- prepull
opensandbox-execd-image:
......@@ -294,7 +294,7 @@ services:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.2.0
container_name: fastgpt-volume-manager
restart: always
ports:
......@@ -323,7 +323,7 @@ services:
# AI Proxy
fastgpt-aiproxy:
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.6
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
ports:
......
......@@ -174,7 +174,7 @@ services:
retries: 3
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.20
image: ghcr.io/labring/fastgpt-code-sandbox:v4.15.0-beta1
ports:
- 3002:3000
networks:
......@@ -220,7 +220,7 @@ services:
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.20
image: ghcr.io/labring/fastgpt-mcp_server:v4.15.0-beta1
ports:
- 3003:3000
networks:
......@@ -281,7 +281,7 @@ services:
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.2.0
profiles:
- prepull
opensandbox-execd-image:
......@@ -294,7 +294,7 @@ services:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.2.0
container_name: fastgpt-volume-manager
restart: always
ports:
......@@ -323,7 +323,7 @@ services:
# AI Proxy
fastgpt-aiproxy:
image: ghcr.io/labring/aiproxy:v0.5.6
image: ghcr.io/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
ports:
......
......@@ -10,18 +10,6 @@ const RegionEnum = {
global: 'global'
};
/**
* @enum {String} VectorEnum
*/
const VectorEnum = {
pg: 'pg',
milvus: 'milvus',
zilliz: 'zilliz',
ob: 'ob',
seekdb: 'seekdb',
opengauss: 'opengauss'
};
// make sure the cwd
const basePath = process.cwd();
if (!basePath.endsWith('deploy')) {
......@@ -29,16 +17,148 @@ if (!basePath.endsWith('deploy')) {
}
/**
* 扫描 `deploy/version/*` 获取所有可发布版本。
*
* 每个版本目录必须包含 `args.json` 和 `docker-compose.template.yml`。`main`
* 固定作为迭代版展示,其余目录名都作为稳定版展示;这里仅负责发现和排序。
*
* @returns {Promise<string[]>}
*/
const loadDeployVersions = async () => {
const versionRoot = path.join(process.cwd(), 'version');
const entries = await fs.promises.readdir(versionRoot, { withFileTypes: true });
const versions = [];
for (const entry of entries) {
if (!entry.isDirectory()) {
continue;
}
const version = entry.name;
const versionPath = path.join(versionRoot, version);
const requiredFiles = ['args.json', 'docker-compose.template.yml'];
const exists = await Promise.all(
requiredFiles.map((file) =>
fs.promises
.access(path.join(versionPath, file))
.then(() => true)
.catch(() => false)
)
);
if (exists.every(Boolean)) {
versions.push(version);
}
}
if (versions.length === 0) {
throw new Error('No deploy versions found in deploy/version');
}
return versions.sort((a, b) => {
if (a === 'main') return 1;
if (b === 'main') return -1;
return a.localeCompare(b, undefined, { numeric: true });
});
};
/**
* 将扫描到的版本列表写入安装脚本。
*
* `install.sh` 会被用户单独下载执行,版本列表不能依赖另一个运行时请求。
* 这里用固定标记替换生成片段,保持脚本入口和 deploy/version 目录一致。
*
* @param {string[]} deployVersions
*/
const syncInstallScriptVersions = async (deployVersions) => {
const installScriptPath = path.join(
process.cwd(),
'..',
'document',
'public',
'deploy',
'install.sh'
);
const begin = '# BEGIN GENERATED DEPLOY VERSIONS';
const end = '# END GENERATED DEPLOY VERSIONS';
const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
const shellQuote = (value) =>
`"${String(value)
.replace(/\\/g, '\\\\')
.replace(/"/g, '\\"')
.replace(/\$/g, '\\$')
.replace(/`/g, '\\`')}"`;
const versionsBlock = [
begin,
'DEPLOY_VERSIONS=(',
...deployVersions.map((version) => ` ${shellQuote(version)}`),
')',
end
].join('\n');
const source = await fs.promises.readFile(installScriptPath, 'utf8');
const blockPattern = new RegExp(`${escapeRegExp(begin)}[\\s\\S]*?${escapeRegExp(end)}`);
if (!blockPattern.test(source)) {
throw new Error('Can not find generated deploy versions block in install.sh');
}
await fs.promises.writeFile(installScriptPath, source.replace(blockPattern, versionsBlock));
};
/**
* 读取共享向量库模板配置。
*
* `deploy/templates/vector/config.json` 维护向量库输出文件名、服务片段、连接配置
* 和额外 configs。版本模板只通过 `${{vec.*}}` 引用这些共享片段。
*
* @returns {Promise<Record<string, { filename: string, db: string, config: string, extra: string }>>}
*/
const loadVectorConfigs = async () => {
const vectorRoot = path.join(process.cwd(), 'templates', 'vector');
const vectorConfig = JSON.parse(
await fs.promises.readFile(path.join(vectorRoot, 'config.json'), 'utf8')
);
const vectors = {};
for (const [name, config] of Object.entries(vectorConfig)) {
const readOptionalFile = async (file) => {
if (!file) {
return '';
}
return (await fs.promises.readFile(path.join(vectorRoot, file), 'utf8')).replace(/\n$/, '');
};
vectors[name] = {
filename: config.filename,
db: await readOptionalFile(config.dbFile),
config: await readOptionalFile(config.configFile),
extra: await readOptionalFile(config.extraFile)
};
vectors[name].extraBlock = vectors[name].extra ? `configs:\n ${vectors[name].extra}` : '';
}
return vectors;
};
/**
* @typedef {{ tag: String, image: {cn: String, global: String} }} ArgItemType
*/
/** format the args
* @type {Record<Services, ArgItemType>}
/**
* 读取指定部署版本的镜像参数。
*
* dev 默认使用 main 的参数;prod 按版本目录分别读取,避免稳定版 tag 被 main
* 分支的迭代镜像意外覆盖。
*
* @param {string} version
* @returns {Record<Services, ArgItemType>}
*/
const args = (() => {
const loadArgs = (version) => {
/**
* @type {{tags: Record<Services, string>, images: Record<Services, Record<string, string>>}}
*/
const obj = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'args.json')));
const obj = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'version', version, 'args.json')));
const args = {};
for (const key of Object.keys(obj.tags)) {
args[key] = {
......@@ -50,65 +170,18 @@ const args = (() => {
};
}
return args;
})();
const vector = {
pg: {
db: '',
config: `\
PG_URL: postgresql://username:password@fastgpt-vector:5432/postgres`,
extra: ''
},
milvus: {
db: '',
config: `\
MILVUS_ADDRESS: http://fastgpt-vector:19530
MILVUS_TOKEN: none
`,
extra: ''
},
zilliz: {
db: '',
config: `\
MILVUS_ADDRESS: zilliz_cloud_address
MILVUS_TOKEN: zilliz_cloud_token`,
extra: ''
},
ob: {
db: '',
config: `\
OCEANBASE_URL: mysql://root%40tenantname:tenantpassword@fastgpt-vector:2881/mysql
`,
extra: `\
init_sql:
name: init_sql
content: |
ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30;
`
},
seekdb: {
db: '',
config: `\
SEEKDB_URL: mysql://root:seekdbpassword@fastgpt-vector:2881/mysql
`,
extra: ``
},
opengauss: {
db: '',
config: `\
OPENGAUSS_URL: postgresql://gaussdb:FastGPT@123@fastgpt-vector:5432/fastgpt`,
extra: ''
},
};
/**
* replace all ${{}}
* @param {string} source
* @param {RegionEnum} region
* @param {VectorEnum} vec
* @param {string | undefined} vec
* @param {Record<Services, ArgItemType>} args
* @param {Record<string, { filename: string, db: string, config: string, extra: string }>} vectors
* @returns {string}
*/
const replace = (source, region, vec) => {
const replace = (source, region, vec, args, vectors) => {
// Match ${{expr}}, capture "expr" inside {{}}
return source.replace(/\$\{\{([^}]*)\}\}/g, (_, expr) => {
// expr: a.b
......@@ -117,10 +190,14 @@ const replace = (source, region, vec) => {
*/
const [a, b] = expr.split('.');
if (a === 'vec') {
if (!vectors[vec]) {
throw new Error(`Unknown vector config: ${vec}`);
}
if (b === 'db') {
return replace(vector[vec].db, region, vec);
return replace(vectors[vec].db, region, vec, args, vectors);
} else {
return vector[vec][b];
return vectors[vec][b];
}
}
......@@ -131,113 +208,81 @@ const replace = (source, region, vec) => {
}
});
};
{
// read in Vectors
const pg = fs.readFileSync(path.join(process.cwd(), 'templates', 'vector', 'pg.txt'));
vector.pg.db = String(pg);
const milvus = fs.readFileSync(path.join(process.cwd(), 'templates', 'vector', 'milvus.txt'));
vector.milvus.db = String(milvus);
const ob = fs.readFileSync(path.join(process.cwd(), 'templates', 'vector', 'ob.txt'));
vector.ob.db = String(ob);
const seekdb = fs.readFileSync(path.join(process.cwd(), 'templates', 'vector', 'seekdb.txt'));
vector.seekdb.db = String(seekdb);
const formatYamlOutput = (source) => `${source.trimEnd()}\n`;
const opengauss = fs.readFileSync(path.join(process.cwd(), 'templates', 'vector', 'opengauss.txt'));
vector.opengauss.db = String(opengauss);
}
const generateDevFile = async () => {
const generateDevFile = async (deployVersions, vectors) => {
console.log('generating dev/docker-compose.yml');
// 1. read template
const template = await fs.promises.readFile(
path.join(process.cwd(), 'templates', 'docker-compose.dev.yml'),
'utf8'
);
const defaultDevVersion = deployVersions.includes('main') ? 'main' : deployVersions[0];
const args = loadArgs(defaultDevVersion);
await Promise.all([
fs.promises.writeFile(
path.join(process.cwd(), 'dev', 'docker-compose.cn.yml'),
replace(template, 'cn')
formatYamlOutput(replace(template, 'cn', undefined, args, vectors))
),
fs.promises.writeFile(
path.join(process.cwd(), 'dev', 'docker-compose.yml'),
replace(template, 'global')
formatYamlOutput(replace(template, 'global', undefined, args, vectors))
)
]);
console.log('success geenrate dev files');
};
const generateProdFile = async () => {
console.log('generating prod/docker-compose.yml');
const template = await fs.promises.readFile(
path.join(process.cwd(), 'templates', 'docker-compose.prod.yml'),
'utf8'
/**
* 生成公开下载的 Docker Compose 部署文件。
*
* 每个版本使用自己的模板和镜像参数;向量库片段保持共享。
*/
const generateProdFile = async (deployVersions, vectors) => {
console.log('generating public prod docker-compose.yml files');
const outputRoot = path.join(process.cwd(), '..', 'document', 'public', 'deploy', 'docker');
const regions = Object.values(RegionEnum);
const versionArgs = Object.fromEntries(deployVersions.map((version) => [version, loadArgs(version)]));
const versionTemplates = Object.fromEntries(
await Promise.all(
deployVersions.map(async (version) => [
version,
await fs.promises.readFile(
path.join(process.cwd(), 'version', version, 'docker-compose.template.yml'),
'utf8'
)
])
)
);
await Promise.all([
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'cn', 'docker-compose.pg.yml'),
replace(template, 'cn', VectorEnum.pg)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'global', 'docker-compose.pg.yml'),
replace(template, 'global', VectorEnum.pg)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'cn', 'docker-compose.milvus.yml'),
replace(template, 'cn', VectorEnum.milvus)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'global', 'docker-compose.milvus.yml'),
replace(template, 'global', VectorEnum.milvus)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'cn', 'docker-compose.zilliz.yml'),
replace(template, 'cn', VectorEnum.zilliz)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'global', 'docker-compose.zilliz.yml'),
replace(template, 'global', VectorEnum.zilliz)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'cn', 'docker-compose.oceanbase.yml'),
replace(template, 'cn', VectorEnum.ob)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'global', 'docker-compose.oceanbase.yml'),
replace(template, 'global', VectorEnum.ob)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'cn', 'docker-compose.seekdb.yml'),
replace(template, 'cn', VectorEnum.seekdb)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'global', 'docker-compose.seekdb.yml'),
replace(template, 'global', VectorEnum.seekdb)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'cn', 'docker-compose.opengauss.yml'),
replace(template, 'cn', VectorEnum.opengauss)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'global', 'docker-compose.opengauss.yml'),
replace(template, 'global', VectorEnum.opengauss)
await fs.promises.rm(outputRoot, { recursive: true, force: true });
await fs.promises.mkdir(outputRoot, { recursive: true });
for (const version of deployVersions) {
for (const region of regions) {
await fs.promises.mkdir(path.join(outputRoot, version, region), { recursive: true });
}
}
await Promise.all(
deployVersions.flatMap((version) =>
regions.flatMap((region) =>
Object.entries(vectors).map(([vector, { filename }]) =>
fs.promises.writeFile(
path.join(outputRoot, version, region, `docker-compose.${filename}.yml`),
formatYamlOutput(replace(versionTemplates[version], region, vector, versionArgs[version], vectors))
)
)
)
)
]);
);
console.log('success geenrate prod files');
};
await Promise.all([generateDevFile(), generateProdFile()]);
console.log('copy the docker dir to ../document/public');
await fs.promises.cp(
path.join(process.cwd(), 'docker'),
path.join(process.cwd(), '..', 'document', 'public', 'deploy', 'docker'),
{ recursive: true }
);
const deployVersions = await loadDeployVersions();
await syncInstallScriptVersions(deployVersions);
const vectors = await loadVectorConfigs();
await Promise.all([generateDevFile(deployVersions, vectors), generateProdFile(deployVersions, vectors)]);
{
"pg": {
"filename": "pg",
"dbFile": "pg.txt",
"configFile": "pg.config.txt"
},
"milvus": {
"filename": "milvus",
"dbFile": "milvus.txt",
"configFile": "milvus.config.txt"
},
"zilliz": {
"filename": "zilliz",
"configFile": "zilliz.config.txt"
},
"ob": {
"filename": "oceanbase",
"dbFile": "ob.txt",
"configFile": "ob.config.txt",
"extraFile": "ob.extra.txt"
},
"seekdb": {
"filename": "seekdb",
"dbFile": "seekdb.txt",
"configFile": "seekdb.config.txt"
},
"opengauss": {
"filename": "opengauss",
"dbFile": "opengauss.txt",
"configFile": "opengauss.config.txt"
}
}
MILVUS_ADDRESS: http://fastgpt-vector:19530
MILVUS_TOKEN: none
OCEANBASE_URL: mysql://root%40tenantname:tenantpassword@fastgpt-vector:2881/mysql
init_sql:
name: init_sql
content: |
ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30;
OPENGAUSS_URL: postgresql://gaussdb:FastGPT@123@fastgpt-vector:5432/fastgpt
PG_URL: postgresql://username:password@fastgpt-vector:5432/postgres
SEEKDB_URL: mysql://root:seekdbpassword@fastgpt-vector:2881/mysql
MILVUS_ADDRESS: zilliz_cloud_address
MILVUS_TOKEN: zilliz_cloud_token
{
"tags": {
"fastgpt": "v4.14.20",
"fastgpt-code-sandbox": "v4.14.20",
"fastgpt-mcp_server": "v4.14.20",
"fastgpt": "v4.15.0-beta1",
"fastgpt-code-sandbox": "v4.15.0-beta1",
"fastgpt-mcp_server": "v4.15.0-beta1",
"fastgpt-plugin": "v0.6.2",
"volume-manager": "v0.1",
"agent-sandbox-image": "v0.1",
"volume-manager": "v0.2.0",
"agent-sandbox-image": "v0.2.0",
"aiproxy": "v0.5.8",
"opensandbox-server": "v0.1.9",
"opensandbox-execd": "v1.0.7",
"opensandbox-egress": "v1.0.3",
"aiproxy": "v0.5.6",
"aiproxy-pg": "0.8.0-pg15",
"mongo": "5.0.32",
"redis": "7.2-alpine",
......
# 用于部署的 docker-compose 文件:
# - FastGPT 端口映射为 3000:3000
# - FastGPT-mcp-server 端口映射 3005:3000
# - 建议修改账密后再运行
# root 默认密码(重启后会强制重置该密码成环境变量值)
x-default-root-psw: &x-default-root-psw '1234'
# 系统最高密钥凭证
x-system-key: &x-system-key 'fastgpt-xxx'
# plugin auth token
x-plugin-auth-token: &x-plugin-auth-token 'token'
# code sandbox token
x-code-sandbox-token: &x-code-sandbox-token 'codesandbox'
# aiproxy token
x-aiproxy-token: &x-aiproxy-token 'token'
# 数据库连接相关配置
x-share-db-config: &x-share-db-config
MONGODB_URI: mongodb://myusername:mypassword@fastgpt-mongo:27017/fastgpt?authSource=admin
DB_MAX_LINK: 100
REDIS_URL: redis://default:mypassword@fastgpt-redis:6379
# @see https://doc.fastgpt.cn/self-host/config/object-storage
STORAGE_VENDOR: minio # minio | aws-s3 | cos | oss
STORAGE_REGION: us-east-1
STORAGE_ACCESS_KEY_ID: minioadmin
STORAGE_SECRET_ACCESS_KEY: minioadmin
STORAGE_PUBLIC_BUCKET: fastgpt-public
STORAGE_PRIVATE_BUCKET: fastgpt-private
STORAGE_EXTERNAL_ENDPOINT: http://192.168.0.2:9000 # 一个服务器和客户端均可访问到存储桶的地址,可以是固定的宿主机 IP 或者域名,注意不要填写成 127.0.0.1 或者 localhost 等本地回环地址(因为容器里无法使用)
STORAGE_S3_ENDPOINT: http://fastgpt-minio:9000 # 协议://域名(IP):端口
STORAGE_S3_FORCE_PATH_STYLE: true
STORAGE_S3_MAX_RETRIES: 3
# Log 配置
x-log-config: &x-log-config
LOG_ENABLE_CONSOLE: true
LOG_CONSOLE_LEVEL: debug
LOG_ENABLE_OTEL: false
LOG_OTEL_LEVEL: info
LOG_OTEL_URL: http://localhost:4318/v1/logs
# 向量库相关配置
x-vec-config: &x-vec-config
${{vec.config}}
services:
# Vector DB
${{vec.db}}
fastgpt-mongo:
image: ${{mongo.image}}:${{mongo.tag}} # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
restart: always
networks:
- data
command: mongod --keyFile /data/mongodb.key --replSet rs0
environment:
- MONGO_INITDB_ROOT_USERNAME=myusername
- MONGO_INITDB_ROOT_PASSWORD=mypassword
volumes:
- fastgpt-mongo:/data/db
healthcheck:
test: ['CMD', 'mongo', '-u', 'myusername', '-p', 'mypassword', '--authenticationDatabase', 'admin', '--eval', "db.adminCommand('ping')"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
entrypoint:
- bash
- -c
- |
openssl rand -base64 128 > /data/mongodb.key
chmod 400 /data/mongodb.key
chown 999:999 /data/mongodb.key
echo 'const isInited = rs.status().ok === 1
if(!isInited){
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "fastgpt-mongo:27017" }
]
})
}' > /data/initReplicaSet.js
# 启动MongoDB服务
exec docker-entrypoint.sh "$$@" &
# 等待MongoDB服务启动
until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')"; do
echo "Waiting for MongoDB to start..."
sleep 2
done
# 执行初始化副本集的脚本
mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js
# 等待docker-entrypoint.sh脚本执行的MongoDB服务进程
wait $$!
fastgpt-redis:
image: ${{redis.image}}:${{redis.tag}}
container_name: fastgpt-redis
networks:
- data
restart: always
command: |
redis-server --requirepass mypassword --loglevel warning --maxclients 10000 --appendonly yes --save 60 10 --maxmemory 4gb --maxmemory-policy noeviction
healthcheck:
test: ['CMD', 'redis-cli', '-a', 'mypassword', 'ping']
interval: 10s
timeout: 3s
retries: 3
start_period: 30s
volumes:
- fastgpt-redis:/data
fastgpt-minio:
image: ${{minio.image}}:${{minio.tag}}
container_name: fastgpt-minio
restart: always
ports:
- 9000:9000
- 9001:9001
networks:
- data
environment:
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin
volumes:
- fastgpt-minio:/data
command: server /data --console-address ":9001"
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live']
interval: 30s
timeout: 20s
retries: 3
fastgpt-app:
container_name: fastgpt-app
image: ${{fastgpt.image}}:${{fastgpt.tag}}
ports:
- 3000:3000
networks:
- data
- app
- codesandbox
- aiproxy
depends_on:
fastgpt-mongo:
condition: service_healthy
fastgpt-vector:
condition: service_healthy
fastgpt-redis:
condition: service_healthy
fastgpt-minio:
condition: service_healthy
fastgpt-code-sandbox:
condition: service_healthy
fastgpt-plugin:
condition: service_healthy
restart: always
environment:
# 完整变量请参考: https://github.com/labring/FastGPT/blob/main/projects/app/.env.template
<<: [*x-share-db-config, *x-vec-config, *x-log-config]
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
DEFAULT_ROOT_PSW: *x-default-root-psw
# 数据库最大连接数
DB_MAX_LINK: 5
# 自动同步索引
SYNC_INDEX: true
TOKEN_KEY: fastgpt
# 文件阅读时的密钥
FILE_TOKEN_KEY: filetokenkey
# 密钥加密 key
AES256_SECRET_KEY: fastgptsecret
# 强制将图片转成 base64 传递给模型
MULTIPLE_DATA_TO_BASE64: true
# ==================== 服务地址与集成 ====================
# plugin 地址
PLUGIN_BASE_URL: http://fastgpt-plugin:3000
PLUGIN_TOKEN: *x-plugin-auth-token
# code-sandbox 地址
CODE_SANDBOX_URL: http://fastgpt-code-sandbox:3000
CODE_SANDBOX_TOKEN: *x-code-sandbox-token
# AI Proxy 的地址,如果配了该地址,优先使用
AIPROXY_API_ENDPOINT: http://fastgpt-aiproxy:3000
# AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
AIPROXY_API_TOKEN: *x-aiproxy-token
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
volumes:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: ${{fastgpt-code-sandbox.image}}:${{fastgpt-code-sandbox.tag}}
networks:
- codesandbox
restart: always
environment:
<<: [*x-log-config]
LOG_OTEL_SERVICE_NAME: fastgpt-code-sandbox
SANDBOX_TOKEN: *x-code-sandbox-token
# ===== Resource Limits =====
# Execution timeout per request (ms)
SANDBOX_MAX_TIMEOUT: 60000
# Maximum allowed memory per user code execution (MB)
# Note: System automatically adds 50MB for runtime overhead
# Actual process limit = SANDBOX_MAX_MEMORY_MB + 50MB
SANDBOX_MAX_MEMORY_MB: 256
# ===== Process Pool =====
# Number of pre-warmed worker processes (JS + Python)
SANDBOX_POOL_SIZE: 20
# ===== Network Request Limits =====
# Whether to check if the request is to a private network
CHECK_INTERNAL_IP: false
# Maximum number of HTTP requests per execution
SANDBOX_REQUEST_MAX_COUNT: 30
# Timeout for each outbound HTTP request (ms)
SANDBOX_REQUEST_TIMEOUT: 60000
# Maximum response body size for outbound requests
SANDBOX_REQUEST_MAX_RESPONSE_MB: 10
# Maximum request body size for outbound requests (MB)
SANDBOX_REQUEST_MAX_BODY_MB: 5
# ===== Module Control =====
# JS allowed modules whitelist (comma-separated)
SANDBOX_JS_ALLOWED_MODULES: lodash,dayjs,moment,uuid,crypto-js,qs,url,querystring
# Python allowed modules whitelist (comma-separated)
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ${{fastgpt-mcp_server.image}}:${{fastgpt-mcp_server.tag}}
networks:
- app
ports:
- 3003:3000
restart: always
environment:
<<: [*x-log-config]
FASTGPT_ENDPOINT: http://fastgpt-app:3000
fastgpt-plugin:
image: ${{fastgpt-plugin.image}}:${{fastgpt-plugin.tag}}
container_name: fastgpt-plugin
restart: always
networks:
- data
- app
environment:
<<: [*x-share-db-config, *x-log-config]
AUTH_TOKEN: *x-plugin-auth-token
# 工具网络请求,最大请求和响应体
SERVICE_REQUEST_MAX_CONTENT_LENGTH: 10
# 最大 API 请求体大小
MAX_API_SIZE: 10
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-plugin
depends_on:
fastgpt-mongo:
condition: service_healthy
fastgpt-minio:
condition: service_healthy
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:3000/health']
interval: 30s
timeout: 20s
retries: 3
# AI Proxy
fastgpt-aiproxy:
image: ${{aiproxy.image}}:${{aiproxy.tag}}
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
fastgpt-aiproxy-pg:
condition: service_healthy
networks:
- aiproxy
environment:
# 对应 fastgpt 里的AIPROXY_API_TOKEN
ADMIN_KEY: *x-aiproxy-token
# 错误日志详情保存时间(小时)
LOG_DETAIL_STORAGE_HOURS: 1
# 数据库连接地址
SQL_DSN: postgres://postgres:aiproxy@fastgpt-aiproxy-pg:5432/aiproxy
# 最大重试次数
RETRY_TIMES: 3
# 不需要计费
BILLING_ENABLED: false
# 不需要严格检测模型
DISABLE_MODEL_CONFIG: true
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:3000/api/status']
interval: 5s
timeout: 5s
retries: 10
fastgpt-aiproxy-pg:
image: ${{aiproxy-pg.image}}:${{aiproxy-pg.tag}} # docker hub
restart: unless-stopped
container_name: fastgpt-aiproxy-pg
volumes:
- fastgpt-aiproxy_pg:/var/lib/postgresql/data
networks:
- aiproxy
environment:
TZ: Asia/Shanghai
POSTGRES_USER: postgres
POSTGRES_DB: aiproxy
POSTGRES_PASSWORD: aiproxy
healthcheck:
test: ['CMD', 'pg_isready', '-U', 'postgres', '-d', 'aiproxy']
interval: 5s
timeout: 5s
retries: 10
networks:
data:
name: fastgpt_data
app:
name: fastgpt_app
codesandbox:
name: fastgpt_codesandbox
aiproxy:
name: fastgpt_aiproxy
volumes:
fastgpt-pg:
fastgpt-mongo:
fastgpt-redis:
fastgpt-minio:
fastgpt-milvus-minio:
fastgpt-milvus-etcd:
fastgpt-milvus-data:
fastgpt-ob-data:
fastgpt-ob-config:
fastgpt-seekdb-data:
fastgpt-seekdb-config:
fastgpt-aiproxy_pg:
${{vec.extraBlock}}
{
"tags": {
"fastgpt": "v4.14.22",
"fastgpt-code-sandbox": "v4.14.22",
"fastgpt-mcp_server": "v4.14.22",
"fastgpt-plugin": "v0.6.2",
"volume-manager": "v0.1.2",
"agent-sandbox-image": "v0.1.2",
"aiproxy": "v0.5.8",
"opensandbox-server": "v0.1.9",
"opensandbox-execd": "v1.0.7",
"opensandbox-egress": "v1.0.3",
"aiproxy-pg": "0.8.0-pg15",
"mongo": "5.0.32",
"redis": "7.2-alpine",
"minio": "RELEASE.2025-09-07T16-13-09Z",
"pg": "0.8.0-pg15",
"milvus-minio": "RELEASE.2023-03-20T20-16-18Z",
"milvus-etcd": "v3.5.5",
"milvus-standalone": "v2.4.3",
"oceanbase": "4.3.5-lts",
"seekdb": "1.0.1.0-100000392025122619"
},
"images": {
"cn": {
"fastgpt": "registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt",
"fastgpt-plugin": "registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-plugin",
"fastgpt-code-sandbox": "registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox",
"fastgpt-mcp_server": "registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server",
"volume-manager": "registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager",
"agent-sandbox-image": "registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox",
"opensandbox-server": "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-server",
"opensandbox-execd": "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-execd",
"opensandbox-egress": "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-egress",
"aiproxy": "registry.cn-hangzhou.aliyuncs.com/labring/aiproxy",
"aiproxy-pg": "registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector",
"mongo": "registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo",
"redis": "registry.cn-hangzhou.aliyuncs.com/fastgpt/redis",
"minio": "registry.cn-hangzhou.aliyuncs.com/fastgpt/minio",
"pg": "registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector",
"milvus-minio": "minio/minio",
"milvus-etcd": "quay.io/coreos/etcd",
"milvus-standalone": "milvusdb/milvus",
"oceanbase": "oceanbase/oceanbase-ce",
"seekdb": "oceanbase/seekdb"
},
"global": {
"fastgpt": "ghcr.io/labring/fastgpt",
"fastgpt-plugin": "ghcr.io/labring/fastgpt-plugin",
"fastgpt-code-sandbox": "ghcr.io/labring/fastgpt-code-sandbox",
"fastgpt-mcp_server": "ghcr.io/labring/fastgpt-mcp_server",
"volume-manager": "ghcr.io/labring/fastgpt-agent-volume-manager",
"agent-sandbox-image": "ghcr.io/labring/fastgpt-agent-sandbox",
"opensandbox-server": "opensandbox/server",
"opensandbox-execd": "opensandbox/execd",
"opensandbox-egress": "opensandbox/egress",
"aiproxy": "ghcr.io/labring/aiproxy",
"aiproxy-pg": "pgvector/pgvector",
"mongo": "mongo",
"redis": "redis",
"minio": "minio/minio",
"pg": "pgvector/pgvector",
"milvus-minio": "minio/minio",
"milvus-etcd": "quay.io/coreos/etcd",
"milvus-standalone": "milvusdb/milvus",
"oceanbase": "oceanbase/oceanbase-ce",
"seekdb": "oceanbase/seekdb"
}
}
}
......@@ -133,7 +133,7 @@ ${{vec.db}}
fastgpt-app:
container_name: fastgpt-app
image: ${{fastgpt.image}}:${{fastgpt.tag}}
image: ${{fastgpt.image}}:${{fastgpt.tag}}
ports:
- 3000:3000
networks:
......@@ -162,7 +162,7 @@ ${{vec.db}}
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -204,6 +204,7 @@ ${{vec.db}}
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
AGENT_SANDBOX_VOLUME_MANAGER_MOUNT_PATH: /workspace
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
......@@ -251,11 +252,11 @@ ${{vec.db}}
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
......
......@@ -65,6 +65,7 @@ SeekDB is a high-performance vector database based on MySQL protocol, fully comp
<Alert icon="🤖" context="success">
SeekDB uses MySQL protocol, fully compatible with OceanBase:
- Supports 1536-dimensional vector retrieval
- Built-in HNSW index algorithm
- Batch insert and query optimization
......@@ -124,7 +125,8 @@ bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh)
```
#### Method 2: Manual Download
If your environment is non-*nix or can't access external networks, manually download `docker-compose.yml`.
If your environment is non-\*nix or can't access external networks, manually download `docker-compose.yml`.
1. Download the `docker-compose.yml` file:
......@@ -132,27 +134,29 @@ If your environment is non-*nix or can't access external networks, manually down
<summary>Click to view docker-compose config file download links for different databases</summary>
- **Pgvector**
- China mirror (Alibaba Cloud): [docker-compose.pg.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.pg.yml)
- Global mirror (dockerhub, ghcr): [docker-compose.pg.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.pg.yml)
- China mirror (Alibaba Cloud): [docker-compose.pg.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/cn/docker-compose.pg.yml)
- Global mirror (dockerhub, ghcr): [docker-compose.pg.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/global/docker-compose.pg.yml)
- **Oceanbase**
- China mirror (Alibaba Cloud): [docker-compose.oceanbase.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.oceanbase.yml)
- Global mirror (dockerhub, ghcr): [docker-compose.oceanbase.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.oceanbase.yml)
- China mirror (Alibaba Cloud): [docker-compose.oceanbase.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/cn/docker-compose.oceanbase.yml)
- Global mirror (dockerhub, ghcr): [docker-compose.oceanbase.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/global/docker-compose.oceanbase.yml)
- **Milvus**
- China mirror (Alibaba Cloud): [docker-compose.milvus.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.milvus.yml)
- Global mirror (dockerhub, ghcr): [docker-compose.milvus.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.milvus.yml)
- China mirror (Alibaba Cloud): [docker-compose.milvus.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/cn/docker-compose.milvus.yml)
- Global mirror (dockerhub, ghcr): [docker-compose.milvus.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/global/docker-compose.milvus.yml)
- **Zilliz**
- China mirror (Alibaba Cloud): [docker-compose.zilliz.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.zilliz.yml)
- Global mirror (dockerhub, ghcr): [docker-compose.zilliz.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.zilliz.yml)
- China mirror (Alibaba Cloud): [docker-compose.zilliz.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/cn/docker-compose.zilliz.yml)
- Global mirror (dockerhub, ghcr): [docker-compose.zilliz.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/global/docker-compose.zilliz.yml)
- **SeekDB**
- China mirror (Alibaba Cloud): [docker-compose.seekdb.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.seekdb.yml)
- Global mirror (dockerhub, ghcr): [docker-compose.seekdb.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.seekdb.yml)
- China mirror (Alibaba Cloud): [docker-compose.seekdb.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/cn/docker-compose.seekdb.yml)
- Global mirror (dockerhub, ghcr): [docker-compose.seekdb.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/global/docker-compose.seekdb.yml)
2. Download the `config.json` file:
- [config.json](https://doc.fastgpt.cn/deploy/config/config.json)
</details>
Download config.json file:
- [config.json](https://doc.fastgpt.cn/deploy/config/config.json)
### 2. Modify Environment Variables
......@@ -165,7 +169,7 @@ These ports must be accessible:
1. Port 3000 (FastGPT main service)
2. Port 9000 (S3 service)
1. Port 3005 (FastGPT SSE MCP server service)
3. Port 3005 (FastGPT SSE MCP server service)
### 4. Start Containers
......@@ -192,9 +196,9 @@ Each container restart automatically initializes the root user with password `12
Starting from V4.14.0, the fastgpt-plugin image only provides the runtime environment without pre-installed system plugins. All FastGPT systems must manually install system plugins.
* Install via the plugin marketplace — by default it fetches from the public FastGPT Marketplace.
* If your FastGPT can't access the marketplace, visit [FastGPT Plugin Marketplace](https://marketplace.fastgpt.cn/), download .pkg files, and import them via file upload.
* You can also sort tools, set default installations, and manage tags.
- Install via the plugin marketplace — by default it fetches from the public FastGPT Marketplace.
- If your FastGPT can't access the marketplace, visit [FastGPT Plugin Marketplace](https://marketplace.fastgpt.cn/), download .pkg files, and import them via file upload.
- You can also sort tools, set default installations, and manage tags.
![alt text](../../../public/imgs/image-121.png)
......@@ -204,9 +208,9 @@ Starting from V4.14.0, the fastgpt-plugin image only provides the runtime enviro
| FastGPT-plugin Version | FastGPT Main Service |
| ---------------------- | -------------------- |
| 0.6.x | >= 4.14.11 |
| 0.5.x | >= 4.14.6, < 4.14.11 |
| < 0.5.0 | < 4.14.6
| 0.6.x | >= 4.14.11 |
| 0.5.x | >= 4.14.6, < 4.14.11 |
| < 0.5.0 | < 4.14.6 |
### S3 Connection Issues
......
......@@ -18,13 +18,13 @@ import { Alert } from '@/components/docs/Alert';
- MongoDB:用于存储除了向量外的各类数据
- PostgreSQL/Milvus/Oceanbase/SeekDB:存储向量数据
- AIProxy: 聚合各类 AI API,支持多模型调用 (任何模型问题,先自行通过 OneAPI 测试校验)
- AIProxy: 聚合各类 AI API,支持多模型调用(任何模型问题,先自行通过 OneAPI 测试校验)
</Alert>
## 推荐配置
### PgVector版本
### PgVector 版本
非常轻量,适合知识库索引量在 5000 万以下。
......@@ -34,7 +34,7 @@ import { Alert } from '@/components/docs/Alert';
| 100w 组向量 | 4c8g 50GB | 4c16g 50GB |
| 500w 组向量 | 8c32g 200GB | 16c64g 200GB |
### Milvus版本
### Milvus 版本
对于亿级以上向量性能更优秀。
......@@ -46,13 +46,13 @@ import { Alert } from '@/components/docs/Alert';
| 100w 组向量 | 未测试 | |
| 500w 组向量 | | |
### zilliz cloud版本
### zilliz cloud 版本
Zilliz Cloud 由 Milvus 原厂打造,是全托管的 SaaS 向量数据库服务,性能优于 Milvus 并提供 SLA,点击使用 [Zilliz Cloud](https://zilliz.com.cn/)。
由于向量库使用了 Cloud,无需占用本地资源,无需太关注。
### SeekDB版本
### SeekDB 版本
SeekDB 是基于 MySQL 协议的高性能向量数据库,与 OceanBase 协议完全兼容,支持高效的向量检索。
......@@ -65,6 +65,7 @@ SeekDB 鈭 MySQL 悅扯摨 OceanBase 悅
<Alert icon="🤖" context="success">
SeekDB 使用 MySQL 协议,与 OceanBase 完全兼容:
- 支持 1536 维向量检索
- 内置 HNSW 索引算法
- 提供批量插入和查询优化
......@@ -117,14 +118,15 @@ brew install orbstack
#### 方法一:使用交互式脚本部署
需要在 Linux/MacOS/Windows WSL 环境下执行,引导用户选择部署环境、向量库版本,IP地址等。
需要在 Linux/MacOS/Windows WSL 环境下执行,导用户选择部署环境、向量库版本,IP 地址等。
```bash
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh)
```
#### 方法二:手动下载部署
如果部署环境为非 *nix 环境或无法访问外网,需要手动下载 `docker-compose.yml` 进行部署
如果部署环境为非 \*nix 环境或无法访问外网,需要手动下载 `docker-compose.yml` 进行部署
1. 下载 `docker-compose.yml` 文件:
......@@ -132,27 +134,29 @@ bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh)
<summary>点击展开查看不同数据库的 docker-compose 配置文件下载地址</summary>
- **Pgvector**
- 中国大陆地区镜像源(阿里云):[docker-compose.pg.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.pg.yml)
- 全球镜像源(dockerhub, ghcr):[docker-compose.pg.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.pg.yml)
- 中国大陆地区镜像源(阿里云):[docker-compose.pg.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/cn/docker-compose.pg.yml)
- 全球镜像源(dockerhub, ghcr):[docker-compose.pg.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/global/docker-compose.pg.yml)
- **Oceanbase**
- 中国大陆地区镜像源(阿里云):[docker-compose.oceanbase.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.oceanbase.yml)
- 全球镜像源(dockerhub, ghcr):[docker-compose.oceanbase.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.oceanbase.yml)
- 中国大陆地区镜像源(阿里云):[docker-compose.oceanbase.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/cn/docker-compose.oceanbase.yml)
- 全球镜像源(dockerhub, ghcr):[docker-compose.oceanbase.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/global/docker-compose.oceanbase.yml)
- **Milvus**
- 中国大陆地区镜像源(阿里云):[docker-compose.milvus.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.milvus.yml)
- 全球镜像源(dockerhub, ghcr):[docker-compose.milvus.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.milvus.yml)
- 中国大陆地区镜像源(阿里云):[docker-compose.milvus.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/cn/docker-compose.milvus.yml)
- 全球镜像源(dockerhub, ghcr):[docker-compose.milvus.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/global/docker-compose.milvus.yml)
- **Zilliz**
- 中国大陆地区镜像源(阿里云):[docker-compose.zilliz.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.zilliz.yml)
- 全球镜像源(dockerhub, ghcr):[docker-compose.zilliz.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.zilliz.yml)
- 中国大陆地区镜像源(阿里云):[docker-compose.zilliz.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/cn/docker-compose.zilliz.yml)
- 全球镜像源(dockerhub, ghcr):[docker-compose.zilliz.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/global/docker-compose.zilliz.yml)
- **SeekDB**
- 中国大陆地区镜像源(阿里云):[docker-compose.seekdb.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.seekdb.yml)
- 全球镜像源(dockerhub, ghcr):[docker-compose.seekdb.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.seekdb.yml)
- 中国大陆地区镜像源(阿里云):[docker-compose.seekdb.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/cn/docker-compose.seekdb.yml)
- 全球镜像源(dockerhub, ghcr):[docker-compose.seekdb.yml](https://doc.fastgpt.cn/deploy/docker/v4.14/global/docker-compose.seekdb.yml)
2. 下载 `config.json` 文件:
- [config.json](https://doc.fastgpt.cn/deploy/config/config.json)
</details>
下载 config.json 文件
- [config.json](https://doc.fastgpt.cn/deploy/config/config.json)
### 2. 修改环境变量
......@@ -165,11 +169,11 @@ bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh)
1. 3000 端口(FastGPT 主服务)
2. 9000 端口(S3 服务)
1. 3005 端口(FastGPT SSE MCP server 服务)
3. 3005 端口(FastGPT SSE MCP server 服务)
### 4. 启动容器
在 docker-compose.yml 同级目录下执行。请确保`docker-compose`版本最好在2.17以上,否则可能无法执行自动化命令。
在 docker-compose.yml 同级目录下执行。请确保 `docker-compose` 版本最好在 2.17 以上,否则可能无法执行自动化命令。
```bash
# 启动容器
......@@ -179,23 +183,21 @@ docker compose --profile prepull pull opensandbox-agent-sandbox-image opensandbo
### 5. 访问 FastGPT
可通过第二步开放的端口/域名访问 FastGPT。
登录用户名为 `root`,密码为`docker-compose.yml`环境变量里设置的 `DEFAULT_ROOT_PSW`。
每次重启容器,都会自动初始化 root 用户,密码为 `1234`(与环境变量中的`DEFAULT_ROOT_PSW`一致)。
可通过第二步开放的端口/域名访问 FastGPT。登录用户名为 `root`,密码为 `docker-compose.yml` 环境变量里设置的 `DEFAULT_ROOT_PSW`。每次重启容器,都会自动初始化 root 用户,密码为 `1234`(与环境变量中的 `DEFAULT_ROOT_PSW` 一致)。
### 6. 配置模型
- 首次登录FastGPT后,系统会提示未配置`语言模型`和`索引模型`,并自动跳转模型配置页面。系统必须至少有这两类模型才能正常使用。
- 如果系统未正常跳转,可以在`账号-模型提供商`页面,进行模型配置。[点击查看相关教程](../config/model/intro.mdx)
- 目前已知可能问题:首次进入系统后整个浏览器 tab 无法响应。此时需要删除该tab,重新打开一次即可。
- 首次登录 FastGPT 后,系统会提示未配置 `语言模型` 和 `索引模型`,并自动跳转模型配置页面。系统必须至少有这两类模型才能正常使用。
- 如果系统未正常跳转,可以在 `账号-模型提供商` 页面,进行模型配置。[点击查看相关教程](../config/model/intro.mdx)
- 目前已知可能问题:首次进入系统后,整个浏览器 tab 无法响应。此时需要删除该 tab,重新打开一次即可。
### 7. 按需安装系统插件
从 V4.14.0 版本开始,fastgpt-plugin 镜像仅提供运行环境,不再预装系统插件,所有 FastGPT 系统需手动安装系统插件。
* 通过插件市场安装,默认会向公开的 FastGPT Marketplace 获取数据进行安装。
* 如果你的 FastGPT 无法访问插件市场,则可以手动访问[FastGPT 插件市场](https://marketplace.fastgpt.cn/),先下载 .pkg 文件,再通过文件导入的方式安装到系统里。
* 除了安装外,还可对工具进行排序、默认安装、标签管理等。
- 通过插件市场安装,默认会向公开的 FastGPT Marketplace 获取数据进行安装。
- 如果你的 FastGPT 无法访问插件市场,则可以手动访问 [FastGPT 插件市场](https://marketplace.fastgpt.cn/),先下载 .pkg 文件,再通过文件导入的方式安装到系统里。
- 除了安装外,还可对工具进行排序、默认安装、标签管理等。
![alt text](../../../public/imgs/image-121.png)
......@@ -203,26 +205,25 @@ docker compose --profile prepull pull opensandbox-agent-sandbox-image opensandbo
### FastGPT 和 FastGPT-plugin 版本对应
| FastGPT-plugin 版本 | FastGPT 主服务 |
| ------------------- | ---------------- |
| 0.6.x | >= 4.14.11 |
| 0.5.x | >= 4.14.6, < 4.14.11 |
| < 0.5.0 | < 4.14.6 |
| FastGPT-plugin 版本 | FastGPT 主服务 |
| ------------------- | -------------------- |
| 0.6.x | >= 4.14.11 |
| 0.5.x | >= 4.14.6, < 4.14.11 |
| < 0.5.0 | < 4.14.6 |
### S3 无法正常连接
检查`STORAGE_EXTERNAL_ENDPOINT`变量,需设置成客户端和 FastGPT 服务均可访问的地址。
检查 `STORAGE_EXTERNAL_ENDPOINT` 变量,需设置成客户端和 FastGPT 服务均可访问的地址。
**重要:**
> 填入的地址不可为`127.0.0.1`或者`localhost`等本地回环地址,可填 Docker 部署时的宿主机本地IP,但是需要把宿主机固定为静态 IP;或者统一为一个固定域名;目的是为了避免对象存储签名 URL 时,签发与上传的 URL 不一致导致的 403 错误。
> 填入的地址不可为 `127.0.0.1` 或者 `localhost` 等本地回环地址,可填 Docker 部署时的宿主机本地 IP,但是需要把宿主机固定为静态 IP;或者统一为一个固定域名;目的是为了避免对象存储签名 URL 时,签发与上传的 URL 不一致导致的 403 错误。
>
> 具体查看 [对象存储配置及常见问题](../config/object-storage.mdx)
### 登录系统后,浏览器无法响应
无法点击任何内容刷新也无效。此时需要删除该tab,重新打开一次即可。
无法点击任何内容,刷新也无效。此时需要删除该 tab,重新打开一次即可。
### Mongo 副本集自动初始化失败
......@@ -230,7 +231,7 @@ docker compose --profile prepull pull opensandbox-agent-sandbox-image opensandbo
如果是由于,无法自动初始化副本集合,可以手动初始化副本集:
1. 终端中执行下面命令,创建mongo密钥:
1. 终端中执行下面命令,创建 mongo 密钥:
```bash
openssl rand -base64 756 > ./mongodb.key
......@@ -289,12 +290,11 @@ rs.initiate({
rs.status()
```
### 如何修改API地址和密钥
### 如何修改 API 地址和密钥
默认是写了OneAPi的连接地址和密钥,可以通过修改`docker-compose.yml`中,fastgpt容器的环境变量实现。
默认是写了 OneAPi 的连接地址和密钥,可以通过修改 `docker-compose.yml` 中,fastgpt 容器的环境变量实现。
`OPENAI_BASE_URL`(API 接口的地址,需要加/v1)
`CHAT_API_KEY`(API 接口的凭证)。
`OPENAI_BASE_URL`(API 接口的地址,需要加/v1)`CHAT_API_KEY`(API 接口的凭证)。
修改完后重启:
......@@ -317,27 +317,27 @@ docker compose up -d
### 如何自定义配置文件?
修改`config.json`文件,并执行`docker compose down`再执行`docker compose up -d`重起容器。具体配置,参考[配置详解](../config/json.mdx)。
修改 `config.json` 文件,并执行 `docker compose down` 再执行 `docker compose up -d` 重起容器。具体配置,参考[配置详解](../config/json.mdx)。
### 如何检查自定义配置文件是否挂载
1. `docker logs fastgpt` 可以查看日志,在启动容器后,第一次请求网页,会进行配置文件读取,可以看看有没有读取成功以及有无错误日志。
2. `docker exec -it fastgpt sh` 进入 FastGPT 容器,可以通过`ls data`查看目录下是否成功挂载`config.json`文件。可通过`cat data/config.json`查看配置文件。
2. `docker exec -it fastgpt sh` 进入 FastGPT 容器,可以通过 `ls data` 查看目录下是否成功挂载 `config.json` 文件。可通过 `cat data/config.json` 查看配置文件。
**可能不生效的原因**
1. 挂载目录不正确
2. 配置文件不正确,日志中会提示`invalid json`,配置文件需要是标准的 JSON 文件。
3. 修改后,没有`docker compose down`再`docker compose up -d`,restart是不会重新挂载文件的。
2. 配置文件不正确,日志会提示 `invalid json`,配置文件需要是标准的 JSON 文件。
3. 修改后,没有 `docker compose down` 再 `docker compose up -d`,restart 是不会重新挂载文件的。
### 如何检查环境变量是否正常加载
1. `docker exec -it fastgpt sh` 进入 FastGPT 容器。
2. 直接输入`env`命令查看所有环境变量。
2. 直接输入 `env` 命令查看所有环境变量。
### 为什么无法连接`本地模型`镜像
### 为什么无法连接 `本地模型` 镜像
`docker-compose.yml`中使用了桥接的模式建立了`fastgpt`网络,如想通过0.0.0.0或镜像名访问其它镜像,需将其它镜像也加入到网络中。
`docker-compose.yml` 中使用了桥接的模式建立了 `fastgpt` 网络,如想通过 0.0.0.0 或镜像名访问其它镜像,需将其它镜像也加入到网络中。
### 端口冲突怎么解决?
......@@ -345,7 +345,7 @@ docker-compose 蝡臬摰蛹嚗垢:餈垢`
桥接模式下,容器运行端口不会有冲突,但是会有映射端口冲突,只需将映射端口修改成不同端口即可。
果`容器1`需要连接`容器2`,使用`容器2:运行端口`来进行连接即可。
果 `容器1` 需要连接 `容器2`,使用 `容器2:运行端口` 来进行连接即可。
(自行补习 docker 基本知识)
......@@ -361,21 +361,21 @@ PG 摨瓷銝/仃韐伐隞交敹astGPT 隡
可能原因:
1. arm架构。需要使用 Mongo 官方镜像: mongo:5.0.18
1. arm 架构。需要使用 Mongo 官方镜像:mongo:5.0.18
2. cpu 不支持 AVX,无法用 mongo5,需要换成 mongo4.x。把 mongo 的 image 换成: mongo:4.4.29
### Operation `auth_codes.findOne()` buffering timed out after 10000ms
mongo连接失败,查看mongo的运行状态**对应日志**。
mongo 连接失败,查看 mongo 的运行状态**对应日志**。
可能原因:
1. mongo 服务有没有起来(有些 cpu 不支持 AVX,无法用 mongo5,需要换成 mongo4.x,可以docker hub找个最新的4.x,修改镜像版本,重新运行)
2. 连接数据库的环境变量填写错误(账号密码,注意host和port,非容器网络连接,需要用公网ip并加上 directConnection=true)
1. mongo 服务有没有起来(有些 cpu 不支持 AVX,无法用 mongo5,需要换成 mongo4.x,可以 docker hub 找个最新的 4.x,修改镜像版本,重新运行)
2. 连接数据库的环境变量填写错误(账号密码,注意 host 和 port,非容器网络连接,需要用公网 ip 并加上 directConnection=true)
3. 副本集启动失败。导致容器一直重启。
4. `Illegal instruction.... Waiting for MongoDB to start`: cpu 不支持 AVX,无法用 mongo5,需要换成 mongo4.x
4. `Illegal instruction.... Waiting for MongoDB to start` : cpu 不支持 AVX,无法用 mongo5,需要换成 mongo4.x
### 首次部署,root用户提示未注册
### 首次部署,root 用户提示未注册
日志会有错误提示。大概率是没有启动 Mongo 副本集模式。
......@@ -392,15 +392,16 @@ mongo餈憭梯揖嚗ongo**撖孵敹**
### 如何修改密码
修改`docker-compose.yml`文件中`DEFAULT_ROOT_PSW`并重启即可,密码会自动更新。
修改 `docker-compose.yml` 文件中 `DEFAULT_ROOT_PSW` 并重启即可,密码会自动更新。
### 部署 Zilliz 版本,获取账号和密钥
打开 [Zilliz Cloud](https://zilliz.com.cn/), 创建实例并获取相关秘钥。
打开 [Zilliz Cloud](https://zilliz.com.cn/) , 创建实例并获取相关秘钥。
![zilliz_key](../../../public/imgs/zilliz_key.png)
<Alert icon="🤖" context="success">
1. 修改`MILVUS_ADDRESS`和`MILVUS_TOKEN`链接参数,分别对应 `zilliz` 的 `Public Endpoint` 和 `Api key`,记得把自己ip加入白名单。
1. 修改 `MILVUS_ADDRESS` 和 `MILVUS_TOKEN` 链接参数,分别对应 `zilliz` 的 `Public Endpoint` 和 `Api key`,记得把自己 ip 加入白名单。
</Alert>
......@@ -9,7 +9,7 @@ description: 'FastGPT V4.14.10 Release Notes'
The following configuration adjustments are for `docker compose` deployments. `sealos` commercial users can contact support for an online sandbox service solution.
Open the [latest yml deployment file](https://github.com/labring/FastGPT/blob/main/deploy/docker/global/docker-compose.pg.yml) and add the following:
Open the [latest yml deployment file](https://github.com/labring/FastGPT/blob/main/document/public/deploy/docker/v4.14/global/docker-compose.pg.yml) and add the following:
1. Add the `x-volume-manager-auth-token: &x-volume-manager-auth-token 'vmtoken'` variable configuration at the top of the file.
2. Add 3 new services: `opensandbox-server`, `volume-manager`, and `agent-sandbox-image`.
......
......@@ -9,7 +9,7 @@ description: 'FastGPT V4.14.10 更新说明'
以下针对的是 `docker compose` 部署方案的配置调整,使用 `sealos` 的商业版用户,可私信支持人员,提供在线的沙盒服务方案。
参考[最新 yml 部署文件](https://github.com/labring/FastGPT/blob/main/deploy/docker/cn/docker-compose.pg.yml),调整本地 yml 文件,加入以下内容:
参考[最新 yml 部署文件](https://github.com/labring/FastGPT/blob/main/document/public/deploy/docker/v4.14/cn/docker-compose.pg.yml),调整本地 yml 文件,加入以下内容:
1. 在文件顶部增加 `x-volume-manager-auth-token: &x-volume-manager-auth-token 'vmtoken'` 变量配置。
2. 增加 5 组 services: `opensandbox-server` , `opensandbox-agent-sandbox-image` , `opensandbox-execd-image` , `opensandbox-egress-image` , `fastgpt-volume-manager`
......
......@@ -7,7 +7,7 @@ description: 'FastGPT V4.10.0 Update Notes'
### Docker Deployment
- Refer to the latest [docker-compose.yml](https://github.com/labring/FastGPT/blob/main/deploy/docker/docker-compose-pgvector.yml) file to add the `fastgpt-plugin` and `minio` services.
- Refer to the latest [docker-compose.yml](https://github.com/labring/FastGPT/blob/main/document/public/deploy/docker/main/global/docker-compose.pg.yml) file to add the `fastgpt-plugin` and `minio` services.
- Set the `fastgpt-plugin` environment variable `AUTH_TOKEN` to a sufficiently complex value.
- Set the `fastgpt-plugin` environment variable `MINIO_CUSTOM_ENDPOINT` to `http://ip:port` or a relevant domain name that is accessible to FastGPT users.
- Update the environment variables for the `fastgpt` and `fastgpt-pro` (commercial edition) containers:
......@@ -16,6 +16,7 @@ description: 'FastGPT V4.10.0 Update Notes'
PLUGIN_BASE_URL=http://fastgpt-plugin:3000
PLUGIN_TOKEN=the AUTH_TOKEN value you just set
```
- Update the `fastgpt` and `fastgpt-pro` image tags to: v4.10.0-fix
- Run `docker-compose up -d` to start/update all services.
......
......@@ -7,25 +7,26 @@ description: 'FastGPT V4.10.0 更新说明'
### Docker 版本
- 参考最新的[docker-compose.yml](https://github.com/labring/FastGPT/blob/main/deploy/docker/docker-compose-pgvector.yml)文件,加入`fastgpt-plugin`和`minio`服务。
- 修改`fastgpt-plugin`环境变量`AUTH_TOKEN`为较复杂的值。
- 修改`fastgpt-plugin`环境变量`MINIO_CUSTOM_ENDPOINT`为`http://ip:port` 或相关域名,要求fastgpt 用户可访问。
- 更新`fastgpt`和`fastgpt-pro`(商业版)容器的环境变量:
- 参考最新的 [docker-compose.yml](https://github.com/labring/FastGPT/blob/main/document/public/deploy/docker/main/global/docker-compose.pg.yml) 文件,加入 `fastgpt-plugin` 和 `minio` 服务。
- 修改 `fastgpt-plugin` 环境变量 `AUTH_TOKEN` 为较复杂的值。
- 修改 `fastgpt-plugin` 环境变量 `MINIO_CUSTOM_ENDPOINT` 为 `http://ip:port` 或相关域名,要求 fastgpt 用户可访问。
- 更新 `fastgpt` 和 `fastgpt-pro` (商业版)容器的环境变量:
```
PLUGIN_BASE_URL=http://fastgpt-plugin:3000
PLUGIN_TOKEN=刚修改的 AUTH_TOKEN 值
```
- 更新`fastgpt`和`fastgpt-pro`镜像 tag: v4.10.0-fix
- `docker-compose up -d`启动/更新所有服务。
- 更新 `fastgpt` 和 `fastgpt-pro` 镜像 tag: v4.10.0-fix
- `docker-compose up -d` 启动/更新所有服务。
### Sealos 版本
- 在 Sealos 桌面的`对象存储`中,新建一个存储桶,设置`publicRead`权限。并获取相关密钥:
- 在 Sealos 桌面的 `对象存储` 中,新建一个存储桶,设置 `publicRead` 权限。并获取相关密钥:
![](../../../../public/imgs/sealos-s3.png)
- 部署`fastgpt-plugin`服务,镜像`registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-plugin:v0.1.0`,内网暴露端口3000,无需公网访问,设置环境变量:
- 部署 `fastgpt-plugin` 服务,镜像 `registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-plugin:v0.1.0`,内网暴露端口 3000,无需公网访问,设置环境变量:
```
AUTH_TOKEN=鉴权 token
......@@ -43,7 +44,7 @@ MINIO_SECRET_KEY=Secret Key
MINIO_BUCKET=存储桶名
```
- 更新`fastgpt`和`fastgpt-pro`(商业版)容器的环境变量以及镜像 tag: v4.10.0-fix
- 更新 `fastgpt` 和 `fastgpt-pro` (商业版)容器的环境变量以及镜像 tag: v4.10.0-fix
```
PLUGIN_BASE_URL=fastgpt-plugin 服务的内网地址
......
......@@ -16,7 +16,7 @@ SANDBOX_URL=internal-network-address
## Docker Deployment
You can pull the latest [docker-compose.yml](https://github.com/labring/FastGPT/blob/main/deploy/docker/docker-compose.yml) file for reference.
You can pull the latest [docker-compose.yml](https://github.com/labring/FastGPT/blob/main/document/public/deploy/docker/main/global/docker-compose.pg.yml) file for reference.
1. Add a new `sandbox` container.
2. Add the `SANDBOX_URL` environment variable to the fastgpt and fastgpt-pro (commercial edition) containers.
......
......@@ -6,7 +6,7 @@ description: FastGPT V4.8.2 更新说明
## Sealos 升级说明
1. 在应用管理中新建一个应用,镜像为:registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.8.1
2. 无需外网访问地址,端口号为3000
2. 无需外网访问地址,端口号为 3000
3. 部署完后,复制应用的内网地址
4. 点击变更`FastGPT - 修改环境变量,增加下面的环境变量即可
......@@ -16,7 +16,7 @@ SANDBOX_URL=内网地址
## Docker 部署
可以拉取最新 [docker-compose.yml](https://github.com/labring/FastGPT/blob/main/deploy/docker/docker-compose.yml) 文件参考
可以拉取最新 [docker-compose.yml](https://github.com/labring/FastGPT/blob/main/document/public/deploy/docker/main/global/docker-compose.pg.yml) 文件参考
1. 新增一个容器 `sandbox`
2. fastgpt 和 fastgpt-pro(商业版) 容器新增环境变量: `SANDBOX_URL`
......@@ -24,7 +24,7 @@ SANDBOX_URL=内网地址
## V4.8.2 更新说明
1. 新增 - js代码运行节点(更完整的type提醒,后续继续完善)
1. 新增 - js 代码运行节点(更完整的 type 提醒,后续继续完善)
2. 新增 - 内容提取节点支持数据类型选择
3. 修复 - 新增的站点同步无法使用
4. 修复 - 定时任务无法输入内容
......@@ -11,7 +11,7 @@ description: FastGPT V4.8.3 Release Notes
## V4.8.3 Release Notes
1. New - Milvus database support. See the latest [docker-compose-milvus.yml](https://github.com/labring/FastGPT/blob/main/deploy/docker/docker-compose-milvus.yml) for reference.
1. New - Milvus database support. See the latest [docker-compose-milvus.yml](https://github.com/labring/FastGPT/blob/main/document/public/deploy/docker/main/global/docker-compose.milvus.yml) for reference.
2. New - Added logging for empty answers in the chat API to help troubleshoot model issues.
3. New - If/Else conditional node now supports regex for string matching.
4. New - Code execution node now supports console.log for debug output.
......
......@@ -11,8 +11,8 @@ description: FastGPT V4.8.3 更新说明
## V4.8.3 更新说明
1. 新增 - 支持 Milvus 数据库, 可参考最新的 [docker-compose-milvus.yml](https://github.com/labring/FastGPT/blob/main/deploy/docker/docker-compose-milvus.yml).
1. 新增 - 支持 Milvus 数据库,可参考最新的 [docker-compose-milvus.yml](https://github.com/labring/FastGPT/blob/main/document/public/deploy/docker/main/global/docker-compose.milvus.yml) .
2. 新增 - 给 chat 接口 empty answer 增加 log,便于排查模型问题。
3. 新增 - ifelse判断器,字符串支持正则。
3. 新增 - ifelse 判断器,字符串支持正则。
4. 新增 - 代码运行支持 console.log 输出调试。
5. 修复 - 变量更新在 Debug 模式下出错。
......@@ -12,7 +12,7 @@ description: FastGPT V4.9.0 Release Notes
- Update FastGPT image tag: v4.9.0
- Update FastGPT Pro image tag: v4.9.0
- Sandbox image: no update required
- Update PG container to v0.8.0-pg15. See the [latest yml](https://raw.githubusercontent.com/labring/FastGPT/main/deploy/docker/docker-compose-pgvector.yml)
- Update PG container to v0.8.0-pg15. See the [latest yml](https://raw.githubusercontent.com/labring/FastGPT/main/document/public/deploy/docker/main/global/docker-compose.pg.yml)
### 3. Replace OneAPI (Optional)
......@@ -20,7 +20,7 @@ Follow this step if you want to replace OneAPI with [AI Proxy](https://github.co
#### 1. Modify the yml File
Refer to the [latest yml](https://raw.githubusercontent.com/labring/FastGPT/main/deploy/docker/docker-compose-pgvector.yml) file. OneAPI has been removed and AI Proxy configuration has been added, including one service and one PgSQL database. Append the `aiproxy` configuration after the OneAPI configuration (don't remove OneAPI yet — the initialization process will automatically sync OneAPI's configuration).
Refer to the [latest yml](https://raw.githubusercontent.com/labring/FastGPT/main/document/public/deploy/docker/main/global/docker-compose.pg.yml) file. OneAPI has been removed and AI Proxy configuration has been added, including one service and one PgSQL database. Append the `aiproxy` configuration after the OneAPI configuration (don't remove OneAPI yet — the initialization process will automatically sync OneAPI's configuration).
<details>
<summary>AI Proxy Yml Configuration</summary>
......
......@@ -12,7 +12,7 @@ description: FastGPT V4.9.0 更新说明
- 更新 FastGPT 镜像 tag: v4.9.0
- 更新 FastGPT 商业版镜像 tag: v4.9.0
- Sandbox 镜像,可以不更新
- 更新 PG 容器为 v0.8.0-pg15, 可以查看[最新的 yml](https://raw.githubusercontent.com/labring/FastGPT/main/deploy/docker/docker-compose-pgvector.yml)
- 更新 PG 容器为 v0.8.0-pg15, 可以查看[最新的 yml](https://raw.githubusercontent.com/labring/FastGPT/main/document/public/deploy/docker/main/global/docker-compose.pg.yml)
### 3. 替换 OneAPI(可选)
......@@ -20,7 +20,7 @@ description: FastGPT V4.9.0 更新说明
#### 1. 修改 yml 文件
参考[最新的 yml](https://raw.githubusercontent.com/labring/FastGPT/main/deploy/docker/docker-compose-pgvector.yml) 文件。里面已移除 OneAPI 并添加了 AIProxy配置。包含一个服务和一个 PgSQL 数据库。将 `aiproxy` 的配置`追加`到 OneAPI 的配置后面(先不要删除 OneAPI,有一个初始化会自动同步 OneAPI 的配置)
参考[最新的 yml](https://raw.githubusercontent.com/labring/FastGPT/main/document/public/deploy/docker/main/global/docker-compose.pg.yml) 文件。里面已移除 OneAPI 并添加了 AIProxy 配置。包含一个服务和一个 PgSQL 数据库。将 `aiproxy` 的配置 `追加` 到 OneAPI 的配置后面(先不要删除 OneAPI,有一个初始化会自动同步 OneAPI 的配置)
<details>
<summary>AI Proxy Yml 配置</summary>
......@@ -92,7 +92,7 @@ description: FastGPT V4.9.0 更新说明
`docker-compose down` 停止服务,然后 `docker-compose up -d` 启动服务,此时会追加 `aiproxy` 服务,并修改 FastGPT 的配置。
#### 4. 执行OneAPI迁移AI proxy脚本
#### 4. 执行 OneAPI 迁移 AI proxy 脚本
- 可联网方案:
......@@ -111,7 +111,7 @@ curl --location --request POST 'http://localhost:3000/api/channels/import/oneapi
# 返回 {"data":[],"success":true} 代表成功
```
- 无法联网时,可打开`aiproxy`的外网暴露端口,然后在本地执行脚本。
- 无法联网时,可打开 `aiproxy` 的外网暴露端口,然后在本地执行脚本。
aiProxy 暴露端口:3003:3000,修改后重新 `docker-compose up -d` 启动服务。
......@@ -128,9 +128,9 @@ curl --location --request POST 'http://localhost:3003/api/channels/import/oneapi
- 如果不熟悉 docker 操作,建议不要走脚本迁移,直接删除 OneAPI 所有内容,然后手动重新添加渠道。
#### 5. 进入 FastGPT 检查`AI Proxy` 服务是否正常启动。
#### 5. 进入 FastGPT 检查 `AI Proxy` 服务是否正常启动。
登录 root 账号后,在`账号-模型提供商`页面,可以看到多出了`模型渠道`和`调用日志`两个选项,打开模型渠道,可以看到之前 OneAPI 的渠道,说明迁移完成,此时可以手动再检查下渠道是否正常。
登录 root 账号后,在 `账号-模型提供商` 页面,可以看到多出了 `模型渠道` 和 `调用日志` 两个选项,打开模型渠道,可以看到之前 OneAPI 的渠道,说明迁移完成,此时可以手动再检查下渠道是否正常。
#### 6. 删除 OneAPI 服务
......@@ -144,7 +144,7 @@ docker-compose up -d
### 4. 运行 FastGPT 升级脚本
从任意终端,发起 1 个 HTTP 请求。其中 `{{rootkey}}` 替换成环境变量里的 `rootkey`;`{{host}}` 替换成**FastGPT 域名**。
从任意终端,发起 1 个 HTTP 请求。其中 `{{rootkey}}` 替换成环境变量里的 `rootkey`;`{{host}}` 替换成 **FastGPT 域名**。
```bash
curl --location --request POST 'https://{{host}}/api/admin/initv490' \
......@@ -163,11 +163,11 @@ curl --location --request POST 'https://{{host}}/api/admin/initv490' \
1. 弃用 - 之前私有化部署的自定义文件解析方案,请同步更新到最新的配置方案。[点击查看 PDF 增强解析配置](../../config/json.mdx#使用-doc2x-解析-pdf-文件)
2. 弃用 - 弃用旧版本地文件上传 API:/api/core/dataset/collection/create/file(以前仅商业版可用的 API,该接口已放切换成:/api/core/dataset/collection/create/localFile)
3. 停止维护,即将弃用 - 外部文件库相关 API,可通过 API 文件库替代。
4. API更新 - 上传文件至知识库、创建连接集合、API 文件库、推送分块数据等带有 `trainingType` 字段的接口,`trainingType`字段未来仅支持`chunk`和`QA`两种模式。增强索引模式将设置单独字段:`autoIndexes`,目前仍有适配旧版`trainingType=auto`代码,但请尽快变更成新接口类型。具体可见:[知识库 OpenAPI 文档](../../../openapi/dataset.mdx)
4. API 更新 - 上传文件至知识库、创建连接集合、API 文件库、推送分块数据等带有 `trainingType` 字段的接口,`trainingType` 字段未来仅支持 `chunk` 和 `QA` 两种模式。增强索引模式将设置单独字段:`autoIndexes`,目前仍有适配旧版 `trainingType=auto` 代码,但请尽快变更成新接口类型。具体可见:[知识库 OpenAPI 文档](../../../openapi/dataset.mdx)
## 🚀 新增内容
1. PDF增强解析交互添加到页面上。同时内嵌 Doc2x 服务,可直接使用 Doc2x 服务解析 PDF 文件。
1. PDF 增强解析交互添加到页面上。同时内嵌 Doc2x 服务,可直接使用 Doc2x 服务解析 PDF 文件。
2. 图片自动标注,同时修改知识库文件上传部分数据逻辑和交互。
3. pg vector 插件升级 0.8.0 版本,引入迭代搜索,减少部分数据无法被检索的情况。
4. 新增 qwen-qwq 系列模型配置。
......
......@@ -278,7 +278,7 @@
"content/self-host/upgrading/4-14/4149.en.mdx": "2026-04-26T21:08:47+08:00",
"content/self-host/upgrading/4-14/4149.mdx": "2026-04-26T21:08:47+08:00",
"content/self-host/upgrading/4-15/4150.mdx": "2026-05-20T17:52:26+08:00",
"content/self-host/upgrading/4-15/41502.mdx": "2026-05-23T22:47:02+08:00",
"content/self-host/upgrading/4-15/41502.mdx": "2026-05-23T23:33:02+08:00",
"content/self-host/upgrading/outdated/40.en.mdx": "2026-04-26T21:08:47+08:00",
"content/self-host/upgrading/outdated/40.mdx": "2026-04-26T21:08:47+08:00",
"content/self-host/upgrading/outdated/41.en.mdx": "2026-04-26T21:08:47+08:00",
......
......@@ -11,8 +11,6 @@ x-system-key: &x-system-key 'fastgpt-xxx'
x-plugin-auth-token: &x-plugin-auth-token 'token'
# code sandbox token
x-code-sandbox-token: &x-code-sandbox-token 'codesandbox'
# volume manager auth token
x-volume-manager-auth-token: &x-volume-manager-auth-token 'vmtoken'
# aiproxy token
x-aiproxy-token: &x-aiproxy-token 'token'
# 数据库连接相关配置
......@@ -43,7 +41,6 @@ x-log-config: &x-log-config
x-vec-config: &x-vec-config
MILVUS_ADDRESS: http://fastgpt-vector:19530
MILVUS_TOKEN: none
services:
# Vector DB
......@@ -104,7 +101,6 @@ services:
depends_on:
- 'fastgpt-milvus-etcd'
- 'fastgpt-milvus-minio'
fastgpt-mongo:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -192,14 +188,13 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.15.0-beta1
ports:
- 3000:3000
networks:
- data
- app
- codesandbox
- opensandbox
- aiproxy
depends_on:
fastgpt-mongo:
......@@ -221,7 +216,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -250,20 +245,6 @@ services:
# AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
AIPROXY_API_TOKEN: *x-aiproxy-token
# ==================== Agent sandbox 配置 ====================
AGENT_SANDBOX_PROVIDER: opensandbox
# OpenSandbox 配置(PROVIDER: opensandbox 时生效)
AGENT_SANDBOX_OPENSANDBOX_BASEURL: http://opensandbox-server:8090
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
......@@ -271,7 +252,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.15.0-beta1
networks:
- codesandbox
restart: always
......@@ -310,17 +291,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.15.0-beta1
networks:
- app
ports:
......@@ -356,79 +337,9 @@ services:
timeout: 20s
retries: 3
# 沙盒控制器:管理 Docker 容器的创建/执行/停止/删除
# runtime=docker 模式需要挂载 Docker socket
# 配置 docker.host_ip 为宿主机 LAN IP(容器内访问宿主机服务用)
opensandbox-server:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-server:v0.1.9
container_name: fastgpt-opensandbox-server
restart: always
networks:
- opensandbox
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
configs:
- source: opensandbox-config
target: /etc/opensandbox/config.toml
environment:
SANDBOX_CONFIG_PATH: /etc/opensandbox/config.toml
healthcheck:
test:
[
'CMD',
'python',
'-c',
'import urllib.request,sys; sys.exit(0 if urllib.request.urlopen("http://localhost:8090/health",timeout=3).status==200 else 1)'
]
interval: 10s
timeout: 5s
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1
profiles:
- prepull
opensandbox-execd-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-execd:v1.0.7
profiles:
- prepull
opensandbox-egress-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-egress:v1.0.3
profiles:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
container_name: fastgpt-volume-manager
restart: always
networks:
- opensandbox
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
environment:
PORT: 3000
VM_RUNTIME: docker
VM_AUTH_TOKEN: *x-volume-manager-auth-token # 对应 AGENT_SANDBOX_VOLUME_MANAGER_TOKEN
VM_VOLUME_NAME_PREFIX: fastgpt-session # volume 名称前缀
VM_LOG_LEVEL: info
VM_DOCKER_API_VERSION: v1.44
healthcheck:
test:
[
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
interval: 10s
timeout: 5s
retries: 5
# AI Proxy
fastgpt-aiproxy:
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.6
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -479,8 +390,6 @@ networks:
name: fastgpt_app
codesandbox:
name: fastgpt_codesandbox
opensandbox:
name: fastgpt_opensandbox
aiproxy:
name: fastgpt_aiproxy
......@@ -497,31 +406,3 @@ volumes:
fastgpt-seekdb-data:
fastgpt-seekdb-config:
fastgpt-aiproxy_pg:
configs:
opensandbox-config:
content: |
[server]
host = "0.0.0.0"
port = 8090
log_level = "INFO"
[runtime]
type = "docker"
execd_image = "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-execd:v1.0.7"
[egress]
image = "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-egress:v1.0.3"
[docker]
network_mode = "fastgpt_opensandbox"
# When server runs in a container, set host_ip to the host's IP or hostname so bridge-mode endpoints are reachable (e.g. host.docker.internal or the host LAN IP).
# It's required when server deployed with docker container under host.
host_ip = "host.docker.internal"
drop_capabilities = ["AUDIT_WRITE", "MKNOD", "NET_ADMIN", "NET_RAW", "SYS_ADMIN", "SYS_MODULE", "SYS_PTRACE", "SYS_TIME", "SYS_TTY_CONFIG"]
no_new_privileges = true
pids_limit = 512
[ingress]
mode = "direct"
......@@ -11,8 +11,6 @@ x-system-key: &x-system-key 'fastgpt-xxx'
x-plugin-auth-token: &x-plugin-auth-token 'token'
# code sandbox token
x-code-sandbox-token: &x-code-sandbox-token 'codesandbox'
# volume manager auth token
x-volume-manager-auth-token: &x-volume-manager-auth-token 'vmtoken'
# aiproxy token
x-aiproxy-token: &x-aiproxy-token 'token'
# 数据库连接相关配置
......@@ -43,7 +41,6 @@ x-log-config: &x-log-config
x-vec-config: &x-vec-config
OCEANBASE_URL: mysql://root%40tenantname:tenantpassword@fastgpt-vector:2881/mysql
services:
# Vector DB
fastgpt-vector:
......@@ -82,7 +79,6 @@ services:
timeout: 10s
retries: 1000
start_period: 10s
fastgpt-mongo:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -170,14 +166,13 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.15.0-beta1
ports:
- 3000:3000
networks:
- data
- app
- codesandbox
- opensandbox
- aiproxy
depends_on:
fastgpt-mongo:
......@@ -199,7 +194,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -228,20 +223,6 @@ services:
# AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
AIPROXY_API_TOKEN: *x-aiproxy-token
# ==================== Agent sandbox 配置 ====================
AGENT_SANDBOX_PROVIDER: opensandbox
# OpenSandbox 配置(PROVIDER: opensandbox 时生效)
AGENT_SANDBOX_OPENSANDBOX_BASEURL: http://opensandbox-server:8090
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
......@@ -249,7 +230,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.15.0-beta1
networks:
- codesandbox
restart: always
......@@ -288,17 +269,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.15.0-beta1
networks:
- app
ports:
......@@ -334,79 +315,9 @@ services:
timeout: 20s
retries: 3
# 沙盒控制器:管理 Docker 容器的创建/执行/停止/删除
# runtime=docker 模式需要挂载 Docker socket
# 配置 docker.host_ip 为宿主机 LAN IP(容器内访问宿主机服务用)
opensandbox-server:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-server:v0.1.9
container_name: fastgpt-opensandbox-server
restart: always
networks:
- opensandbox
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
configs:
- source: opensandbox-config
target: /etc/opensandbox/config.toml
environment:
SANDBOX_CONFIG_PATH: /etc/opensandbox/config.toml
healthcheck:
test:
[
'CMD',
'python',
'-c',
'import urllib.request,sys; sys.exit(0 if urllib.request.urlopen("http://localhost:8090/health",timeout=3).status==200 else 1)'
]
interval: 10s
timeout: 5s
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1
profiles:
- prepull
opensandbox-execd-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-execd:v1.0.7
profiles:
- prepull
opensandbox-egress-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-egress:v1.0.3
profiles:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
container_name: fastgpt-volume-manager
restart: always
networks:
- opensandbox
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
environment:
PORT: 3000
VM_RUNTIME: docker
VM_AUTH_TOKEN: *x-volume-manager-auth-token # 对应 AGENT_SANDBOX_VOLUME_MANAGER_TOKEN
VM_VOLUME_NAME_PREFIX: fastgpt-session # volume 名称前缀
VM_LOG_LEVEL: info
VM_DOCKER_API_VERSION: v1.44
healthcheck:
test:
[
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
interval: 10s
timeout: 5s
retries: 5
# AI Proxy
fastgpt-aiproxy:
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.6
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -457,8 +368,6 @@ networks:
name: fastgpt_app
codesandbox:
name: fastgpt_codesandbox
opensandbox:
name: fastgpt_opensandbox
aiproxy:
name: fastgpt_aiproxy
......@@ -477,33 +386,7 @@ volumes:
fastgpt-aiproxy_pg:
configs:
opensandbox-config:
content: |
[server]
host = "0.0.0.0"
port = 8090
log_level = "INFO"
[runtime]
type = "docker"
execd_image = "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-execd:v1.0.7"
[egress]
image = "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-egress:v1.0.3"
[docker]
network_mode = "fastgpt_opensandbox"
# When server runs in a container, set host_ip to the host's IP or hostname so bridge-mode endpoints are reachable (e.g. host.docker.internal or the host LAN IP).
# It's required when server deployed with docker container under host.
host_ip = "host.docker.internal"
drop_capabilities = ["AUDIT_WRITE", "MKNOD", "NET_ADMIN", "NET_RAW", "SYS_ADMIN", "SYS_MODULE", "SYS_PTRACE", "SYS_TIME", "SYS_TTY_CONFIG"]
no_new_privileges = true
pids_limit = 512
[ingress]
mode = "direct"
init_sql:
name: init_sql
content: |
ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30;
......@@ -11,8 +11,6 @@ x-system-key: &x-system-key 'fastgpt-xxx'
x-plugin-auth-token: &x-plugin-auth-token 'token'
# code sandbox token
x-code-sandbox-token: &x-code-sandbox-token 'codesandbox'
# volume manager auth token
x-volume-manager-auth-token: &x-volume-manager-auth-token 'vmtoken'
# aiproxy token
x-aiproxy-token: &x-aiproxy-token 'token'
# 数据库连接相关配置
......@@ -152,14 +150,13 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.15.0-beta1
ports:
- 3000:3000
networks:
- data
- app
- codesandbox
- opensandbox
- aiproxy
depends_on:
fastgpt-mongo:
......@@ -181,7 +178,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -210,20 +207,6 @@ services:
# AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
AIPROXY_API_TOKEN: *x-aiproxy-token
# ==================== Agent sandbox 配置 ====================
AGENT_SANDBOX_PROVIDER: opensandbox
# OpenSandbox 配置(PROVIDER: opensandbox 时生效)
AGENT_SANDBOX_OPENSANDBOX_BASEURL: http://opensandbox-server:8090
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
......@@ -231,7 +214,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.15.0-beta1
networks:
- codesandbox
restart: always
......@@ -270,17 +253,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.15.0-beta1
networks:
- app
ports:
......@@ -316,79 +299,9 @@ services:
timeout: 20s
retries: 3
# 沙盒控制器:管理 Docker 容器的创建/执行/停止/删除
# runtime=docker 模式需要挂载 Docker socket
# 配置 docker.host_ip 为宿主机 LAN IP(容器内访问宿主机服务用)
opensandbox-server:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-server:v0.1.9
container_name: fastgpt-opensandbox-server
restart: always
networks:
- opensandbox
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
configs:
- source: opensandbox-config
target: /etc/opensandbox/config.toml
environment:
SANDBOX_CONFIG_PATH: /etc/opensandbox/config.toml
healthcheck:
test:
[
'CMD',
'python',
'-c',
'import urllib.request,sys; sys.exit(0 if urllib.request.urlopen("http://localhost:8090/health",timeout=3).status==200 else 1)'
]
interval: 10s
timeout: 5s
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1
profiles:
- prepull
opensandbox-execd-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-execd:v1.0.7
profiles:
- prepull
opensandbox-egress-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-egress:v1.0.3
profiles:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
container_name: fastgpt-volume-manager
restart: always
networks:
- opensandbox
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
environment:
PORT: 3000
VM_RUNTIME: docker
VM_AUTH_TOKEN: *x-volume-manager-auth-token # 对应 AGENT_SANDBOX_VOLUME_MANAGER_TOKEN
VM_VOLUME_NAME_PREFIX: fastgpt-session # volume 名称前缀
VM_LOG_LEVEL: info
VM_DOCKER_API_VERSION: v1.44
healthcheck:
test:
[
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
interval: 10s
timeout: 5s
retries: 5
# AI Proxy
fastgpt-aiproxy:
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.6
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -439,8 +352,6 @@ networks:
name: fastgpt_app
codesandbox:
name: fastgpt_codesandbox
opensandbox:
name: fastgpt_opensandbox
aiproxy:
name: fastgpt_aiproxy
......@@ -457,31 +368,3 @@ volumes:
fastgpt-seekdb-data:
fastgpt-seekdb-config:
fastgpt-aiproxy_pg:
configs:
opensandbox-config:
content: |
[server]
host = "0.0.0.0"
port = 8090
log_level = "INFO"
[runtime]
type = "docker"
execd_image = "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-execd:v1.0.7"
[egress]
image = "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-egress:v1.0.3"
[docker]
network_mode = "fastgpt_opensandbox"
# When server runs in a container, set host_ip to the host's IP or hostname so bridge-mode endpoints are reachable (e.g. host.docker.internal or the host LAN IP).
# It's required when server deployed with docker container under host.
host_ip = "host.docker.internal"
drop_capabilities = ["AUDIT_WRITE", "MKNOD", "NET_ADMIN", "NET_RAW", "SYS_ADMIN", "SYS_MODULE", "SYS_PTRACE", "SYS_TIME", "SYS_TTY_CONFIG"]
no_new_privileges = true
pids_limit = 512
[ingress]
mode = "direct"
......@@ -11,8 +11,6 @@ x-system-key: &x-system-key 'fastgpt-xxx'
x-plugin-auth-token: &x-plugin-auth-token 'token'
# code sandbox token
x-code-sandbox-token: &x-code-sandbox-token 'codesandbox'
# volume manager auth token
x-volume-manager-auth-token: &x-volume-manager-auth-token 'vmtoken'
# aiproxy token
x-aiproxy-token: &x-aiproxy-token 'token'
# 数据库连接相关配置
......@@ -63,7 +61,6 @@ services:
interval: 5s
timeout: 5s
retries: 10
fastgpt-mongo:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -151,14 +148,13 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.15.0-beta1
ports:
- 3000:3000
networks:
- data
- app
- codesandbox
- opensandbox
- aiproxy
depends_on:
fastgpt-mongo:
......@@ -180,7 +176,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -209,20 +205,6 @@ services:
# AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
AIPROXY_API_TOKEN: *x-aiproxy-token
# ==================== Agent sandbox 配置 ====================
AGENT_SANDBOX_PROVIDER: opensandbox
# OpenSandbox 配置(PROVIDER: opensandbox 时生效)
AGENT_SANDBOX_OPENSANDBOX_BASEURL: http://opensandbox-server:8090
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
......@@ -230,7 +212,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.15.0-beta1
networks:
- codesandbox
restart: always
......@@ -269,17 +251,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.15.0-beta1
networks:
- app
ports:
......@@ -315,79 +297,9 @@ services:
timeout: 20s
retries: 3
# 沙盒控制器:管理 Docker 容器的创建/执行/停止/删除
# runtime=docker 模式需要挂载 Docker socket
# 配置 docker.host_ip 为宿主机 LAN IP(容器内访问宿主机服务用)
opensandbox-server:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-server:v0.1.9
container_name: fastgpt-opensandbox-server
restart: always
networks:
- opensandbox
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
configs:
- source: opensandbox-config
target: /etc/opensandbox/config.toml
environment:
SANDBOX_CONFIG_PATH: /etc/opensandbox/config.toml
healthcheck:
test:
[
'CMD',
'python',
'-c',
'import urllib.request,sys; sys.exit(0 if urllib.request.urlopen("http://localhost:8090/health",timeout=3).status==200 else 1)'
]
interval: 10s
timeout: 5s
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1
profiles:
- prepull
opensandbox-execd-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-execd:v1.0.7
profiles:
- prepull
opensandbox-egress-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-egress:v1.0.3
profiles:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
container_name: fastgpt-volume-manager
restart: always
networks:
- opensandbox
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
environment:
PORT: 3000
VM_RUNTIME: docker
VM_AUTH_TOKEN: *x-volume-manager-auth-token # 对应 AGENT_SANDBOX_VOLUME_MANAGER_TOKEN
VM_VOLUME_NAME_PREFIX: fastgpt-session # volume 名称前缀
VM_LOG_LEVEL: info
VM_DOCKER_API_VERSION: v1.44
healthcheck:
test:
[
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
interval: 10s
timeout: 5s
retries: 5
# AI Proxy
fastgpt-aiproxy:
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.6
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -438,8 +350,6 @@ networks:
name: fastgpt_app
codesandbox:
name: fastgpt_codesandbox
opensandbox:
name: fastgpt_opensandbox
aiproxy:
name: fastgpt_aiproxy
......@@ -456,31 +366,3 @@ volumes:
fastgpt-seekdb-data:
fastgpt-seekdb-config:
fastgpt-aiproxy_pg:
configs:
opensandbox-config:
content: |
[server]
host = "0.0.0.0"
port = 8090
log_level = "INFO"
[runtime]
type = "docker"
execd_image = "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-execd:v1.0.7"
[egress]
image = "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-egress:v1.0.3"
[docker]
network_mode = "fastgpt_opensandbox"
# When server runs in a container, set host_ip to the host's IP or hostname so bridge-mode endpoints are reachable (e.g. host.docker.internal or the host LAN IP).
# It's required when server deployed with docker container under host.
host_ip = "host.docker.internal"
drop_capabilities = ["AUDIT_WRITE", "MKNOD", "NET_ADMIN", "NET_RAW", "SYS_ADMIN", "SYS_MODULE", "SYS_PTRACE", "SYS_TIME", "SYS_TTY_CONFIG"]
no_new_privileges = true
pids_limit = 512
[ingress]
mode = "direct"
......@@ -11,8 +11,6 @@ x-system-key: &x-system-key 'fastgpt-xxx'
x-plugin-auth-token: &x-plugin-auth-token 'token'
# code sandbox token
x-code-sandbox-token: &x-code-sandbox-token 'codesandbox'
# volume manager auth token
x-volume-manager-auth-token: &x-volume-manager-auth-token 'vmtoken'
# aiproxy token
x-aiproxy-token: &x-aiproxy-token 'token'
# 数据库连接相关配置
......@@ -43,7 +41,6 @@ x-log-config: &x-log-config
x-vec-config: &x-vec-config
SEEKDB_URL: mysql://root:seekdbpassword@fastgpt-vector:2881/mysql
services:
# Vector DB
fastgpt-vector:
......@@ -69,7 +66,6 @@ services:
timeout: 10s
retries: 1000
start_period: 10s
fastgpt-mongo:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -157,14 +153,13 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.15.0-beta1
ports:
- 3000:3000
networks:
- data
- app
- codesandbox
- opensandbox
- aiproxy
depends_on:
fastgpt-mongo:
......@@ -186,7 +181,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -215,20 +210,6 @@ services:
# AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
AIPROXY_API_TOKEN: *x-aiproxy-token
# ==================== Agent sandbox 配置 ====================
AGENT_SANDBOX_PROVIDER: opensandbox
# OpenSandbox 配置(PROVIDER: opensandbox 时生效)
AGENT_SANDBOX_OPENSANDBOX_BASEURL: http://opensandbox-server:8090
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
......@@ -236,7 +217,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.15.0-beta1
networks:
- codesandbox
restart: always
......@@ -275,17 +256,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.15.0-beta1
networks:
- app
ports:
......@@ -321,79 +302,9 @@ services:
timeout: 20s
retries: 3
# 沙盒控制器:管理 Docker 容器的创建/执行/停止/删除
# runtime=docker 模式需要挂载 Docker socket
# 配置 docker.host_ip 为宿主机 LAN IP(容器内访问宿主机服务用)
opensandbox-server:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-server:v0.1.9
container_name: fastgpt-opensandbox-server
restart: always
networks:
- opensandbox
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
configs:
- source: opensandbox-config
target: /etc/opensandbox/config.toml
environment:
SANDBOX_CONFIG_PATH: /etc/opensandbox/config.toml
healthcheck:
test:
[
'CMD',
'python',
'-c',
'import urllib.request,sys; sys.exit(0 if urllib.request.urlopen("http://localhost:8090/health",timeout=3).status==200 else 1)'
]
interval: 10s
timeout: 5s
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1
profiles:
- prepull
opensandbox-execd-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-execd:v1.0.7
profiles:
- prepull
opensandbox-egress-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-egress:v1.0.3
profiles:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
container_name: fastgpt-volume-manager
restart: always
networks:
- opensandbox
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
environment:
PORT: 3000
VM_RUNTIME: docker
VM_AUTH_TOKEN: *x-volume-manager-auth-token # 对应 AGENT_SANDBOX_VOLUME_MANAGER_TOKEN
VM_VOLUME_NAME_PREFIX: fastgpt-session # volume 名称前缀
VM_LOG_LEVEL: info
VM_DOCKER_API_VERSION: v1.44
healthcheck:
test:
[
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
interval: 10s
timeout: 5s
retries: 5
# AI Proxy
fastgpt-aiproxy:
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.6
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -444,8 +355,6 @@ networks:
name: fastgpt_app
codesandbox:
name: fastgpt_codesandbox
opensandbox:
name: fastgpt_opensandbox
aiproxy:
name: fastgpt_aiproxy
......@@ -462,31 +371,3 @@ volumes:
fastgpt-seekdb-data:
fastgpt-seekdb-config:
fastgpt-aiproxy_pg:
configs:
opensandbox-config:
content: |
[server]
host = "0.0.0.0"
port = 8090
log_level = "INFO"
[runtime]
type = "docker"
execd_image = "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-execd:v1.0.7"
[egress]
image = "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-egress:v1.0.3"
[docker]
network_mode = "fastgpt_opensandbox"
# When server runs in a container, set host_ip to the host's IP or hostname so bridge-mode endpoints are reachable (e.g. host.docker.internal or the host LAN IP).
# It's required when server deployed with docker container under host.
host_ip = "host.docker.internal"
drop_capabilities = ["AUDIT_WRITE", "MKNOD", "NET_ADMIN", "NET_RAW", "SYS_ADMIN", "SYS_MODULE", "SYS_PTRACE", "SYS_TIME", "SYS_TTY_CONFIG"]
no_new_privileges = true
pids_limit = 512
[ingress]
mode = "direct"
......@@ -11,8 +11,6 @@ x-system-key: &x-system-key 'fastgpt-xxx'
x-plugin-auth-token: &x-plugin-auth-token 'token'
# code sandbox token
x-code-sandbox-token: &x-code-sandbox-token 'codesandbox'
# volume manager auth token
x-volume-manager-auth-token: &x-volume-manager-auth-token 'vmtoken'
# aiproxy token
x-aiproxy-token: &x-aiproxy-token 'token'
# 数据库连接相关配置
......@@ -134,14 +132,13 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.15.0-beta1
ports:
- 3000:3000
networks:
- data
- app
- codesandbox
- opensandbox
- aiproxy
depends_on:
fastgpt-mongo:
......@@ -163,7 +160,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -192,20 +189,6 @@ services:
# AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
AIPROXY_API_TOKEN: *x-aiproxy-token
# ==================== Agent sandbox 配置 ====================
AGENT_SANDBOX_PROVIDER: opensandbox
# OpenSandbox 配置(PROVIDER: opensandbox 时生效)
AGENT_SANDBOX_OPENSANDBOX_BASEURL: http://opensandbox-server:8090
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
......@@ -213,7 +196,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.15.0-beta1
networks:
- codesandbox
restart: always
......@@ -252,17 +235,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.15.0-beta1
networks:
- app
ports:
......@@ -298,79 +281,9 @@ services:
timeout: 20s
retries: 3
# 沙盒控制器:管理 Docker 容器的创建/执行/停止/删除
# runtime=docker 模式需要挂载 Docker socket
# 配置 docker.host_ip 为宿主机 LAN IP(容器内访问宿主机服务用)
opensandbox-server:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-server:v0.1.9
container_name: fastgpt-opensandbox-server
restart: always
networks:
- opensandbox
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
configs:
- source: opensandbox-config
target: /etc/opensandbox/config.toml
environment:
SANDBOX_CONFIG_PATH: /etc/opensandbox/config.toml
healthcheck:
test:
[
'CMD',
'python',
'-c',
'import urllib.request,sys; sys.exit(0 if urllib.request.urlopen("http://localhost:8090/health",timeout=3).status==200 else 1)'
]
interval: 10s
timeout: 5s
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1
profiles:
- prepull
opensandbox-execd-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-execd:v1.0.7
profiles:
- prepull
opensandbox-egress-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-egress:v1.0.3
profiles:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
container_name: fastgpt-volume-manager
restart: always
networks:
- opensandbox
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
environment:
PORT: 3000
VM_RUNTIME: docker
VM_AUTH_TOKEN: *x-volume-manager-auth-token # 对应 AGENT_SANDBOX_VOLUME_MANAGER_TOKEN
VM_VOLUME_NAME_PREFIX: fastgpt-session # volume 名称前缀
VM_LOG_LEVEL: info
VM_DOCKER_API_VERSION: v1.44
healthcheck:
test:
[
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
interval: 10s
timeout: 5s
retries: 5
# AI Proxy
fastgpt-aiproxy:
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.6
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -421,8 +334,6 @@ networks:
name: fastgpt_app
codesandbox:
name: fastgpt_codesandbox
opensandbox:
name: fastgpt_opensandbox
aiproxy:
name: fastgpt_aiproxy
......@@ -439,31 +350,3 @@ volumes:
fastgpt-seekdb-data:
fastgpt-seekdb-config:
fastgpt-aiproxy_pg:
configs:
opensandbox-config:
content: |
[server]
host = "0.0.0.0"
port = 8090
log_level = "INFO"
[runtime]
type = "docker"
execd_image = "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-execd:v1.0.7"
[egress]
image = "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-egress:v1.0.3"
[docker]
network_mode = "fastgpt_opensandbox"
# When server runs in a container, set host_ip to the host's IP or hostname so bridge-mode endpoints are reachable (e.g. host.docker.internal or the host LAN IP).
# It's required when server deployed with docker container under host.
host_ip = "host.docker.internal"
drop_capabilities = ["AUDIT_WRITE", "MKNOD", "NET_ADMIN", "NET_RAW", "SYS_ADMIN", "SYS_MODULE", "SYS_PTRACE", "SYS_TIME", "SYS_TTY_CONFIG"]
no_new_privileges = true
pids_limit = 512
[ingress]
mode = "direct"
......@@ -11,8 +11,6 @@ x-system-key: &x-system-key 'fastgpt-xxx'
x-plugin-auth-token: &x-plugin-auth-token 'token'
# code sandbox token
x-code-sandbox-token: &x-code-sandbox-token 'codesandbox'
# volume manager auth token
x-volume-manager-auth-token: &x-volume-manager-auth-token 'vmtoken'
# aiproxy token
x-aiproxy-token: &x-aiproxy-token 'token'
# 数据库连接相关配置
......@@ -43,7 +41,6 @@ x-log-config: &x-log-config
x-vec-config: &x-vec-config
MILVUS_ADDRESS: http://fastgpt-vector:19530
MILVUS_TOKEN: none
services:
# Vector DB
......@@ -104,7 +101,6 @@ services:
depends_on:
- 'fastgpt-milvus-etcd'
- 'fastgpt-milvus-minio'
fastgpt-mongo:
image: mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -192,14 +188,13 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: ghcr.io/labring/fastgpt:v4.14.20
image: ghcr.io/labring/fastgpt:v4.15.0-beta1
ports:
- 3000:3000
networks:
- data
- app
- codesandbox
- opensandbox
- aiproxy
depends_on:
fastgpt-mongo:
......@@ -221,7 +216,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -250,20 +245,6 @@ services:
# AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
AIPROXY_API_TOKEN: *x-aiproxy-token
# ==================== Agent sandbox 配置 ====================
AGENT_SANDBOX_PROVIDER: opensandbox
# OpenSandbox 配置(PROVIDER: opensandbox 时生效)
AGENT_SANDBOX_OPENSANDBOX_BASEURL: http://opensandbox-server:8090
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: ghcr.io/labring/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
......@@ -271,7 +252,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.20
image: ghcr.io/labring/fastgpt-code-sandbox:v4.15.0-beta1
networks:
- codesandbox
restart: always
......@@ -310,17 +291,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.20
image: ghcr.io/labring/fastgpt-mcp_server:v4.15.0-beta1
networks:
- app
ports:
......@@ -356,79 +337,9 @@ services:
timeout: 20s
retries: 3
# 沙盒控制器:管理 Docker 容器的创建/执行/停止/删除
# runtime=docker 模式需要挂载 Docker socket
# 配置 docker.host_ip 为宿主机 LAN IP(容器内访问宿主机服务用)
opensandbox-server:
image: opensandbox/server:v0.1.9
container_name: fastgpt-opensandbox-server
restart: always
networks:
- opensandbox
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
configs:
- source: opensandbox-config
target: /etc/opensandbox/config.toml
environment:
SANDBOX_CONFIG_PATH: /etc/opensandbox/config.toml
healthcheck:
test:
[
'CMD',
'python',
'-c',
'import urllib.request,sys; sys.exit(0 if urllib.request.urlopen("http://localhost:8090/health",timeout=3).status==200 else 1)'
]
interval: 10s
timeout: 5s
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1
profiles:
- prepull
opensandbox-execd-image:
image: opensandbox/execd:v1.0.7
profiles:
- prepull
opensandbox-egress-image:
image: opensandbox/egress:v1.0.3
profiles:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1
container_name: fastgpt-volume-manager
restart: always
networks:
- opensandbox
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
environment:
PORT: 3000
VM_RUNTIME: docker
VM_AUTH_TOKEN: *x-volume-manager-auth-token # 对应 AGENT_SANDBOX_VOLUME_MANAGER_TOKEN
VM_VOLUME_NAME_PREFIX: fastgpt-session # volume 名称前缀
VM_LOG_LEVEL: info
VM_DOCKER_API_VERSION: v1.44
healthcheck:
test:
[
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
interval: 10s
timeout: 5s
retries: 5
# AI Proxy
fastgpt-aiproxy:
image: ghcr.io/labring/aiproxy:v0.5.6
image: ghcr.io/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -479,8 +390,6 @@ networks:
name: fastgpt_app
codesandbox:
name: fastgpt_codesandbox
opensandbox:
name: fastgpt_opensandbox
aiproxy:
name: fastgpt_aiproxy
......@@ -497,31 +406,3 @@ volumes:
fastgpt-seekdb-data:
fastgpt-seekdb-config:
fastgpt-aiproxy_pg:
configs:
opensandbox-config:
content: |
[server]
host = "0.0.0.0"
port = 8090
log_level = "INFO"
[runtime]
type = "docker"
execd_image = "opensandbox/execd:v1.0.7"
[egress]
image = "opensandbox/egress:v1.0.3"
[docker]
network_mode = "fastgpt_opensandbox"
# When server runs in a container, set host_ip to the host's IP or hostname so bridge-mode endpoints are reachable (e.g. host.docker.internal or the host LAN IP).
# It's required when server deployed with docker container under host.
host_ip = "host.docker.internal"
drop_capabilities = ["AUDIT_WRITE", "MKNOD", "NET_ADMIN", "NET_RAW", "SYS_ADMIN", "SYS_MODULE", "SYS_PTRACE", "SYS_TIME", "SYS_TTY_CONFIG"]
no_new_privileges = true
pids_limit = 512
[ingress]
mode = "direct"
......@@ -11,8 +11,6 @@ x-system-key: &x-system-key 'fastgpt-xxx'
x-plugin-auth-token: &x-plugin-auth-token 'token'
# code sandbox token
x-code-sandbox-token: &x-code-sandbox-token 'codesandbox'
# volume manager auth token
x-volume-manager-auth-token: &x-volume-manager-auth-token 'vmtoken'
# aiproxy token
x-aiproxy-token: &x-aiproxy-token 'token'
# 数据库连接相关配置
......@@ -43,7 +41,6 @@ x-log-config: &x-log-config
x-vec-config: &x-vec-config
OCEANBASE_URL: mysql://root%40tenantname:tenantpassword@fastgpt-vector:2881/mysql
services:
# Vector DB
fastgpt-vector:
......@@ -82,7 +79,6 @@ services:
timeout: 10s
retries: 1000
start_period: 10s
fastgpt-mongo:
image: mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -170,14 +166,13 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: ghcr.io/labring/fastgpt:v4.14.20
image: ghcr.io/labring/fastgpt:v4.15.0-beta1
ports:
- 3000:3000
networks:
- data
- app
- codesandbox
- opensandbox
- aiproxy
depends_on:
fastgpt-mongo:
......@@ -199,7 +194,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -228,20 +223,6 @@ services:
# AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
AIPROXY_API_TOKEN: *x-aiproxy-token
# ==================== Agent sandbox 配置 ====================
AGENT_SANDBOX_PROVIDER: opensandbox
# OpenSandbox 配置(PROVIDER: opensandbox 时生效)
AGENT_SANDBOX_OPENSANDBOX_BASEURL: http://opensandbox-server:8090
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: ghcr.io/labring/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
......@@ -249,7 +230,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.20
image: ghcr.io/labring/fastgpt-code-sandbox:v4.15.0-beta1
networks:
- codesandbox
restart: always
......@@ -288,17 +269,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.20
image: ghcr.io/labring/fastgpt-mcp_server:v4.15.0-beta1
networks:
- app
ports:
......@@ -334,79 +315,9 @@ services:
timeout: 20s
retries: 3
# 沙盒控制器:管理 Docker 容器的创建/执行/停止/删除
# runtime=docker 模式需要挂载 Docker socket
# 配置 docker.host_ip 为宿主机 LAN IP(容器内访问宿主机服务用)
opensandbox-server:
image: opensandbox/server:v0.1.9
container_name: fastgpt-opensandbox-server
restart: always
networks:
- opensandbox
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
configs:
- source: opensandbox-config
target: /etc/opensandbox/config.toml
environment:
SANDBOX_CONFIG_PATH: /etc/opensandbox/config.toml
healthcheck:
test:
[
'CMD',
'python',
'-c',
'import urllib.request,sys; sys.exit(0 if urllib.request.urlopen("http://localhost:8090/health",timeout=3).status==200 else 1)'
]
interval: 10s
timeout: 5s
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1
profiles:
- prepull
opensandbox-execd-image:
image: opensandbox/execd:v1.0.7
profiles:
- prepull
opensandbox-egress-image:
image: opensandbox/egress:v1.0.3
profiles:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1
container_name: fastgpt-volume-manager
restart: always
networks:
- opensandbox
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
environment:
PORT: 3000
VM_RUNTIME: docker
VM_AUTH_TOKEN: *x-volume-manager-auth-token # 对应 AGENT_SANDBOX_VOLUME_MANAGER_TOKEN
VM_VOLUME_NAME_PREFIX: fastgpt-session # volume 名称前缀
VM_LOG_LEVEL: info
VM_DOCKER_API_VERSION: v1.44
healthcheck:
test:
[
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
interval: 10s
timeout: 5s
retries: 5
# AI Proxy
fastgpt-aiproxy:
image: ghcr.io/labring/aiproxy:v0.5.6
image: ghcr.io/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -457,8 +368,6 @@ networks:
name: fastgpt_app
codesandbox:
name: fastgpt_codesandbox
opensandbox:
name: fastgpt_opensandbox
aiproxy:
name: fastgpt_aiproxy
......@@ -477,33 +386,7 @@ volumes:
fastgpt-aiproxy_pg:
configs:
opensandbox-config:
content: |
[server]
host = "0.0.0.0"
port = 8090
log_level = "INFO"
[runtime]
type = "docker"
execd_image = "opensandbox/execd:v1.0.7"
[egress]
image = "opensandbox/egress:v1.0.3"
[docker]
network_mode = "fastgpt_opensandbox"
# When server runs in a container, set host_ip to the host's IP or hostname so bridge-mode endpoints are reachable (e.g. host.docker.internal or the host LAN IP).
# It's required when server deployed with docker container under host.
host_ip = "host.docker.internal"
drop_capabilities = ["AUDIT_WRITE", "MKNOD", "NET_ADMIN", "NET_RAW", "SYS_ADMIN", "SYS_MODULE", "SYS_PTRACE", "SYS_TIME", "SYS_TTY_CONFIG"]
no_new_privileges = true
pids_limit = 512
[ingress]
mode = "direct"
init_sql:
name: init_sql
content: |
ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30;
......@@ -11,8 +11,6 @@ x-system-key: &x-system-key 'fastgpt-xxx'
x-plugin-auth-token: &x-plugin-auth-token 'token'
# code sandbox token
x-code-sandbox-token: &x-code-sandbox-token 'codesandbox'
# volume manager auth token
x-volume-manager-auth-token: &x-volume-manager-auth-token 'vmtoken'
# aiproxy token
x-aiproxy-token: &x-aiproxy-token 'token'
# 数据库连接相关配置
......@@ -152,14 +150,13 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: ghcr.io/labring/fastgpt:v4.14.20
image: ghcr.io/labring/fastgpt:v4.15.0-beta1
ports:
- 3000:3000
networks:
- data
- app
- codesandbox
- opensandbox
- aiproxy
depends_on:
fastgpt-mongo:
......@@ -181,7 +178,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -210,20 +207,6 @@ services:
# AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
AIPROXY_API_TOKEN: *x-aiproxy-token
# ==================== Agent sandbox 配置 ====================
AGENT_SANDBOX_PROVIDER: opensandbox
# OpenSandbox 配置(PROVIDER: opensandbox 时生效)
AGENT_SANDBOX_OPENSANDBOX_BASEURL: http://opensandbox-server:8090
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: ghcr.io/labring/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
......@@ -231,7 +214,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.20
image: ghcr.io/labring/fastgpt-code-sandbox:v4.15.0-beta1
networks:
- codesandbox
restart: always
......@@ -270,17 +253,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.20
image: ghcr.io/labring/fastgpt-mcp_server:v4.15.0-beta1
networks:
- app
ports:
......@@ -316,79 +299,9 @@ services:
timeout: 20s
retries: 3
# 沙盒控制器:管理 Docker 容器的创建/执行/停止/删除
# runtime=docker 模式需要挂载 Docker socket
# 配置 docker.host_ip 为宿主机 LAN IP(容器内访问宿主机服务用)
opensandbox-server:
image: opensandbox/server:v0.1.9
container_name: fastgpt-opensandbox-server
restart: always
networks:
- opensandbox
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
configs:
- source: opensandbox-config
target: /etc/opensandbox/config.toml
environment:
SANDBOX_CONFIG_PATH: /etc/opensandbox/config.toml
healthcheck:
test:
[
'CMD',
'python',
'-c',
'import urllib.request,sys; sys.exit(0 if urllib.request.urlopen("http://localhost:8090/health",timeout=3).status==200 else 1)'
]
interval: 10s
timeout: 5s
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1
profiles:
- prepull
opensandbox-execd-image:
image: opensandbox/execd:v1.0.7
profiles:
- prepull
opensandbox-egress-image:
image: opensandbox/egress:v1.0.3
profiles:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1
container_name: fastgpt-volume-manager
restart: always
networks:
- opensandbox
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
environment:
PORT: 3000
VM_RUNTIME: docker
VM_AUTH_TOKEN: *x-volume-manager-auth-token # 对应 AGENT_SANDBOX_VOLUME_MANAGER_TOKEN
VM_VOLUME_NAME_PREFIX: fastgpt-session # volume 名称前缀
VM_LOG_LEVEL: info
VM_DOCKER_API_VERSION: v1.44
healthcheck:
test:
[
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
interval: 10s
timeout: 5s
retries: 5
# AI Proxy
fastgpt-aiproxy:
image: ghcr.io/labring/aiproxy:v0.5.6
image: ghcr.io/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -439,8 +352,6 @@ networks:
name: fastgpt_app
codesandbox:
name: fastgpt_codesandbox
opensandbox:
name: fastgpt_opensandbox
aiproxy:
name: fastgpt_aiproxy
......@@ -457,31 +368,3 @@ volumes:
fastgpt-seekdb-data:
fastgpt-seekdb-config:
fastgpt-aiproxy_pg:
configs:
opensandbox-config:
content: |
[server]
host = "0.0.0.0"
port = 8090
log_level = "INFO"
[runtime]
type = "docker"
execd_image = "opensandbox/execd:v1.0.7"
[egress]
image = "opensandbox/egress:v1.0.3"
[docker]
network_mode = "fastgpt_opensandbox"
# When server runs in a container, set host_ip to the host's IP or hostname so bridge-mode endpoints are reachable (e.g. host.docker.internal or the host LAN IP).
# It's required when server deployed with docker container under host.
host_ip = "host.docker.internal"
drop_capabilities = ["AUDIT_WRITE", "MKNOD", "NET_ADMIN", "NET_RAW", "SYS_ADMIN", "SYS_MODULE", "SYS_PTRACE", "SYS_TIME", "SYS_TTY_CONFIG"]
no_new_privileges = true
pids_limit = 512
[ingress]
mode = "direct"
......@@ -11,8 +11,6 @@ x-system-key: &x-system-key 'fastgpt-xxx'
x-plugin-auth-token: &x-plugin-auth-token 'token'
# code sandbox token
x-code-sandbox-token: &x-code-sandbox-token 'codesandbox'
# volume manager auth token
x-volume-manager-auth-token: &x-volume-manager-auth-token 'vmtoken'
# aiproxy token
x-aiproxy-token: &x-aiproxy-token 'token'
# 数据库连接相关配置
......@@ -63,7 +61,6 @@ services:
interval: 5s
timeout: 5s
retries: 10
fastgpt-mongo:
image: mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -151,14 +148,13 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: ghcr.io/labring/fastgpt:v4.14.20
image: ghcr.io/labring/fastgpt:v4.15.0-beta1
ports:
- 3000:3000
networks:
- data
- app
- codesandbox
- opensandbox
- aiproxy
depends_on:
fastgpt-mongo:
......@@ -180,7 +176,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -209,20 +205,6 @@ services:
# AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
AIPROXY_API_TOKEN: *x-aiproxy-token
# ==================== Agent sandbox 配置 ====================
AGENT_SANDBOX_PROVIDER: opensandbox
# OpenSandbox 配置(PROVIDER: opensandbox 时生效)
AGENT_SANDBOX_OPENSANDBOX_BASEURL: http://opensandbox-server:8090
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: ghcr.io/labring/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
......@@ -230,7 +212,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.20
image: ghcr.io/labring/fastgpt-code-sandbox:v4.15.0-beta1
networks:
- codesandbox
restart: always
......@@ -269,17 +251,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.20
image: ghcr.io/labring/fastgpt-mcp_server:v4.15.0-beta1
networks:
- app
ports:
......@@ -315,79 +297,9 @@ services:
timeout: 20s
retries: 3
# 沙盒控制器:管理 Docker 容器的创建/执行/停止/删除
# runtime=docker 模式需要挂载 Docker socket
# 配置 docker.host_ip 为宿主机 LAN IP(容器内访问宿主机服务用)
opensandbox-server:
image: opensandbox/server:v0.1.9
container_name: fastgpt-opensandbox-server
restart: always
networks:
- opensandbox
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
configs:
- source: opensandbox-config
target: /etc/opensandbox/config.toml
environment:
SANDBOX_CONFIG_PATH: /etc/opensandbox/config.toml
healthcheck:
test:
[
'CMD',
'python',
'-c',
'import urllib.request,sys; sys.exit(0 if urllib.request.urlopen("http://localhost:8090/health",timeout=3).status==200 else 1)'
]
interval: 10s
timeout: 5s
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1
profiles:
- prepull
opensandbox-execd-image:
image: opensandbox/execd:v1.0.7
profiles:
- prepull
opensandbox-egress-image:
image: opensandbox/egress:v1.0.3
profiles:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1
container_name: fastgpt-volume-manager
restart: always
networks:
- opensandbox
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
environment:
PORT: 3000
VM_RUNTIME: docker
VM_AUTH_TOKEN: *x-volume-manager-auth-token # 对应 AGENT_SANDBOX_VOLUME_MANAGER_TOKEN
VM_VOLUME_NAME_PREFIX: fastgpt-session # volume 名称前缀
VM_LOG_LEVEL: info
VM_DOCKER_API_VERSION: v1.44
healthcheck:
test:
[
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
interval: 10s
timeout: 5s
retries: 5
# AI Proxy
fastgpt-aiproxy:
image: ghcr.io/labring/aiproxy:v0.5.6
image: ghcr.io/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -438,8 +350,6 @@ networks:
name: fastgpt_app
codesandbox:
name: fastgpt_codesandbox
opensandbox:
name: fastgpt_opensandbox
aiproxy:
name: fastgpt_aiproxy
......@@ -456,31 +366,3 @@ volumes:
fastgpt-seekdb-data:
fastgpt-seekdb-config:
fastgpt-aiproxy_pg:
configs:
opensandbox-config:
content: |
[server]
host = "0.0.0.0"
port = 8090
log_level = "INFO"
[runtime]
type = "docker"
execd_image = "opensandbox/execd:v1.0.7"
[egress]
image = "opensandbox/egress:v1.0.3"
[docker]
network_mode = "fastgpt_opensandbox"
# When server runs in a container, set host_ip to the host's IP or hostname so bridge-mode endpoints are reachable (e.g. host.docker.internal or the host LAN IP).
# It's required when server deployed with docker container under host.
host_ip = "host.docker.internal"
drop_capabilities = ["AUDIT_WRITE", "MKNOD", "NET_ADMIN", "NET_RAW", "SYS_ADMIN", "SYS_MODULE", "SYS_PTRACE", "SYS_TIME", "SYS_TTY_CONFIG"]
no_new_privileges = true
pids_limit = 512
[ingress]
mode = "direct"
......@@ -11,8 +11,6 @@ x-system-key: &x-system-key 'fastgpt-xxx'
x-plugin-auth-token: &x-plugin-auth-token 'token'
# code sandbox token
x-code-sandbox-token: &x-code-sandbox-token 'codesandbox'
# volume manager auth token
x-volume-manager-auth-token: &x-volume-manager-auth-token 'vmtoken'
# aiproxy token
x-aiproxy-token: &x-aiproxy-token 'token'
# 数据库连接相关配置
......@@ -43,7 +41,6 @@ x-log-config: &x-log-config
x-vec-config: &x-vec-config
SEEKDB_URL: mysql://root:seekdbpassword@fastgpt-vector:2881/mysql
services:
# Vector DB
fastgpt-vector:
......@@ -69,7 +66,6 @@ services:
timeout: 10s
retries: 1000
start_period: 10s
fastgpt-mongo:
image: mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -157,14 +153,13 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: ghcr.io/labring/fastgpt:v4.14.20
image: ghcr.io/labring/fastgpt:v4.15.0-beta1
ports:
- 3000:3000
networks:
- data
- app
- codesandbox
- opensandbox
- aiproxy
depends_on:
fastgpt-mongo:
......@@ -186,7 +181,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -215,20 +210,6 @@ services:
# AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
AIPROXY_API_TOKEN: *x-aiproxy-token
# ==================== Agent sandbox 配置 ====================
AGENT_SANDBOX_PROVIDER: opensandbox
# OpenSandbox 配置(PROVIDER: opensandbox 时生效)
AGENT_SANDBOX_OPENSANDBOX_BASEURL: http://opensandbox-server:8090
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: ghcr.io/labring/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
......@@ -236,7 +217,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.20
image: ghcr.io/labring/fastgpt-code-sandbox:v4.15.0-beta1
networks:
- codesandbox
restart: always
......@@ -275,17 +256,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.20
image: ghcr.io/labring/fastgpt-mcp_server:v4.15.0-beta1
networks:
- app
ports:
......@@ -321,79 +302,9 @@ services:
timeout: 20s
retries: 3
# 沙盒控制器:管理 Docker 容器的创建/执行/停止/删除
# runtime=docker 模式需要挂载 Docker socket
# 配置 docker.host_ip 为宿主机 LAN IP(容器内访问宿主机服务用)
opensandbox-server:
image: opensandbox/server:v0.1.9
container_name: fastgpt-opensandbox-server
restart: always
networks:
- opensandbox
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
configs:
- source: opensandbox-config
target: /etc/opensandbox/config.toml
environment:
SANDBOX_CONFIG_PATH: /etc/opensandbox/config.toml
healthcheck:
test:
[
'CMD',
'python',
'-c',
'import urllib.request,sys; sys.exit(0 if urllib.request.urlopen("http://localhost:8090/health",timeout=3).status==200 else 1)'
]
interval: 10s
timeout: 5s
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1
profiles:
- prepull
opensandbox-execd-image:
image: opensandbox/execd:v1.0.7
profiles:
- prepull
opensandbox-egress-image:
image: opensandbox/egress:v1.0.3
profiles:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1
container_name: fastgpt-volume-manager
restart: always
networks:
- opensandbox
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
environment:
PORT: 3000
VM_RUNTIME: docker
VM_AUTH_TOKEN: *x-volume-manager-auth-token # 对应 AGENT_SANDBOX_VOLUME_MANAGER_TOKEN
VM_VOLUME_NAME_PREFIX: fastgpt-session # volume 名称前缀
VM_LOG_LEVEL: info
VM_DOCKER_API_VERSION: v1.44
healthcheck:
test:
[
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
interval: 10s
timeout: 5s
retries: 5
# AI Proxy
fastgpt-aiproxy:
image: ghcr.io/labring/aiproxy:v0.5.6
image: ghcr.io/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -444,8 +355,6 @@ networks:
name: fastgpt_app
codesandbox:
name: fastgpt_codesandbox
opensandbox:
name: fastgpt_opensandbox
aiproxy:
name: fastgpt_aiproxy
......@@ -462,31 +371,3 @@ volumes:
fastgpt-seekdb-data:
fastgpt-seekdb-config:
fastgpt-aiproxy_pg:
configs:
opensandbox-config:
content: |
[server]
host = "0.0.0.0"
port = 8090
log_level = "INFO"
[runtime]
type = "docker"
execd_image = "opensandbox/execd:v1.0.7"
[egress]
image = "opensandbox/egress:v1.0.3"
[docker]
network_mode = "fastgpt_opensandbox"
# When server runs in a container, set host_ip to the host's IP or hostname so bridge-mode endpoints are reachable (e.g. host.docker.internal or the host LAN IP).
# It's required when server deployed with docker container under host.
host_ip = "host.docker.internal"
drop_capabilities = ["AUDIT_WRITE", "MKNOD", "NET_ADMIN", "NET_RAW", "SYS_ADMIN", "SYS_MODULE", "SYS_PTRACE", "SYS_TIME", "SYS_TTY_CONFIG"]
no_new_privileges = true
pids_limit = 512
[ingress]
mode = "direct"
......@@ -11,8 +11,6 @@ x-system-key: &x-system-key 'fastgpt-xxx'
x-plugin-auth-token: &x-plugin-auth-token 'token'
# code sandbox token
x-code-sandbox-token: &x-code-sandbox-token 'codesandbox'
# volume manager auth token
x-volume-manager-auth-token: &x-volume-manager-auth-token 'vmtoken'
# aiproxy token
x-aiproxy-token: &x-aiproxy-token 'token'
# 数据库连接相关配置
......@@ -134,14 +132,13 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: ghcr.io/labring/fastgpt:v4.14.20
image: ghcr.io/labring/fastgpt:v4.15.0-beta1
ports:
- 3000:3000
networks:
- data
- app
- codesandbox
- opensandbox
- aiproxy
depends_on:
fastgpt-mongo:
......@@ -163,7 +160,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -192,20 +189,6 @@ services:
# AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
AIPROXY_API_TOKEN: *x-aiproxy-token
# ==================== Agent sandbox 配置 ====================
AGENT_SANDBOX_PROVIDER: opensandbox
# OpenSandbox 配置(PROVIDER: opensandbox 时生效)
AGENT_SANDBOX_OPENSANDBOX_BASEURL: http://opensandbox-server:8090
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: ghcr.io/labring/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
......@@ -213,7 +196,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.20
image: ghcr.io/labring/fastgpt-code-sandbox:v4.15.0-beta1
networks:
- codesandbox
restart: always
......@@ -252,17 +235,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.20
image: ghcr.io/labring/fastgpt-mcp_server:v4.15.0-beta1
networks:
- app
ports:
......@@ -298,79 +281,9 @@ services:
timeout: 20s
retries: 3
# 沙盒控制器:管理 Docker 容器的创建/执行/停止/删除
# runtime=docker 模式需要挂载 Docker socket
# 配置 docker.host_ip 为宿主机 LAN IP(容器内访问宿主机服务用)
opensandbox-server:
image: opensandbox/server:v0.1.9
container_name: fastgpt-opensandbox-server
restart: always
networks:
- opensandbox
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
configs:
- source: opensandbox-config
target: /etc/opensandbox/config.toml
environment:
SANDBOX_CONFIG_PATH: /etc/opensandbox/config.toml
healthcheck:
test:
[
'CMD',
'python',
'-c',
'import urllib.request,sys; sys.exit(0 if urllib.request.urlopen("http://localhost:8090/health",timeout=3).status==200 else 1)'
]
interval: 10s
timeout: 5s
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1
profiles:
- prepull
opensandbox-execd-image:
image: opensandbox/execd:v1.0.7
profiles:
- prepull
opensandbox-egress-image:
image: opensandbox/egress:v1.0.3
profiles:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1
container_name: fastgpt-volume-manager
restart: always
networks:
- opensandbox
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker 模式必须挂载,需检查是否与主机的 socket 文件一致
environment:
PORT: 3000
VM_RUNTIME: docker
VM_AUTH_TOKEN: *x-volume-manager-auth-token # 对应 AGENT_SANDBOX_VOLUME_MANAGER_TOKEN
VM_VOLUME_NAME_PREFIX: fastgpt-session # volume 名称前缀
VM_LOG_LEVEL: info
VM_DOCKER_API_VERSION: v1.44
healthcheck:
test:
[
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
interval: 10s
timeout: 5s
retries: 5
# AI Proxy
fastgpt-aiproxy:
image: ghcr.io/labring/aiproxy:v0.5.6
image: ghcr.io/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -421,8 +334,6 @@ networks:
name: fastgpt_app
codesandbox:
name: fastgpt_codesandbox
opensandbox:
name: fastgpt_opensandbox
aiproxy:
name: fastgpt_aiproxy
......@@ -439,31 +350,3 @@ volumes:
fastgpt-seekdb-data:
fastgpt-seekdb-config:
fastgpt-aiproxy_pg:
configs:
opensandbox-config:
content: |
[server]
host = "0.0.0.0"
port = 8090
log_level = "INFO"
[runtime]
type = "docker"
execd_image = "opensandbox/execd:v1.0.7"
[egress]
image = "opensandbox/egress:v1.0.3"
[docker]
network_mode = "fastgpt_opensandbox"
# When server runs in a container, set host_ip to the host's IP or hostname so bridge-mode endpoints are reachable (e.g. host.docker.internal or the host LAN IP).
# It's required when server deployed with docker container under host.
host_ip = "host.docker.internal"
drop_capabilities = ["AUDIT_WRITE", "MKNOD", "NET_ADMIN", "NET_RAW", "SYS_ADMIN", "SYS_MODULE", "SYS_PTRACE", "SYS_TIME", "SYS_TTY_CONFIG"]
no_new_privileges = true
pids_limit = 512
[ingress]
mode = "direct"
......@@ -43,7 +43,6 @@ x-log-config: &x-log-config
x-vec-config: &x-vec-config
MILVUS_ADDRESS: http://fastgpt-vector:19530
MILVUS_TOKEN: none
services:
# Vector DB
......@@ -104,7 +103,6 @@ services:
depends_on:
- 'fastgpt-milvus-etcd'
- 'fastgpt-milvus-minio'
fastgpt-mongo:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -192,7 +190,7 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.22
ports:
- 3000:3000
networks:
......@@ -221,7 +219,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -257,12 +255,13 @@ services:
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1.2
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
AGENT_SANDBOX_VOLUME_MANAGER_MOUNT_PATH: /workspace
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
......@@ -271,7 +270,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.22
networks:
- codesandbox
restart: always
......@@ -310,17 +309,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.22
networks:
- app
ports:
......@@ -387,7 +386,7 @@ services:
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1.2
profiles:
- prepull
opensandbox-execd-image:
......@@ -400,7 +399,7 @@ services:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1.2
container_name: fastgpt-volume-manager
restart: always
networks:
......@@ -428,7 +427,7 @@ services:
# AI Proxy
fastgpt-aiproxy:
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.6
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -524,4 +523,3 @@ configs:
[ingress]
mode = "direct"
......@@ -43,7 +43,6 @@ x-log-config: &x-log-config
x-vec-config: &x-vec-config
OCEANBASE_URL: mysql://root%40tenantname:tenantpassword@fastgpt-vector:2881/mysql
services:
# Vector DB
fastgpt-vector:
......@@ -82,7 +81,6 @@ services:
timeout: 10s
retries: 1000
start_period: 10s
fastgpt-mongo:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -170,7 +168,7 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.22
ports:
- 3000:3000
networks:
......@@ -199,7 +197,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -235,12 +233,13 @@ services:
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1.2
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
AGENT_SANDBOX_VOLUME_MANAGER_MOUNT_PATH: /workspace
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
......@@ -249,7 +248,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.22
networks:
- codesandbox
restart: always
......@@ -288,17 +287,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.22
networks:
- app
ports:
......@@ -365,7 +364,7 @@ services:
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1.2
profiles:
- prepull
opensandbox-execd-image:
......@@ -378,7 +377,7 @@ services:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1.2
container_name: fastgpt-volume-manager
restart: always
networks:
......@@ -406,7 +405,7 @@ services:
# AI Proxy
fastgpt-aiproxy:
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.6
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -506,4 +505,3 @@ configs:
name: init_sql
content: |
ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30;
......@@ -152,7 +152,7 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.22
ports:
- 3000:3000
networks:
......@@ -181,7 +181,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -217,12 +217,13 @@ services:
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1.2
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
AGENT_SANDBOX_VOLUME_MANAGER_MOUNT_PATH: /workspace
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
......@@ -231,7 +232,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.22
networks:
- codesandbox
restart: always
......@@ -270,17 +271,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.22
networks:
- app
ports:
......@@ -347,7 +348,7 @@ services:
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1.2
profiles:
- prepull
opensandbox-execd-image:
......@@ -360,7 +361,7 @@ services:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1.2
container_name: fastgpt-volume-manager
restart: always
networks:
......@@ -388,7 +389,7 @@ services:
# AI Proxy
fastgpt-aiproxy:
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.6
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -484,4 +485,3 @@ configs:
[ingress]
mode = "direct"
......@@ -63,7 +63,6 @@ services:
interval: 5s
timeout: 5s
retries: 10
fastgpt-mongo:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -151,7 +150,7 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.22
ports:
- 3000:3000
networks:
......@@ -180,7 +179,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -216,12 +215,13 @@ services:
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1.2
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
AGENT_SANDBOX_VOLUME_MANAGER_MOUNT_PATH: /workspace
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
......@@ -230,7 +230,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.22
networks:
- codesandbox
restart: always
......@@ -269,17 +269,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.22
networks:
- app
ports:
......@@ -346,7 +346,7 @@ services:
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1.2
profiles:
- prepull
opensandbox-execd-image:
......@@ -359,7 +359,7 @@ services:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1.2
container_name: fastgpt-volume-manager
restart: always
networks:
......@@ -387,7 +387,7 @@ services:
# AI Proxy
fastgpt-aiproxy:
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.6
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -483,4 +483,3 @@ configs:
[ingress]
mode = "direct"
......@@ -43,7 +43,6 @@ x-log-config: &x-log-config
x-vec-config: &x-vec-config
SEEKDB_URL: mysql://root:seekdbpassword@fastgpt-vector:2881/mysql
services:
# Vector DB
fastgpt-vector:
......@@ -69,7 +68,6 @@ services:
timeout: 10s
retries: 1000
start_period: 10s
fastgpt-mongo:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -157,7 +155,7 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.22
ports:
- 3000:3000
networks:
......@@ -186,7 +184,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -222,12 +220,13 @@ services:
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1.2
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
AGENT_SANDBOX_VOLUME_MANAGER_MOUNT_PATH: /workspace
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
......@@ -236,7 +235,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.22
networks:
- codesandbox
restart: always
......@@ -275,17 +274,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.22
networks:
- app
ports:
......@@ -352,7 +351,7 @@ services:
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1.2
profiles:
- prepull
opensandbox-execd-image:
......@@ -365,7 +364,7 @@ services:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1.2
container_name: fastgpt-volume-manager
restart: always
networks:
......@@ -393,7 +392,7 @@ services:
# AI Proxy
fastgpt-aiproxy:
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.6
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -489,4 +488,3 @@ configs:
[ingress]
mode = "direct"
......@@ -134,7 +134,7 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.14.22
ports:
- 3000:3000
networks:
......@@ -163,7 +163,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -199,12 +199,13 @@ services:
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1.2
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
AGENT_SANDBOX_VOLUME_MANAGER_MOUNT_PATH: /workspace
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
......@@ -213,7 +214,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox:v4.14.22
networks:
- codesandbox
restart: always
......@@ -252,17 +253,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.20
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.14.22
networks:
- app
ports:
......@@ -329,7 +330,7 @@ services:
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox:v0.1.2
profiles:
- prepull
opensandbox-execd-image:
......@@ -342,7 +343,7 @@ services:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1.2
container_name: fastgpt-volume-manager
restart: always
networks:
......@@ -370,7 +371,7 @@ services:
# AI Proxy
fastgpt-aiproxy:
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.6
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -466,4 +467,3 @@ configs:
[ingress]
mode = "direct"
......@@ -43,7 +43,6 @@ x-log-config: &x-log-config
x-vec-config: &x-vec-config
MILVUS_ADDRESS: http://fastgpt-vector:19530
MILVUS_TOKEN: none
services:
# Vector DB
......@@ -104,7 +103,6 @@ services:
depends_on:
- 'fastgpt-milvus-etcd'
- 'fastgpt-milvus-minio'
fastgpt-mongo:
image: mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -192,7 +190,7 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: ghcr.io/labring/fastgpt:v4.14.20
image: ghcr.io/labring/fastgpt:v4.14.22
ports:
- 3000:3000
networks:
......@@ -221,7 +219,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -257,12 +255,13 @@ services:
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: ghcr.io/labring/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1.2
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
AGENT_SANDBOX_VOLUME_MANAGER_MOUNT_PATH: /workspace
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
......@@ -271,7 +270,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.20
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.22
networks:
- codesandbox
restart: always
......@@ -310,17 +309,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.20
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.22
networks:
- app
ports:
......@@ -387,7 +386,7 @@ services:
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1.2
profiles:
- prepull
opensandbox-execd-image:
......@@ -400,7 +399,7 @@ services:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1.2
container_name: fastgpt-volume-manager
restart: always
networks:
......@@ -428,7 +427,7 @@ services:
# AI Proxy
fastgpt-aiproxy:
image: ghcr.io/labring/aiproxy:v0.5.6
image: ghcr.io/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -524,4 +523,3 @@ configs:
[ingress]
mode = "direct"
......@@ -43,7 +43,6 @@ x-log-config: &x-log-config
x-vec-config: &x-vec-config
OCEANBASE_URL: mysql://root%40tenantname:tenantpassword@fastgpt-vector:2881/mysql
services:
# Vector DB
fastgpt-vector:
......@@ -82,7 +81,6 @@ services:
timeout: 10s
retries: 1000
start_period: 10s
fastgpt-mongo:
image: mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -170,7 +168,7 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: ghcr.io/labring/fastgpt:v4.14.20
image: ghcr.io/labring/fastgpt:v4.14.22
ports:
- 3000:3000
networks:
......@@ -199,7 +197,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -235,12 +233,13 @@ services:
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: ghcr.io/labring/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1.2
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
AGENT_SANDBOX_VOLUME_MANAGER_MOUNT_PATH: /workspace
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
......@@ -249,7 +248,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.20
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.22
networks:
- codesandbox
restart: always
......@@ -288,17 +287,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.20
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.22
networks:
- app
ports:
......@@ -365,7 +364,7 @@ services:
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1.2
profiles:
- prepull
opensandbox-execd-image:
......@@ -378,7 +377,7 @@ services:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1.2
container_name: fastgpt-volume-manager
restart: always
networks:
......@@ -406,7 +405,7 @@ services:
# AI Proxy
fastgpt-aiproxy:
image: ghcr.io/labring/aiproxy:v0.5.6
image: ghcr.io/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -506,4 +505,3 @@ configs:
name: init_sql
content: |
ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30;
......@@ -152,7 +152,7 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: ghcr.io/labring/fastgpt:v4.14.20
image: ghcr.io/labring/fastgpt:v4.14.22
ports:
- 3000:3000
networks:
......@@ -181,7 +181,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -217,12 +217,13 @@ services:
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: ghcr.io/labring/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1.2
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
AGENT_SANDBOX_VOLUME_MANAGER_MOUNT_PATH: /workspace
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
......@@ -231,7 +232,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.20
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.22
networks:
- codesandbox
restart: always
......@@ -270,17 +271,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.20
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.22
networks:
- app
ports:
......@@ -347,7 +348,7 @@ services:
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1.2
profiles:
- prepull
opensandbox-execd-image:
......@@ -360,7 +361,7 @@ services:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1.2
container_name: fastgpt-volume-manager
restart: always
networks:
......@@ -388,7 +389,7 @@ services:
# AI Proxy
fastgpt-aiproxy:
image: ghcr.io/labring/aiproxy:v0.5.6
image: ghcr.io/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -484,4 +485,3 @@ configs:
[ingress]
mode = "direct"
......@@ -63,7 +63,6 @@ services:
interval: 5s
timeout: 5s
retries: 10
fastgpt-mongo:
image: mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -151,7 +150,7 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: ghcr.io/labring/fastgpt:v4.14.20
image: ghcr.io/labring/fastgpt:v4.14.22
ports:
- 3000:3000
networks:
......@@ -180,7 +179,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -216,12 +215,13 @@ services:
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: ghcr.io/labring/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1.2
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
AGENT_SANDBOX_VOLUME_MANAGER_MOUNT_PATH: /workspace
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
......@@ -230,7 +230,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.20
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.22
networks:
- codesandbox
restart: always
......@@ -269,17 +269,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.20
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.22
networks:
- app
ports:
......@@ -346,7 +346,7 @@ services:
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1.2
profiles:
- prepull
opensandbox-execd-image:
......@@ -359,7 +359,7 @@ services:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1.2
container_name: fastgpt-volume-manager
restart: always
networks:
......@@ -387,7 +387,7 @@ services:
# AI Proxy
fastgpt-aiproxy:
image: ghcr.io/labring/aiproxy:v0.5.6
image: ghcr.io/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -483,4 +483,3 @@ configs:
[ingress]
mode = "direct"
......@@ -43,7 +43,6 @@ x-log-config: &x-log-config
x-vec-config: &x-vec-config
SEEKDB_URL: mysql://root:seekdbpassword@fastgpt-vector:2881/mysql
services:
# Vector DB
fastgpt-vector:
......@@ -69,7 +68,6 @@ services:
timeout: 10s
retries: 1000
start_period: 10s
fastgpt-mongo:
image: mongo:5.0.32 # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
......@@ -157,7 +155,7 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: ghcr.io/labring/fastgpt:v4.14.20
image: ghcr.io/labring/fastgpt:v4.14.22
ports:
- 3000:3000
networks:
......@@ -186,7 +184,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -222,12 +220,13 @@ services:
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: ghcr.io/labring/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1.2
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
AGENT_SANDBOX_VOLUME_MANAGER_MOUNT_PATH: /workspace
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
......@@ -236,7 +235,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.20
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.22
networks:
- codesandbox
restart: always
......@@ -275,17 +274,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.20
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.22
networks:
- app
ports:
......@@ -352,7 +351,7 @@ services:
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1.2
profiles:
- prepull
opensandbox-execd-image:
......@@ -365,7 +364,7 @@ services:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1.2
container_name: fastgpt-volume-manager
restart: always
networks:
......@@ -393,7 +392,7 @@ services:
# AI Proxy
fastgpt-aiproxy:
image: ghcr.io/labring/aiproxy:v0.5.6
image: ghcr.io/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -489,4 +488,3 @@ configs:
[ingress]
mode = "direct"
......@@ -134,7 +134,7 @@ services:
fastgpt-app:
container_name: fastgpt-app
image: ghcr.io/labring/fastgpt:v4.14.20
image: ghcr.io/labring/fastgpt:v4.14.22
ports:
- 3000:3000
networks:
......@@ -163,7 +163,7 @@ services:
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
FE_DOMAIN:
FE_DOMAIN:
# root key(最高权限)
ROOT_KEY: *x-system-key
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
......@@ -199,12 +199,13 @@ services:
AGENT_SANDBOX_OPENSANDBOX_API_KEY:
AGENT_SANDBOX_OPENSANDBOX_RUNTIME: docker
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO: ghcr.io/labring/fastgpt-agent-sandbox
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG: v0.1.2
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY: true
# Volume 持久化配置(opensandbox provider 下可选)
AGENT_SANDBOX_ENABLE_VOLUME: true
AGENT_SANDBOX_VOLUME_MANAGER_URL: http://fastgpt-volume-manager:3000
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN: *x-volume-manager-auth-token
AGENT_SANDBOX_VOLUME_MANAGER_MOUNT_PATH: /workspace
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
......@@ -213,7 +214,7 @@ services:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
container_name: fastgpt-code-sandbox
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.20
image: ghcr.io/labring/fastgpt-code-sandbox:v4.14.22
networks:
- codesandbox
restart: always
......@@ -252,17 +253,17 @@ services:
SANDBOX_PYTHON_ALLOWED_MODULES: math,cmath,decimal,fractions,random,statistics,collections,array,heapq,bisect,queue,copy,itertools,functools,operator,string,re,difflib,textwrap,unicodedata,codecs,datetime,time,calendar,_strptime,json,csv,base64,binascii,struct,hashlib,hmac,secrets,uuid,typing,abc,enum,dataclasses,contextlib,pprint,weakref,numpy,pandas,matplotlib
healthcheck:
test: [
'CMD',
'bun',
'CMD',
'bun',
'-e',
"fetch('http://localhost:3000/health').then((res) => { if (!res.ok) throw new Error(String(res.status)); })"
]
]
interval: 30s
timeout: 20s
retries: 3
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.20
image: ghcr.io/labring/fastgpt-mcp_server:v4.14.22
networks:
- app
ports:
......@@ -329,7 +330,7 @@ services:
retries: 5
# Pre-pull only: not started by `docker compose up` (uses profile `prepull`).
opensandbox-agent-sandbox-image:
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1
image: ghcr.io/labring/fastgpt-agent-sandbox:v0.1.2
profiles:
- prepull
opensandbox-execd-image:
......@@ -342,7 +343,7 @@ services:
- prepull
# 卷管理微服务:负责幂等创建/删除 Docker named volume 或 k8s PVC
fastgpt-volume-manager:
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1
image: ghcr.io/labring/fastgpt-agent-volume-manager:v0.1.2
container_name: fastgpt-volume-manager
restart: always
networks:
......@@ -370,7 +371,7 @@ services:
# AI Proxy
fastgpt-aiproxy:
image: ghcr.io/labring/aiproxy:v0.5.6
image: ghcr.io/labring/aiproxy:v0.5.8
container_name: fastgpt-aiproxy
restart: unless-stopped
depends_on:
......@@ -466,4 +467,3 @@ configs:
[ingress]
mode = "direct"
......@@ -57,14 +57,70 @@ radio_select() {
# 确保退出时恢复光标
trap 'tput cnorm 2>/dev/null; exit' INT TERM
# ========== 部署版本列表(由 deploy/init.mjs 自动生成) ==========
# BEGIN GENERATED DEPLOY VERSIONS
DEPLOY_VERSIONS=(
"v4.14"
"main"
)
# END GENERATED DEPLOY VERSIONS
# 获取部署版本展示文案:main 为迭代版,其他版本均视为稳定版
get_version_label() {
local version="$1"
if [ "$version" == "main" ]; then
echo "迭代版 main"
else
echo "稳定版 $version"
fi
}
# ========== 1. 选择镜像源 ==========
radio_select "请选择镜像源 (↑↓ 选择, 回车确认):" "阿里云 (中国大陆)" "GitHub (全球)"
case $RADIO_RESULT in
1) REGION="global" ;;
*) REGION="cn" ;;
1)
REGION="global"
BASE_URL="https://doc.fastgpt.io/deploy"
;;
*)
REGION="cn"
BASE_URL="https://doc.fastgpt.cn/deploy"
;;
esac
# ========== 2. 选择向量数据库 ==========
# ========== 2. 选择部署版本 ==========
if [ ${#DEPLOY_VERSIONS[@]} -eq 0 ]; then
echo "错误: 未配置部署版本"
exit 1
fi
if [ -n "$FASTGPT_DEPLOY_VERSION" ]; then
version_matched=false
for version in "${DEPLOY_VERSIONS[@]}"; do
if [ "$FASTGPT_DEPLOY_VERSION" == "$version" ]; then
version_matched=true
break
fi
done
if [ "$version_matched" = true ]; then
DEPLOY_VERSION="$FASTGPT_DEPLOY_VERSION"
else
echo "错误: 不支持的 FASTGPT_DEPLOY_VERSION: $FASTGPT_DEPLOY_VERSION"
echo "可选版本: ${DEPLOY_VERSIONS[*]}"
exit 1
fi
else
VERSION_OPTIONS=()
for version in "${DEPLOY_VERSIONS[@]}"; do
VERSION_OPTIONS+=("$(get_version_label "$version")")
done
radio_select "请选择部署版本 (↑↓ 选择, 回车确认):" "${VERSION_OPTIONS[@]}"
DEPLOY_VERSION="${DEPLOY_VERSIONS[$RADIO_RESULT]}"
fi
# ========== 3. 选择向量数据库 ==========
radio_select "请选择向量数据库 (↑↓ 选择, 回车确认):" "PostgreSQL + pgvector" "Milvus" "Zilliz" "OceanBase" "SeekDB"
case $RADIO_RESULT in
1) VECTOR="milvus" ;;
......@@ -74,7 +130,7 @@ case $RADIO_RESULT in
*) VECTOR="pg" ;;
esac
# ========== 3. 检测可用 IP ==========
# ========== 4. 检测可用 IP ==========
IP_LIST=()
PRIMARY_IP=""
......@@ -152,17 +208,19 @@ select_address() {
fi
}
# ========== 4. 选择 S3 访问地址 (端口 9000) ==========
# ========== 5. 选择 S3 访问地址 (端口 9000) ==========
select_address "请选择 S3 访问地址 - 客户端和容器均需可访问 (↑↓ 选择, 回车确认, 通常默认第一个即可):" 9000
S3_ADDR="$SELECTED_ADDR"
S3_CUSTOM=$SELECTED_CUSTOM
# ========== 5. 选择 SSE MCP 访问地址 (端口 3003) ==========
# ========== 6. 选择 SSE MCP 访问地址 (端口 3003) ==========
select_address "请选择 SSE MCP 访问地址 - 客户端和容器均需可访问 (↑↓ 选择, 回车确认, 通常默认第一个即可):" 3003
MCP_ADDR="$SELECTED_ADDR"
MCP_CUSTOM=$SELECTED_CUSTOM
# ========== 确认配置 ==========
DEPLOY_VERSION_LABEL="$(get_version_label "$DEPLOY_VERSION")"
REGION_LABEL="阿里云 (中国大陆)"
if [ "$REGION" == "global" ]; then
REGION_LABEL="GitHub (全球)"
......@@ -191,6 +249,7 @@ fi
echo ""
echo "=============================="
echo " 部署版本: $DEPLOY_VERSION_LABEL"
echo " 镜像源: $REGION_LABEL"
echo " 向量数据库: $VECTOR"
echo " S3 地址: $S3_DISPLAY"
......@@ -213,13 +272,7 @@ if [ "$REGION" == "global" ] && [ "$VECTOR" == "zilliz" ]; then
VECTOR_FILE="zilliz"
fi
if [ "$REGION" == "cn" ]; then
BASE_URL="https://doc.fastgpt.cn/deploy"
YML_URL="${BASE_URL}/docker/cn/docker-compose.${VECTOR_FILE}.yml"
else
BASE_URL="https://doc.fastgpt.io/deploy"
YML_URL="${BASE_URL}/docker/global/docker-compose.${VECTOR_FILE}.yml"
fi
YML_URL="${BASE_URL}/docker/${DEPLOY_VERSION}/${REGION}/docker-compose.${VECTOR_FILE}.yml"
CONFIG_URL="${BASE_URL}/config/config.json"
......@@ -316,69 +369,79 @@ else
echo "警告: 未设置 MCP 地址,请手动编辑 config.json 中的 mcpServerProxyEndpoint"
fi
# ========== 检测并替换 docker.sock 路径 ==========
# 某些发行版 / Docker Desktop / rootless 模式下,宿主机 docker.sock 不在 /var/run/docker.sock
# 若路径错误,Docker 会把挂载目标在容器内创建为空目录,导致 volume-manager / opensandbox 无法调用 Docker API
detect_docker_sock() {
# 1. DOCKER_HOST 环境变量
if [ -n "$DOCKER_HOST" ] && [[ "$DOCKER_HOST" == unix://* ]]; then
local sock="${DOCKER_HOST#unix://}"
[ -S "$sock" ] && { echo "$sock"; return 0; }
fi
if [ "$DEPLOY_VERSION" != "main" ]; then
# ========== 检测并替换 docker.sock 路径 ==========
# 某些发行版 / Docker Desktop / rootless 模式下,宿主机 docker.sock 不在 /var/run/docker.sock
# 若路径错误,Docker 会把挂载目标在容器内创建为空目录,导致 volume-manager / opensandbox 无法调用 Docker API
detect_docker_sock() {
# 1. DOCKER_HOST 环境变量
if [ -n "$DOCKER_HOST" ] && [[ "$DOCKER_HOST" == unix://* ]]; then
local sock="${DOCKER_HOST#unix://}"
[ -S "$sock" ] && { echo "$sock"; return 0; }
fi
# 2. docker context 当前上下文
if command -v docker &>/dev/null; then
local ctx
ctx=$(docker context inspect --format '{{ .Endpoints.docker.Host }}' 2>/dev/null)
if [[ "$ctx" == unix://* ]]; then
ctx="${ctx#unix://}"
[ -S "$ctx" ] && { echo "$ctx"; return 0; }
# 2. docker context 当前上下文
if command -v docker &>/dev/null; then
local ctx
ctx=$(docker context inspect --format '{{ .Endpoints.docker.Host }}' 2>/dev/null)
if [[ "$ctx" == unix://* ]]; then
ctx="${ctx#unix://}"
[ -S "$ctx" ] && { echo "$ctx"; return 0; }
fi
fi
fi
# 3. 常见路径依次探测
local candidates=(
"/var/run/docker.sock"
"/run/docker.sock"
"$HOME/.docker/run/docker.sock" # macOS Docker Desktop
"$HOME/.docker/desktop/docker.sock"
"/run/user/$(id -u 2>/dev/null)/docker.sock" # rootless
)
for p in "${candidates[@]}"; do
[ -S "$p" ] && { echo "$p"; return 0; }
done
# 3. 常见路径依次探测
local candidates=(
"/var/run/docker.sock"
"/run/docker.sock"
"$HOME/.docker/run/docker.sock" # macOS Docker Desktop
"$HOME/.docker/desktop/docker.sock"
"/run/user/$(id -u 2>/dev/null)/docker.sock" # rootless
)
for p in "${candidates[@]}"; do
[ -S "$p" ] && { echo "$p"; return 0; }
done
return 1
}
return 1
}
HOST_SOCK=$(detect_docker_sock)
if [ -n "$HOST_SOCK" ]; then
if [ "$HOST_SOCK" != "/var/run/docker.sock" ]; then
# 只改宿主侧路径(冒号左边),容器内仍为 /var/run/docker.sock
ESCAPED_SOCK=$(printf '%s' "$HOST_SOCK" | sed -e 's/[\/&|]/\\&/g')
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i '' "s|- /var/run/docker.sock:/var/run/docker.sock|- ${ESCAPED_SOCK}:/var/run/docker.sock|g" docker-compose.yml
HOST_SOCK=$(detect_docker_sock)
if [ -n "$HOST_SOCK" ]; then
if [ "$HOST_SOCK" != "/var/run/docker.sock" ]; then
# 只改宿主侧路径(冒号左边),容器内仍为 /var/run/docker.sock
ESCAPED_SOCK=$(printf '%s' "$HOST_SOCK" | sed -e 's/[\/&|]/\\&/g')
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i '' "s|- /var/run/docker.sock:/var/run/docker.sock|- ${ESCAPED_SOCK}:/var/run/docker.sock|g" docker-compose.yml
else
sed -i "s|- /var/run/docker.sock:/var/run/docker.sock|- ${ESCAPED_SOCK}:/var/run/docker.sock|g" docker-compose.yml
fi
echo "已检测到 Docker socket: $HOST_SOCK,已更新 docker-compose.yml 挂载路径"
else
sed -i "s|- /var/run/docker.sock:/var/run/docker.sock|- ${ESCAPED_SOCK}:/var/run/docker.sock|g" docker-compose.yml
echo "Docker socket 路径正常: /var/run/docker.sock"
fi
echo "已检测到 Docker socket: $HOST_SOCK,已更新 docker-compose.yml 挂载路径"
else
echo "Docker socket 路径正常: /var/run/docker.sock"
echo "警告: 未检测到 Docker socket。请确认 Docker 正在运行,"
echo " 并手动编辑 docker-compose.yml,将两处 '- /var/run/docker.sock:/var/run/docker.sock'"
echo " 左侧改成宿主机实际的 socket 路径。"
fi
else
echo "警告: 未检测到 Docker socket。请确认 Docker 正在运行,"
echo " 并手动编辑 docker-compose.yml,将两处 '- /var/run/docker.sock:/var/run/docker.sock'"
echo " 左侧改成宿主机实际的 socket 路径。"
fi
# ========== 完成 ==========
echo ""
echo "配置下载成功! 后续操作:"
echo " 1. 预热沙盒: docker compose --profile prepull pull opensandbox-agent-sandbox-image opensandbox-execd-image opensandbox-egress-image"
echo " 2. 启动服务: docker compose up -d"
echo " 3. 开放端口: 3000, 9000, 3003"
echo " 4. 访问服务: http://localhost:3000"
echo " 5. 登录服务: 默认账号为 'root', 密码为: '1234'"
echo " 6. 配置模型: 在 '账号-模型提供商' 页面,进行模型配置"
if [ "$DEPLOY_VERSION" != "main" ]; then
echo " 1. 预热沙盒: docker compose --profile prepull pull opensandbox-agent-sandbox-image opensandbox-execd-image opensandbox-egress-image"
echo " 2. 启动服务: docker compose up -d"
echo " 3. 开放端口: 3000, 9000, 3003"
echo " 4. 访问服务: http://localhost:3000"
echo " 5. 登录服务: 默认账号为 'root', 密码为: '1234'"
echo " 6. 配置模型: 在 '账号-模型提供商' 页面,进行模型配置"
else
echo " 1. 启动服务: docker compose up -d"
echo " 2. 开放端口: 3000, 9000, 3003"
echo " 3. 访问服务: http://localhost:3000"
echo " 4. 登录服务: 默认账号为 'root', 密码为: '1234'"
echo " 5. 配置模型: 在 '账号-模型提供商' 页面,进行模型配置"
fi
echo ""
echo "详细文档: https://doc.fastgpt.cn/self-host/deploy/docker"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment