使用Docker安装PandaWiki(AI知识库)
【代码】使用Docker安装PandaWiki(AI知识库)
·
1、demo
详见:https://pandawiki.docs.baizhi.cloud/node/01971af3-f304-7043-9e39-d2c6b6f8d4e9

2、安装要求
详见:https://pandawiki.docs.baizhi.cloud/node/01971602-bb4e-7c90-99df-6d3c38cfd6d5

3、安装Docker
4、安装PandaWiki
详见:https://pandawiki.docs.baizhi.cloud/node/01971602-bb4e-7c90-99df-6d3c38cfd6d5
【当前环境说明】
操作系统:Ubuntu Server 24.04 LTS 64位
CPU:2核
内存:4GB
4.1、一键自动安装
安装:
# 执行命令:
bash -c "$(curl -fsSLk https://release.baizhi.cloud/panda-wiki/manager.sh)"
# 说明:
"默认安装路径位于/data/pandawiki"

说明:在此之前,已经选择"手动配置安装"这种方式,所以可以直接使用已下载的镜像

切换目录:
cd /data/pandawiki
查看目录:

查看.env文件:

查看docker-compose.yml文件:
services:
caddy:
container_name: panda-wiki-caddy
restart: always
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-caddy:2.10-alpine
cap_add:
- NET_ADMIN
volumes:
- ./data/caddy/caddy_config:/config
- ./data/caddy/caddy_data:/data
- ./data/caddy/run:/var/run/caddy
environment:
- CADDY_ADMIN=unix//var/run/caddy/caddy-admin.sock
network_mode: host
nginx:
container_name: panda-wiki-nginx
depends_on:
- api
restart: always
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-nginx:v3.29.1
ports:
- ${ADMIN_PORT}:8080
volumes:
- ./data/nginx/ssl:/etc/nginx/ssl
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.111"
app:
container_name: panda-wiki-app
restart: always
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-app:v3.29.1
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.112"
api:
container_name: panda-wiki-api
depends_on:
- postgres
- nats
- caddy
- raglite
restart: always
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-api:v3.29.1
volumes:
- ./data/caddy/run:/app/run
- ./data/nginx/ssl:/app/etc/nginx/ssl
- ./data/conf/api:/data
environment:
- NATS_PASSWORD=${NATS_PASSWORD}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- REDIS_PASSWORD=${REDIS_PASSWORD}
- S3_SECRET_KEY=${S3_SECRET_KEY}
- JWT_SECRET=${JWT_SECRET}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
- SUBNET_PREFIX=${SUBNET_PREFIX}
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.2"
consumer:
container_name: panda-wiki-consumer
depends_on:
- nats
- api
restart: always
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-consumer:v3.29.1
environment:
- NATS_PASSWORD=${NATS_PASSWORD}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- REDIS_PASSWORD=${REDIS_PASSWORD}
- S3_SECRET_KEY=${S3_SECRET_KEY}
- JWT_SECRET=${JWT_SECRET}
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.3"
postgres:
container_name: panda-wiki-postgres
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-postgres:17.5
restart: always
healthcheck:
test: ["CMD", "pg_isready", "-U", "panda-wiki", "-d", "panda-wiki"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
environment:
- POSTGRES_USER=panda-wiki
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=panda-wiki
volumes:
- ./data/postgres:/var/lib/postgresql/data
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.10"
redis:
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-redis:7.4.2-alpine
container_name: panda-wiki-redis
restart: always
command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}", "--appendonly", "yes", "--appendfilename", "appendonly.aof", "--save", "900 1", "--save", "300 10", "--save", "60 10000"]
volumes:
- ./data/redis:/data
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.11"
minio:
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-minio:RELEASE.2025-04-22T22-12-26Z-cpuv1
container_name: panda-wiki-minio
restart: always
command: ["minio", "server", "/data", "--console-address", ":9001"]
volumes:
- ./data/minio:/data
environment:
- MINIO_ACCESS_KEY=s3panda-wiki
- MINIO_SECRET_KEY=${S3_SECRET_KEY}
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.12"
nats:
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-nats:2.11.3-alpine
container_name: panda-wiki-nats
restart: always
command: ["nats-server", "-c", "/etc/nats/nats.conf", "--user", "panda-wiki", "--pass", "${NATS_PASSWORD}"]
volumes:
- ./data/nats:/data
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.13"
qdrant:
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-qdrant:v1.14.1
container_name: panda-wiki-qdrant
restart: always
volumes:
- ./data/qdrant:/qdrant/storage
environment:
- QDRANT__SERVICE__API_KEY=${QDRANT_API_KEY}
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.14"
crawler:
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/anydoc:v0.5.7
container_name: panda-wiki-crawler
restart: always
init: true
environment:
- GLOG_GLOBAL_LEVEL=info
- NAMESPACE=anydoc
- MQ_NATS_URL=nats://panda-wiki-nats:4222
- MQ_NATS_USER=panda-wiki
- MQ_NATS_PASSWORD=${NATS_PASSWORD}
- OSS_MINIO_ACCESS_KEY=s3panda-wiki
- OSS_MINIO_SECRET_KEY=${S3_SECRET_KEY}
- OSS_MINIO_ENDPOINT=panda-wiki-minio:9000
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.17"
raglite:
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-raglite:1-3-9
container_name: panda-wiki-raglite
restart: always
volumes:
- ./data/raglite:/data
environment:
- GIN_MODE=release
- DATABASE_HOST=panda-wiki-postgres
- DATABASE_USER=panda-wiki
- DATABASE_PASSWORD=${POSTGRES_PASSWORD}
- MINIO_HOST=panda-wiki-minio:9000
- MINIO_USER=s3panda-wiki
- MINIO_PASSWORD=${S3_SECRET_KEY}
- QDRANT_HOST=panda-wiki-qdrant
- QDRANT_API_KEY=${QDRANT_API_KEY}
depends_on:
- postgres
- minio
- qdrant
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.18"
networks:
panda-wiki:
ipam:
driver: default
config:
- subnet: "${SUBNET_PREFIX:-169.254.15}.0/24"
创建并启动容器(跳过):
docker-compose up -d
查看容器列表:
docker ps
停止并销毁容器:
docker-compose down
删除目录:
rm -rf ./data
删除镜像:
docker rmi \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-caddy:2.10-alpine \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-nginx:v3.29.1 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-app:v3.29.1 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-api:v3.29.1 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-consumer:v3.29.1 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-postgres:17.5 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-redis:7.4.2-alpine \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-minio:RELEASE.2025-04-22T22-12-26Z-cpuv1 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-nats:2.11.3-alpine \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-qdrant:v1.14.1 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/anydoc:v0.5.7 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-raglite:1-3-9
4.2、手动配置安装
创建目录:
mkdir pandawiki
切换目录:
cd pandawiki
下载docker-compose.yml文件:
wget "https://release.baizhi.cloud/panda-wiki/docker-compose.yml"
查看docker-compose.yml文件:
services:
caddy:
container_name: panda-wiki-caddy
restart: always
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-caddy:2.10-alpine
cap_add:
- NET_ADMIN
volumes:
- ./data/caddy/caddy_config:/config
- ./data/caddy/caddy_data:/data
- ./data/caddy/run:/var/run/caddy
environment:
- CADDY_ADMIN=unix//var/run/caddy/caddy-admin.sock
network_mode: host
nginx:
container_name: panda-wiki-nginx
depends_on:
- api
restart: always
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-nginx:v3.29.1
ports:
- ${ADMIN_PORT}:8080
volumes:
- ./data/nginx/ssl:/etc/nginx/ssl
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.111"
app:
container_name: panda-wiki-app
restart: always
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-app:v3.29.1
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.112"
api:
container_name: panda-wiki-api
depends_on:
- postgres
- nats
- caddy
- raglite
restart: always
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-api:v3.29.1
volumes:
- ./data/caddy/run:/app/run
- ./data/nginx/ssl:/app/etc/nginx/ssl
- ./data/conf/api:/data
environment:
- NATS_PASSWORD=${NATS_PASSWORD}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- REDIS_PASSWORD=${REDIS_PASSWORD}
- S3_SECRET_KEY=${S3_SECRET_KEY}
- JWT_SECRET=${JWT_SECRET}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
- SUBNET_PREFIX=${SUBNET_PREFIX}
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.2"
consumer:
container_name: panda-wiki-consumer
depends_on:
- nats
- api
restart: always
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-consumer:v3.29.1
environment:
- NATS_PASSWORD=${NATS_PASSWORD}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- REDIS_PASSWORD=${REDIS_PASSWORD}
- S3_SECRET_KEY=${S3_SECRET_KEY}
- JWT_SECRET=${JWT_SECRET}
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.3"
postgres:
container_name: panda-wiki-postgres
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-postgres:17.5
restart: always
healthcheck:
test: ["CMD", "pg_isready", "-U", "panda-wiki", "-d", "panda-wiki"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
environment:
- POSTGRES_USER=panda-wiki
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=panda-wiki
volumes:
- ./data/postgres:/var/lib/postgresql/data
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.10"
redis:
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-redis:7.4.2-alpine
container_name: panda-wiki-redis
restart: always
command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}", "--appendonly", "yes", "--appendfilename", "appendonly.aof", "--save", "900 1", "--save", "300 10", "--save", "60 10000"]
volumes:
- ./data/redis:/data
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.11"
minio:
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-minio:RELEASE.2025-04-22T22-12-26Z-cpuv1
container_name: panda-wiki-minio
restart: always
command: ["minio", "server", "/data", "--console-address", ":9001"]
volumes:
- ./data/minio:/data
environment:
- MINIO_ACCESS_KEY=s3panda-wiki
- MINIO_SECRET_KEY=${S3_SECRET_KEY}
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.12"
nats:
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-nats:2.11.3-alpine
container_name: panda-wiki-nats
restart: always
command: ["nats-server", "-c", "/etc/nats/nats.conf", "--user", "panda-wiki", "--pass", "${NATS_PASSWORD}"]
volumes:
- ./data/nats:/data
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.13"
qdrant:
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-qdrant:v1.14.1
container_name: panda-wiki-qdrant
restart: always
volumes:
- ./data/qdrant:/qdrant/storage
environment:
- QDRANT__SERVICE__API_KEY=${QDRANT_API_KEY}
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.14"
crawler:
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/anydoc:v0.5.7
container_name: panda-wiki-crawler
restart: always
init: true
environment:
- GLOG_GLOBAL_LEVEL=info
- NAMESPACE=anydoc
- MQ_NATS_URL=nats://panda-wiki-nats:4222
- MQ_NATS_USER=panda-wiki
- MQ_NATS_PASSWORD=${NATS_PASSWORD}
- OSS_MINIO_ACCESS_KEY=s3panda-wiki
- OSS_MINIO_SECRET_KEY=${S3_SECRET_KEY}
- OSS_MINIO_ENDPOINT=panda-wiki-minio:9000
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.17"
raglite:
image: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-raglite:1-3-9
container_name: panda-wiki-raglite
restart: always
volumes:
- ./data/raglite:/data
environment:
- GIN_MODE=release
- DATABASE_HOST=panda-wiki-postgres
- DATABASE_USER=panda-wiki
- DATABASE_PASSWORD=${POSTGRES_PASSWORD}
- MINIO_HOST=panda-wiki-minio:9000
- MINIO_USER=s3panda-wiki
- MINIO_PASSWORD=${S3_SECRET_KEY}
- QDRANT_HOST=panda-wiki-qdrant
- QDRANT_API_KEY=${QDRANT_API_KEY}
depends_on:
- postgres
- minio
- qdrant
networks:
panda-wiki:
ipv4_address: "${SUBNET_PREFIX:-169.254.15}.18"
networks:
panda-wiki:
ipam:
driver: default
config:
- subnet: "${SUBNET_PREFIX:-169.254.15}.0/24"
创建.env配置文件:

