PandaWiki搭建过程(一)

admin 2025年6月23日22:37:34评论14 views字数 5561阅读18分32秒阅读模式
长亭科技出品了一款开源的知识库搭建神器:PandaWiki,它是一款 AI 大模型驱动的开源知识库搭建系统,帮助你快速构建智能化的 产品文档、技术文档、FAQ、博客系统,借助大模型的力量为你提供 AI 创作、AI 问答、AI 搜索 等能力。基于它可以帮你轻松搞出来一个智能化的产品文档、技术文档、FAQ甚至博客系统。无论是企业内部的技术文档,还是面向用户的产品说明,PandaWiki 都能轻松胜任。
Github上Star节节攀升,朋友圈有了广泛地介绍,用了下,确实不错。按照网上包括官方介绍地基于一键安装Docker方式,知识库通过第三方来源导入内容:根据网页 URL 导入、通过网站 Sitemap 导入、通过 RSS 订阅、通过离线文件导入等。在离线文件导入时有个20M的上传限制,感觉小了点,就着手修改,但不起作用。问了长亭科技的技术人员,答:docker里是二进制的,github上的源码可以直接修改,自己搭建。好吧,自己动手,就产生了此文,可惜限于水平能力,没有解决好,特发出来众筹解决。
一、难点所在
将源码git clone https://github.com/chaitin/PandaWiki下来后,发现官方没有提供一个重要的文件docker-compose.yml,找长亭科技技术人员,一直不答,应该是不给吧,只好自己摸索着来创建这个文件。
在此过程中,花费了很长时间摸索出docker-compose.yml内容,但还没有最终成功,现将我研究摸索的过程公布出来,希望大家众筹,能将这个完善掉,推动完成。
二、docker-compose.yml及另两个文件
docker-compose.yml 源码放上,

version: '3.8'

