当前位置: 首页 > news >正文

使用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

合集: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-caddyrestart: alwaysimage: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-caddy:2.10-alpinecap_add:- NET_ADMINvolumes:- ./data/caddy/caddy_config:/config- ./data/caddy/caddy_data:/data- ./data/caddy/run:/var/run/caddyenvironment:- CADDY_ADMIN=unix//var/run/caddy/caddy-admin.socknetwork_mode: hostnginx:container_name: panda-wiki-nginxdepends_on:- apirestart: alwaysimage: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-nginx:v3.29.1ports:- ${ADMIN_PORT}:8080volumes:- ./data/nginx/ssl:/etc/nginx/sslnetworks:panda-wiki:ipv4_address: "${SUBNET_PREFIX:-169.254.15}.111"app:container_name: panda-wiki-apprestart: alwaysimage: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-app:v3.29.1networks:panda-wiki:ipv4_address: "${SUBNET_PREFIX:-169.254.15}.112"api:container_name: panda-wiki-apidepends_on:- postgres- nats- caddy- ragliterestart: alwaysimage: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-api:v3.29.1volumes:- ./data/caddy/run:/app/run- ./data/nginx/ssl:/app/etc/nginx/ssl- ./data/conf/api:/dataenvironment:- 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-consumerdepends_on:- nats- apirestart: alwaysimage: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-consumer:v3.29.1environment:- 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-postgresimage: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-postgres:17.5restart: alwayshealthcheck:test: ["CMD", "pg_isready", "-U", "panda-wiki", "-d", "panda-wiki"]interval: 10stimeout: 5sretries: 5start_period: 10senvironment:- POSTGRES_USER=panda-wiki- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}- POSTGRES_DB=panda-wikivolumes:- ./data/postgres:/var/lib/postgresql/datanetworks: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-alpinecontainer_name: panda-wiki-redisrestart: alwayscommand: ["redis-server", "--requirepass", "${REDIS_PASSWORD}", "--appendonly", "yes", "--appendfilename", "appendonly.aof", "--save", "900 1", "--save", "300 10", "--save", "60 10000"]volumes:- ./data/redis:/datanetworks: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-cpuv1container_name: panda-wiki-miniorestart: alwayscommand: ["minio", "server", "/data", "--console-address", ":9001"]volumes:- ./data/minio:/dataenvironment:- 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-alpinecontainer_name: panda-wiki-natsrestart: alwayscommand: ["nats-server", "-c", "/etc/nats/nats.conf", "--user", "panda-wiki", "--pass", "${NATS_PASSWORD}"]volumes:- ./data/nats:/datanetworks: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.1container_name: panda-wiki-qdrantrestart: alwaysvolumes:- ./data/qdrant:/qdrant/storageenvironment:- 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.7container_name: panda-wiki-crawlerrestart: alwaysinit: trueenvironment:- 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:9000networks: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-9container_name: panda-wiki-ragliterestart: alwaysvolumes:- ./data/raglite:/dataenvironment:- 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- qdrantnetworks:panda-wiki:ipv4_address: "${SUBNET_PREFIX:-169.254.15}.18"networks:panda-wiki:ipam:driver: defaultconfig:- 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-caddyrestart: alwaysimage: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-caddy:2.10-alpinecap_add:- NET_ADMINvolumes:- ./data/caddy/caddy_config:/config- ./data/caddy/caddy_data:/data- ./data/caddy/run:/var/run/caddyenvironment:- CADDY_ADMIN=unix//var/run/caddy/caddy-admin.socknetwork_mode: hostnginx:container_name: panda-wiki-nginxdepends_on:- apirestart: alwaysimage: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-nginx:v3.29.1ports:- ${ADMIN_PORT}:8080volumes:- ./data/nginx/ssl:/etc/nginx/sslnetworks:panda-wiki:ipv4_address: "${SUBNET_PREFIX:-169.254.15}.111"app:container_name: panda-wiki-apprestart: alwaysimage: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-app:v3.29.1networks:panda-wiki:ipv4_address: "${SUBNET_PREFIX:-169.254.15}.112"api:container_name: panda-wiki-apidepends_on:- postgres- nats- caddy- ragliterestart: alwaysimage: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-api:v3.29.1volumes:- ./data/caddy/run:/app/run- ./data/nginx/ssl:/app/etc/nginx/ssl- ./data/conf/api:/dataenvironment:- 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-consumerdepends_on:- nats- apirestart: alwaysimage: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-consumer:v3.29.1environment:- 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-postgresimage: chaitin-registry.cn-hangzhou.cr.aliyuncs.com/chaitin/panda-wiki-postgres:17.5restart: alwayshealthcheck:test: ["CMD", "pg_isready", "-U", "panda-wiki", "-d", "panda-wiki"]interval: 10stimeout: 5sretries: 5start_period: 10senvironment:- POSTGRES_USER=panda-wiki- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}- POSTGRES_DB=panda-wikivolumes:- ./data/postgres:/var/lib/postgresql/datanetworks: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-alpinecontainer_name: panda-wiki-redisrestart: alwayscommand: ["redis-server", "--requirepass", "${REDIS_PASSWORD}", "--appendonly", "yes", "--appendfilename", "appendonly.aof", "--save", "900 1", "--save", "300 10", "--save", "60 10000"]volumes:- ./data/redis:/datanetworks: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-cpuv1container_name: panda-wiki-miniorestart: alwayscommand: ["minio", "server", "/data", "--console-address", ":9001"]volumes:- ./data/minio:/dataenvironment:- 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-alpinecontainer_name: panda-wiki-natsrestart: alwayscommand: ["nats-server", "-c", "/etc/nats/nats.conf", "--user", "panda-wiki", "--pass", "${NATS_PASSWORD}"]volumes:- ./data/nats:/datanetworks: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.1container_name: panda-wiki-qdrantrestart: alwaysvolumes:- ./data/qdrant:/qdrant/storageenvironment:- 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.7container_name: panda-wiki-crawlerrestart: alwaysinit: trueenvironment:- 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:9000networks: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-9container_name: panda-wiki-ragliterestart: alwaysvolumes:- ./data/raglite:/dataenvironment:- 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- qdrantnetworks:panda-wiki:ipv4_address: "${SUBNET_PREFIX:-169.254.15}.18"networks:panda-wiki:ipam:driver: defaultconfig:- 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
http://www.dtcms.com/a/537756.html