# 时区
TIMEZONE=Asia/Shanghai
# 容器网段
SUBNET_PREFIX=169.254.15
# 中间件密码
POSTGRES_PASSWORD={{PASSWORD}}
NATS_PASSWORD={{PASSWORD}}
JWT_SECRET={{PASSWORD}}
S3_SECRET_KEY={{PASSWORD}}
QDRANT_API_KEY={{PASSWORD}}
REDIS_PASSWORD={{PASSWORD}}
# 管理后台登录密码
ADMIN_PASSWORD={{PASSWORD}}
# 管理后台访问端口
ADMIN_PORT=2443
备份.env配置文件:
cp .env .env-bak
修改.env配置文件:
# 请根据实际情况修改密码
# 因为当前为测试环境,所以都修改成相同密码
sed -i 's/{{PASSWORD}}/pandawiki/g' .env
创建并启动容器:
docker-compose up -d
查看容器列表:
docker ps
停止并销毁容器:
docker-compose down
删除目录:
rm -rf ./data
删除镜像:
docker rmi \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-caddy:2.10-alpine \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-nginx:v3.29.1 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-app:v3.29.1 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-api:v3.29.1 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-consumer:v3.29.1 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-postgres:17.5 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-redis:7.4.2-alpine \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-minio:RELEASE.2025-04-22T22-12-26Z-cpuv1 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-nats:2.11.3-alpine \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-qdrant:v1.14.1 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/anydoc:v0.5.7 \
chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-raglite:1-3-9
5、浏览器访问
假设当前ip为192.168.186.128
浏览器访问:https://192.168.186.128:2443
# 账号密码:admin 指定的密码或者自动生成的密码
账号密码:admin pandawiki
浏览器访问:


登录:

登录成功后,系统配置:
详见:https://pandawiki.docs.baizhi.cloud/node/01971616-811c-70e1-82d9-706a202b8498


如果使用DeepSeek
# 获取API Key:
https://platform.deepseek.com/api_keys

【当前使用Gemini】
# "如果使用Cloudflare的AI Gateway代理Google AI Studio"
# 详见:https://mp.weixin.qq.com/s/Xg7W7KJs6IpvXxPCoMWtXw
# 详见:
https://developers.cloudflare.com/ai-gateway/usage/providers/google-ai-studio/
# API地址格式:
https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/compat/
# 模型名称格式:
google-ai-studio/{model}
# 以下参数根据实际情况填写:
{account_id}、{gateway_id}、{model}

创建 Wiki 站点:






访问 WIKI 网站:

管理后台:

6、详见
https://baizhi.cloud
https://baizhi.cloud/landing/pandawiki
https://pandawiki.docs.baizhi.cloud
https://github.com/chaitin/PandaWiki
https://mp.weixin.qq.com/s/aZuGhELPidUhTREZ6Gd6pw更多推荐



所有评论(0)