pandora+docker 私有化部署ChatGPT
环境
更新环境
Debian11 + Docker
- Linux duzhuo 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux 
- Docker Compose version v2.17.2 
- Docker version 23.0.2, build 569dd73 
- apt-get update -y
- apt-get install apt-transport-https software-properties-common ca-certificates curl gnupg lsb-release -y
- sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
需要的 Docker 镜像
- pengzhile/pandora - docker pull pengzhile/pandora
- nginx - docker pull nginx
配置文件
tree
root@duzhuo:~/.pandora# tree
.
├── data
│   └── access_token.dat
├── docker-compose-pandora.yaml
├── docker-compose.yaml.bak
└── nginx
    ├── certs
    │   ├── cert.pem
    │   └── key.pem
    ├── htpasswd
    └── nginx.conf
3 directories, 7 files
root@duzhuo:~/.pandora# docker-compose.yaml
version: '3.8'
# 定义一个名为 "pandora" 的 Docker 网络
networks:
  pandora:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.0.0/24
# 定义两个 Docker 服务: "Nginx-Reverse-proxy" 和 "pandora"
services:
  # Nginx-Reverse-proxy 服务
  Nginx-Reverse-proxy:
    # 使用 nginx Docker 镜像
    image: nginx
    # 将端口 80 和 443 映射到宿主机
    ports:
      - 80:80
      - 443:443
    # 除非停止,否则重新启动容器
    restart: unless-stopped
    # 挂载多个卷以进行配置文件和 SSL 证书
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./nginx/certs:/etc/nginx/certs:ro
      - ./nginx/htpasswd:/etc/nginx/htpasswd:ro
      - ./nginx/html:/usr/share/nginx/html:ro
    # 将容器连接到 "pandora" 网络并分配一个 IPv4 地址
    networks:
      pandora:
        ipv4_address: 192.168.0.4
  # pandora 服务
  pandora:
    # 使用 pengzhile/pandora Docker 镜像
    image: pengzhile/pandora
    # 将容器命名为 "pandoraGPT"
    container_name: pandoraGPT
    # 将容器连接到 "pandora" 网络并分配一个 IPv4 地址
    networks:
      pandora:
        ipv4_address: 192.168.0.2
    # 将 "data" 目录作为容器内的卷挂载
    volumes:
      - ./data:/data
    # 除非停止,否则重新启动容器
    restart: unless-stopped
    # 设置多个环境变量
    environment:
      # 将 PANDORA_SERVER 环境变量设置为监听所有可用的网络接口和端口 18888
      PANDORA_SERVER: 0.0.0.0:18888
      # 将 OPENAI_EMAIL 环境变量设置为指定的电子邮件地址
      OPENAI_EMAIL: {YourAccount}
      # 将 OPENAI_PASSWORD 环境变量设置为指定的密码
      OPENAI_PASSWORD: {YourPassword}
      # 建议替换 OPENAI_EMAIL 和 OPENAI_PASSWORD
      # PANDORA_ACCESS_TOKEN: {YourAccessToken}ACCESS TOKEN 获取
Nginx.conf
user  nginx;  # 设置运行Nginx的用户为nginx
worker_processes  1;  # 设置工作进程数为1
events {
    worker_connections  128;  # 每个worker进程最多允许的连接数
}
http {
    server {
        listen 80;  # 监听80端口,处理http请求
        server_name chat.duzhuo.eu.org;  # 域名
        return 301 https://$host$request_uri;  # 将所有http请求重定向到https
    }
    server {
        listen 443 ssl http2;  # 监听443端口,处理https请求,启用http2协议
        server_name chat.duzhuo.eu.org;  # 域名
        ssl_certificate /etc/nginx/certs/cert.pem;  # SSL证书路径
        ssl_certificate_key /etc/nginx/certs/key.pem;  # SSL证书密钥路径
        auth_basic "Restricted";  # 开启基本认证
        auth_basic_user_file /etc/nginx/htpasswd;  # 用户名密码文件路径
        location / {
            proxy_pass http://192.168.0.2:18888;  # 将请求转发给目标服务器
            proxy_set_header Host $host;  # 设置Host请求头
            proxy_set_header X-Real-IP $remote_addr;  # 设置X-Real-IP请求头
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 设置X-Forwarded-For请求头
        }
    }
}auth_basic密码设置
apt-get update
apt-get install apache2-utils
初次创建htpasswd文件 并添加一个叫user的用户
htpasswd -c /path/to/htpasswd user
向htpasswd文件中添加一个叫anotheruser的用户
htpasswd /path/to/htpasswd anotheruser
获取一个SSL证书
通过acme.sh
通过Cloudflare
证书放置目录 参考 tree
启动和停止服务
root@duzhuo:~/.pandora# docker-compose -f docker-compose-pandora.yaml up -d
[+] Running 3/3
 ✔ Network pandora_pandora                  Created                                                                                                    0.2s 
 ✔ Container pandoraGPT                     Started                                                                                                    3.1s 
 ✔ Container pandora-Nginx-Reverse-proxy-1  Started                                                                                                    3.1s 
root@duzhuo:~/.pandora#root@duzhuo:~/.pandora# docker-compose -f docker-compose-pandora.yaml down
[+] Running 3/3
 ✔ Container pandoraGPT                     Removed                                                                                                   12.4s 
 ✔ Container pandora-Nginx-Reverse-proxy-1  Removed                                                                                                    3.0s 
 ✔ Network pandora_pandora                  Removed                                                                                                    0.4s 
root@duzhuo:~/.pandora#  Open and play !