相关文章:

  • JT808,JT1078协议,Java获取音频数据播放时长
  • 国外网站设计风格微信网站页面
  • 免费观看行情软件网站进入专业企业展厅设计公司
  • Hive简介
  • 建网站要自己买服务器吗苏州专业高端网站建设公司哪家好
  • 网站首页布局设计用什么宝塔负载100wordpress
  • Future和CompletableFuture详解
  • 公司网站出现空白页网站建设义乌
  • 高并发视频直播系统源码:从直播架构设计开发到搭建部署上线
  • 做一个跨境电商网站西地那非使用三大忌
  • 网络营销的营销方式是什么广州市网络seo外包
  • 迈诺网站建设专业app制作开发公司
  • 解决报错No module named ‘numpy.exceptions‘
  • Git学习-5
  • 关于Mysql的学习三(事务)
  • hot100面试150——十二周
  • 免费网站模板psd崇明装修公司哪家好
  • 公司做网站的申请上海热点新闻
  • 《Redis 开发与运维》学习笔记[特殊字符]
  • 上海网站建设公司电网页拖拽设计工具
  • cdn网站加速有用吗网页游戏传奇霸主攻略
  • 保护你的创意!让图片拥有盲水印[特殊字符][特殊字符]
  • NEFTUNE
  • 西安优化网站技术徐州市网站开发
  • 泉州网站建设电话网站地图怎么做、
  • 二十二、DevOps:基于Tekton的云原生平台落地(三)
  • 搜狗网站收录入口万网公司注册网站
  • CUDA中__restrict__关键字的使用
  • 做热图的网站1分钟视频制作报价明细
  • 企业为什么做网站优化推广张掖市作风建设年活动网站