无题

需求是存储用户文件和向量数据,使用 PostgreSQL(作为向量存储和元数据管理)和 MinIO(作为对象存储)就可以满足你的需求。以下是完整的安装和安全配置指南。


1. 准备工作

  • 一台云服务器(例如 AWS、阿里云、腾讯云)。
  • 已安装的 Ubuntu(或其他 Linux 系统)。
  • 确保拥有 sudo 权限,并更新软件包管理器:
    1
    2
    3
    sudo apt update
    sudo apt upgrade -y


2. 安装和配置 PostgreSQL0

2.1 安装 PostgreSQL

1
2
sudo apt install postgresql postgresql-contrib -y

2.2 启用 pgvector 扩展

  1. 安装构建工具(如果未安装):
1
sudo apt install postgresql-server-dev-$(pg_config --version | cut -d'.' -f1,2) build-essential -y
  1. 安装 pgvector
    1
    2
    3
    4
    git clone https://github.com/pgvector/pgvector.git
    cd pgvector
    make
    sudo make install
  2. 启用 pgvector: 切换到 PostgreSQL 用户并进入数据库管理工具:
1
2
sudo -i -u postgres
psql

启用扩展:

1
CREATE EXTENSION vector;

退出命令行:

1
\q

2.3 配置远程访问

  1. **修改 postgresql.conf**:

    1
    2
    3
    4
    5
    6
    7
    sudo vim /etc/postgresql/$(pg_config --version | cut -d'.' -f1,2)/main/postgresql.conf
    ```


    找到 `listen_addresses`,将其设置为:
    ```bash
    listen_addresses = '*'
  2. **修改 pg_hba.conf**:

    1
    sudo vim /etc/postgresql/$(pg_config --version | cut -d'.' -f1,2)/main/pg_hba.conf

添加以下内容(允许从特定 IP 段访问):

`host    all             all             0.0.0.0/0               md5`
  1. 重启 PostgreSQL

    bash

    复制代码

    sudo systemctl restart postgresql

  2. 设置用户密码

    bash

    复制代码

    sudo -i -u postgres psql ALTER USER postgres PASSWORD 'your_password'; \q

  3. 防火墙设置: 允许 5432 端口(PostgreSQL 默认端口):

    bash

    复制代码

    sudo ufw allow 5432

![[Pasted image 20241207175619.png]]

3. 安装和配置 MinIO

3.1 安装 MinIO

  1. 下载 MinIO 服务端

    bash

    复制代码

    wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio sudo mv minio /usr/local/bin/

  2. 创建数据存储目录

    bash

    复制代码

    sudo mkdir -p /mnt/data/minio sudo chown -R $USER:$USER /mnt/data/minio

  3. 运行 MinIO

    bash

    复制代码

    export MINIO_ROOT_USER=your_access_key export MINIO_ROOT_PASSWORD=your_secret_key minio server /mnt/data/minio

    默认情况下,MinIO 会在端口 9000 启动。


3.2 配置为服务

将 MinIO 配置为系统服务以在重启后自动运行:

bash

复制代码

sudo nano /etc/systemd/system/minio.service

添加以下内容:

ini

复制代码

[Unit] Description=MinIO Documentation=https://min.io Wants=network-online.target After=network-online.target [Service] User=minio-user Group=minio-user ExecStart=/usr/local/bin/minio server /mnt/data/minio Environment="MINIO_ROOT_USER=your_access_key" Environment="MINIO_ROOT_PASSWORD=your_secret_key" Restart=always LimitNOFILE=65536 [Install] WantedBy=multi-user.target

创建用户和目录权限:

bash

复制代码

sudo useradd -r minio-user sudo chown -R minio-user:minio-user /mnt/data/minio sudo systemctl daemon-reload sudo systemctl start minio sudo systemctl enable minio


3.3 配置防火墙

允许 9000 端口(MinIO 默认端口):

bash

复制代码

sudo ufw allow 9000

3.4 Docker 安装 MinIO

1
2
3
4
5
6
7
8
docker run -d -p 9000:9000 -p 50000:50000 --name minio 
-e "MINIO_ROOT_USER=clhhai@minio666"
-e "MINIO_ROOT_PASSWORD=clhhai@minio666"
--restart=always
-v /root/minio/data:/data
-v /root/minio/config:/root/.minio
--privileged=true
minio/minio server --console-address ":50000" /data

4. 安全配置

4.1 PostgreSQL 的安全建议

  • 强密码:确保 PostgreSQL 用户密码强度足够高。

  • IP 限制:在 pg_hba.conf 中,只允许特定的 IP 地址段访问。

  • SSL 加密:启用 SSL 确保传输安全:

    bash

    复制代码

    sudo nano /etc/postgresql/$(pg_config --version | cut -d'.' -f1,2)/main/postgresql.conf

    启用 SSL:

    csharp

    复制代码

    ssl = on

    然后配置 SSL 证书(可以使用 Let’s Encrypt 或自签名证书)。

4.2 MinIO 的安全建议

  • 强密钥:设置复杂的 MINIO_ROOT_USERMINIO_ROOT_PASSWORD

  • 启用 HTTPS:配置 MinIO 的 HTTPS 访问,保护文件传输:

    bash

    复制代码

    minio server --certs-dir /path/to/certs /mnt/data/minio

  • 访问控制:设置桶权限为私有,只允许授权用户访问。


5. 测试和验证

  1. 测试 PostgreSQL 连接

    • 本地:

      bash

      复制代码

      psql -U postgres -h localhost

    • 远程:

      bash

      复制代码

      psql -U postgres -h <server_ip> -p 5432

  2. 测试 MinIO 连接

    • 在浏览器访问:http://:9000
    • 使用设置的 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 登录。

6. 使用建议

  • 文件存储:通过 MinIO 存储文件,使用 PostgreSQL 保存文件路径及元数据。
  • 向量存储:将嵌入向量存储在 PostgreSQL,使用索引优化检索性能。
  • 整合 API:构建统一的 API 接口,将文件上传、路径记录、向量生成整合在一起。