本教程基于百度云2核2G Ubuntu 22.04服务器的实际部署经验。
环境说明
- 服务器:百度云 2核2G
- 系统:Ubuntu 22.04
- 存储:SSD
- 应用:AnythingLLM (私有化知识库系统)
一、前期准备
1. 安装Docker
使用腾讯云镜像源安装Docker(百度云自带源无法使用时的替代方案):
# 更新软件包并安装必要工具
sudo apt-get update
sudo apt-get install ca-certificates curl -y
# 设置Docker安装源
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 添加Docker软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/ \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 启动Docker并设置开机自启
systemctl start docker
2. 配置Docker镜像加速
由于网络原因,建议配置国内镜像源加速。以下是经过验证的可用镜像源(来源: Docker镜像加速源):
# 创建Docker配置目录
sudo mkdir -p /etc/docker
# 创建或修改daemon.json配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.unsee.tech",
"https://dockerpull.org",
"https://docker.1panel.live",
"https://hub.xdark.top",
"https://hub.littlediary.cn"
]
}
EOF
# 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证配置
docker info | grep "Registry Mirrors"
注意:镜像源可能会随时间变化,如果发现无法使用,请参考最新的镜像源更新文章获取可用镜像源。
3. 配置SWAP
对于2G内存的服务器,配置SWAP是必要的:
# 创建8G的swap空间
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 设置开机自动启用swap
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 优化swap使用参数(对SSD友好)
echo 'vm.swappiness=60' | sudo tee -a /etc/sysctl.conf
echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 验证SWAP是否生效
free -h
二、部署AnythingLLM
1. 创建工作目录
mkdir -p ~/anythingllm
cd ~/anythingllm
mkdir -p storage/vector-cache
mkdir -p storage/indexes
2. 创建配置文件
cat > .env << 'EOF'
# 基础配置
NODE_ENV=production
SERVER_PORT=3001
# API配置
JWT_SECRET=登录密码
AUTH_TOKEN=api的密钥
# 存储配置
STORAGE_DIR=/app/server/storage
# 系统优化
NODE_OPTIONS="--max-old-space-size=1024"
VECTOR_CACHE_SIZE=100
EMBEDDINGS_CACHE_SIZE=50
# 向量数据库配置
VECTOR_DB="lancedb"
LANCEDB_PATH="/app/server/storage/indexes"
# 文件处理
CHUNK_SIZE=512
CHUNK_OVERLAP=50
MAX_FILE_SIZE=10
ENABLE_STREAMING=true
# 禁用非必要服务
DISABLE_TELEMETRY=true
DISABLE_AUTO_UPGRADE=true
EOF
# 保存生成的密钥信息
echo "请保存以下密钥信息:"
grep "JWT_SECRET\|AUTH_TOKEN" .env
3. 拉取镜像并启动容器
# 拉取镜像
docker pull mintplexlabs/anythingllm:latest
# 设置正确的目录权限
sudo chown -R 1000:1000 storage
sudo chmod -R 755 storage
sudo chown 1000:1000 .env
sudo chmod 644 .env
# 启动容器
docker run -d \
--name anythingllm \
--restart unless-stopped \
-p 3001:3001 \
--memory=1.5g \
--memory-swap=9.5g \
--memory-reservation=1g \
--cpus=1.5 \
--user 1000:1000 \
-v $(pwd)/storage:/app/server/storage \
-v $(pwd)/.env:/app/server/.env \
mintplexlabs/anythingllm:latest
# 检查容器状态
docker ps
4. 检查日志确保正常运行
docker logs -f anythingllm
正常启动时,日志应该显示:
- Prisma数据库初始化成功
- 后端服务在3001端口启动
- 无权限相关错误
5. 配置防火墙(如需要)
# 如果开启了ufw防火墙,需要放行3001端口
sudo ufw allow 3001/tcp
同时需要在百度云控制台的安全组中放行3001端口。
三、访问与配置
通过浏览器访问:
http://服务器IP:3001
第一次访问时需要设置管理员账户
配置LLM和Embedding服务:
- 如果使用OpenAI API兼容的服务,选择"Generic OpenAI"
- 分别配置LLM和Embedding的:
- Base URL(API地址)
- API Key
- 模型名称
四、注意事项
1. 硬件资源
- 2G内存配置较为紧张,建议:
- 密切监控内存使用
- 确保SWAP正常工作
- 适当限制并发请求
2. 权限问题
- storage目录权限:1000:1000
- .env文件权限:1000:1000, 644
- 容器需要使用正确的用户(1000)运行
3. 网络配置
- 确保服务器安全组开放3001端口
- 如有防火墙,需要配置相应规则
4. 向量数据库配置
- 确保.env中包含完整的LanceDB配置
- VECTOR_DB设置为"lancedb"
- LANCEDB_PATH需要指向正确的存储路径
评论区