services:

  # PostgreSQL 数据库

  panda-wiki-postgres:

    image: postgres:15-alpine

    container_name: panda-wiki-postgres

    environment:

      POSTGRES_DB: panda-wiki

      POSTGRES_USER: panda-wiki

      POSTGRES_PASSWORD: panda-wiki-secret

      TZ: Asia/Shanghai

    volumes:

      - postgres_data:/var/lib/postgresql/data

    ports:

      - "5432:5432"

    networks:

      - panda-wiki-network

    restart: unless-stopped

    healthcheck:

      test: ["CMD-SHELL", "pg_isready -U panda-wiki -d panda-wiki"]

      interval: 10s

      timeout: 5s

      retries: 5

  # Redis 缓存

  panda-wiki-redis:

    image: redis:7-alpine

    container_name: panda-wiki-redis

    command: redis-server --requirepass redis-secret

    environment:

      TZ: Asia/Shanghai

    volumes:

      - redis_data:/data

    ports:

      - "6379:6379"

    networks:

      - panda-wiki-network

    restart: unless-stopped

    healthcheck:

      test: ["CMD", "redis-cli", "-a", "redis-secret", "ping"]

      interval: 10s

      timeout: 5s

      retries: 5

  # NATS 消息队列

  panda-wiki-nats:

    image: nats:2.10-alpine

    container_name: panda-wiki-nats

    command: [

      "--jetstream",

      "--store_dir=/data",

      "--user=panda-wiki",

      "--pass=nats-secret",

      "--http_port=8222"

    ]

    environment:

      TZ: Asia/Shanghai

    volumes:

      - nats_data:/data

    ports:

      - "4222:4222"

      - "8222:8222"

    networks:

      panda-wiki-network:

        ipv4_address: 169.254.15.13

    restart: unless-stopped

    healthcheck:

      test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8222/varz"]

      interval: 30s

      timeout: 10s

      retries: 5

      start_period: 40s

  # MinIO 对象存储

  panda-wiki-minio:

    image: minio/minio:latest

    container_name: panda-wiki-minio

    command: server /data --console-address ":9001"

    environment:

      MINIO_ROOT_USER: minioadmin

      MINIO_ROOT_PASSWORD: minioadmin123

      TZ: Asia/Shanghai

    volumes:

      - minio_data:/data

    ports:

      - "9000:9000"

      - "9001:9001"

    networks:

      panda-wiki-network:

        ipv4_address: 169.254.15.12

    restart: unless-stopped

    healthcheck:

      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]

      interval: 10s

      timeout: 5s

      retries: 5

  # RAG服务 - Qdrant向量数据库

  panda-wiki-raglite:

    image: qdrant/qdrant:latest

    container_name: panda-wiki-raglite

    environment:

      TZ: Asia/Shanghai

    ports:

      - "8080:6333"

    volumes:

      - qdrant_data:/qdrant/storage

    networks:

      panda-wiki-network:

        ipv4_address: 169.254.15.18

    restart: unless-stopped

  # 后端 API 服务

  panda-wiki-api:

    build:

      context: ./backend

      dockerfile: Dockerfile.api

      args:

        VERSION: "0.9.3"

    container_name: panda-wiki-api

    command: sleep infinity

    environment:

      POSTGRES_PASSWORD: panda-wiki-secret

      REDIS_PASSWORD: redis-secret

      NATS_PASSWORD: nats-secret

      SUBNET_PREFIX: "169.254.15"

      QDRANT_URL: "http://panda-wiki-raglite:6333"  # 使用服务名

      TZ: Asia/Shanghai

    ports:

      - "8000:8000"

    networks:

      - panda-wiki-network

    depends_on:

      panda-wiki-postgres:

        condition: service_healthy

      panda-wiki-redis:

        condition: service_healthy

      panda-wiki-nats:

        condition: service_healthy

      panda-wiki-minio:

        condition: service_healthy

    restart: unless-stopped

    healthcheck:

      test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8000/health"]

      interval: 30s

      timeout: 10s

      retries: 3

  # 后端消费者服务

  panda-wiki-consumer:

    build:

      context: ./backend

      dockerfile: Dockerfile.consumer

    container_name: panda-wiki-consumer

    environment:

      POSTGRES_PASSWORD: panda-wiki-secret

      REDIS_PASSWORD: redis-secret

      NATS_PASSWORD: nats-secret

      SUBNET_PREFIX: "169.254.15"

      TZ: Asia/Shanghai

    networks:

      - panda-wiki-network

    depends_on:

      panda-wiki-postgres:

        condition: service_healthy

      panda-wiki-redis:

        condition: service_healthy

      panda-wiki-nats:

        condition: service_healthy

      panda-wiki-minio:

        condition: service_healthy

    restart: unless-stopped

  # 前端管理界面

  panda-wiki-admin:

    build:

      context: ./web/admin

      dockerfile: Dockerfile.admin

      shm_size: '2gb'

    container_name: panda-wiki-admin

    ports:

      - "2443:80"

    networks:

      - panda-wiki-network

    depends_on:

      - panda-wiki-api

    restart: unless-stopped

    deploy:

      resources:

        limits:

          memory: 6G

        reservations:

          memory: 2G

  # 前端用户界面

  panda-wiki-app:

    build:

      context: ./web/app

      dockerfile: Dockerfile.app

      shm_size: '2gb'

    container_name: panda-wiki-app

    ports:

      - "3010:3010"

    networks:

      - panda-wiki-network

    depends_on:

      - panda-wiki-api

    restart: unless-stopped

    environment:

      NODE_ENV: production

      PORT: 3010

      HOSTNAME: "0.0.0.0"

    deploy:

      resources:

        limits:

          memory: 6G

        reservations:

          memory: 2G

volumes:

  postgres_data:

    driver: local

  redis_data:

    driver: local

  nats_data:

    driver: local

  minio_data:

    driver: local

  qdrant_data:  # 添加这个卷定义

    driver: local

networks:

  panda-wiki-network:

    driver: bridge

    ipam:

      config:

        - subnet: 169.254.15.0/24

======================

这里还用到了 web/admin/Dockerfile.admin和web/app/Dockerfile.app,也一并放在以下的网盘中。

通过网盘分享的文件:389.pandawiki三个配置文件.rar

链接: https://pan.baidu.com/s/1hQNhS70sVCvXzZxZ4RHN9w 提取码: 3vex 

三、现在的没解决问题

查看所有容器,

PandaWiki搭建过程(一)

打开主页:

PandaWiki搭建过程(一)

但,在输入帐号/密码时,出现:Bad Gateway错误

排查,发现:

PandaWiki搭建过程(一)

panda-wiki-api容器不正常。

就这个问题,一直没有解决掉,希望各位能帮我解决掉。

其它的,我不截图了,反正是改来改去,都没解决好。

原文始发于微信公众号(MicroPest):PandaWiki搭建过程(一)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月23日22:37:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PandaWiki搭建过程(一)https://cn-sec.com/archives/4193271.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息