无题
无题
lycheeKing需求是存储用户文件和向量数据,使用 PostgreSQL(作为向量存储和元数据管理)和 MinIO(作为对象存储)就可以满足你的需求。以下是完整的安装和安全配置指南。
1. 准备工作
- 一台云服务器(例如 AWS、阿里云、腾讯云)。
- 已安装的 Ubuntu(或其他 Linux 系统)。
- 确保拥有
sudo
权限,并更新软件包管理器:1
2
3sudo apt update
sudo apt upgrade -y
2. 安装和配置 PostgreSQL0
2.1 安装 PostgreSQL
1 | sudo apt install postgresql postgresql-contrib -y |
2.2 启用 pgvector 扩展
- 安装构建工具(如果未安装):
1 | sudo apt install postgresql-server-dev-$(pg_config --version | cut -d'.' -f1,2) build-essential -y |
- 安装 pgvector:
1
2
3
4git clone https://github.com/pgvector/pgvector.git
cd pgvector
make
sudo make install - 启用 pgvector: 切换到 PostgreSQL 用户并进入数据库管理工具:
1 | sudo -i -u postgres |
启用扩展:
1 | CREATE EXTENSION vector; |
退出命令行:
1 | \q |
2.3 配置远程访问
**修改
postgresql.conf
**:1
2
3
4
5
6
7sudo vim /etc/postgresql/$(pg_config --version | cut -d'.' -f1,2)/main/postgresql.conf
```
找到 `listen_addresses`,将其设置为:
```bash
listen_addresses = '*'**修改
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`
重启 PostgreSQL:
bash
复制代码
sudo systemctl restart postgresql
设置用户密码:
bash
复制代码
sudo -i -u postgres psql ALTER USER postgres PASSWORD 'your_password'; \q
防火墙设置: 允许 5432 端口(PostgreSQL 默认端口):
bash
复制代码
sudo ufw allow 5432
![[Pasted image 20241207175619.png]]
3. 安装和配置 MinIO
3.1 安装 MinIO
下载 MinIO 服务端:
bash
复制代码
wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio sudo mv minio /usr/local/bin/
创建数据存储目录:
bash
复制代码
sudo mkdir -p /mnt/data/minio sudo chown -R $USER:$USER /mnt/data/minio
运行 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 | docker run -d -p 9000:9000 -p 50000:50000 --name minio |
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_USER
和MINIO_ROOT_PASSWORD
。启用 HTTPS:配置 MinIO 的 HTTPS 访问,保护文件传输:
bash
复制代码
minio server --certs-dir /path/to/certs /mnt/data/minio
访问控制:设置桶权限为私有,只允许授权用户访问。
5. 测试和验证
测试 PostgreSQL 连接:
本地:
bash
复制代码
psql -U postgres -h localhost
远程:
bash
复制代码
psql -U postgres -h <server_ip> -p 5432
测试 MinIO 连接:
- 在浏览器访问:http://
:9000 - 使用设置的
MINIO_ROOT_USER
和MINIO_ROOT_PASSWORD
登录。
- 在浏览器访问:http://
6. 使用建议
- 文件存储:通过 MinIO 存储文件,使用 PostgreSQL 保存文件路径及元数据。
- 向量存储:将嵌入向量存储在 PostgreSQL,使用索引优化检索性能。
- 整合 API:构建统一的 API 接口,将文件上传、路径记录、向量生成整合在一起。