mirror of
https://github.com/labring/FastGPT.git
synced 2026-04-26 02:07:28 +08:00
b29e10cf65
* update doc * update pnpm version * update lock * update model config doc * time * update dockerfile
406 lines
15 KiB
Plaintext
406 lines
15 KiB
Plaintext
---
|
|
title: Deploy with Docker-compose
|
|
description: Quickly deploy FastGPT using Docker Compose
|
|
---
|
|
|
|
import { Alert } from '@/components/docs/Alert';
|
|
|
|
## Prerequisites
|
|
|
|
1. Basic networking knowledge: ports, firewalls, etc.
|
|
2. Docker and Docker Compose basics
|
|
|
|
## Deployment Architecture
|
|
|
|

|
|
|
|
<Alert icon="🤖" context="success">
|
|
|
|
- MongoDB: Stores all data except vectors
|
|
- PostgreSQL/Milvus/Oceanbase/SeekDB: Stores vector data
|
|
- AIProxy: Aggregates various AI APIs with multi-model support (for any model issues, test with OneAPI first)
|
|
|
|
</Alert>
|
|
|
|
## Recommended Specs
|
|
|
|
### PgVector Version
|
|
|
|
Very lightweight, suitable for knowledge base indexes under 50 million.
|
|
|
|
| Environment | Minimum (Single Node) | Recommended |
|
|
| ---------------------------------- | --------------------- | ------------ |
|
|
| Testing (reduce compute processes) | 2c4g | 2c8g |
|
|
| 1M vector groups | 4c8g 50GB | 4c16g 50GB |
|
|
| 5M vector groups | 8c32g 200GB | 16c64g 200GB |
|
|
|
|
### Milvus Version
|
|
|
|
Better performance for 100M+ vectors.
|
|
|
|
[View Milvus official recommended specs](https://milvus.io/docs/prerequisite-docker.md)
|
|
|
|
| Environment | Minimum (Single Node) | Recommended |
|
|
| ---------------- | --------------------- | ----------- |
|
|
| Testing | 2c8g | 4c16g |
|
|
| 1M vector groups | Not tested | |
|
|
| 5M vector groups | | |
|
|
|
|
### Zilliz Cloud Version
|
|
|
|
Zilliz Cloud is built by the Milvus team — a fully managed SaaS vector database with better performance than Milvus and SLA guarantees. [Try Zilliz Cloud](https://zilliz.com.cn/).
|
|
|
|
Since the vector database runs in the cloud, no local resources are needed.
|
|
|
|
### SeekDB Version
|
|
|
|
SeekDB is a high-performance vector database based on MySQL protocol, fully compatible with OceanBase, supporting efficient vector retrieval.
|
|
|
|
| Environment | Minimum (Single Node) | Recommended |
|
|
| ---------------------------------- | --------------------- | ------------ |
|
|
| Testing (reduce compute processes) | 2c4g | 2c8g |
|
|
| 1M vector groups | 4c8g 50GB | 4c16g 50GB |
|
|
| 5M vector groups | 8c32g 200GB | 16c64g 200GB |
|
|
|
|
<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
|
|
- Automatic retry and connection pool management
|
|
|
|
</Alert>
|
|
|
|
## Preparation
|
|
|
|
### Prepare Docker Environment
|
|
|
|
<Tabs items={['Linux','MacOS','Windows']}>
|
|
<Tab value="Linux">
|
|
```bash
|
|
# Install Docker
|
|
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
|
|
systemctl enable --now docker
|
|
# Install docker-compose
|
|
curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
|
|
chmod +x /usr/local/bin/docker-compose
|
|
# Verify installation
|
|
docker -v
|
|
docker-compose -v
|
|
# If it fails, search online for solutions
|
|
```
|
|
</Tab>
|
|
<Tab value="MacOS">
|
|
We recommend [Orbstack](https://orbstack.dev/). Install via Homebrew:
|
|
|
|
```bash
|
|
brew install orbstack
|
|
```
|
|
|
|
Or [download the installer](https://orbstack.dev/download) directly.
|
|
|
|
</Tab>
|
|
<Tab value="Windows">
|
|
We recommend storing source code and data in the Linux filesystem when binding to Linux containers, not the Windows filesystem.
|
|
|
|
You can [install Docker Desktop with WSL 2 backend on Windows](https://docs.docker.com/desktop/wsl/).
|
|
|
|
Or [install the command-line version of Docker directly in WSL 2](https://nickjanetakis.com/blog/install-docker-in-wsl-2-without-docker-desktop).
|
|
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
## Start Deployment
|
|
|
|
### 1. Get Configuration Files
|
|
|
|
#### Method 1: Interactive Script Deployment
|
|
|
|
Run in Linux/MacOS/Windows WSL. The script guides you through selecting deployment environment, vector database version, IP address, etc.
|
|
|
|
```bash
|
|
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`.
|
|
|
|
1. Download the `docker-compose.yml` file:
|
|
|
|
<details>
|
|
<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)
|
|
- **Oceanbase**
|
|
- China mirror (Alibaba Cloud): [docker-compose.ob.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.ob.yml)
|
|
- Global mirror (dockerhub, ghcr): [docker-compose.ob.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.ob.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)
|
|
- **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)
|
|
- **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)
|
|
|
|
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
|
|
|
|
For `Zilliz version`, you also need credentials — see [Deploy Zilliz Version: Get Account and Credentials](#deploy-zilliz-version-get-account-and-credentials). Other versions can skip to the next step.
|
|
|
|
### 3. Open External Ports / Configure Domain
|
|
|
|
These ports must be accessible:
|
|
|
|
1. Port 3000 (FastGPT main service)
|
|
2. Port 9000 (S3 service)
|
|
1. Port 3005 (FastGPT SSE MCP server service)
|
|
|
|
### 4. Start Containers
|
|
|
|
Run in the same directory as docker-compose.yml. Ensure `docker-compose` version is 2.17+, or automated commands may fail.
|
|
|
|
```bash
|
|
# Start containers
|
|
docker-compose up -d
|
|
```
|
|
|
|
### 5. Access FastGPT
|
|
|
|
Access FastGPT via the port/domain opened in step 3.
|
|
Login username is `root`, password is the `DEFAULT_ROOT_PSW` set in `docker-compose.yml` environment variables.
|
|
Each container restart automatically initializes the root user with password `1234` (matching `DEFAULT_ROOT_PSW`).
|
|
|
|
### 6. Configure Models
|
|
|
|
- After first login, the system prompts that `Language Model` and `Index Model` are not configured and automatically redirects to the model configuration page. At least these two model types are required.
|
|
- If the redirect doesn't happen, go to `Account - Model Providers` to configure models. [View tutorial](/docs/self-host/config/model/intro)
|
|
- Known issue: after first entering the system, the browser tab may become unresponsive. Close the tab and reopen it.
|
|
|
|
### 7. Install System Plugins as Needed
|
|
|
|
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.
|
|
|
|

|
|
|
|
## FAQ
|
|
|
|
### FastGPT and FastGPT-plugin Version Compatibility
|
|
|
|
| FastGPT-plugin Version | FastGPT Main Service |
|
|
| ---------------------- | -------------------- |
|
|
| 0.5.x | >= 4.14.6 |
|
|
| < 0.5.0 | < 4.14.6 |
|
|
|
|
### S3 Connection Issues
|
|
|
|
Check the `STORAGE_EXTERNAL_ENDPOINT` variable — it must be accessible by both the client and FastGPT service.
|
|
|
|
**Important:**
|
|
|
|
> Don't use `127.0.0.1` or `localhost` or other loopback addresses. Use the host machine's local IP when deploying with Docker, but set it to a static IP; or use a fixed domain name. This prevents 403 errors caused by URL mismatches when signing object storage URLs.
|
|
>
|
|
> See [Object Storage Configuration & Common Issues](/docs/self-host/config/object-storage)
|
|
|
|
### Browser Unresponsive After Login
|
|
|
|
Can't click anything, refresh doesn't help. Close the tab and reopen it.
|
|
|
|
### Mongo Replica Set Auto-Initialization Failed
|
|
|
|
The latest docker-compose examples have fully automated Mongo replica set initialization. Tested on Ubuntu 20/22, CentOS 7, WSL2, macOS, and Windows. If it still won't start, the CPU likely doesn't support AVX instructions — switch to Mongo 4.x.
|
|
|
|
To manually initialize the replica set:
|
|
|
|
1. Create a mongo key in the terminal:
|
|
|
|
```bash
|
|
openssl rand -base64 756 > ./mongodb.key
|
|
chmod 600 ./mongodb.key
|
|
# Change key permissions — some systems use admin, others use root
|
|
chown 999:root ./mongodb.key
|
|
```
|
|
|
|
2. Modify docker-compose.yml to mount the key:
|
|
|
|
```yml
|
|
mongo:
|
|
# image: mongo:5.0.18
|
|
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # Alibaba Cloud
|
|
container_name: mongo
|
|
ports:
|
|
- 27017:27017
|
|
networks:
|
|
- fastgpt
|
|
command: mongod --keyFile /data/mongodb.key --replSet rs0
|
|
environment:
|
|
# Default username and password, only effective on first run
|
|
- MONGO_INITDB_ROOT_USERNAME=myusername
|
|
- MONGO_INITDB_ROOT_PASSWORD=mypassword
|
|
volumes:
|
|
- ./mongo/data:/data/db
|
|
- ./mongodb.key:/data/mongodb.key
|
|
```
|
|
|
|
3. Restart services:
|
|
|
|
```bash
|
|
docker-compose down
|
|
docker-compose up -d
|
|
```
|
|
|
|
4. Enter the container and initialize the replica set:
|
|
|
|
```bash
|
|
# Check if mongo container is running
|
|
docker ps
|
|
# Enter container
|
|
docker exec -it mongo bash
|
|
|
|
# Connect to database (use your Mongo username and password)
|
|
mongo -u myusername -p mypassword --authenticationDatabase admin
|
|
|
|
# Initialize replica set. For external access, add directConnection=true to the Mongo connection parameters
|
|
rs.initiate({
|
|
_id: "rs0",
|
|
members: [
|
|
{ _id: 0, host: "mongo:27017" }
|
|
]
|
|
})
|
|
# Check status — if it shows rs0 status, it's running successfully
|
|
rs.status()
|
|
```
|
|
|
|
### How to Change API Address and Key
|
|
|
|
By default, OneAPI connection address and key are configured. Modify the environment variables in the fastgpt container in `docker-compose.yml`:
|
|
|
|
`OPENAI_BASE_URL` (API endpoint, must include /v1)
|
|
`CHAT_API_KEY` (API credentials)
|
|
|
|
After modifying, restart:
|
|
|
|
```bash
|
|
docker-compose down
|
|
docker-compose up -d
|
|
```
|
|
|
|
### How to Update Versions?
|
|
|
|
1. Check the [update documentation](/docs/self-host/upgrading/upgrade-intruction) to confirm the target version — avoid skipping versions.
|
|
2. Change the image tag to the target version
|
|
3. Run these commands to pull and restart:
|
|
|
|
```bash
|
|
docker-compose pull
|
|
docker-compose up -d
|
|
```
|
|
|
|
4. Run initialization scripts (if any)
|
|
|
|
### How to Customize Configuration Files?
|
|
|
|
Modify `config.json`, then run `docker-compose down` followed by `docker-compose up -d` to restart. For details, see [Configuration Guide](/docs/self-host/config/json).
|
|
|
|
### How to Check if Custom Config File is Mounted
|
|
|
|
1. `docker logs fastgpt` shows logs. After starting the container, the first web request reads the config file — check for success or error messages.
|
|
2. `docker exec -it fastgpt sh` enters the container. Use `ls data` to check if `config.json` is mounted. Use `cat data/config.json` to view it.
|
|
|
|
**Possible reasons it's not working:**
|
|
|
|
1. Incorrect mount directory
|
|
2. Invalid config file — logs will show `invalid json`. The file must be valid JSON.
|
|
3. Didn't run `docker-compose down` then `docker-compose up -d` after changes. A simple restart doesn't remount files.
|
|
|
|
### How to Check if Environment Variables Loaded
|
|
|
|
1. `docker exec -it fastgpt sh` to enter the container.
|
|
2. Run `env` to view all environment variables.
|
|
|
|
### Why Can't I Connect to Local Model Images
|
|
|
|
`docker-compose.yml` uses bridge mode to create the `fastgpt` network. To access other images via 0.0.0.0 or image name, add those images to the same network.
|
|
|
|
### How to Resolve Port Conflicts?
|
|
|
|
Docker-compose port format: `mapped_port:running_port`.
|
|
|
|
In bridge mode, container running ports don't conflict, but mapped ports can. Change the mapped port to a different value.
|
|
|
|
If `container1` needs to connect to `container2`, use `container2:running_port`.
|
|
|
|
(Brush up on Docker basics as needed)
|
|
|
|
### relation "modeldata" does not exist
|
|
|
|
PG database not connected or initialization failed — check logs. FastGPT initializes tables on each PG connection. Errors will appear in the logs.
|
|
|
|
1. Check if the database container started normally
|
|
2. For non-Docker deployments, manually install the pg vector extension
|
|
3. Check fastgpt logs for related errors
|
|
|
|
### Illegal instruction
|
|
|
|
Possible causes:
|
|
|
|
1. ARM architecture — use the official Mongo image: mongo:5.0.18
|
|
2. CPU doesn't support AVX — switch to mongo4.x. Change the mongo image to: mongo:4.4.29
|
|
|
|
### Operation `auth_codes.findOne()` buffering timed out after 10000ms
|
|
|
|
Mongo connection failed — check mongo's running status and **logs**.
|
|
|
|
Possible causes:
|
|
|
|
1. Mongo service didn't start (some CPUs don't support AVX — switch to mongo4.x, find the latest 4.x on Docker Hub, update the image version, and rerun)
|
|
2. Database connection environment variables are wrong (username/password, check host and port — for non-container network connections, use public IP and add directConnection=true)
|
|
3. Replica set startup failed, causing the container to keep restarting
|
|
4. `Illegal instruction.... Waiting for MongoDB to start`: CPU doesn't support AVX — switch to mongo4.x
|
|
|
|
### First Deployment: Root User Shows Unregistered
|
|
|
|
Logs will show error messages. Most likely Mongo replica set mode wasn't started.
|
|
|
|
### Can't Export Knowledge Base / Can't Use Voice Input or Playback
|
|
|
|
SSL certificate not configured — some features require it.
|
|
|
|
### Login Shows Network Error
|
|
|
|
Caused by service initialization errors triggering a restart.
|
|
|
|
- 90% of cases: incorrect config file causing JSON parsing errors
|
|
- The rest: usually because the vector database can't connect
|
|
|
|
### How to Change Password
|
|
|
|
Modify `DEFAULT_ROOT_PSW` in `docker-compose.yml` and restart — the password auto-updates.
|
|
|
|
### Deploy Zilliz Version: Get Account and Credentials
|
|
|
|
Open [Zilliz Cloud](https://zilliz.com.cn/), create an instance, and get the credentials.
|
|
|
|

|
|
|
|
<Alert icon="🤖" context="success">
|
|
|
|
1. Set `MILVUS_ADDRESS` and `MILVUS_TOKEN` to match Zilliz's `Public Endpoint` and `Api key`. Remember to add your IP to the whitelist.
|
|
|
|
</Alert>
|